From 0723faf209efaa7fdfb5c2d65c534d914f0f4292 Mon Sep 17 00:00:00 2001 From: YuanHongbin <975559679@qq.com> Date: Mon, 22 Jun 2026 09:19:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK/BootLoader.uvoptx | 831 + MDK/BootLoader.uvprojx | 711 + MDK/EventRecorderStub.scvd | 9 + MDK/JLinkSettings.ini | 35 + MDK/RTE/File_System/FS_Config.c | 78 + MDK/RTE/File_System/FS_Config_MC_0.h | 55 + MDK/RTE/File_System/FS_Debug.c | 50 + MDK/RTE/Network/Net_Config.c | 173 + MDK/RTE/Network/Net_Config_ETH_0.h | 253 + MDK/RTE/Network/Net_Config_TCP.h | 69 + MDK/RTE/RTOS/board.c | 90 + MDK/RTE/RTOS/board.c.base@3.1.5 | 79 + MDK/RTE/RTOS/rtconfig.h | 139 + MDK/RTE/RTOS/rtconfig.h.base@3.1.5 | 139 + MDK/RTE/_Debug/RTE_Components.h | 21 + MDK/RTE/_Release/RTE_Components.h | 21 + MDK/RTE/_i2c_24c256_Debug/RTE_Components.h | 21 + MDK/RTE/_i2c_24c256_Release/RTE_Components.h | 21 + MDK/RTE/_template_Debug/RTE_Components.h | 21 + MDK/startup_hc32f460.s | 621 + Update.exe | Bin 0 -> 1051648 bytes driver/inc/hc32f460_adc.h | 509 + driver/inc/hc32f460_aes.h | 81 + driver/inc/hc32f460_can.h | 518 + driver/inc/hc32f460_can1.h | 514 + driver/inc/hc32f460_clk.h | 647 + driver/inc/hc32f460_cmp.h | 279 + driver/inc/hc32f460_crc.h | 118 + driver/inc/hc32f460_dcu.h | 216 + driver/inc/hc32f460_dmac.h | 363 + driver/inc/hc32f460_efm.h | 209 + driver/inc/hc32f460_emb.h | 205 + driver/inc/hc32f460_event_port.h | 176 + driver/inc/hc32f460_exint_nmi_swi.h | 257 + driver/inc/hc32f460_gpio.h | 294 + driver/inc/hc32f460_hash.h | 72 + driver/inc/hc32f460_i2c.h | 270 + driver/inc/hc32f460_i2s.h | 206 + driver/inc/hc32f460_icg.h | 406 + driver/inc/hc32f460_interrupts.h | 542 + driver/inc/hc32f460_keyscan.h | 191 + driver/inc/hc32f460_mpu.h | 293 + driver/inc/hc32f460_ots.h | 139 + driver/inc/hc32f460_pwc.h | 567 + driver/inc/hc32f460_qspi.h | 402 + driver/inc/hc32f460_rmu.h | 96 + driver/inc/hc32f460_rtc.h | 274 + driver/inc/hc32f460_sdioc.h | 559 + driver/inc/hc32f460_spi.h | 426 + driver/inc/hc32f460_sram.h | 190 + driver/inc/hc32f460_swdt.h | 86 + driver/inc/hc32f460_timer0.h | 209 + driver/inc/hc32f460_timer4_cnt.h | 209 + driver/inc/hc32f460_timer4_emb.h | 115 + driver/inc/hc32f460_timer4_oco.h | 273 + driver/inc/hc32f460_timer4_pwm.h | 158 + driver/inc/hc32f460_timer4_sevt.h | 221 + driver/inc/hc32f460_timer6.h | 734 + driver/inc/hc32f460_timera.h | 493 + driver/inc/hc32f460_trng.h | 100 + driver/inc/hc32f460_usart.h | 359 + driver/inc/hc32f460_utility.h | 108 + driver/inc/hc32f460_wdt.h | 162 + driver/src/hc32f460_adc.c | 1739 + driver/src/hc32f460_aes.c | 311 + driver/src/hc32f460_can.c | 562 + driver/src/hc32f460_can1.c | 532 + driver/src/hc32f460_clk.c | 1813 + driver/src/hc32f460_cmp.c | 1046 + driver/src/hc32f460_crc.c | 327 + driver/src/hc32f460_dcu.c | 975 + driver/src/hc32f460_dmac.c | 1827 + driver/src/hc32f460_efm.c | 942 + driver/src/hc32f460_emb.c | 487 + driver/src/hc32f460_event_port.c | 468 + driver/src/hc32f460_exint_nmi_swi.c | 337 + driver/src/hc32f460_gpio.c | 671 + driver/src/hc32f460_hash.c | 301 + driver/src/hc32f460_i2c.c | 1318 + driver/src/hc32f460_i2s.c | 437 + driver/src/hc32f460_icg.c | 83 + driver/src/hc32f460_interrupts.c | 3783 ++ driver/src/hc32f460_keyscan.c | 207 + driver/src/hc32f460_mpu.c | 1057 + driver/src/hc32f460_ots.c | 386 + driver/src/hc32f460_pwc.c | 2025 + driver/src/hc32f460_qspi.c | 756 + driver/src/hc32f460_rmu.c | 143 + driver/src/hc32f460_rtc.c | 978 + driver/src/hc32f460_sdioc.c | 2222 ++ driver/src/hc32f460_spi.c | 1132 + driver/src/hc32f460_sram.c | 286 + driver/src/hc32f460_swdt.c | 170 + driver/src/hc32f460_timer0.c | 967 + driver/src/hc32f460_timer4_cnt.c | 842 + driver/src/hc32f460_timer4_emb.c | 278 + driver/src/hc32f460_timer4_oco.c | 1295 + driver/src/hc32f460_timer4_pwm.c | 600 + driver/src/hc32f460_timer4_sevt.c | 593 + driver/src/hc32f460_timer6.c | 1786 + driver/src/hc32f460_timera.c | 1972 + driver/src/hc32f460_trng.c | 263 + driver/src/hc32f460_usart.c | 1640 + driver/src/hc32f460_utility.c | 531 + driver/src/hc32f460_wdt.c | 254 + mcu/common/hc32_common.h | 219 + mcu/common/hc32_ddl.h | 267 + mcu/common/hc32f460.h | 30602 ++++++++++++++++ mcu/common/system_hc32f460.c | 122 + mcu/common/system_hc32f460.h | 105 + source/Module/AD7924/ad7924.c | 2 + source/Module/FatFS/LICENSE.txt | 24 + source/Module/FatFS/documents/00index_e.html | 149 + source/Module/FatFS/documents/css_e.css | 73 + .../Module/FatFS/documents/doc/appnote.html | 339 + source/Module/FatFS/documents/doc/chdir.html | 88 + .../Module/FatFS/documents/doc/chdrive.html | 70 + source/Module/FatFS/documents/doc/chmod.html | 89 + source/Module/FatFS/documents/doc/close.html | 65 + .../Module/FatFS/documents/doc/closedir.html | 64 + source/Module/FatFS/documents/doc/config.html | 304 + source/Module/FatFS/documents/doc/dinit.html | 46 + source/Module/FatFS/documents/doc/dioctl.html | 101 + source/Module/FatFS/documents/doc/dread.html | 73 + source/Module/FatFS/documents/doc/dstat.html | 48 + source/Module/FatFS/documents/doc/dwrite.html | 76 + source/Module/FatFS/documents/doc/eof.html | 62 + source/Module/FatFS/documents/doc/error.html | 62 + source/Module/FatFS/documents/doc/expand.html | 117 + .../Module/FatFS/documents/doc/fattime.html | 80 + source/Module/FatFS/documents/doc/fdisk.html | 95 + .../Module/FatFS/documents/doc/filename.html | 94 + .../Module/FatFS/documents/doc/findfirst.html | 118 + .../Module/FatFS/documents/doc/findnext.html | 69 + .../Module/FatFS/documents/doc/forward.html | 139 + source/Module/FatFS/documents/doc/getcwd.html | 83 + .../Module/FatFS/documents/doc/getfree.html | 94 + .../Module/FatFS/documents/doc/getlabel.html | 90 + source/Module/FatFS/documents/doc/gets.html | 65 + source/Module/FatFS/documents/doc/lseek.html | 139 + source/Module/FatFS/documents/doc/mkdir.html | 80 + source/Module/FatFS/documents/doc/mkfs.html | 127 + source/Module/FatFS/documents/doc/mount.html | 122 + source/Module/FatFS/documents/doc/open.html | 185 + .../Module/FatFS/documents/doc/opendir.html | 75 + source/Module/FatFS/documents/doc/printf.html | 115 + source/Module/FatFS/documents/doc/putc.html | 60 + source/Module/FatFS/documents/doc/puts.html | 61 + source/Module/FatFS/documents/doc/rc.html | 135 + source/Module/FatFS/documents/doc/read.html | 80 + .../Module/FatFS/documents/doc/readdir.html | 139 + source/Module/FatFS/documents/doc/rename.html | 87 + source/Module/FatFS/documents/doc/sdir.html | 38 + source/Module/FatFS/documents/doc/setcp.html | 82 + .../Module/FatFS/documents/doc/setlabel.html | 92 + source/Module/FatFS/documents/doc/sfatfs.html | 62 + source/Module/FatFS/documents/doc/sfile.html | 43 + .../Module/FatFS/documents/doc/sfileinfo.html | 78 + source/Module/FatFS/documents/doc/size.html | 62 + source/Module/FatFS/documents/doc/stat.html | 112 + source/Module/FatFS/documents/doc/sync.html | 88 + source/Module/FatFS/documents/doc/tell.html | 62 + .../Module/FatFS/documents/doc/truncate.html | 66 + source/Module/FatFS/documents/doc/unlink.html | 74 + source/Module/FatFS/documents/doc/utime.html | 99 + source/Module/FatFS/documents/doc/write.html | 80 + source/Module/FatFS/documents/res/app1.c | 44 + source/Module/FatFS/documents/res/app2.c | 81 + source/Module/FatFS/documents/res/app3.c | 109 + source/Module/FatFS/documents/res/app4.c | 315 + source/Module/FatFS/documents/res/app5.c | 38 + source/Module/FatFS/documents/res/app6.c | 61 + source/Module/FatFS/documents/res/f1.png | Bin 0 -> 1414 bytes source/Module/FatFS/documents/res/f2.png | Bin 0 -> 1458 bytes source/Module/FatFS/documents/res/f3.png | Bin 0 -> 1039 bytes source/Module/FatFS/documents/res/f4.png | Bin 0 -> 1973 bytes source/Module/FatFS/documents/res/f5.png | Bin 0 -> 2224 bytes source/Module/FatFS/documents/res/f6.png | Bin 0 -> 1464 bytes source/Module/FatFS/documents/res/f7.png | Bin 0 -> 25760 bytes source/Module/FatFS/documents/res/funcs.png | Bin 0 -> 26839 bytes source/Module/FatFS/documents/res/layers.png | Bin 0 -> 5521 bytes source/Module/FatFS/documents/res/layers1.png | Bin 0 -> 3843 bytes source/Module/FatFS/documents/res/layers2.png | Bin 0 -> 4950 bytes source/Module/FatFS/documents/res/layers3.png | Bin 0 -> 2379 bytes .../Module/FatFS/documents/res/mkfatimg.zip | Bin 0 -> 778875 bytes source/Module/FatFS/documents/res/mkfs.xlsx | Bin 0 -> 1491997 bytes source/Module/FatFS/documents/res/modules.png | Bin 0 -> 15396 bytes source/Module/FatFS/documents/res/rwtest1.png | Bin 0 -> 69114 bytes source/Module/FatFS/documents/res/rwtest2.png | Bin 0 -> 8153 bytes source/Module/FatFS/documents/res/rwtest3.png | Bin 0 -> 3011 bytes source/Module/FatFS/documents/res/uniconv.zip | Bin 0 -> 4175 bytes source/Module/FatFS/documents/updates.html | 481 + source/Module/FatFS/ff15.zip | Bin 0 -> 2379894 bytes source/Module/FatFS/source/00history.txt | 369 + source/Module/FatFS/source/00readme.txt | 21 + source/Module/FatFS/source/diskio.c | 233 + source/Module/FatFS/source/diskio.h | 77 + source/Module/FatFS/source/ff.c | 7085 ++++ source/Module/FatFS/source/ff.h | 429 + source/Module/FatFS/source/ffconf.h | 296 + source/Module/FatFS/source/ffsystem.c | 223 + source/Module/FatFS/source/ffunicode.c | 15593 ++++++++ source/Module/FatFS/source/sd_diskio.c | 204 + source/Module/FatFS/source/sd_diskio.h | 26 + source/Module/SDCard/sd_card.c | 1319 + source/Module/SDCard/sd_card.h | 404 + source/Module/SDCard/sd_card_1.c | 1268 + source/Module/SDCard/sdmmc_cmd.c | 1641 + source/Module/SDCard/sdmmc_cmd.h | 311 + source/Module/SDCard/sdmmc_cmd_1.c | 1641 + source/Module/SHT20/SHT20.C | 615 + source/Module/SHT20/SHT20.H | 156 + source/Module/SX127x/sx127x.c | 654 + source/Module/SX127x/sx127x.h | 802 + source/User/Inc/ADS1231.h | 13 + source/User/Inc/AppTask.h | 0 source/User/Inc/CatOneTask.h | 107 + source/User/Inc/DebugCmd.h | 7 + source/User/Inc/Encryption.h | 7 + source/User/Inc/LoraTask.h | 11 + source/User/Inc/Public.h | 381 + source/User/Inc/PublicTypes.h | 14 + source/User/Inc/RS485Task.h | 69 + source/User/Inc/bsp.h | 314 + source/User/Inc/ddl_config.h | 160 + source/User/Inc/main.h | 74 + source/User/Inc/spiflash.h | 75 + source/User/Src/ADS1231.c | 126 + source/User/Src/AppTask.c | 0 source/User/Src/CatOneTask.c | 709 + source/User/Src/DebugCmd.c | 1450 + source/User/Src/Encryption.c | 87 + source/User/Src/LoraTask.c | 188 + source/User/Src/Public.c | 905 + source/User/Src/RS485Task.c | 546 + source/User/Src/bsp.c | 413 + source/User/Src/main.c | 338 + source/User/Src/spiflash.c | 486 + version.txt | 267 + 串口升级协议.xlsx | Bin 0 -> 12665 bytes 240 files changed, 131805 insertions(+) create mode 100644 MDK/BootLoader.uvoptx create mode 100644 MDK/BootLoader.uvprojx create mode 100644 MDK/EventRecorderStub.scvd create mode 100644 MDK/JLinkSettings.ini create mode 100644 MDK/RTE/File_System/FS_Config.c create mode 100644 MDK/RTE/File_System/FS_Config_MC_0.h create mode 100644 MDK/RTE/File_System/FS_Debug.c create mode 100644 MDK/RTE/Network/Net_Config.c create mode 100644 MDK/RTE/Network/Net_Config_ETH_0.h create mode 100644 MDK/RTE/Network/Net_Config_TCP.h create mode 100644 MDK/RTE/RTOS/board.c create mode 100644 MDK/RTE/RTOS/board.c.base@3.1.5 create mode 100644 MDK/RTE/RTOS/rtconfig.h create mode 100644 MDK/RTE/RTOS/rtconfig.h.base@3.1.5 create mode 100644 MDK/RTE/_Debug/RTE_Components.h create mode 100644 MDK/RTE/_Release/RTE_Components.h create mode 100644 MDK/RTE/_i2c_24c256_Debug/RTE_Components.h create mode 100644 MDK/RTE/_i2c_24c256_Release/RTE_Components.h create mode 100644 MDK/RTE/_template_Debug/RTE_Components.h create mode 100644 MDK/startup_hc32f460.s create mode 100644 Update.exe create mode 100644 driver/inc/hc32f460_adc.h create mode 100644 driver/inc/hc32f460_aes.h create mode 100644 driver/inc/hc32f460_can.h create mode 100644 driver/inc/hc32f460_can1.h create mode 100644 driver/inc/hc32f460_clk.h create mode 100644 driver/inc/hc32f460_cmp.h create mode 100644 driver/inc/hc32f460_crc.h create mode 100644 driver/inc/hc32f460_dcu.h create mode 100644 driver/inc/hc32f460_dmac.h create mode 100644 driver/inc/hc32f460_efm.h create mode 100644 driver/inc/hc32f460_emb.h create mode 100644 driver/inc/hc32f460_event_port.h create mode 100644 driver/inc/hc32f460_exint_nmi_swi.h create mode 100644 driver/inc/hc32f460_gpio.h create mode 100644 driver/inc/hc32f460_hash.h create mode 100644 driver/inc/hc32f460_i2c.h create mode 100644 driver/inc/hc32f460_i2s.h create mode 100644 driver/inc/hc32f460_icg.h create mode 100644 driver/inc/hc32f460_interrupts.h create mode 100644 driver/inc/hc32f460_keyscan.h create mode 100644 driver/inc/hc32f460_mpu.h create mode 100644 driver/inc/hc32f460_ots.h create mode 100644 driver/inc/hc32f460_pwc.h create mode 100644 driver/inc/hc32f460_qspi.h create mode 100644 driver/inc/hc32f460_rmu.h create mode 100644 driver/inc/hc32f460_rtc.h create mode 100644 driver/inc/hc32f460_sdioc.h create mode 100644 driver/inc/hc32f460_spi.h create mode 100644 driver/inc/hc32f460_sram.h create mode 100644 driver/inc/hc32f460_swdt.h create mode 100644 driver/inc/hc32f460_timer0.h create mode 100644 driver/inc/hc32f460_timer4_cnt.h create mode 100644 driver/inc/hc32f460_timer4_emb.h create mode 100644 driver/inc/hc32f460_timer4_oco.h create mode 100644 driver/inc/hc32f460_timer4_pwm.h create mode 100644 driver/inc/hc32f460_timer4_sevt.h create mode 100644 driver/inc/hc32f460_timer6.h create mode 100644 driver/inc/hc32f460_timera.h create mode 100644 driver/inc/hc32f460_trng.h create mode 100644 driver/inc/hc32f460_usart.h create mode 100644 driver/inc/hc32f460_utility.h create mode 100644 driver/inc/hc32f460_wdt.h create mode 100644 driver/src/hc32f460_adc.c create mode 100644 driver/src/hc32f460_aes.c create mode 100644 driver/src/hc32f460_can.c create mode 100644 driver/src/hc32f460_can1.c create mode 100644 driver/src/hc32f460_clk.c create mode 100644 driver/src/hc32f460_cmp.c create mode 100644 driver/src/hc32f460_crc.c create mode 100644 driver/src/hc32f460_dcu.c create mode 100644 driver/src/hc32f460_dmac.c create mode 100644 driver/src/hc32f460_efm.c create mode 100644 driver/src/hc32f460_emb.c create mode 100644 driver/src/hc32f460_event_port.c create mode 100644 driver/src/hc32f460_exint_nmi_swi.c create mode 100644 driver/src/hc32f460_gpio.c create mode 100644 driver/src/hc32f460_hash.c create mode 100644 driver/src/hc32f460_i2c.c create mode 100644 driver/src/hc32f460_i2s.c create mode 100644 driver/src/hc32f460_icg.c create mode 100644 driver/src/hc32f460_interrupts.c create mode 100644 driver/src/hc32f460_keyscan.c create mode 100644 driver/src/hc32f460_mpu.c create mode 100644 driver/src/hc32f460_ots.c create mode 100644 driver/src/hc32f460_pwc.c create mode 100644 driver/src/hc32f460_qspi.c create mode 100644 driver/src/hc32f460_rmu.c create mode 100644 driver/src/hc32f460_rtc.c create mode 100644 driver/src/hc32f460_sdioc.c create mode 100644 driver/src/hc32f460_spi.c create mode 100644 driver/src/hc32f460_sram.c create mode 100644 driver/src/hc32f460_swdt.c create mode 100644 driver/src/hc32f460_timer0.c create mode 100644 driver/src/hc32f460_timer4_cnt.c create mode 100644 driver/src/hc32f460_timer4_emb.c create mode 100644 driver/src/hc32f460_timer4_oco.c create mode 100644 driver/src/hc32f460_timer4_pwm.c create mode 100644 driver/src/hc32f460_timer4_sevt.c create mode 100644 driver/src/hc32f460_timer6.c create mode 100644 driver/src/hc32f460_timera.c create mode 100644 driver/src/hc32f460_trng.c create mode 100644 driver/src/hc32f460_usart.c create mode 100644 driver/src/hc32f460_utility.c create mode 100644 driver/src/hc32f460_wdt.c create mode 100644 mcu/common/hc32_common.h create mode 100644 mcu/common/hc32_ddl.h create mode 100644 mcu/common/hc32f460.h create mode 100644 mcu/common/system_hc32f460.c create mode 100644 mcu/common/system_hc32f460.h create mode 100644 source/Module/AD7924/ad7924.c create mode 100644 source/Module/FatFS/LICENSE.txt create mode 100644 source/Module/FatFS/documents/00index_e.html create mode 100644 source/Module/FatFS/documents/css_e.css create mode 100644 source/Module/FatFS/documents/doc/appnote.html create mode 100644 source/Module/FatFS/documents/doc/chdir.html create mode 100644 source/Module/FatFS/documents/doc/chdrive.html create mode 100644 source/Module/FatFS/documents/doc/chmod.html create mode 100644 source/Module/FatFS/documents/doc/close.html create mode 100644 source/Module/FatFS/documents/doc/closedir.html create mode 100644 source/Module/FatFS/documents/doc/config.html create mode 100644 source/Module/FatFS/documents/doc/dinit.html create mode 100644 source/Module/FatFS/documents/doc/dioctl.html create mode 100644 source/Module/FatFS/documents/doc/dread.html create mode 100644 source/Module/FatFS/documents/doc/dstat.html create mode 100644 source/Module/FatFS/documents/doc/dwrite.html create mode 100644 source/Module/FatFS/documents/doc/eof.html create mode 100644 source/Module/FatFS/documents/doc/error.html create mode 100644 source/Module/FatFS/documents/doc/expand.html create mode 100644 source/Module/FatFS/documents/doc/fattime.html create mode 100644 source/Module/FatFS/documents/doc/fdisk.html create mode 100644 source/Module/FatFS/documents/doc/filename.html create mode 100644 source/Module/FatFS/documents/doc/findfirst.html create mode 100644 source/Module/FatFS/documents/doc/findnext.html create mode 100644 source/Module/FatFS/documents/doc/forward.html create mode 100644 source/Module/FatFS/documents/doc/getcwd.html create mode 100644 source/Module/FatFS/documents/doc/getfree.html create mode 100644 source/Module/FatFS/documents/doc/getlabel.html create mode 100644 source/Module/FatFS/documents/doc/gets.html create mode 100644 source/Module/FatFS/documents/doc/lseek.html create mode 100644 source/Module/FatFS/documents/doc/mkdir.html create mode 100644 source/Module/FatFS/documents/doc/mkfs.html create mode 100644 source/Module/FatFS/documents/doc/mount.html create mode 100644 source/Module/FatFS/documents/doc/open.html create mode 100644 source/Module/FatFS/documents/doc/opendir.html create mode 100644 source/Module/FatFS/documents/doc/printf.html create mode 100644 source/Module/FatFS/documents/doc/putc.html create mode 100644 source/Module/FatFS/documents/doc/puts.html create mode 100644 source/Module/FatFS/documents/doc/rc.html create mode 100644 source/Module/FatFS/documents/doc/read.html create mode 100644 source/Module/FatFS/documents/doc/readdir.html create mode 100644 source/Module/FatFS/documents/doc/rename.html create mode 100644 source/Module/FatFS/documents/doc/sdir.html create mode 100644 source/Module/FatFS/documents/doc/setcp.html create mode 100644 source/Module/FatFS/documents/doc/setlabel.html create mode 100644 source/Module/FatFS/documents/doc/sfatfs.html create mode 100644 source/Module/FatFS/documents/doc/sfile.html create mode 100644 source/Module/FatFS/documents/doc/sfileinfo.html create mode 100644 source/Module/FatFS/documents/doc/size.html create mode 100644 source/Module/FatFS/documents/doc/stat.html create mode 100644 source/Module/FatFS/documents/doc/sync.html create mode 100644 source/Module/FatFS/documents/doc/tell.html create mode 100644 source/Module/FatFS/documents/doc/truncate.html create mode 100644 source/Module/FatFS/documents/doc/unlink.html create mode 100644 source/Module/FatFS/documents/doc/utime.html create mode 100644 source/Module/FatFS/documents/doc/write.html create mode 100644 source/Module/FatFS/documents/res/app1.c create mode 100644 source/Module/FatFS/documents/res/app2.c create mode 100644 source/Module/FatFS/documents/res/app3.c create mode 100644 source/Module/FatFS/documents/res/app4.c create mode 100644 source/Module/FatFS/documents/res/app5.c create mode 100644 source/Module/FatFS/documents/res/app6.c create mode 100644 source/Module/FatFS/documents/res/f1.png create mode 100644 source/Module/FatFS/documents/res/f2.png create mode 100644 source/Module/FatFS/documents/res/f3.png create mode 100644 source/Module/FatFS/documents/res/f4.png create mode 100644 source/Module/FatFS/documents/res/f5.png create mode 100644 source/Module/FatFS/documents/res/f6.png create mode 100644 source/Module/FatFS/documents/res/f7.png create mode 100644 source/Module/FatFS/documents/res/funcs.png create mode 100644 source/Module/FatFS/documents/res/layers.png create mode 100644 source/Module/FatFS/documents/res/layers1.png create mode 100644 source/Module/FatFS/documents/res/layers2.png create mode 100644 source/Module/FatFS/documents/res/layers3.png create mode 100644 source/Module/FatFS/documents/res/mkfatimg.zip create mode 100644 source/Module/FatFS/documents/res/mkfs.xlsx create mode 100644 source/Module/FatFS/documents/res/modules.png create mode 100644 source/Module/FatFS/documents/res/rwtest1.png create mode 100644 source/Module/FatFS/documents/res/rwtest2.png create mode 100644 source/Module/FatFS/documents/res/rwtest3.png create mode 100644 source/Module/FatFS/documents/res/uniconv.zip create mode 100644 source/Module/FatFS/documents/updates.html create mode 100644 source/Module/FatFS/ff15.zip create mode 100644 source/Module/FatFS/source/00history.txt create mode 100644 source/Module/FatFS/source/00readme.txt create mode 100644 source/Module/FatFS/source/diskio.c create mode 100644 source/Module/FatFS/source/diskio.h create mode 100644 source/Module/FatFS/source/ff.c create mode 100644 source/Module/FatFS/source/ff.h create mode 100644 source/Module/FatFS/source/ffconf.h create mode 100644 source/Module/FatFS/source/ffsystem.c create mode 100644 source/Module/FatFS/source/ffunicode.c create mode 100644 source/Module/FatFS/source/sd_diskio.c create mode 100644 source/Module/FatFS/source/sd_diskio.h create mode 100644 source/Module/SDCard/sd_card.c create mode 100644 source/Module/SDCard/sd_card.h create mode 100644 source/Module/SDCard/sd_card_1.c create mode 100644 source/Module/SDCard/sdmmc_cmd.c create mode 100644 source/Module/SDCard/sdmmc_cmd.h create mode 100644 source/Module/SDCard/sdmmc_cmd_1.c create mode 100644 source/Module/SHT20/SHT20.C create mode 100644 source/Module/SHT20/SHT20.H create mode 100644 source/Module/SX127x/sx127x.c create mode 100644 source/Module/SX127x/sx127x.h create mode 100644 source/User/Inc/ADS1231.h create mode 100644 source/User/Inc/AppTask.h create mode 100644 source/User/Inc/CatOneTask.h create mode 100644 source/User/Inc/DebugCmd.h create mode 100644 source/User/Inc/Encryption.h create mode 100644 source/User/Inc/LoraTask.h create mode 100644 source/User/Inc/Public.h create mode 100644 source/User/Inc/PublicTypes.h create mode 100644 source/User/Inc/RS485Task.h create mode 100644 source/User/Inc/bsp.h create mode 100644 source/User/Inc/ddl_config.h create mode 100644 source/User/Inc/main.h create mode 100644 source/User/Inc/spiflash.h create mode 100644 source/User/Src/ADS1231.c create mode 100644 source/User/Src/AppTask.c create mode 100644 source/User/Src/CatOneTask.c create mode 100644 source/User/Src/DebugCmd.c create mode 100644 source/User/Src/Encryption.c create mode 100644 source/User/Src/LoraTask.c create mode 100644 source/User/Src/Public.c create mode 100644 source/User/Src/RS485Task.c create mode 100644 source/User/Src/bsp.c create mode 100644 source/User/Src/main.c create mode 100644 source/User/Src/spiflash.c create mode 100644 version.txt create mode 100644 串口升级协议.xlsx diff --git a/MDK/BootLoader.uvoptx b/MDK/BootLoader.uvoptx new file mode 100644 index 0000000..8f1d100 --- /dev/null +++ b/MDK/BootLoader.uvoptx @@ -0,0 +1,831 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Release + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\output\debug\ + + + 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 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 12 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + CMSIS_AGDI + -X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460PETB$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460PETB$FlashARM\HC32F460_otp.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN2 -FC1000 -FD1FFF8000 -FF0HC32F460_512K -FF1HC32F460_otp -FL080000 -FL13FC -FS00 -FS13000C00 -FP0($$Device:HC32F460PETB$FlashARM\HC32F460_512K.FLM) -FP1($$Device:HC32F460PETB$FlashARM\HC32F460_otp.FLM) + + + 0 + JL2CM3 + -U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_256K.FLM -FS00 -FL040000 -FP0($$Device:HC32F460JCTA$FlashARM\HC32F460_256K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460PETB$FlashARM\HC32F460_otp.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + + + + 0 + 1 + BL.RxBuff + + + 1 + 1 + BL.Para,0x10 + + + + + 0 + 2 + SComm2Para + + + + + 1 + 0 + 0x00008000 + 0 + + + + + 2 + 2 + 0x20000f35 + 0 + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + common + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\mcu\common\system_hc32f460.c + system_hc32f460.c + 0 + 0 + + + 1 + 2 + 2 + 0 + 0 + 0 + .\startup_hc32f460.s + startup_hc32f460.s + 0 + 0 + + + + + User + 1 + 0 + 0 + 0 + + 2 + 3 + 1 + 0 + 0 + 0 + ..\source\User\Src\main.c + main.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\source\User\Src\bsp.c + bsp.c + 0 + 0 + + + + + driver + 0 + 0 + 0 + 0 + + 3 + 5 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_adc.c + hc32f460_adc.c + 0 + 0 + + + 3 + 6 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_aes.c + hc32f460_aes.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_can.c + hc32f460_can.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_can1.c + hc32f460_can1.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_clk.c + hc32f460_clk.c + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_cmp.c + hc32f460_cmp.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_crc.c + hc32f460_crc.c + 0 + 0 + + + 3 + 12 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_dcu.c + hc32f460_dcu.c + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_dmac.c + hc32f460_dmac.c + 0 + 0 + + + 3 + 14 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_efm.c + hc32f460_efm.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_emb.c + hc32f460_emb.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_event_port.c + hc32f460_event_port.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_exint_nmi_swi.c + hc32f460_exint_nmi_swi.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_gpio.c + hc32f460_gpio.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_hash.c + hc32f460_hash.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_i2c.c + hc32f460_i2c.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_i2s.c + hc32f460_i2s.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_icg.c + hc32f460_icg.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_interrupts.c + hc32f460_interrupts.c + 0 + 0 + + + 3 + 24 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_keyscan.c + hc32f460_keyscan.c + 0 + 0 + + + 3 + 25 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_mpu.c + hc32f460_mpu.c + 0 + 0 + + + 3 + 26 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_ots.c + hc32f460_ots.c + 0 + 0 + + + 3 + 27 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_pwc.c + hc32f460_pwc.c + 0 + 0 + + + 3 + 28 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_qspi.c + hc32f460_qspi.c + 0 + 0 + + + 3 + 29 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_rmu.c + hc32f460_rmu.c + 0 + 0 + + + 3 + 30 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_rtc.c + hc32f460_rtc.c + 0 + 0 + + + 3 + 31 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_sdioc.c + hc32f460_sdioc.c + 0 + 0 + + + 3 + 32 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_spi.c + hc32f460_spi.c + 0 + 0 + + + 3 + 33 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_sram.c + hc32f460_sram.c + 0 + 0 + + + 3 + 34 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_swdt.c + hc32f460_swdt.c + 0 + 0 + + + 3 + 35 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer0.c + hc32f460_timer0.c + 0 + 0 + + + 3 + 36 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer4_cnt.c + hc32f460_timer4_cnt.c + 0 + 0 + + + 3 + 37 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer4_emb.c + hc32f460_timer4_emb.c + 0 + 0 + + + 3 + 38 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer4_oco.c + hc32f460_timer4_oco.c + 0 + 0 + + + 3 + 39 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer4_pwm.c + hc32f460_timer4_pwm.c + 0 + 0 + + + 3 + 40 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer4_sevt.c + hc32f460_timer4_sevt.c + 0 + 0 + + + 3 + 41 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timer6.c + hc32f460_timer6.c + 0 + 0 + + + 3 + 42 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_timera.c + hc32f460_timera.c + 0 + 0 + + + 3 + 43 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_trng.c + hc32f460_trng.c + 0 + 0 + + + 3 + 44 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_usart.c + hc32f460_usart.c + 0 + 0 + + + 3 + 45 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_utility.c + hc32f460_utility.c + 0 + 0 + + + 3 + 46 + 1 + 0 + 0 + 0 + ..\driver\src\hc32f460_wdt.c + hc32f460_wdt.c + 0 + 0 + + + + + Readme + 1 + 0 + 0 + 0 + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/MDK/BootLoader.uvprojx b/MDK/BootLoader.uvprojx new file mode 100644 index 0000000..af1973f --- /dev/null +++ b/MDK/BootLoader.uvprojx @@ -0,0 +1,711 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Release + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::ARMCC + 0 + + + HC32F460PETB + HDSC + HDSC.HC32F460.1.0.12 + https://raw.githubusercontent.com/hdscmcu/pack/master/ + IRAM(0x1FFF8000,0x2F000) IRAM2(0x200F0000,0x1000) IROM(0x00000000,0x80000) IROM2(0x03000C00,0x003FC) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K -FS00 -FL080000 -FF1HC32F460_otp -FS13000C00 -FL13FC -FP0($$Device:HC32F460PETB$FlashARM\HC32F460_512K.FLM) -FP1($$Device:HC32F460PETB$FlashARM\HC32F460_otp.FLM)) + 0 + $$Device:HC32F460PETB$Device\Include\HC32F460PETB.h + + + + + + + + + + $$Device:HC32F460PETB$SVD\HC32F460PETB.svd + 1 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\output\debug\ + GateWay + 1 + 0 + 1 + 1 + 1 + .\output\debug\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin -o "$L@L.bin" "#L" + + 0 + 0 + 0 + 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 + 0 + 1 + 1 + 8 + 1 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x1fff8000 + 0x2f000 + + + 1 + 0x0 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x80000 + + + 1 + 0x3000c00 + 0x3fc + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x1fff8000 + 0x2f000 + + + 0 + 0x200f0000 + 0x1000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + --diag_suppress=186,66 + __DEBUG,HC32F460,USE_DEVICE_DRIVER_LIB,JEUA + + ..\driver\src;..\driver\inc;..\mcu\common;..\source\User\Src;..\source\User\Inc;..\source\Module\Debug;..\source\Module\SDCard;..\source\Module\FatFS\source;..\source\Module\SX127x + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x1FFF8000 + + i2c_24c256.sct + + + --keep=*Handler + + + + + + + + common + + + system_hc32f460.c + 1 + ..\mcu\common\system_hc32f460.c + + + startup_hc32f460.s + 2 + .\startup_hc32f460.s + + + + + User + + + main.c + 1 + ..\source\User\Src\main.c + + + bsp.c + 1 + ..\source\User\Src\bsp.c + + + + + driver + + + hc32f460_adc.c + 1 + ..\driver\src\hc32f460_adc.c + + + hc32f460_aes.c + 1 + ..\driver\src\hc32f460_aes.c + + + hc32f460_can.c + 1 + ..\driver\src\hc32f460_can.c + + + hc32f460_can1.c + 1 + ..\driver\src\hc32f460_can1.c + + + hc32f460_clk.c + 1 + ..\driver\src\hc32f460_clk.c + + + hc32f460_cmp.c + 1 + ..\driver\src\hc32f460_cmp.c + + + hc32f460_crc.c + 1 + ..\driver\src\hc32f460_crc.c + + + hc32f460_dcu.c + 1 + ..\driver\src\hc32f460_dcu.c + + + hc32f460_dmac.c + 1 + ..\driver\src\hc32f460_dmac.c + + + hc32f460_efm.c + 1 + ..\driver\src\hc32f460_efm.c + + + hc32f460_emb.c + 1 + ..\driver\src\hc32f460_emb.c + + + hc32f460_event_port.c + 1 + ..\driver\src\hc32f460_event_port.c + + + hc32f460_exint_nmi_swi.c + 1 + ..\driver\src\hc32f460_exint_nmi_swi.c + + + hc32f460_gpio.c + 1 + ..\driver\src\hc32f460_gpio.c + + + hc32f460_hash.c + 1 + ..\driver\src\hc32f460_hash.c + + + hc32f460_i2c.c + 1 + ..\driver\src\hc32f460_i2c.c + + + hc32f460_i2s.c + 1 + ..\driver\src\hc32f460_i2s.c + + + hc32f460_icg.c + 1 + ..\driver\src\hc32f460_icg.c + + + hc32f460_interrupts.c + 1 + ..\driver\src\hc32f460_interrupts.c + + + hc32f460_keyscan.c + 1 + ..\driver\src\hc32f460_keyscan.c + + + hc32f460_mpu.c + 1 + ..\driver\src\hc32f460_mpu.c + + + hc32f460_ots.c + 1 + ..\driver\src\hc32f460_ots.c + + + hc32f460_pwc.c + 1 + ..\driver\src\hc32f460_pwc.c + + + hc32f460_qspi.c + 1 + ..\driver\src\hc32f460_qspi.c + + + hc32f460_rmu.c + 1 + ..\driver\src\hc32f460_rmu.c + + + hc32f460_rtc.c + 1 + ..\driver\src\hc32f460_rtc.c + + + hc32f460_sdioc.c + 1 + ..\driver\src\hc32f460_sdioc.c + + + hc32f460_spi.c + 1 + ..\driver\src\hc32f460_spi.c + + + hc32f460_sram.c + 1 + ..\driver\src\hc32f460_sram.c + + + hc32f460_swdt.c + 1 + ..\driver\src\hc32f460_swdt.c + + + hc32f460_timer0.c + 1 + ..\driver\src\hc32f460_timer0.c + + + hc32f460_timer4_cnt.c + 1 + ..\driver\src\hc32f460_timer4_cnt.c + + + hc32f460_timer4_emb.c + 1 + ..\driver\src\hc32f460_timer4_emb.c + + + hc32f460_timer4_oco.c + 1 + ..\driver\src\hc32f460_timer4_oco.c + + + hc32f460_timer4_pwm.c + 1 + ..\driver\src\hc32f460_timer4_pwm.c + + + hc32f460_timer4_sevt.c + 1 + ..\driver\src\hc32f460_timer4_sevt.c + + + hc32f460_timer6.c + 1 + ..\driver\src\hc32f460_timer6.c + + + hc32f460_timera.c + 1 + ..\driver\src\hc32f460_timera.c + + + hc32f460_trng.c + 1 + ..\driver\src\hc32f460_trng.c + + + hc32f460_usart.c + 1 + ..\driver\src\hc32f460_usart.c + + + hc32f460_utility.c + 1 + ..\driver\src\hc32f460_utility.c + + + hc32f460_wdt.c + 1 + ..\driver\src\hc32f460_wdt.c + + + + + Readme + + + ::CMSIS + + + + + + + + + + + + + + + + + + RTE\File_System\FS_Config.c + + + + + + RTE\File_System\FS_Config_MC_0.h + + + + + + RTE\File_System\FS_Debug.c + + + + + + RTE\Network\Net_Config.c + + + + + + RTE\Network\Net_Config_ETH_0.h + + + + + + RTE\Network\Net_Config_TCP.h + + + + + + RTE\RTOS\board.c + + + + + + RTE\RTOS\rtconfig.h + + + + + + + + + + + GateWay + 0 + 1 + + + + +
diff --git a/MDK/EventRecorderStub.scvd b/MDK/EventRecorderStub.scvd new file mode 100644 index 0000000..2956b29 --- /dev/null +++ b/MDK/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/MDK/JLinkSettings.ini b/MDK/JLinkSettings.ini new file mode 100644 index 0000000..b06dcf5 --- /dev/null +++ b/MDK/JLinkSettings.ini @@ -0,0 +1,35 @@ +[BREAKPOINTS] +ForceImpTypeAny = 0 +ShowInfoWin = 1 +EnableFlashBP = 2 +BPDuringExecution = 0 +[CFI] +CFISize = 0x00 +CFIAddr = 0x00 +[CPU] +OverrideMemMap = 0 +AllowSimulation = 1 +ScriptFile="" +[FLASH] +CacheExcludeSize = 0x00 +CacheExcludeAddr = 0x00 +MinNumBytesFlashDL = 0 +SkipProgOnCRCMatch = 1 +VerifyDownload = 1 +AllowCaching = 1 +EnableFlashDL = 2 +Override = 1 +Device="Cortex-M4" +[GENERAL] +WorkRAMSize = 0x00 +WorkRAMAddr = 0x00 +RAMUsageLimit = 0x00 +[SWO] +SWOLogFile="" +[MEM] +RdOverrideOrMask = 0x00 +RdOverrideAndMask = 0xFFFFFFFF +RdOverrideAddr = 0xFFFFFFFF +WrOverrideOrMask = 0x00 +WrOverrideAndMask = 0xFFFFFFFF +WrOverrideAddr = 0xFFFFFFFF diff --git a/MDK/RTE/File_System/FS_Config.c b/MDK/RTE/File_System/FS_Config.c new file mode 100644 index 0000000..21f42a7 --- /dev/null +++ b/MDK/RTE/File_System/FS_Config.c @@ -0,0 +1,78 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::File System + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: FS_Config.c + * Purpose: File System Configuration + * Rev.: V6.3.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// FAT File System +// Define FAT File System parameters + +// Number of open files <1-16> +// Define number of files that can be opened at the same time. +// Default: 4 +#define FAT_MAX_OPEN_FILES 4 + +// + +// Embedded File System +// Define Embedded File System parameters + +// Number of open files <1-16> +// Define number of files that can be opened at the same time. +// Default: 4 +#define EFS_MAX_OPEN_FILES 4 + +// + +// Initial Current Drive <0=>F0: <1=>F1: +// <2=>M0: <3=>M1: +// <4=>N0: <5=>N1: +// <6=>R0: <9=>R1: +// <7=>U0: <8=>U1: +// Set initial setting for current drive. Current drive is used for File System functions +// that are invoked with the "" string and can be altered anytime during run-time. +#define FS_INITIAL_CDRIVE 2 + +#include "RTE_Components.h" + +#ifdef RTE_FileSystem_Drive_RAM_0 +#include "FS_Config_RAM_0.h" +#endif +#ifdef RTE_FileSystem_Drive_RAM_1 +#include "FS_Config_RAM_1.h" +#endif + +#ifdef RTE_FileSystem_Drive_NOR_0 +#include "FS_Config_NOR_0.h" +#endif +#ifdef RTE_FileSystem_Drive_NOR_1 +#include "FS_Config_NOR_1.h" +#endif + +#ifdef RTE_FileSystem_Drive_NAND_0 +#include "FS_Config_NAND_0.h" +#endif +#ifdef RTE_FileSystem_Drive_NAND_1 +#include "FS_Config_NAND_1.h" +#endif + +#ifdef RTE_FileSystem_Drive_MC_0 +#include "FS_Config_MC_0.h" +#endif +#ifdef RTE_FileSystem_Drive_MC_1 +#include "FS_Config_MC_1.h" +#endif + +#ifdef RTE_FileSystem_Drive_USB_0 +#include "FS_Config_USB_0.h" +#endif +#ifdef RTE_FileSystem_Drive_USB_1 +#include "FS_Config_USB_1.h" +#endif + +#include "fs_config.h" diff --git a/MDK/RTE/File_System/FS_Config_MC_0.h b/MDK/RTE/File_System/FS_Config_MC_0.h new file mode 100644 index 0000000..b04116e --- /dev/null +++ b/MDK/RTE/File_System/FS_Config_MC_0.h @@ -0,0 +1,55 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::File System:Drive + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: FS_Config_MC_0.h + * Purpose: File System Configuration for Memory Card Drive + * Rev.: V6.2.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Memory Card Drive 0 +// Configuration for SD/SDHC/MMC Memory Card assigned to drive letter "M0:" +#define MC0_ENABLE 1 + +// Connect to hardware via Driver_MCI# <0-255> +// Select driver control block for hardware interface +#define MC0_MCI_DRIVER 0 + +// Connect to hardware via Driver_SPI# <0-255> +// Select driver control block for hardware interface when in SPI mode +#define MC0_SPI_DRIVER 0 + +// Memory Card Interface Mode <0=>Native <1=>SPI +// Native uses a SD Bus with up to 8 data lines, CLK, and CMD +// SPI uses 2 data lines (MOSI and MISO), SCLK and CS +#define MC0_SPI 0 + +// Drive Cache Size <0=>OFF <1=>1 KB <2=>2 KB <4=>4 KB +// <8=>8 KB <16=>16 KB <32=>32 KB +// Drive Cache stores data sectors and may be increased to speed-up +// file read/write operations on this drive (default: 4 KB) +#define MC0_CACHE_SIZE 4 + +// Locate Drive Cache and Drive Buffer +// Some microcontrollers support DMA only in specific memory areas and +// require to locate the drive buffers at a fixed address. +#define MC0_CACHE_RELOC 0 + +// Base address <0x0000-0xFFFFFE00:0x200> +// Set buffer base address to RAM areas that support DMA with the drive. +#define MC0_CACHE_ADDR 0x7FD00000 + +// +// Filename Cache Size <0-1000000> +// Define number of cached file or directory names. +// 48 bytes of RAM is required for each cached name. +#define MC0_NAME_CACHE_SIZE 0 + +// Use FAT Journal +// Protect File Allocation Table and Directory Entries for +// fail-safe operation. +#define MC0_FAT_JOURNAL 0 + +// diff --git a/MDK/RTE/File_System/FS_Debug.c b/MDK/RTE/File_System/FS_Debug.c new file mode 100644 index 0000000..38e37f5 --- /dev/null +++ b/MDK/RTE/File_System/FS_Debug.c @@ -0,0 +1,50 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::File System + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: FS_Debug.c + * Purpose: File System Debug Configuration + * Rev.: V1.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// File System Debug +// Enable File System event recording +#define FS_DEBUG_EVR_ENABLE 0 + +// Core Management <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsCore: Core Management event recording +#define FS_DEBUG_EVR_CORE 1 + +// FAT File System <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsFAT: FAT File System event recording +#define FS_DEBUG_EVR_FAT 1 + +// EFS File System <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsEFS: EFS File System event recording +#define FS_DEBUG_EVR_EFS 1 + +// I/O Control Interface <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsIOC: I/O Control Interface event recording +#define FS_DEBUG_EVR_IOC 1 + +// NAND Flash Translation Layer <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsNFTL: NAND Flash Translation Layer event recording +#define FS_DEBUG_EVR_NFTL 1 + +// NAND Device Interface <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsNAND: NAND Device Interface event recording +#define FS_DEBUG_EVR_NAND 1 + +// Memory Card MCI <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsMcMCI: Memory Card MCI event recording +#define FS_DEBUG_EVR_MC_MCI 1 + +// Memory Card SPI <0=>Off <1=>Errors <2=>Errors + API <3=>All +// Configure FsMcSPI: Memory Card SPI event recording +#define FS_DEBUG_EVR_MC_SPI 1 + +// + +#include "fs_debug.h" diff --git a/MDK/RTE/Network/Net_Config.c b/MDK/RTE/Network/Net_Config.c new file mode 100644 index 0000000..f72bbaf --- /dev/null +++ b/MDK/RTE/Network/Net_Config.c @@ -0,0 +1,173 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config.c + * Purpose: Network Configuration + * Rev.: V7.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network System Settings +// Global Network System definitions +// Local Host Name +// This is the name under which embedded host can be +// accessed on a local area network. +// Default: "my_host" +#define NET_HOST_NAME "my_host" + +// Memory Pool Size <1536-262144:4> +// This is the size of a memory pool in bytes. Buffers for +// network packets are allocated from this memory pool. +// Default: 12000 bytes +#define NET_MEM_POOL_SIZE 12000 + +// Start System Services +// If enabled, the system will automatically start server services +// (HTTP, FTP, TFTP server, ...) when initializing the network system. +// Default: Enabled +#define NET_START_SERVICE 1 + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Core Thread Stack Size <512-65535:4> +// Default: 1024 bytes +#define NET_THREAD_STACK_SIZE 1024 + +// Core Thread Priority +#define NET_THREAD_PRIORITY osPriorityNormal + +// +// + +//------------- <<< end of configuration section >>> --------------------------- + +#include "RTE_Components.h" + +#ifdef RTE_Network_Interface_ETH_0 +#include "Net_Config_ETH_0.h" +#endif +#ifdef RTE_Network_Interface_ETH_1 +#include "Net_Config_ETH_1.h" +#endif + +#ifdef RTE_Network_Interface_WiFi_0 +#include "Net_Config_WiFi_0.h" +#endif + +#ifdef RTE_Network_Interface_WiFi_1 +#include "Net_Config_WiFi_1.h" +#endif + +#ifdef RTE_Network_Interface_PPP +#include "Net_Config_PPP.h" +#endif + +#ifdef RTE_Network_Interface_SLIP +#include "Net_Config_SLIP.h" +#endif + +#ifdef RTE_Network_Socket_UDP +#include "Net_Config_UDP.h" +#endif +#ifdef RTE_Network_Socket_TCP +#include "Net_Config_TCP.h" +#endif +#ifdef RTE_Network_Socket_BSD +#include "Net_Config_BSD.h" +#endif + +#ifdef RTE_Network_Web_Server_RO +#include "Net_Config_HTTP_Server.h" +#endif +#ifdef RTE_Network_Web_Server_FS +#include "Net_Config_HTTP_Server.h" +#endif + +#ifdef RTE_Network_Telnet_Server +#include "Net_Config_Telnet_Server.h" +#endif + +#ifdef RTE_Network_TFTP_Server +#include "Net_Config_TFTP_Server.h" +#endif +#ifdef RTE_Network_TFTP_Client +#include "Net_Config_TFTP_Client.h" +#endif + +#ifdef RTE_Network_FTP_Server +#include "Net_Config_FTP_Server.h" +#endif +#ifdef RTE_Network_FTP_Client +#include "Net_Config_FTP_Client.h" +#endif + +#ifdef RTE_Network_DNS_Client +#include "Net_Config_DNS_Client.h" +#endif + +#ifdef RTE_Network_SMTP_Client +#include "Net_Config_SMTP_Client.h" +#endif + +#ifdef RTE_Network_SNMP_Agent +#include "Net_Config_SNMP_Agent.h" +#endif + +#ifdef RTE_Network_SNTP_Client +#include "Net_Config_SNTP_Client.h" +#endif + +#include "net_config.h" + +/** +\addtogroup net_genFunc +@{ +*/ +/** + \fn void net_sys_error (NET_ERROR error) + \ingroup net_cores + \brief Network system error handler. +*/ +void net_sys_error (NET_ERROR error) { + /* This function is called when a fatal error is encountered. */ + /* The normal program execution is not possible anymore. */ + + switch (error) { + case NET_ERROR_MEM_ALLOC: + /* Out of memory */ + break; + + case NET_ERROR_MEM_FREE: + /* Trying to release non existing memory block */ + break; + + case NET_ERROR_MEM_CORRUPT: + /* Memory Link pointer corrupted */ + /* More data written than the size of allocated memory block */ + break; + + case NET_ERROR_CONFIG: + /* Network configuration error detected */ + break; + + case NET_ERROR_UDP_ALLOC: + /* Out of UDP Sockets */ + break; + + case NET_ERROR_TCP_ALLOC: + /* Out of TCP Sockets */ + break; + + case NET_ERROR_TCP_STATE: + /* TCP State machine in undefined state */ + break; + } + + /* End-less loop */ + while (1); +} +/** +@} +*/ diff --git a/MDK/RTE/Network/Net_Config_ETH_0.h b/MDK/RTE/Network/Net_Config_ETH_0.h new file mode 100644 index 0000000..2fac34c --- /dev/null +++ b/MDK/RTE/Network/Net_Config_ETH_0.h @@ -0,0 +1,253 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Interface + * Copyright (c) 2004-2020 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_ETH_0.h + * Purpose: Network Configuration for ETH Interface + * Rev.: V7.3.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Ethernet Network Interface 0 +#define ETH0_ENABLE 1 + +// Connect to hardware via Driver_ETH# <0-255> +// Select driver control block for MAC and PHY interface +#define ETH0_DRIVER 0 + +// MAC Address +// Ethernet MAC Address in text representation +// Value FF-FF-FF-FF-FF-FF is not allowed, +// LSB of first byte must be 0 (an ethernet Multicast bit). +// Default: "1E-30-6C-A2-45-5E" +#define ETH0_MAC_ADDR "1E-30-6C-A2-45-5E" + +// VLAN +// Enable or disable Virtual LAN +#define ETH0_VLAN_ENABLE 0 + +// VLAN Identifier <1-4093> +// A unique 12-bit numeric value +// Default: 1 +#define ETH0_VLAN_ID 1 +// + +// IPv4 +// Enable IPv4 Protocol for Network Interface +#define ETH0_IP4_ENABLE 1 + +// IP Address +// Static IPv4 Address in text representation +// Default: "192.168.0.100" +#define ETH0_IP4_ADDR "192.168.0.100" + +// Subnet mask +// Local Subnet mask in text representation +// Default: "255.255.255.0" +#define ETH0_IP4_MASK "255.255.255.0" + +// Default Gateway +// IP Address of Default Gateway in text representation +// Default: "192.168.0.254" +#define ETH0_IP4_GATEWAY "192.168.0.254" + +// Primary DNS Server +// IP Address of Primary DNS Server in text representation +// Default: "8.8.8.8" +#define ETH0_IP4_PRIMARY_DNS "8.8.8.8" + +// Secondary DNS Server +// IP Address of Secondary DNS Server in text representation +// Default: "8.8.4.4" +#define ETH0_IP4_SECONDARY_DNS "8.8.4.4" + +// IP Fragmentation +// This option enables fragmentation of outgoing IP datagrams, +// and reassembling the fragments of incoming IP datagrams. +// Default: enabled +#define ETH0_IP4_FRAG_ENABLE 1 + +// MTU size <576-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP4_MTU 1500 +// + +// ARP Address Resolution +// ARP cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached MAC/IP addresses +// Default: 10 +#define ETH0_ARP_TAB_SIZE 10 + +// Cache Timeout in seconds <5-255> +// A timeout for cached hardware/IP addresses +// Default: 150 +#define ETH0_ARP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of Retries to resolve an IP address +// before ARP module gives up +// Default: 4 +#define ETH0_ARP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend the ARP Request +// Default: 2 +#define ETH0_ARP_RESEND_TOUT 2 + +// Send Notification on Address changes +// When this option is enabled, the embedded host +// will send a Gratuitous ARP notification at startup, +// or when the device IP address has changed. +// Default: Disabled +#define ETH0_ARP_NOTIFY 0 +// + +// IGMP Group Management +// Enable or disable Internet Group Management Protocol +#define ETH0_IGMP_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this host can join +// Default: 5 +#define ETH0_IGMP_TAB_SIZE 5 +// + +// NetBIOS Name Service +// When this option is enabled, the embedded host can be +// accessed by its name on local LAN using NBNS protocol. +#define ETH0_NBNS_ENABLE 1 + +// Dynamic Host Configuration +// When this option is enabled, local IP address, Net Mask +// and Default Gateway are obtained automatically from +// the DHCP Server on local LAN. +#define ETH0_DHCP_ENABLE 1 + +// Vendor Class Identifier +// This value is optional. If specified, it is added +// to DHCP request message, identifying vendor type. +// Default: "" +#define ETH0_DHCP_VCID "" + +// Bootfile Name +// This value is optional. If enabled, the Bootfile Name +// (option 67) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_BOOTFILE 0 + +// NTP Servers +// This value is optional. If enabled, a list of NTP Servers +// (option 42) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_NTP_SERVERS 0 +// + +// Disable ICMP Echo response +#define ETH0_ICMP_NO_ECHO 0 +// + +// IPv6 +// Enable IPv6 Protocol for Network Interface +#define ETH0_IP6_ENABLE 1 + +// IPv6 Address +// Static IPv6 Address in text representation +// Use unspecified address "::" when static +// IPv6 address is not used. +// Default: "fec0::2" +#define ETH0_IP6_ADDR "fec0::2" + +// Subnet prefix-length <1-128> +// Number of bits that define network address +// Default: 64 +#define ETH0_IP6_PREFIX_LEN 64 + +// Default Gateway +// Default Gateway IPv6 Address in text representation +// Default: "fec0::1" +#define ETH0_IP6_GATEWAY "fec0::1" + +// Primary DNS Server +// Primary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8888" +#define ETH0_IP6_PRIMARY_DNS "2001:4860:4860::8888" + +// Secondary DNS Server +// Secondary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8844" +#define ETH0_IP6_SECONDARY_DNS "2001:4860:4860::8844" + +// Neighbor Discovery +// Neighbor cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached node addresses +// Default: 5 +#define ETH0_NDP_TAB_SIZE 5 + +// Cache Timeout in seconds <5-255> +// Timeout for cached node addresses +// Default: 150 +#define ETH0_NDP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of retries to resolve an IP address +// before NDP module gives up +// Default: 4 +#define ETH0_NDP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend Neighbor Solicitation +// Default: 2 +#define ETH0_NDP_RESEND_TOUT 2 +// + +// Dynamic Host Configuration +// When this option is enabled, local IPv6 address is +// automatically configured. +#define ETH0_DHCP6_ENABLE 1 + +// DHCPv6 Client Mode <0=>Stateless Mode <1=>Statefull Mode +// Stateless DHCPv6 Client uses router advertisements +// for IPv6 address autoconfiguration (SLAAC). +// Statefull DHCPv6 Client connects to DHCPv6 server for a +// leased IPv6 address and DNS server IPv6 addresses. +#define ETH0_DHCP6_MODE 1 + +// Vendor Class Option +// If enabled, Vendor Class option is added to DHCPv6 +// request message, identifying vendor type. +// Default: disabled +#define ETH0_DHCP6_VCLASS_ENABLE 0 + +// Enterprise ID +// Enterprise-number as registered with IANA. +// Default: 0 (Reserved) +#define ETH0_DHCP6_VCLASS_EID 0 + +// Vendor Class Data +// This string identifies vendor type. +// Default: "" +#define ETH0_DHCP6_VCLASS_DATA "" +// +// + +// Disable ICMP6 Echo response +#define ETH0_ICMP6_NO_ECHO 0 +// + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Interface Thread Stack Size <512-65535:4> +// Default: 512 bytes +#define ETH0_THREAD_STACK_SIZE 512 + +// Interface Thread Priority +#define ETH0_THREAD_PRIORITY osPriorityAboveNormal + +// +// + +//------------- <<< end of configuration section >>> --------------------------- diff --git a/MDK/RTE/Network/Net_Config_TCP.h b/MDK/RTE/Network/Net_Config_TCP.h new file mode 100644 index 0000000..79ba88c --- /dev/null +++ b/MDK/RTE/Network/Net_Config_TCP.h @@ -0,0 +1,69 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_TCP.h + * Purpose: Network Configuration for TCP Sockets + * Rev.: V7.1.1 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// TCP Sockets +#define TCP_ENABLE 1 + +// Number of TCP Sockets <1-20> +// Number of available TCP sockets +// Default: 6 +#define TCP_NUM_SOCKS 6 + +// Number of Retries <0-20> +// How many times TCP module will try to retransmit data +// before giving up. Increase this value for high-latency +// and low throughput networks. +// Default: 5 +#define TCP_MAX_RETRY 5 + +// Retry Timeout in seconds <1-10> +// If data frame not acknowledged within this time frame, +// TCP module will try to resend the data again. +// Default: 4 +#define TCP_RETRY_TOUT 4 + +// Default Connect Timeout in seconds <1-65535> +// If no TCP data frame has been exchanged during this time, +// the TCP connection is either closed or a keep-alive frame +// is sent to verify that the connection still exists. +// Default: 120 +#define TCP_DEFAULT_TOUT 120 + +// Maximum Segment Size <536-1440> +// The Maximum Segment Size specifies the maximum +// number of bytes in the TCP segment's Data field. +// Default: 1440 +#define TCP_MAX_SEG_SIZE 1440 + +// Receive Window Size <536-65535> +// Receive Window Size specifies the size of data, +// that the socket is able to buffer in flow-control mode. +// Default: 4320 +#define TCP_RECEIVE_WIN_SIZE 4320 + +// + +// TCP Initial Retransmit period in seconds +#define TCP_INITIAL_RETRY_TOUT 1 + +// TCP SYN frame retransmit period in seconds +#define TCP_SYN_RETRY_TOUT 2 + +// Number of retries to establish a connection +#define TCP_CONNECT_RETRY 7 + +// Dynamic port start (default 49152) +#define TCP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define TCP_DYN_PORT_END 65535 + +//------------- <<< end of configuration section >>> --------------------------- diff --git a/MDK/RTE/RTOS/board.c b/MDK/RTE/RTOS/board.c new file mode 100644 index 0000000..7b3b1e8 --- /dev/null +++ b/MDK/RTE/RTOS/board.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2006-2019, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-05-24 the first version + */ + +#include +#include +#include "bsp.h" + +#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) +/* + * Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP + * the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes + */ +#define RT_HEAP_SIZE (32*1024) +static rt_uint8_t rt_heap[RT_HEAP_SIZE]; + +RT_WEAK void *rt_heap_begin_get(void) +{ + return rt_heap; +} + +RT_WEAK void *rt_heap_end_get(void) +{ + return rt_heap + RT_HEAP_SIZE; +} +#endif + +void rt_os_tick_callback(void) +{ + rt_interrupt_enter(); + + rt_tick_increase(); + + rt_interrupt_leave(); +} + +void SysTick_IrqHandler(void) +{ + rt_os_tick_callback(); +} + +/** + * This function will initial your board. + */ +void rt_hw_board_init(void) +{ +//#error "TODO 1: OS Tick Configuration." + BSP_Init(); + /* + * TODO 1: OS Tick Configuration + * Enable the hardware timer and call the rt_os_tick_callback function + * periodically with the frequency RT_TICK_PER_SECOND. + */ + + /* Call components board initial (use INIT_BOARD_EXPORT()) */ +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif + +#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) + rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get()); +#endif +} + +#ifdef RT_USING_CONSOLE + +static int uart_init(void) +{ +//#error "TODO 2: Enable the hardware uart and config baudrate." + DbgUart_Config(500000); + return 0; +} +INIT_BOARD_EXPORT(uart_init); + +void rt_hw_console_output(const char *str) +{ +//#error "TODO 3: Output the string 'str' through the uart." + rt_enter_critical(); + DebugUartSend((uint8_t *)str, strlen(str)); + rt_exit_critical(); +} + +#endif + diff --git a/MDK/RTE/RTOS/board.c.base@3.1.5 b/MDK/RTE/RTOS/board.c.base@3.1.5 new file mode 100644 index 0000000..e45e75f --- /dev/null +++ b/MDK/RTE/RTOS/board.c.base@3.1.5 @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2006-2019, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-05-24 the first version + */ + +#include +#include + +#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) +/* + * Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP + * the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes + */ +#define RT_HEAP_SIZE (15*1024) +static rt_uint8_t rt_heap[RT_HEAP_SIZE]; + +RT_WEAK void *rt_heap_begin_get(void) +{ + return rt_heap; +} + +RT_WEAK void *rt_heap_end_get(void) +{ + return rt_heap + RT_HEAP_SIZE; +} +#endif + +void rt_os_tick_callback(void) +{ + rt_interrupt_enter(); + + rt_tick_increase(); + + rt_interrupt_leave(); +} + +/** + * This function will initial your board. + */ +void rt_hw_board_init(void) +{ +#error "TODO 1: OS Tick Configuration." + /* + * TODO 1: OS Tick Configuration + * Enable the hardware timer and call the rt_os_tick_callback function + * periodically with the frequency RT_TICK_PER_SECOND. + */ + + /* Call components board initial (use INIT_BOARD_EXPORT()) */ +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif + +#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) + rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get()); +#endif +} + +#ifdef RT_USING_CONSOLE + +static int uart_init(void) +{ +#error "TODO 2: Enable the hardware uart and config baudrate." + return 0; +} +INIT_BOARD_EXPORT(uart_init); + +void rt_hw_console_output(const char *str) +{ +#error "TODO 3: Output the string 'str' through the uart." +} + +#endif + diff --git a/MDK/RTE/RTOS/rtconfig.h b/MDK/RTE/RTOS/rtconfig.h new file mode 100644 index 0000000..0aa25fe --- /dev/null +++ b/MDK/RTE/RTOS/rtconfig.h @@ -0,0 +1,139 @@ +/* RT-Thread config file */ + +#ifndef __RTTHREAD_CFG_H__ +#define __RTTHREAD_CFG_H__ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Basic Configuration +// Maximal level of thread priority <8-256> +// Default: 32 +#define RT_THREAD_PRIORITY_MAX 16 +// OS tick per second +// Default: 1000 (1ms) +#define RT_TICK_PER_SECOND 1000 +// Alignment size for CPU architecture data access +// Default: 4 +#define RT_ALIGN_SIZE 4 +// the max length of object name<2-16> +// Default: 8 +#define RT_NAME_MAX 10 +// Using RT-Thread components initialization +// Using RT-Thread components initialization +#define RT_USING_COMPONENTS_INIT +// + +#define RT_USING_USER_MAIN + +// the stack size of main thread<1-4086> +// Default: 512 +#define RT_MAIN_THREAD_STACK_SIZE 512 + +// + +// Debug Configuration +// enable kernel debug configuration +// Default: enable kernel debug configuration +//#define RT_DEBUG +// +// enable components initialization debug configuration<0-1> +// Default: 0 +#define RT_DEBUG_INIT 0 +// thread stack over flow detect +// Diable Thread stack over flow detect +//#define RT_USING_OVERFLOW_CHECK +// +// + +// Hook Configuration +// using hook +// using hook +//#define RT_USING_HOOK +// +// using idle hook +// using idle hook +//#define RT_USING_IDLE_HOOK +// +// + +// Software timers Configuration +// Enables user timers +#define RT_USING_TIMER_SOFT 0 +#if RT_USING_TIMER_SOFT == 0 + #undef RT_USING_TIMER_SOFT +#endif +// The priority level of timer thread <0-31> +// Default: 4 +#define RT_TIMER_THREAD_PRIO 4 +// The stack size of timer thread <0-8192> +// Default: 512 +#define RT_TIMER_THREAD_STACK_SIZE 512 +// + +// IPC(Inter-process communication) Configuration +// Using Semaphore +// Using Semaphore +#define RT_USING_SEMAPHORE +// +// Using Mutex +// Using Mutex +#define RT_USING_MUTEX +// +// Using Event +// Using Event +//#define RT_USING_EVENT +// +// Using MailBox +// Using MailBox +#define RT_USING_MAILBOX +// +// Using Message Queue +// Using Message Queue +#define RT_USING_MESSAGEQUEUE +// +// + +// Memory Management Configuration +// Memory Pool Management +// Memory Pool Management +//#define RT_USING_MEMPOOL +// +// Dynamic Heap Management(Algorithm: small memory ) +// Dynamic Heap Management +#define RT_USING_HEAP +#define RT_USING_SMALL_MEM +// +// using tiny size of memory +// using tiny size of memory +//#define RT_USING_TINY_SIZE +// +// + +// Console Configuration +// Using console +// Using console +#define RT_USING_CONSOLE +// +// the buffer size of console <1-1024> +// the buffer size of console +// Default: 128 (128Byte) +#define RT_CONSOLEBUF_SIZE 512 +// + +// FinSH Configuration +// include finsh config +// Select this choice if you using FinSH +//#include "finsh_config.h" +// +// + +// Device Configuration +// using device framework +// using device framework +//#define RT_USING_DEVICE +// +// + +// <<< end of configuration section >>> + +#endif diff --git a/MDK/RTE/RTOS/rtconfig.h.base@3.1.5 b/MDK/RTE/RTOS/rtconfig.h.base@3.1.5 new file mode 100644 index 0000000..5b54665 --- /dev/null +++ b/MDK/RTE/RTOS/rtconfig.h.base@3.1.5 @@ -0,0 +1,139 @@ +/* RT-Thread config file */ + +#ifndef __RTTHREAD_CFG_H__ +#define __RTTHREAD_CFG_H__ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Basic Configuration +// Maximal level of thread priority <8-256> +// Default: 32 +#define RT_THREAD_PRIORITY_MAX 32 +// OS tick per second +// Default: 1000 (1ms) +#define RT_TICK_PER_SECOND 1000 +// Alignment size for CPU architecture data access +// Default: 4 +#define RT_ALIGN_SIZE 4 +// the max length of object name<2-16> +// Default: 8 +#define RT_NAME_MAX 8 +// Using RT-Thread components initialization +// Using RT-Thread components initialization +#define RT_USING_COMPONENTS_INIT +// + +#define RT_USING_USER_MAIN + +// the stack size of main thread<1-4086> +// Default: 512 +#define RT_MAIN_THREAD_STACK_SIZE 256 + +// + +// Debug Configuration +// enable kernel debug configuration +// Default: enable kernel debug configuration +//#define RT_DEBUG +// +// enable components initialization debug configuration<0-1> +// Default: 0 +#define RT_DEBUG_INIT 0 +// thread stack over flow detect +// Diable Thread stack over flow detect +//#define RT_USING_OVERFLOW_CHECK +// +// + +// Hook Configuration +// using hook +// using hook +//#define RT_USING_HOOK +// +// using idle hook +// using idle hook +//#define RT_USING_IDLE_HOOK +// +// + +// Software timers Configuration +// Enables user timers +#define RT_USING_TIMER_SOFT 0 +#if RT_USING_TIMER_SOFT == 0 + #undef RT_USING_TIMER_SOFT +#endif +// The priority level of timer thread <0-31> +// Default: 4 +#define RT_TIMER_THREAD_PRIO 4 +// The stack size of timer thread <0-8192> +// Default: 512 +#define RT_TIMER_THREAD_STACK_SIZE 512 +// + +// IPC(Inter-process communication) Configuration +// Using Semaphore +// Using Semaphore +#define RT_USING_SEMAPHORE +// +// Using Mutex +// Using Mutex +//#define RT_USING_MUTEX +// +// Using Event +// Using Event +//#define RT_USING_EVENT +// +// Using MailBox +// Using MailBox +#define RT_USING_MAILBOX +// +// Using Message Queue +// Using Message Queue +//#define RT_USING_MESSAGEQUEUE +// +// + +// Memory Management Configuration +// Memory Pool Management +// Memory Pool Management +//#define RT_USING_MEMPOOL +// +// Dynamic Heap Management(Algorithm: small memory ) +// Dynamic Heap Management +#define RT_USING_HEAP +#define RT_USING_SMALL_MEM +// +// using tiny size of memory +// using tiny size of memory +//#define RT_USING_TINY_SIZE +// +// + +// Console Configuration +// Using console +// Using console +//#define RT_USING_CONSOLE +// +// the buffer size of console <1-1024> +// the buffer size of console +// Default: 128 (128Byte) +#define RT_CONSOLEBUF_SIZE 256 +// + +// FinSH Configuration +// include finsh config +// Select this choice if you using FinSH +//#include "finsh_config.h" +// +// + +// Device Configuration +// using device framework +// using device framework +//#define RT_USING_DEVICE +// +// + +// <<< end of configuration section >>> + +#endif diff --git a/MDK/RTE/_Debug/RTE_Components.h b/MDK/RTE/_Debug/RTE_Components.h new file mode 100644 index 0000000..e54c9c5 --- /dev/null +++ b/MDK/RTE/_Debug/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'BootLoader' + * Target: 'Debug' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32F460PETB.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/RTE/_Release/RTE_Components.h b/MDK/RTE/_Release/RTE_Components.h new file mode 100644 index 0000000..c4ca988 --- /dev/null +++ b/MDK/RTE/_Release/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'BootLoader' + * Target: 'Release' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32F460PETB.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/RTE/_i2c_24c256_Debug/RTE_Components.h b/MDK/RTE/_i2c_24c256_Debug/RTE_Components.h new file mode 100644 index 0000000..bf25b8a --- /dev/null +++ b/MDK/RTE/_i2c_24c256_Debug/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'DigitalModule_4Ch' + * Target: 'i2c_24c256_Debug' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32F460PETB.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/RTE/_i2c_24c256_Release/RTE_Components.h b/MDK/RTE/_i2c_24c256_Release/RTE_Components.h new file mode 100644 index 0000000..b3756ae --- /dev/null +++ b/MDK/RTE/_i2c_24c256_Release/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'DigitalModule_4Ch' + * Target: 'i2c_24c256_Release' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32F460PETB.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/RTE/_template_Debug/RTE_Components.h b/MDK/RTE/_template_Debug/RTE_Components.h new file mode 100644 index 0000000..114830a --- /dev/null +++ b/MDK/RTE/_template_Debug/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'DigitalModule_4Ch' + * Target: 'template_Debug' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32F460PETB.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/startup_hc32f460.s b/MDK/startup_hc32f460.s new file mode 100644 index 0000000..52a327d --- /dev/null +++ b/MDK/startup_hc32f460.s @@ -0,0 +1,621 @@ +;/****************************************************************************** +; * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. +; * +; * This software component is licensed by HDSC under BSD 3-Clause license +; * (the "License"); You may not use this file except in compliance with the +; * License. You may obtain a copy of the License at: +; * opensource.org/licenses/BSD-3-Clause +;/*****************************************************************************/ +;/* Startup for ARM */ +;/* Version V1.0 */ +;/* Date 2018-10-13 */ +;/* Target-mcu HC32F460 */ +;/*****************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00008000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; Peripheral Interrupts + DCD IRQ000_Handler ; IRQ000_Handler + DCD IRQ001_Handler ; IRQ001_Handler + DCD IRQ002_Handler ; IRQ002_Handler + DCD IRQ003_Handler ; IRQ003_Handler + DCD IRQ004_Handler ; IRQ004_Handler + DCD IRQ005_Handler ; IRQ005_Handler + DCD IRQ006_Handler ; IRQ006_Handler + DCD IRQ007_Handler ; IRQ007_Handler + DCD IRQ008_Handler ; IRQ008_Handler + DCD IRQ009_Handler ; IRQ009_Handler + DCD IRQ010_Handler ; IRQ010_Handler + DCD IRQ011_Handler ; IRQ011_Handler + DCD IRQ012_Handler ; IRQ012_Handler + DCD IRQ013_Handler ; IRQ013_Handler + DCD IRQ014_Handler ; IRQ014_Handler + DCD IRQ015_Handler ; IRQ015_Handler + DCD IRQ016_Handler ; IRQ016_Handler + DCD IRQ017_Handler ; IRQ017_Handler + DCD IRQ018_Handler ; IRQ018_Handler + DCD IRQ019_Handler ; IRQ019_Handler + DCD IRQ020_Handler ; IRQ020_Handler + DCD IRQ021_Handler ; IRQ021_Handler + DCD IRQ022_Handler ; IRQ022_Handler + DCD IRQ023_Handler ; IRQ023_Handler + DCD IRQ024_Handler ; IRQ024_Handler + DCD IRQ025_Handler ; IRQ025_Handler + DCD IRQ026_Handler ; IRQ026_Handler + DCD IRQ027_Handler ; IRQ027_Handler + DCD IRQ028_Handler ; IRQ028_Handler + DCD IRQ029_Handler ; IRQ029_Handler + DCD IRQ030_Handler ; IRQ030_Handler + DCD IRQ031_Handler ; IRQ031_Handler + DCD IRQ032_Handler ; IRQ032_Handler + DCD IRQ033_Handler ; IRQ033_Handler + DCD IRQ034_Handler ; IRQ034_Handler + DCD IRQ035_Handler ; IRQ035_Handler + DCD IRQ036_Handler ; IRQ036_Handler + DCD IRQ037_Handler ; IRQ037_Handler + DCD IRQ038_Handler ; IRQ038_Handler + DCD IRQ039_Handler ; IRQ039_Handler + DCD IRQ040_Handler ; IRQ040_Handler + DCD IRQ041_Handler ; IRQ041_Handler + DCD IRQ042_Handler ; IRQ042_Handler + DCD IRQ043_Handler ; IRQ043_Handler + DCD IRQ044_Handler ; IRQ044_Handler + DCD IRQ045_Handler ; IRQ045_Handler + DCD IRQ046_Handler ; IRQ046_Handler + DCD IRQ047_Handler ; IRQ047_Handler + DCD IRQ048_Handler ; IRQ048_Handler + DCD IRQ049_Handler ; IRQ049_Handler + DCD IRQ050_Handler ; IRQ050_Handler + DCD IRQ051_Handler ; IRQ051_Handler + DCD IRQ052_Handler ; IRQ052_Handler + DCD IRQ053_Handler ; IRQ053_Handler + DCD IRQ054_Handler ; IRQ054_Handler + DCD IRQ055_Handler ; IRQ055_Handler + DCD IRQ056_Handler ; IRQ056_Handler + DCD IRQ057_Handler ; IRQ057_Handler + DCD IRQ058_Handler ; IRQ058_Handler + DCD IRQ059_Handler ; IRQ059_Handler + DCD IRQ060_Handler ; IRQ060_Handler + DCD IRQ061_Handler ; IRQ061_Handler + DCD IRQ062_Handler ; IRQ062_Handler + DCD IRQ063_Handler ; IRQ063_Handler + DCD IRQ064_Handler ; IRQ064_Handler + DCD IRQ065_Handler ; IRQ065_Handler + DCD IRQ066_Handler ; IRQ066_Handler + DCD IRQ067_Handler ; IRQ067_Handler + DCD IRQ068_Handler ; IRQ068_Handler + DCD IRQ069_Handler ; IRQ069_Handler + DCD IRQ070_Handler ; IRQ070_Handler + DCD IRQ071_Handler ; IRQ071_Handler + DCD IRQ072_Handler ; IRQ072_Handler + DCD IRQ073_Handler ; IRQ073_Handler + DCD IRQ074_Handler ; IRQ074_Handler + DCD IRQ075_Handler ; IRQ075_Handler + DCD IRQ076_Handler ; IRQ076_Handler + DCD IRQ077_Handler ; IRQ077_Handler + DCD IRQ078_Handler ; IRQ078_Handler + DCD IRQ079_Handler ; IRQ079_Handler + DCD IRQ080_Handler ; IRQ080_Handler + DCD IRQ081_Handler ; IRQ081_Handler + DCD IRQ082_Handler ; IRQ082_Handler + DCD IRQ083_Handler ; IRQ083_Handler + DCD IRQ084_Handler ; IRQ084_Handler + DCD IRQ085_Handler ; IRQ085_Handler + DCD IRQ086_Handler ; IRQ086_Handler + DCD IRQ087_Handler ; IRQ087_Handler + DCD IRQ088_Handler ; IRQ088_Handler + DCD IRQ089_Handler ; IRQ089_Handler + DCD IRQ090_Handler ; IRQ090_Handler + DCD IRQ091_Handler ; IRQ091_Handler + DCD IRQ092_Handler ; IRQ092_Handler + DCD IRQ093_Handler ; IRQ093_Handler + DCD IRQ094_Handler ; IRQ094_Handler + DCD IRQ095_Handler ; IRQ095_Handler + DCD IRQ096_Handler ; IRQ096_Handler + DCD IRQ097_Handler ; IRQ097_Handler + DCD IRQ098_Handler ; IRQ098_Handler + DCD IRQ099_Handler ; IRQ099_Handler + DCD IRQ100_Handler ; IRQ100_Handler + DCD IRQ101_Handler ; IRQ101_Handler + DCD IRQ102_Handler ; IRQ102_Handler + DCD IRQ103_Handler ; IRQ103_Handler + DCD IRQ104_Handler ; IRQ104_Handler + DCD IRQ105_Handler ; IRQ105_Handler + DCD IRQ106_Handler ; IRQ106_Handler + DCD IRQ107_Handler ; IRQ107_Handler + DCD IRQ108_Handler ; IRQ108_Handler + DCD IRQ109_Handler ; IRQ109_Handler + DCD IRQ110_Handler ; IRQ110_Handler + DCD IRQ111_Handler ; IRQ111_Handler + DCD IRQ112_Handler ; IRQ112_Handler + DCD IRQ113_Handler ; IRQ113_Handler + DCD IRQ114_Handler ; IRQ114_Handler + DCD IRQ115_Handler ; IRQ115_Handler + DCD IRQ116_Handler ; IRQ116_Handler + DCD IRQ117_Handler ; IRQ117_Handler + DCD IRQ118_Handler ; IRQ118_Handler + DCD IRQ119_Handler ; IRQ119_Handler + DCD IRQ120_Handler ; IRQ120_Handler + DCD IRQ121_Handler ; IRQ121_Handler + DCD IRQ122_Handler ; IRQ122_Handler + DCD IRQ123_Handler ; IRQ123_Handler + DCD IRQ124_Handler ; IRQ124_Handler + DCD IRQ125_Handler ; IRQ125_Handler + DCD IRQ126_Handler ; IRQ126_Handler + DCD IRQ127_Handler ; IRQ127_Handler + DCD IRQ128_Handler ; IRQ128_Handler + DCD IRQ129_Handler ; IRQ129_Handler + DCD IRQ130_Handler ; IRQ130_Handler + DCD IRQ131_Handler ; IRQ131_Handler + DCD IRQ132_Handler ; IRQ132_Handler + DCD IRQ133_Handler ; IRQ133_Handler + DCD IRQ134_Handler ; IRQ134_Handler + DCD IRQ135_Handler ; IRQ135_Handler + DCD IRQ136_Handler ; IRQ136_Handler + DCD IRQ137_Handler ; IRQ137_Handler + DCD IRQ138_Handler ; IRQ138_Handler + DCD IRQ139_Handler ; IRQ139_Handler + DCD IRQ140_Handler ; IRQ140_Handler + DCD IRQ141_Handler ; IRQ141_Handler + DCD IRQ142_Handler ; IRQ142_Handler + DCD IRQ143_Handler ; IRQ143_Handler + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main +SET_SRAM3_WAIT + LDR R0, =0x40050804 + MOV R1, #0x77 + STR R1, [R0] + + LDR R0, =0x4005080C + MOV R1, #0x77 + STR R1, [R0] + + LDR R0, =0x40050800 + MOV R1, #0x1100 + STR R1, [R0] + + LDR R0, =0x40050804 + MOV R1, #0x76 + STR R1, [R0] + + LDR R0, =0x4005080C + MOV R1, #0x76 + STR R1, [R0] + + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler\ + PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler\ + PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + EXPORT IRQ000_Handler [WEAK] + EXPORT IRQ001_Handler [WEAK] + EXPORT IRQ002_Handler [WEAK] + EXPORT IRQ003_Handler [WEAK] + EXPORT IRQ004_Handler [WEAK] + EXPORT IRQ005_Handler [WEAK] + EXPORT IRQ006_Handler [WEAK] + EXPORT IRQ007_Handler [WEAK] + EXPORT IRQ008_Handler [WEAK] + EXPORT IRQ009_Handler [WEAK] + EXPORT IRQ010_Handler [WEAK] + EXPORT IRQ011_Handler [WEAK] + EXPORT IRQ012_Handler [WEAK] + EXPORT IRQ013_Handler [WEAK] + EXPORT IRQ014_Handler [WEAK] + EXPORT IRQ015_Handler [WEAK] + EXPORT IRQ016_Handler [WEAK] + EXPORT IRQ017_Handler [WEAK] + EXPORT IRQ018_Handler [WEAK] + EXPORT IRQ019_Handler [WEAK] + EXPORT IRQ020_Handler [WEAK] + EXPORT IRQ021_Handler [WEAK] + EXPORT IRQ022_Handler [WEAK] + EXPORT IRQ023_Handler [WEAK] + EXPORT IRQ024_Handler [WEAK] + EXPORT IRQ025_Handler [WEAK] + EXPORT IRQ026_Handler [WEAK] + EXPORT IRQ027_Handler [WEAK] + EXPORT IRQ028_Handler [WEAK] + EXPORT IRQ029_Handler [WEAK] + EXPORT IRQ030_Handler [WEAK] + EXPORT IRQ031_Handler [WEAK] + EXPORT IRQ032_Handler [WEAK] + EXPORT IRQ033_Handler [WEAK] + EXPORT IRQ034_Handler [WEAK] + EXPORT IRQ035_Handler [WEAK] + EXPORT IRQ036_Handler [WEAK] + EXPORT IRQ037_Handler [WEAK] + EXPORT IRQ038_Handler [WEAK] + EXPORT IRQ039_Handler [WEAK] + EXPORT IRQ040_Handler [WEAK] + EXPORT IRQ041_Handler [WEAK] + EXPORT IRQ042_Handler [WEAK] + EXPORT IRQ043_Handler [WEAK] + EXPORT IRQ044_Handler [WEAK] + EXPORT IRQ045_Handler [WEAK] + EXPORT IRQ046_Handler [WEAK] + EXPORT IRQ047_Handler [WEAK] + EXPORT IRQ048_Handler [WEAK] + EXPORT IRQ049_Handler [WEAK] + EXPORT IRQ050_Handler [WEAK] + EXPORT IRQ051_Handler [WEAK] + EXPORT IRQ052_Handler [WEAK] + EXPORT IRQ053_Handler [WEAK] + EXPORT IRQ054_Handler [WEAK] + EXPORT IRQ055_Handler [WEAK] + EXPORT IRQ056_Handler [WEAK] + EXPORT IRQ057_Handler [WEAK] + EXPORT IRQ058_Handler [WEAK] + EXPORT IRQ059_Handler [WEAK] + EXPORT IRQ060_Handler [WEAK] + EXPORT IRQ061_Handler [WEAK] + EXPORT IRQ062_Handler [WEAK] + EXPORT IRQ063_Handler [WEAK] + EXPORT IRQ064_Handler [WEAK] + EXPORT IRQ065_Handler [WEAK] + EXPORT IRQ066_Handler [WEAK] + EXPORT IRQ067_Handler [WEAK] + EXPORT IRQ068_Handler [WEAK] + EXPORT IRQ069_Handler [WEAK] + EXPORT IRQ070_Handler [WEAK] + EXPORT IRQ071_Handler [WEAK] + EXPORT IRQ072_Handler [WEAK] + EXPORT IRQ073_Handler [WEAK] + EXPORT IRQ074_Handler [WEAK] + EXPORT IRQ075_Handler [WEAK] + EXPORT IRQ076_Handler [WEAK] + EXPORT IRQ077_Handler [WEAK] + EXPORT IRQ078_Handler [WEAK] + EXPORT IRQ079_Handler [WEAK] + EXPORT IRQ080_Handler [WEAK] + EXPORT IRQ081_Handler [WEAK] + EXPORT IRQ082_Handler [WEAK] + EXPORT IRQ083_Handler [WEAK] + EXPORT IRQ084_Handler [WEAK] + EXPORT IRQ085_Handler [WEAK] + EXPORT IRQ086_Handler [WEAK] + EXPORT IRQ087_Handler [WEAK] + EXPORT IRQ088_Handler [WEAK] + EXPORT IRQ089_Handler [WEAK] + EXPORT IRQ090_Handler [WEAK] + EXPORT IRQ091_Handler [WEAK] + EXPORT IRQ092_Handler [WEAK] + EXPORT IRQ093_Handler [WEAK] + EXPORT IRQ094_Handler [WEAK] + EXPORT IRQ095_Handler [WEAK] + EXPORT IRQ096_Handler [WEAK] + EXPORT IRQ097_Handler [WEAK] + EXPORT IRQ098_Handler [WEAK] + EXPORT IRQ099_Handler [WEAK] + EXPORT IRQ100_Handler [WEAK] + EXPORT IRQ101_Handler [WEAK] + EXPORT IRQ102_Handler [WEAK] + EXPORT IRQ103_Handler [WEAK] + EXPORT IRQ104_Handler [WEAK] + EXPORT IRQ105_Handler [WEAK] + EXPORT IRQ106_Handler [WEAK] + EXPORT IRQ107_Handler [WEAK] + EXPORT IRQ108_Handler [WEAK] + EXPORT IRQ109_Handler [WEAK] + EXPORT IRQ110_Handler [WEAK] + EXPORT IRQ111_Handler [WEAK] + EXPORT IRQ112_Handler [WEAK] + EXPORT IRQ113_Handler [WEAK] + EXPORT IRQ114_Handler [WEAK] + EXPORT IRQ115_Handler [WEAK] + EXPORT IRQ116_Handler [WEAK] + EXPORT IRQ117_Handler [WEAK] + EXPORT IRQ118_Handler [WEAK] + EXPORT IRQ119_Handler [WEAK] + EXPORT IRQ120_Handler [WEAK] + EXPORT IRQ121_Handler [WEAK] + EXPORT IRQ122_Handler [WEAK] + EXPORT IRQ123_Handler [WEAK] + EXPORT IRQ124_Handler [WEAK] + EXPORT IRQ125_Handler [WEAK] + EXPORT IRQ126_Handler [WEAK] + EXPORT IRQ127_Handler [WEAK] + EXPORT IRQ128_Handler [WEAK] + EXPORT IRQ129_Handler [WEAK] + EXPORT IRQ130_Handler [WEAK] + EXPORT IRQ131_Handler [WEAK] + EXPORT IRQ132_Handler [WEAK] + EXPORT IRQ133_Handler [WEAK] + EXPORT IRQ134_Handler [WEAK] + EXPORT IRQ135_Handler [WEAK] + EXPORT IRQ136_Handler [WEAK] + EXPORT IRQ137_Handler [WEAK] + EXPORT IRQ138_Handler [WEAK] + EXPORT IRQ139_Handler [WEAK] + EXPORT IRQ140_Handler [WEAK] + EXPORT IRQ141_Handler [WEAK] + EXPORT IRQ142_Handler [WEAK] + EXPORT IRQ143_Handler [WEAK] +IRQ000_Handler +IRQ001_Handler +IRQ002_Handler +IRQ003_Handler +IRQ004_Handler +IRQ005_Handler +IRQ006_Handler +IRQ007_Handler +IRQ008_Handler +IRQ009_Handler +IRQ010_Handler +IRQ011_Handler +IRQ012_Handler +IRQ013_Handler +IRQ014_Handler +IRQ015_Handler +IRQ016_Handler +IRQ017_Handler +IRQ018_Handler +IRQ019_Handler +IRQ020_Handler +IRQ021_Handler +IRQ022_Handler +IRQ023_Handler +IRQ024_Handler +IRQ025_Handler +IRQ026_Handler +IRQ027_Handler +IRQ028_Handler +IRQ029_Handler +IRQ030_Handler +IRQ031_Handler +IRQ032_Handler +IRQ033_Handler +IRQ034_Handler +IRQ035_Handler +IRQ036_Handler +IRQ037_Handler +IRQ038_Handler +IRQ039_Handler +IRQ040_Handler +IRQ041_Handler +IRQ042_Handler +IRQ043_Handler +IRQ044_Handler +IRQ045_Handler +IRQ046_Handler +IRQ047_Handler +IRQ048_Handler +IRQ049_Handler +IRQ050_Handler +IRQ051_Handler +IRQ052_Handler +IRQ053_Handler +IRQ054_Handler +IRQ055_Handler +IRQ056_Handler +IRQ057_Handler +IRQ058_Handler +IRQ059_Handler +IRQ060_Handler +IRQ061_Handler +IRQ062_Handler +IRQ063_Handler +IRQ064_Handler +IRQ065_Handler +IRQ066_Handler +IRQ067_Handler +IRQ068_Handler +IRQ069_Handler +IRQ070_Handler +IRQ071_Handler +IRQ072_Handler +IRQ073_Handler +IRQ074_Handler +IRQ075_Handler +IRQ076_Handler +IRQ077_Handler +IRQ078_Handler +IRQ079_Handler +IRQ080_Handler +IRQ081_Handler +IRQ082_Handler +IRQ083_Handler +IRQ084_Handler +IRQ085_Handler +IRQ086_Handler +IRQ087_Handler +IRQ088_Handler +IRQ089_Handler +IRQ090_Handler +IRQ091_Handler +IRQ092_Handler +IRQ093_Handler +IRQ094_Handler +IRQ095_Handler +IRQ096_Handler +IRQ097_Handler +IRQ098_Handler +IRQ099_Handler +IRQ100_Handler +IRQ101_Handler +IRQ102_Handler +IRQ103_Handler +IRQ104_Handler +IRQ105_Handler +IRQ106_Handler +IRQ107_Handler +IRQ108_Handler +IRQ109_Handler +IRQ110_Handler +IRQ111_Handler +IRQ112_Handler +IRQ113_Handler +IRQ114_Handler +IRQ115_Handler +IRQ116_Handler +IRQ117_Handler +IRQ118_Handler +IRQ119_Handler +IRQ120_Handler +IRQ121_Handler +IRQ122_Handler +IRQ123_Handler +IRQ124_Handler +IRQ125_Handler +IRQ126_Handler +IRQ127_Handler +IRQ128_Handler +IRQ129_Handler +IRQ130_Handler +IRQ131_Handler +IRQ132_Handler +IRQ133_Handler +IRQ134_Handler +IRQ135_Handler +IRQ136_Handler +IRQ137_Handler +IRQ138_Handler +IRQ139_Handler +IRQ140_Handler +IRQ141_Handler +IRQ142_Handler +IRQ143_Handler + B . + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap PROC + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + ENDP + + ALIGN + + ENDIF + + + END diff --git a/Update.exe b/Update.exe new file mode 100644 index 0000000000000000000000000000000000000000..69c71971af41548a48292a5d432fe210a83c1154 GIT binary patch literal 1051648 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

  • jbs6Y3*pZDue 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

    FatFs - Generic FAT Filesystem Module

    +
    + +
    +layer +

    FatFs is a generic FAT/exFAT filesystem module for small embedded systems. The FatFs module is written in compliance with ANSI C (C89) and completely separated from the disk I/O layer. Therefore it is independent of the platform. It can be incorporated into small microcontrollers with limited resource, such as 8051, PIC, AVR, ARM, Z80, RX and etc. Also Petit FatFs module for tiny microcontrollers is available here.

    + +

    Features

    +
      +
    • DOS/Windows Compatible FAT/exFAT Filesystem.
    • +
    • Platform Independent. Easy to port.
    • +
    • Very Small Footprint for Program Code and Work Area.
    • +
    • Various Configuration Options to Support for: +
        +
      • Long File Name in ANSI/OEM or Unicode.
      • +
      • exFAT Filesystem, 64-bit LBA and GPT for Huge Storages.
      • +
      • Thread Safe for RTOS.
      • +
      • Multiple Volumes. (Physical Drives and Partitions)
      • +
      • Variable Sector Size.
      • +
      • Multiple Code Pages Including DBCS.
      • +
      • Read-only, Optional APIs, I/O Buffer and etc...
      • +
      +
    • +
    +
    + + +
    +

    Application Interface

    +layer +

    FatFs provides various filesystem functions for the applications as shown below.

    +
      +
    • File Access +
        +
      • f_open - Open/Create a file
      • +
      • f_close - Close an open file
      • +
      • f_read - Read data from the file
      • +
      • f_write - Write data to the file
      • +
      • f_lseek - Move read/write pointer, Expand size
      • +
      • f_truncate - Truncate file size
      • +
      • f_sync - Flush cached data
      • +
      • f_forward - Forward data to the stream
      • +
      • f_expand - Allocate a contiguous block to the file
      • +
      • f_gets - Read a string
      • +
      • f_putc - Write a character
      • +
      • f_puts - Write a string
      • +
      • f_printf - Write a formatted string
      • +
      • f_tell - Get current read/write pointer
      • +
      • f_eof - Test for end-of-file
      • +
      • f_size - Get size
      • +
      • f_error - Test for an error
      • +
      +
    • +
    • Directory Access + +
    • +
    • File and Directory Management +
        +
      • f_stat - Check existance of a file or sub-directory
      • +
      • f_unlink - Remove a file or sub-directory
      • +
      • f_rename - Rename/Move a file or sub-directory
      • +
      • f_chmod - Change attribute of a file or sub-directory
      • +
      • f_utime - Change timestamp of a file or sub-directory
      • +
      • f_mkdir - Create a sub-directory
      • +
      • f_chdir - Change current directory
      • +
      • f_chdrive - Change current drive
      • +
      • f_getcwd - Retrieve the current directory and drive
      • +
      +
    • +
    • Volume Management and System Configuration +
        +
      • f_mount - Register/Unregister the work area of the volume
      • +
      • f_mkfs - Create an FAT volume on the logical drive
      • +
      • f_fdisk - Create partitions on the physical drive
      • +
      • f_getfree - Get free space on the volume
      • +
      • f_getlabel - Get volume label
      • +
      • f_setlabel - Set volume label
      • +
      • f_setcp - Set active code page
      • +
      +
    • +
    +
    + + +
    +

    Media Access Interface

    +layer +

    Since FatFs module is the Filesystem Layer independent of platforms and storage media, it is completely separated from the physical devices, such as memory card, harddisk and any type of storage device. The storage device control module is not any part of FatFs module and it needs to be provided by implementer. FatFs controls the storage devices via a simple media access interface shown below. Also sample implementations for some platforms are available in the downloads. A function checker for storage device control module is available here.

    + +
    + + +
    +

    Resources

    +

    The FatFs module is a free software opened for education, research and development. You can use, modify and/or redistribute it for any purpose without any restriction under your responsibility. For further information, refer to the application note.

    +
    + + +
    +

    Return

    + + diff --git a/source/Module/FatFS/documents/css_e.css b/source/Module/FatFS/documents/css_e.css new file mode 100644 index 0000000..192ce63 --- /dev/null +++ b/source/Module/FatFS/documents/css_e.css @@ -0,0 +1,73 @@ +* {margin: 0; padding: 0; border-width: 0;} +body {margin: 8px; background-color: #e0ffff; font-color: black; font-family: serif; line-height: 133%; max-width: 1024px;} +a:link {color: blue;} +a:visited {color: darkmagenta;} +a:hover {background-color: #a0ffff;} +a:active {color: darkmagenta; overflow: hidden; outline:none; position: relative; top: 1px; left: 1px;} +abbr {border-width: 1px;} + +p {margin: 0 0 0.3em 1em;} +i {margin: 0 0.3em 0 0;} +b {margin: 0 0.1em;} +em {font-style: normal; font-weight: bold; margin: 0 0.1em;} +strong {} +pre {border: 1px dashed gray; margin: 0.5em 1em; padding: 0.5em; line-height: 1.2em; font-size: 85%; font-family: "Consolas", "Courier New", monospace; background-color: white;} +pre span.c {color: green;} +pre span.k {color: blue;} +pre span.e {color: red;} +pre span.b {font-weight: bold;} +pre span.arg {font-style: italic;} +tt {margin: 0 0.2em; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; } +tt.arg {font-style: italic;} +ol {margin: 0.5em 2.5em;} +ul {margin: 0.5em 2em;} +ul ul {margin: 0 2em 0.5em 1em;} +dl {margin: 0.5em 1em;} +dd {margin: 0 2em;} +dt {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace;} +dl.par dt {margin: 0.5em 0 0 0 ; font-style: italic; } +dl.ret dt {margin: 0.5em 0 0 0 ; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; font-weight: bold; } +hr {border-width: 1px; margin: 1em;} +div.abst {font-family: sans-serif;} +div.para {clear: both; font-family: serif;} +div.ret a {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; } +.equ {text-indent: 0; margin: 1em 2em 1em;} +.indent {margin-left: 2em;} +.rset {float: right; margin: 0.3em 0 0.5em 0.5em;} +.lset {float: left; margin: 0.3em 0.5em 0.5em 0.5em;} +ul.flat li {list-style-type: none; margin: 0;} +a.imglnk img {border: 1px solid;} +.iequ {white-space: nowrap; font-weight: bold;} +.clr {clear: both;} +.it {font-style: italic;} +.mfd {font-size: 0.7em; padding: 0 1px; border: 1px solid; white-space : nowrap} +.ral {text-align: right; } +.lal {text-align: left; } +.cal {text-align: center; } + +h1 {line-height: 1em; font-size: 2em; font-family: sans-serif; padding: 0.3em 0 0.3em;} +h2 {font-size: 2em; font-family: sans-serif; background-color: #d8d8FF; padding: 0.5em 0.5em; margin: 0 0 0.5em;} +h3 {font-size: 1.5em; font-family: sans-serif; margin: 1.5em 0 0.5em;} +div.doc h3 {border-color: #b0d8d8; border-style: solid; border-width: 0px 0px 4px 12px; padding: 4px; margin-top: 3em;} +h4 {font-size: 1.2em; font-family: sans-serif; margin: 2em 0 0.2em;} +h5 {font-size: 1em; font-family: sans-serif; margin: 1em 0 0em;} +p.hdd {float: right; text-align: right; margin-top: 0.5em;} +hr.hds {clear: both; margin-bottom: 1em;} +kbd {letter-spacing: 0;} +small {font-size: 80%;} +.indent {margin-left: 2em;} + +/* Tables */ +table {margin: 0.5em 1em; border-collapse: collapse; border: 2px solid gray; } +table caption {font-family: sans-serif; font-weight: bold;} +table th {background-color: white; border-style: solid; border-width: 1px 1px 2px; border-color: gray; padding: 0 3px; vertical-align: top; white-space: nowrap;} +table td {background-color: white; border: 1px solid gray; padding: 0 3px; vertical-align: top; line-height: 1.3em;} +table.lst td:first-child {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; white-space: nowrap;} +table.lst2 td {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; white-space: nowrap;} +table.lst3 td {font-family: "Consolas", "Courier New", monospace; white-space: nowrap;} +tr.lst3 td {border-width: 2px 1px 1px; } +table.lst4 td {padding: 0.3em;} +table.lst4 td:nth-child(2) {width: 45%;} +table.lst4 td:nth-child(3) {width: 45%;} + +p.foot {clear: both; text-indent: 0; margin: 1em 0.5em 1em;} diff --git a/source/Module/FatFS/documents/doc/appnote.html b/source/Module/FatFS/documents/doc/appnote.html new file mode 100644 index 0000000..45fd602 --- /dev/null +++ b/source/Module/FatFS/documents/doc/appnote.html @@ -0,0 +1,339 @@ + + + + + + + + +FatFs Module Application Note + + + +

    FatFs Module Application Note

    +
      +
    1. How to Port
    2. +
    3. Limits
    4. +
    5. Memory Usage
    6. +
    7. Reducing Module Size
    8. +
    9. Long File Name
    10. +
    11. Unicode API
    12. +
    13. exFAT Filesystem
    14. +
    15. 64-bit LBA
    16. +
    17. Re-entrancy
    18. +
    19. Duplicated File Access
    20. +
    21. Performance Effective File Access
    22. +
    23. Considerations on Flash Memory Media
    24. +
    25. Critical Section
    26. +
    27. Various Usable Functions for FatFs Projects
    28. +
    29. About FatFs License
    30. +
    + +
    +

    How to Port

    + +

    Basic Considerations

    +

    The FatFs module assumes following conditions on portability.

    +
      +
    • ANSI C
      +The FatFs module is a middleware written in ANSI C (C89). There is no platform dependence, so long as the compiler is in compliance with C89 or later. Only exFAT feature requires C99.
    • +
    • Size of integer types
      +
        +
      • Size of char must be 8-bit.
      • +
      • Size of int, as well as integer promotion, must be 16-bit or 32-bit.
      • +
      • Size of short and long must be 16-bit and 32-bit respectively. (in C89 only)
      • +
      +
    • Dependency
      +
        +
      • C89: string.h.
      • +
      • C99: string.h and stdint.h.
      • +
      • Optional: stdarg.h and math.h.
      • +
      +
    + +

    Integer Types in FatFs API

    +

    Integer types used in FatFs are defined in ff.h as described below. It is based on Win32 API (windef.h). This will not be a problem on most platform. When a conflict with existing definitions occured, you must resolve it with care.

    +
    +
    BYTE
    8-bit unsigned integer in range of 0 to 28 - 1.
    +
    WORD
    16-bit unsigned integer in range of 0 to 216 - 1.
    +
    DWORD
    32-bit unsigned integer in range of 0 to 232 - 1.
    +
    QWORD
    64-bit unsigned integer in range of 0 to 264 - 1.
    +
    UINT
    Alias of unsigned int used to specify any number.
    +
    WCHAR
    Alias of WORD used to specify a UTF-16 code unit.
    +
    TCHAR
    Alias of char, WCHAR or DWORD used to specify a character encoding unit.
    +
    FSIZE_t
    Alias of DWORD or QWORD used to address file offset and to specify file size.
    +
    LBA_t
    Alias of DWORD or QWORD used to address sectors in LBA and to specify number of sectors.
    +
    + +

    System Organizations

    +

    The dependency diagram shown below is a typical, but not specific, configuration of the embedded system with FatFs module.

    +

    dependency diagram

    +

    (a) If a working disk module for FatFs is provided, nothing else will be needed. (b) To attach existing disk drivers with different interface, some glue functions are needed to translate the interfaces between FatFs and the driver.

    +

    functional diagram

    + +

    Required Functions

    +

    You need to provide only MAI functions required by FatFs module and nothing else. If a working device control module for the target system is available, you need to write only glue functions to attach it to the FatFs module. If not, you need to port another device control module or write it from scratch. Most of MAI functions are not that always required. For instance, the write function is not required in read-only configuration. Following table shows which function is required depends on the configuration options.

    + + + + + + + + + + +
    FunctionRequired when:Note
    disk_status
    disk_initialize
    disk_read
    AlwaysDisk I/O functions.
    Samples available in ffsample.zip.
    There are many implementations on the web.
    disk_write
    get_fattime
    disk_ioctl (CTRL_SYNC)
    FF_FS_READONLY == 0
    disk_ioctl (GET_SECTOR_COUNT)
    disk_ioctl (GET_BLOCK_SIZE)
    FF_USE_MKFS == 1
    disk_ioctl (GET_SECTOR_SIZE)FF_MAX_SS != FF_MIN_SS
    disk_ioctl (CTRL_TRIM)FF_USE_TRIM == 1
    ff_uni2oem
    ff_oem2uni
    ff_wtoupper
    FF_USE_LFN != 0Unicode support functions.
    Add optional module ffunicode.c to the project.
    ff_mutex_create
    ff_mutex_delete
    ff_mutex_take
    ff_mutex_give
    FF_FS_REENTRANT == 1O/S dependent functions.
    Sample code is available in ffsystem.c.
    ff_mem_alloc
    ff_mem_free
    FF_USE_LFN == 3
    +

    FatFs cares about neither what kind of storage device is used nor how it is implemented. Only a requirement is that it is a block device read/written in fixed-size blocks that accessible via the disk I/O functions defined above.

    +
    + +
    +

    Limits

    +
      +
    • Filesystem type: FAT, FAT32(rev0.0) and exFAT(rev1.0).
    • +
    • Number of open files: Unlimited. (depends on available memory)
    • +
    • Number of volumes: Up to 10.
    • +
    • Sector size: 512, 1024, 2048 and 4096 bytes.
    • +
    • Minimum volume size: 128 sectors.
    • +
    • Maximum volume size: 232 - 1 sectors in 32-bit LBA, virtually unlimited in 64-bit LBA with exFAT.
    • +
    • Maximum file size: 232 - 1 bytes on FAT volume, virtually unlimited on exFAT volume.
    • +
    • Cluster size: Upto 128 sectors on FAT volume and up to 16 MB on exFAT volume.
    • +
    +
    + +
    +

    Memory Usage

    +

    The memory usage varies depends on the configuration options.

    + + + + + + + + + + + +
    ARM7
    32bit
    ARM7
    Thumb
    CM3
    Thumb-2
    AVRH8/300HPIC24RL78V850ESSH-2ARX600IA-32
    CompilerGCCGCCGCCGCCCH38C30CC78K0RCA850SHCRXCMSC
    .text (Def, R/W)10.4k6.7k6.1k12.5k11.0k11.4k13.0k8.9k9.2k6.5k8.9k
    .text (Min, R/W) 7.0k4.7k4.2k 8.5k 7.6k 7.9k 9.5k6.3k6.4k4.7k6.4k
    .text (Def, R/O) 4.9k3.2k2.7k 6.1k 5.2k 5.4k 6.5k4.3k4.2k3.2k4.3k
    .text (Min, R/O) 3.7k2.5k2.1k 4.4k 4.0k 4.2k 5.1k3.4k3.3k2.5k3.5k
    .bssV*4 + 2V*4 + 2V*4 + 2V*2 + 2V*4 + 2V*2 + 2V*2 + 2V*4 + 2V*4 + 2V*4 + 2V*4 + 2
    Work area
    (FF_FS_TINY == 0)
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    V*560
    + F*546
    V*560
    + F*546
    V*560
    + F*546
    V*560
    + F*546
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    V*564
    + F*552
    Work area
    (FF_FS_TINY == 1)
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    V*560
    + F*34
    V*560
    + F*34
    V*560
    + F*34
    V*560
    + F*34
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    V*564
    + F*40
    +

    These are the memory usage of FatFs module without lower layer on some target systems in following condition. V denotes number of mounted volumes and F denotes number of open files. Every samples here are optimezed in code size.

    +
    +FatFs R0.15 options:
    +FF_FS_READONLY   0 (R/W, read/write) or 1 (R/O, read only)
    +FF_FS_MINIMIZE   0 (Def, with all basic functions) or 3 (Min, with fully minimized)
    +FF_FS_TINY       0 (Default) or 1 (Tiny file object)
    +And any other options are left unchanged from original setting.
    +
    +
    + +
    +

    Reducing Module Size

    +

    Follwing table shows which API function is removed by configuration options to reduce the module size. To use an API function, the row of the function must be clear.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FunctionFF_FS_
    MINIMIZE
    FF_FS_
    READONLY
    FF_USE_
    STRFUNC
    FF_FS_
    RPATH
    FF_USE_
    FIND
    FF_USE_
    CHMOD
    FF_USE_
    EXPAND
    FF_USE_
    LABEL
    FF_USE_
    MKFS
    FF_USE_
    FORWARD
    FF_MULTI_
    PARTITION
    0123010101201010101010101
    f_mount
    f_open
    f_close
    f_read
    f_write x
    f_sync x
    f_lseek x
    f_opendir xx
    f_closedir xx
    f_readdir xx
    f_findfirst xx x
    f_findnext xx x
    f_stat xxx
    f_getfree xxx x
    f_truncate xxx x
    f_unlink xxx x
    f_mkdir xxx x
    f_rename xxx x
    f_chdir x
    f_chdrive x
    f_getcwd xx
    f_chmod x x
    f_utime x x
    f_getlabel x
    f_setlabel x x
    f_expand x x
    f_forward x
    f_mkfs x x
    f_fdisk x x x
    f_putc xx
    f_puts xx
    f_printf xx
    f_gets x
    +
    + +
    +

    Long File Name

    +

    FatFs module supports the long file name (LFN) extension of the FAT filesystem. The two different file names, short file name (SFN) and LFN, of a file is transparent on the API. The support for LFN feature is disabled by default. To enable the LFN, set FF_USE_LFN to 1, 2 or 3, and add ffunicode.c to the project. The LFN feature requiers a certain working buffer. The buffer size can be configured by FF_MAX_LFN according to the available memory. The length of LFN can be up to 255 characters, so that the FF_MAX_LFN should be set to 255 for any existing file names. If the size of working buffer is insufficient for the input file name, the file function fails with FR_INVALID_NAME. When use any re-entry to the API with LFN feature in RTOS environment, FF_USE_LFN must be set to 2 or 3. In this case, the file function allocates the working buffer on the stack or heap. The LFN working buffer occupies (FF_MAX_LFN + 1) * 2 bytes and additional (FF_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled.

    +

    Impact upon Module Size

    + + + + + + + + + +
    With LFN at CM3 + gcc
    FF_CODE_PAGECode size
    437-869 (SBCS)+3.3k
    932 (Japanese)+62k
    936 (Simplified Chinese)+177k
    949 (Korean)+140k
    950 (Traditional Chinese)+111k
    0 (All code pages)+486k
    +

    When the LFN is enabled, the module size will be increased depends on the configured code page. Right table shows the increment of code size in some code pages. Especially, in the CJK region, tens of thousands of characters are being used. Unfortunately, it requires a huge OEM-Unicode bidirectional conversion table and the module size will be drastically increased as shown in the table.

    +

    As the result, the FatFs with LFN enabled with DBCS code pages will not able to be ported on the most 8-bit MCU systems. If the target system is in legacy-free, in only Unicode and any ANSI/OEM code is not used at all, the code page setting gets meaningless. You will able to reduce the code size by configureing FatFs for Unicode API with any SBCS code page.

    +

    There ware some restrictions on using LFN for open source project, because the LFN extension on the FAT filesystem was a patent of Microsoft Corporation. However the related patents all have expired and using the LFN feature is free for any projects.

    +
    + +
    +

    Unicode API

    +

    By default, FatFs uses ANSI/OEM code set on the API even in LFN configuration. FatFs can also switch the character encoding on the API to Unicode by configuration option FF_LFN_UNICODE. This means that FatFs is compliant with the full featured LFN specification. The data type TCHAR specifies path name strings on the API is an alias of either char(ANSI/OEM or UTF-8), WCHAR(UTF-16) or DWORD(UTF-32) depends on that option. For more information, refer to the description in the file name.

    +

    Note that setting of code page, FF_CODE_PAGE, has actually no meaning when FatFs is configured for the Unicode API. It should be set 437 to reduce the module size. However it still affects code conversion of string I/O functions when FF_STRF_ENCODE == 0, and also backward compatibility with legacy systems. In this case, the code page may need to be configured properly if it is considered a problem.

    +
    + +
    +

    exFAT Filesystem

    +

    The exFAT (Microsoft's Extended File Allocation Table) filesystem is a succession of the FAT/FAT32 filesystem which has been widely used in embedded systems, consumer devices and portable storage media. It is adopted by SDA (SD Association) as the filesystem for SDXC card, 64 GB and larger, and they are being shipped with this format. Therefore the exFAT is one of the standard filesystems for removable media as well as FAT. The exFAT filesystem allows the file size beyond the 4 GB limit what FAT filesystem allows up to and some filesystem overhead, especially cluster allocation delay, are reduced as well. These features allow to record the large data without dividing into some files and improve the write throughput to the file.

    +

    Note that the exFAT filesystem is a patent of Microsoft Corporation. The exFAT feature of FatFs is an implementation based on US. Pat. App. Pub. No. 2009/0164440 A1. FatFs module can switch the exFAT on or off by a configuration option, FF_FS_EXFAT. When enable the exFAT for the commercial products, a license by Microsoft will be needed depends on the final destination of the products.

    +

    Remarks: Enabling exFAT discards C89 compatibility and it wants C99 because of need for 64-bit integer type.

    +
    + +
    +

    64-bit LBA

    +

    LBA (Logical Block Addressing) is an addressing method to specify the location of data block, called sector, on the storage media. It is a simple linear address beginning from 0 as the first sector, 1 as the second sector and so on. The host system does not need to consider how the data block is located and managed in the storage device. FatFs supports only LBA for the media access. 32-bit LBA is a common size in the most LBA scheme. It can address up to 232 sectors, 2 TB in 512 bytes/sector. When a storage device larger than 2 TB is used, larger sector size or 64-bit LBA will be needed to address the entire sectors of the storage device.

    +

    By default, FatFs works in 32-bit LBA for media access. FatFs can also switch it to 64-bit LBA by a configuration option FF_LBA64. It also enables GPT (GUID Partition Table) for partiotion management on the storage device. For further information about GPT, refer to f_mkfs and f_fdisk function.

    +
    + +
    +

    Re-entrancy

    +

    The file operations of two tasks to the different volumes each other is always re-entrant and it can work concurrently without any mutual exclusion regardless of the configurations except when LFN is enabled with static working buffer (FF_USE_LFN = 1).

    +

    The file operations of two tasks to the same volume is not thread-safe by default. FatFs can also be configured to make it thread-safe by an option FF_FS_REENTRANT. When a file function is called while the volume is being accessed by another task, the file function to the volume will be suspended until that task leaves the file function. If the wait time exceeded a period defined by FF_TIMEOUT, the file function will abort with FR_TIMEOUT. The timeout feature might not be supported on the some OSs. To enable this feature, OS dependent synchronization control functions, ff_mutex_create/ff_mutex_delete/ff_mutex_take/ff_mutex_give, need to be added to the project. There is an example code in the ffsystem.c for some OSs.

    +

    Note that there is an exception on the re-entrancy for f_mount and f_mkfs function. You will know why it is. These volume management functions are always not thread-safe to the volume being processed. When use these functions, other tasks need to avoid to access the corresponding volume.

    +
    + + + + + + + + +
    FunctionCase 1Case 2Case 3
    disk_statusYesYesYes(*)
    disk_initializeNoYesYes(*)
    disk_readNoYesYes(*)
    disk_writeNoYesYes(*)
    disk_ioctlNoYesYes(*)
    get_fattimeNoYesYes
    + +Case 1: Same volume.
    +Case 2: Different volume on the same drive.
    +Case 3: Different volume on the different drive.
    +(*) In only different drive number. +
    +
    +

    Remarks: This section describes on the re-entrancy of the FatFs module itself. The FF_FS_REENTRANT option enables only exclusive use of each filesystem objects and FatFs does not that prevent to re-enter the storage device control functions. Thus the device control layer needs to be always thread-safe when FatFs API is re-entered for different volumes. Right table shows which control function can be re-entered when FatFs API is re-entered on some conditions.

    +
    + +
    +

    Duplicated File Open

    +

    FatFs module does not support the read/write collision control of duplicated open to a file. The duplicated open is permitted only when each of open method to a file is read mode. The duplicated open with one or more write mode to a file is always prohibited, and also open file must not be renamed or deleted. A violation of these rules can cause data collaption.

    +

    The file lock control can be enabled by FF_FS_LOCK option. The value of option defines the number of open objects to manage simultaneously. In this case, if any opening, renaming or removing against the file shareing rule that described above is attempted, the file function will be rejected with FR_LOCKED. If number of open objects, files and sub-directories, is equal to FF_FS_LOCK, an extra f_open/f_opendir function will fail with FR_TOO_MANY_OPEN_FILES.

    +
    + +
    +

    Performance Effective File Access

    +

    For good read/write throughput on the small embedded systems with limited size of memory, application programmer should consider what process is done in the FatFs module. The file data on the volume is transferred in following sequence by f_read function.

    +

    Figure 1. Sector unaligned read (short)
    + +

    +

    Figure 2. Sector unaligned read (long)
    + +

    +

    Figure 3. Fully sector aligned read
    + +

    +

    The file I/O buffer is a sector buffer to read/write a part of data on the sector. The sector buffer is either file private sector buffer on each file object or shared sector buffer in the filesystem object. The buffer configuration option FF_FS_TINY determins which sector buffer is used for the file data transfer. When tiny buffer configuration (1) is selected, data memory consumption is reduced FF_MAX_SS bytes each file object. In this case, FatFs module uses only a sector buffer in the filesystem object for file data transfer and FAT/directory access. The disadvantage of the tiny buffer configuration is: the FAT data cached in the sector buffer will be lost by file data transfer and it must be reloaded at every cluster boundary. However it will be suitable for most application from view point of the decent performance and low memory comsumption.

    +

    Figure 1 shows that a partial sector, sector unaligned part of the file, is transferred via the file I/O buffer. At long data transfer shown in Figure 2, middle of transfer data that covers one or more sector is transferred to the application buffer directly. Figure 3 shows that the case of entier transfer data is aligned to the sector boundary. In this case, file I/O buffer is not used. On the direct transfer, the maximum extent of sectors are read with disk_read function at a time but the multiple sector transfer is divided at cluster boundary even if it is contiguous.

    +

    Therefore taking effort to sector aligned read/write accesss eliminates buffered data transfer and the read/write performance will be improved. Besides the effect, cached FAT data will not be flushed by file data transfer at the tiny configuration, so that it can achieve same performance as non-tiny configuration with small memory footprint.

    +
    + +
    +

    Considerations on Flash Memory Media

    +

    To maximize the write performance of flash memory media, such as SDC, CFC and U Disk, it must be controlled in consideration of its characteristitcs.

    +

    Using Mutiple-Sector Write

    +
    +Figure 6. Comparison between Multiple/Single Sector Write
    +fig.6 +
    +

    The write throughput of the flash memory media becomes the worst at single sector write transaction. The write throughput increases as the number of sectors per a write transaction as shown in Figure 6. This effect more appers at faster interface speed and the performance ratio often becomes grater than ten. This result is clearly explaining how fast is multiple block write (W:16K, 32 sectors) than single block write (W:100, 1 sector), and also larger card tends to be slow at single block write. Number of write transactions also affects life time of the flash memory media. When compared at same amount of write data, the single sector write in Figure 6 above wears flash memory media 16 times more than multiple sector write in Figure 6 below. Single sector write is pretty pain for the flash memory media.

    +

    Therefore the application program should write the data in large block as possible. The ideal write chunk size and alighment is size of sector, and size of cluster is the best. Of course all layers between the application and the storage device must have consideration on multiple sector write, however most of open-source memory card drivers lack it. Do not split a multiple sector write request into single sector write transactions or the write throughput gets poor. Note that FatFs module and its sample disk drivers supprt multiple sector read/write operation.

    +

    Forcing Memory Erase

    +

    When remove a file with f_unlink function, the data clusters occupied by the file are marked 'free' on the FAT. But the data sectors containing the file data are not that applied any process, so that the file data left occupies a part of the flash memory array as 'live block'. If the file data can be erased on removing the file, those data blocks will be turned into the free block pool. This may skip internal block erase operation to the data block on next write operation. As the result the write performance might be improved. FatFs can manage this function by setting FF_USE_TRIM to 1. Note that because this effect is from an expectation of internal process of the storage device, it is not that always effective. Most applications will not need this function. Also f_unlink function can take a time when remove a large file.

    +
    + +
    +

    Critical Section

    +

    If a write operation to the FAT volume is interrupted due to an accidental failure, such as sudden blackout, wrong media removal and unrecoverable disk error, the FAT structure on the volume can be broken. Following images shows the critical section of the FatFs module.

    +
    +Figure 4. Long critical section
    +fig.4 +
    +
    +Figure 5. Minimized critical section
    +fig.5 +
    +
    +

    An interruption in the red section can cause a cross link; as a result, the object being changed can be lost. If an interruption in the yellow section is occured, there is one or more possibility listed below.

    +
      +
    • The file data being rewrited is collapsed.
    • +
    • The file being appended returns initial state.
    • +
    • The file created as new is gone.
    • +
    • The file created as new or overwritten remains but no content.
    • +
    • Efficiency of disk use gets worse due to lost clusters.
    • +
    +

    Each case does not affect any file not opened in write mode. To minimize risk of data loss, the critical section can be minimized by minimizing the time that file is opened in write mode or using f_sync function as shown in Figure 5.

    +
    + +
    +

    Various Usable Functions for FatFs Projects

    +

    These are examples of extended use of FatFs APIs. New item will be added when useful code example is found.

    +
      +
    1. Open or Create File for Append (superseded by FA_OPEN_APPEND flag added at R0.12)
    2. +
    3. Delete Non-empty Sub-directory (for R0.12 and later)
    4. +
    5. Create Contiguous File (superseded by f_expand function added at R0.12)
    6. +
    7. Test if the File is Contiguous or Not
    8. +
    9. Compatibility Checker for Storage Device Control Module
    10. +
    11. Performance Checker for Storage Device Control Module
    12. +
    13. FAT Volume Image Creator (Pre-creating built-in FAT volume)
    14. +
    15. Virtual Drive Feature (refer to lpc176x/ in ffsample.zip)
    16. +
    17. Embedded Unicode String Utilities (OEMxxx→Unicode, Unicode→OEMxxx, Unicode→Unicode)
    18. +
    +
    + +
    +

    About FatFs License

    +

    FatFs has being developped as a personal project of the author, ChaN. It is free from the code anyone else wrote at current release. Following code block shows a copy of the FatFs license document that included in the source files.

    +
    +/*----------------------------------------------------------------------------/
    +/  FatFs - Generic FAT Filesystem Module  Rx.xx                               /
    +/-----------------------------------------------------------------------------/
    +/
    +/ Copyright (C) 20xx, ChaN, all right reserved.
    +/
    +/ FatFs module is an open source software. Redistribution and use of FatFs in
    +/ source and binary forms, with or without modification, are permitted provided
    +/ that the following condition is met:
    +/
    +/ 1. Redistributions of source code must retain the above copyright notice,
    +/    this condition and the following disclaimer.
    +/
    +/ This software is provided by the copyright holder and contributors "AS IS"
    +/ and any warranties related to this software are DISCLAIMED.
    +/ The copyright owner or contributors be NOT LIABLE for any damages caused
    +/ by use of this software.
    +/----------------------------------------------------------------------------*/
    +
    +

    Therefore FatFs license is one of the BSD-style licenses but there is a significant feature. FatFs is mainly intended for embedded systems. In order to extend the usability for commercial products, the redistributions of FatFs in binary form, such as embedded code, binary library and any forms without source code, does not need to include about FatFs in the documentations. This is equivalent to the 1-clause BSD license. Of course FatFs is compatible with the most of open source software licenses includes GNU GPL. When you redistribute the FatFs source code with any changes or create a fork, the license can also be changed to GNU GPL, BSD-style license or any open source software license that compatible with FatFs license.

    +
    + +

    Return Home

    + + diff --git a/source/Module/FatFS/documents/doc/chdir.html b/source/Module/FatFS/documents/doc/chdir.html new file mode 100644 index 0000000..338406e --- /dev/null +++ b/source/Module/FatFS/documents/doc/chdir.html @@ -0,0 +1,88 @@ + + + + + + + + +FatFs - f_chdir + + + + +
    +

    f_chdir

    +

    The f_chdir function changes the current directory of the logical drive.

    +
    +FRESULT f_chdir (
    +  const TCHAR* path /* [IN] Path name */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies the directory to be set as current directory.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_chdir function changes the current directory of the logical drive. Also the current drive will be changed when in Unix style drive prefix, FF_STR_VOLUME_ID == 2. The current directory of each logical drive is initialized to the root directory on mount.

    +

    Note that the current directory is retained in the each file system object and the current drive is retained in a static variable, so that it also affects other tasks that use the file functions.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_RPATH >= 1.

    +
    + + +
    +

    Example

    +
    +    /* Change current direcoty of the current drive ("dir1" under root directory) */
    +    f_chdir("/dir1");
    +
    +    /* Change current direcoty of current drive (parent directory of drive 2) */
    +    f_chdir("2:..");
    +
    +    /* Change current direcoty of the drive "sdcard" (at DOS/Windows style volume ID) */
    +    f_chdir("sdcard:/dir1");
    +
    +    /* Change current direcoty of the drive "flash" and set it as current drive (at Unix style volume ID) */
    +    f_chdir("/flash/dir1");
    +
    +
    + +
    +

    See Also

    +

    f_chdrive, f_getcwd

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/chdrive.html b/source/Module/FatFS/documents/doc/chdrive.html new file mode 100644 index 0000000..e8412b1 --- /dev/null +++ b/source/Module/FatFS/documents/doc/chdrive.html @@ -0,0 +1,70 @@ + + + + + + + + +FatFs - f_chdrive + + + + +
    +

    f_chdrive

    +

    The f_chdrive function changes the current drive.

    +
    +FRESULT f_chdrive (
    +  const TCHAR* path  /* [IN] Logical drive number */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Specifies the logical drive number to be set as the current drive.
    +
    +
    + + +
    +

    Return Values

    +

    +FR_OK, +FR_INVALID_DRIVE +

    +
    + + +
    +

    Description

    +

    The f_chdrive function changes only the current drive. The initial value of the current drive number is 0. In Unix style drive prefix configuration, this function will not be needed because f_chdir function changes also the current drive. Note that the current drive is retained in a static variable, so that it also affects other tasks that using the file functions.

    +
    + +
    +

    QuickInfo

    +

    Available when FF_FS_RPATH >= 1.

    +
    + + +
    +

    Example

    +
    +    f_chdrive("2:");  /* Set drive 2 as current drive */
    +
    +    f_chdrive("");    /* No effect (set current drive as current drive) */
    +
    +
    + + +
    +

    See Also

    +

    f_chdir, f_getcwd

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/chmod.html b/source/Module/FatFS/documents/doc/chmod.html new file mode 100644 index 0000000..0da34b2 --- /dev/null +++ b/source/Module/FatFS/documents/doc/chmod.html @@ -0,0 +1,89 @@ + + + + + + + + +FatFs - f_chmod + + + + +
    +

    f_chmod

    +

    The f_chmod function changes the attribute of a file or sub-directory.

    +
    +FRESULT f_chmod (
    +  const TCHAR* path, /* [IN] Object name */
    +  BYTE attr,         /* [IN] Attribute flags */
    +  BYTE mask          /* [IN] Attribute masks */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies an object to be changed
    +
    attr
    +
    Attribute flags to be set in one or more combination of the following flags. The specified flags are set and others are cleard.
    + + + + + + +
    AttributeDescription
    AM_RDORead only
    AM_ARCArchive
    AM_SYSSystem
    AM_HIDHidden
    +
    +
    mask
    +
    Attribute mask that specifies which attribute is changed. The specified attributes are set or cleard and others are left unchanged.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_chmod function changes the attribute of a file or sub-directory.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_USE_CHMOD == 1.

    +
    + + +
    +

    Example

    +
    +    /* Set Read-only, clear Archive and others are left unchanged. */
    +    f_chmod("file.txt", AM_RDO, AM_RDO | AM_ARC);
    +
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/close.html b/source/Module/FatFS/documents/doc/close.html new file mode 100644 index 0000000..4f709af --- /dev/null +++ b/source/Module/FatFS/documents/doc/close.html @@ -0,0 +1,65 @@ + + + + + + + + +FatFs - f_close + + + + +
    +

    f_close

    +

    The f_close function closes an open file.

    +
    +FRESULT f_close (
    +  FIL* fp     /* [IN] Pointer to the file object */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    fp
    +
    Pointer to the open file object structure to be closed.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_close function closes an open file object. If the file has been changed, the cached information of the file is written back to the volume. After the function succeeded, the file object is no longer valid and it can be discarded.

    +

    Note that if the file object is in read-only mode and FF_FS_LOCK is not enabled, the file object can also be discarded without this procedure. However this is not recommended for future compatibility.

    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    See Also

    +

    f_open, f_read, f_write, f_sync, FIL, FATFS

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/closedir.html b/source/Module/FatFS/documents/doc/closedir.html new file mode 100644 index 0000000..79ce1ad --- /dev/null +++ b/source/Module/FatFS/documents/doc/closedir.html @@ -0,0 +1,64 @@ + + + + + + + + +FatFs - f_closedir + + + + +
    +

    f_closedir

    +

    The f_closedir function closes an open directory.

    +
    +FRESULT f_closedir (
    +  DIR* dp     /* [IN] Pointer to the directory object */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    dp
    +
    Pointer to the open directory object structure to be closed.
    +
    +
    + + +
    +

    Return Values

    +

    +FR_OK, +FR_INT_ERR, +FR_INVALID_OBJECT, +FR_TIMEOUT +

    +
    + + +
    +

    Description

    +

    The f_closedir function closes an open directory object. After the function succeeded, the directory object is no longer valid and it can be discarded.

    +

    Note that the directory object can also be discarded without this procedure when option FF_FS_LOCK is not enabled. However this is not recommended for future compatibility.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_MINIMIZE <= 1.

    +
    + + +
    +

    See Also

    +

    f_opendir, f_readdir, DIR

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/config.html b/source/Module/FatFS/documents/doc/config.html new file mode 100644 index 0000000..6196fd1 --- /dev/null +++ b/source/Module/FatFS/documents/doc/config.html @@ -0,0 +1,304 @@ + + + + + + + + +FatFs - Configuration Options + + + +

    Configuration Options

    +

    There are many options to configure the features of FatFs for various requirements of each project. The configuration options are defined in ffconf.h.

    + + +
    +

    Function Configurations

    + +

    FF_FS_READONLY

    +

    Read/Write (0) or Read-only (1). Read-only configuration removes writing API functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename, f_truncate, f_getfree and optional writing functions as well.

    + +

    FF_FS_MINIMIZE

    +

    This option defines minimization level to remove some basic API functions as follows:

    + + + + + + +
    ValueDescription
    0All basic API functions are available.
    1f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_utime, f_truncate and f_rename function are removed.
    2f_opendir, f_readdir and f_closedir function are removed in addition to 1.
    3f_lseek function is removed in addition to 2.
    + +

    FF_USE_FIND

    +

    Disable (0) or Enable (1) filtered directory read functions, f_findfirst and f_findnext. Also FF_FS_MINIMIZE needs to be 0 or 1.

    + +

    FF_USE_MKFS

    +

    Disable (0) or Enable (1) f_mkfs function.

    + +

    FF_USE_FASTSEEK

    +

    Disable (0) or Enable (1) fast seek function to enable accelerated mode for f_lseek, f_read and f_write function. For more information, read here.

    + +

    FF_USE_EXPAND

    +

    Disable (0) or Enable (1) f_expand function.

    + +

    FF_USE_CHMOD

    +

    Disable (0) or Enable (1) metadata control functions, f_chmod and f_utime. Also FF_FS_READONLY needs to be 0.

    + +

    FF_USE_LABEL

    +

    Disable (0) or Enable (1) API functions for volume label, f_getlabel and f_setlabel.

    + +

    FF_USE_FORWARD

    +

    Disable (0) or Enable (1) f_forward function.

    + +

    FF_USE_STRFUNC

    +

    This option switches string functions, f_gets, f_putc, f_puts and f_printf. These functions are equivalents of regular string stream I/O functions in POSIX. If sprintf is available and code conversion is not needed, f_write with sprintf will be efficient in code size and performance rather than f_printf. When enable this feature, stdarg.h is included in ff.c.

    + + + + + +
    ValueDescription
    0Disable string functions.
    1Enable string functions without LF-CRLF conversion.
    2Enable string functions with LF-CRLF conversion.
    + + +

    This option switches support for long long integer argument in f_printf.

    +

    Disable (0) or Enable (1). When enable this feature, C standard needs to be C99 or later.

    + + +

    This option switches support for floating point argument in f_printf. When enable this feature, C standard needs to be C99 or later and math.h is included in ff.c.

    + + + + + +
    ValueDescription
    0Disable floating point argument.
    1Enable floating point argument in type 'f', 'e' and 'E'.
    2Enable it with decimal separator ',' instead of '.'.
    + +

    FF_STRF_ENCODE

    +

    When character encoding on the API is Unicode (FF_LFN_UNICODE >= 1), string I/O functions enabled by FF_USE_STRFUNC convert the character encoding in it. This option defines the assumption of character encoding on the file to be read/written via those functions. When LFN is not enabled or FF_LFN_UNICODE == 0, the string functions work without any code conversion and this option has no effect.

    + + + + + + +
    ValueCharacter encoding on the file
    0ANSI/OEM in current code page
    1Unicode in UTF-16LE
    2Unicode in UTF-16BE
    3Unicode in UTF-8
    + +
    + + +
    +

    Namespace and Locale Configurations

    + +

    FF_CODE_PAGE

    +

    This option specifies the OEM code page used on the target system. Incorrect setting of the code page can cause a file open failure. If any non-ASCII character is not used for the path name or FF_LFN_UNICODE != 0, there is no difference between any code page settings. Set it 437 anyway.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueCode page
    0Includes all code pages below and set by f_setcp()
    437U.S.
    720Arabic
    737Greek
    771KBL
    775Baltic
    850Latin 1
    852Latin 2
    855Cyrillic
    857Turkish
    860Portuguese
    861Icelandic
    862Hebrew
    863Canadian French
    864Arabic
    865Nordic
    866Russian
    869Greek 2
    932Japanese (DBCS)
    936Simplified Chinese (DBCS)
    949Korean (DBCS)
    950Traditional Chinese (DBCS)
    + +

    FF_USE_LFN

    +

    This option switches the support for long file name (LFN). When enable the LFN, Unicode support module ffunicode.c need to be added to the project. When use stack for the working buffer, take care on stack overflow. When use heap memory for the working buffer, memory management functions (ff_memalloc and ff_memfree) need to be added to the project.

    + + + + + + +
    ValueDescription
    0Disable LFN. Path name in only 8.3 format can be used.
    1Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
    2Enable LFN with dynamic working buffer on the STACK.
    3Enable LFN with dynamic working buffer on the HEAP.
    + +

    FF_MAX_LFN

    +

    LFN function requiers certain internal working buffer for the file name. This option defines size of the buffer and the value can be in range of 12 to 255 characters (actually in UTF-16 code units) of the LFN. The buffer occupies (FF_MAX_LFN + 1) * 2 bytes and additional (FF_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled. It is recommended to be set 255 to fully support the LFN specification. This option has no effect when LFN is not enabled.

    + +

    FF_LFN_UNICODE

    +

    This option switches character encoding for the file name on the API. FatFs supports the code point up to U+10FFFF. This option also affects behavior of string I/O functions (see FF_STRF_ENCODE).

    + + + + + + +
    ValueCharacter EncodingTCHAR
    0ANSI/OEM in current CPchar
    1Unicode in UTF-16WCHAR
    2Unicode in UTF-8char
    3Unicode in UTF-32DWORD
    +

    When Unicode is selected, FF_CODE_PAGE has actually no meaning except for compatibility with legacy systems, such as MS-DOS and any system without support for LFN.

    +

    When LFN is not enabled, this option has no effect and FatFs works in ANSI/OEM code on the API. For more information, read here.

    + +

    FF_LFN_BUF, FF_SFN_BUF

    +

    This set of options defines size of file name members, fname[] and altname[], in the FILINFO structure which is used to read out the directory items. These values should be suffcient for the file names to read. The maximum possible length of read file name depends on the character encoding scheme on the API as follows:

    + + + + + + +
    EncodingLFN lengthSFN length
    ANSI/OEM in SBCS255 items12 items
    ANSI/OEM in DBCS510 items12 items
    Unicode in UTF-16/32255 items12 items
    Unicode in UTF-8765 items34 items
    +

    If the size of name member is insufficient for the LFN, the item is treated as without LFN. When LFN is not enabled, these options have no effect.

    + +

    FF_FS_RPATH

    +

    This option configures relative path function. For more information, read here.

    + + + + + +
    ValueDescription
    0Disable relative path and remove related functions.
    1Enable relative path. f_chdir and f_chdrive function is available.
    2f_getcwd function is available in addition to 1
    + +
    + + +
    +

    Volume/Drive Configurations

    + +

    FF_VOLUMES

    +

    This option configures number of volumes (logical drives up to 10) to be used.

    + +

    FF_STR_VOLUME_ID

    +

    This option switches the support for string volume ID. When arbitrary string for the volume ID is enabled for the drive prefix, also pre-defined strings by FF_VOLUME_STRS or user defined strings can be used as drive prefix in the path name. Numeric drive number is always valid regardless of this option, and also either format of drive prefix can be enabled by this option.

    + + + + + +
    ValueDescriptionExample
    0Only DOS/Windows style drive prefix in numeric ID can be used.1:/filename
    1Also DOS/Windows style drive prefix in string ID can be used.flash:/filename
    2Also Unix style drive prefix in string ID can be used./flash/filename
    + +

    FF_VOLUME_STRS

    +

    This option defines the volume ID strings for each logical drives. Number of items must not be less than FF_VOLUMES. Valid characters for the volume ID string are A-Z, a-z and 0-9, however, they are compared in case-insensitive. If FF_STR_VOLUME_ID == 0, this option has no effect. If FF_STR_VOLUME_ID >= 1 and this option is not defined, a user defined volume string table needs to be defined as shown below. The table should not be modified on the fly.

    +
    +/* User defined volume ID strings for 0: to 3: */
    +const char* VolumeStr[FF_VOLUMES] = {"ram","flash","sd","usb"};
    +
    + +

    FF_MULTI_PARTITION

    +

    Disable (0) or Enable (1). This option switches multi-partition function. By default (0), each logical drive number is bound to the same physical drive number and only a volume in the physical drive is mounted. When enabled, each logical drive is bound to the partition on the physical drive listed in the user defined partition resolution table VolToPart[]. Also f_fdisk funciton will be available. For more information, read here.

    + +

    FF_MIN_SS, FF_MAX_SS

    +

    This set of options defines the extent of sector size used for the low level disk I/O interface, disk_read and disk_write function. Valid values are 512, 1024, 2048 and 4096. FF_MIN_SS defines minimum sector size and FF_MAX_SS defines the maximum sector size. Always set both 512 for memory card and harddisk. But a larger value may be required for on-board flash memory and some type of optical media. When FF_MAX_SS > FF_MIN_SS, support of variable sector size is enabled and GET_SECTOR_SIZE command needs to be implemented to the disk_ioctl function.

    + +

    FF_LBA64

    +

    This option switches media access interface to 64-bit LBA and enables GUID Partition Table (GPT) for partition management, Enabled (1) or Disabled (0). exFAT filesystem needs to be enabled to enable this feature.

    + +

    FF_MIN_GPT

    +

    This option specifies the threshold of determination of partitioning format when create patitions on the drive in f_mkfs and f_fdisk function. When number of available sectors is equal or larger than this value, the drive will be partitioned in GPT. This option has no effect when FF_LBA64 == 0.

    + +

    FF_USE_TRIM

    +

    Disable (0) or Enable (1). This option switches ATA-TRIM function. To enable Trim function, also CTRL_TRIM command should be implemented to the disk_ioctl function.

    + +
    + + +
    +

    System Configurations

    + +

    FF_FS_TINY

    +

    Normal (0) or Tiny (1). The tiny configuration reduces size of the FIL structure, file object, FF_MAX_SS bytes each. Instead of private sector buffer eliminated from the file object, common sector buffer in the FATFS structure, filesystem object, is used for the file data transfer.

    + +

    FF_FS_EXFAT

    +

    This option switches support for exFAT filesystem in addition to the FAT/FAT32 filesystem, Enabled (1) or Disabled (0). To enable exFAT, also LFN must be enabled and configureing FF_LFN_UNICODE >= 1 and FF_MAX_LFN == 255 is recommended for full-featured exFAT function. Note that enabling exFAT discards ANSI C (C89) compatibility and wants C99 because of need for 64-bit integer type.

    + +

    FF_FS_NORTC

    +

    Use RTC (0) or Do not use RTC (1). This option controls timestamp featuer. If the system does not have an RTC or valid timestamp is not needed, set FF_FS_NORTC to 1 to disable the timestamp function. Every objects modified by FatFs will have a constant timestamp defined by FF_NORTC_MON, FF_NORTC_MDAY and FF_NORTC_YEAR. To use the timestamp featuer, set FF_FS_NORTC == 0 and add get_fattime function to the project to get current time form the RTC. This option has no effect in read-only configuration.

    + +

    FF_NORTC_MON, FF_NORTC_MDAY, FF_NORTC_YEAR

    +

    This set of options defines the time to be used in no RTC systems. This option has no effect in read-only configuration or FF_FS_NORTC == 0.

    + +

    FF_FS_NOFSINFO

    +

    0 to 3. If you need to know correct free space on the FAT32 volume, set bit 0 of this option, and f_getfree function at first time after the volume mounted will force a full FAT scan. Bit 1 controls the use of last allocated cluster number for new allocation.

    + + + + + + +
    ValueDescription
    bit0=0Use free cluster count in the FSINFO if available.
    bit0=1Do not trust free cluster count in the FSINFO.
    bit1=0Use last allocated cluster number in the FSINFO to find a free cluster if available.
    bit1=1Do not trust last allocated cluster number in the FSINFO.
    + +

    FF_FS_LOCK

    +

    This option switches file lock feature to control duplicated file open and illegal operations to the open objects. Note that this feature is independent of re-entrancy. This option must be 0 in read-only configuration.

    + + + + +
    ValueDescription
    0Disable file lock feature. To avoid to collapse files due to wrong file operations, application program needs to avoid illegal open, remove and rename to the open objects.
    >0Enable file lock feature. The value defines how many files/sub-directories can be opened simultaneously under the file lock feature. Illigal operations to the open object will be rejected with FR_LOCKED.
    + +

    FF_FS_REENTRANT

    +

    Disable (0) or Enable (1). This option switches the re-entrancy (thread safe) of the FatFs module itself. Note that file/directory access to the different volume is always re-entrant and it can work simultaneously regardless of this option, however, volume management functions, f_mount, f_mkfs and f_fdisk, are always not re-entrant. Only file/directory access to the same volume, in other words, exclusive use of each filesystem object, is under control in this feature. To enable this feature, also user provided synchronization handlers, ff_mutex_take, ff_mutex_give, ff_mutex_create and ff_mutex_delete, need to be added to the project. Sample code is available in ffsystem.c.

    + +

    FF_FS_TIMEOUT

    +

    Number of O/S time ticks to abort the file function with FR_TIMEOUT when the wait time exceeds this period. This option has no effect when FF_FS_REENTRANT == 0.

    + +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/dinit.html b/source/Module/FatFS/documents/doc/dinit.html new file mode 100644 index 0000000..a5b799f --- /dev/null +++ b/source/Module/FatFS/documents/doc/dinit.html @@ -0,0 +1,46 @@ + + + + + + + + +FatFs - disk_initialize + + + + +
    +

    disk_initialize

    +

    The disk_initialize function is called to initializes the storage device.

    +
    +DSTATUS disk_initialize (
    +  BYTE pdrv           /* [IN] Physical drive number */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    pdrv
    +
    Physical drive number to identify the target device. Always zero at single drive system.
    +
    +
    + + +
    +

    Return Values

    +

    This function returns the current drive status flags as the result. For details of the drive status, refer to the disk_status function.

    +
    + +
    +

    Description

    +

    This function initializes the storage device and put it ready to generic read/write. When the function succeeded, STA_NOINIT flag in the return value is cleared.

    +

    Remarks: This function needs to be under control of FatFs module. Application program MUST NOT call this function while FatFs is in use, or FAT structure on the volume can be broken. To re-initialize the filesystem, use f_mount function instead.

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/dioctl.html b/source/Module/FatFS/documents/doc/dioctl.html new file mode 100644 index 0000000..8a7a394 --- /dev/null +++ b/source/Module/FatFS/documents/doc/dioctl.html @@ -0,0 +1,101 @@ + + + + + + + + +FatFs - disk_ioctl + + + + +
    +

    disk_ioctl

    +

    The disk_ioctl function is called to control device specific features and miscellaneous functions other than generic read/write.

    +
    +DRESULT disk_ioctl (
    +  BYTE pdrv,     /* [IN] Drive number */
    +  BYTE cmd,      /* [IN] Control command code */
    +  void* buff     /* [I/O] Parameter and data buffer */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    pdrv
    +
    Physical drive number to identify the target device.
    +
    cmd
    +
    Command code.
    +
    buff
    +
    Pointer to the parameter depends on the command code. Do not care if the command has no parameter to be passed.
    +
    +
    + + +
    +

    Return Value

    +
    +
    RES_OK (0)
    +
    The function succeeded.
    +
    RES_ERROR
    +
    An error occured.
    +
    RES_PARERR
    +
    The command code or parameter is invalid.
    +
    RES_NOTRDY
    +
    The device has not been initialized.
    +
    +
    + + +
    +

    Description

    +

    The FatFs module requires only five device independent commands described below.

    + + + + + + + + +
    Standard ioctl command used by FatFs
    CommandDescription
    CTRL_SYNCMakes sure that the device has finished pending write process. If the disk I/O layer or storage device has a write-back cache, the dirty cache data must be committed to the medium immediately. Nothing to do for this command if each write operation to the medium is completed in the disk_write function.
    GET_SECTOR_COUNTRetrieves number of available sectors, the largest allowable LBA + 1, on the drive into the LBA_t variable that pointed by buff. This command is used by f_mkfs and f_fdisk function to determine the size of volume/partition to be created.
    GET_SECTOR_SIZERetrieves sector size, minimum data unit for generic read/write, into the WORD variable that pointed by buff. Valid sector sizes are 512, 1024, 2048 and 4096. This command is required only if FF_MAX_SS > FF_MIN_SS. When FF_MAX_SS == FF_MIN_SS, this command will never be used and the disk_read and disk_write function must work in FF_MAX_SS bytes/sector.
    GET_BLOCK_SIZERetrieves erase block size in unit of sector of the flash memory media into the DWORD variable that pointed by buff. The allowable value is 1 to 32768 in power of 2. Return 1 if it is unknown or in non flash memory media. This command is used by f_mkfs function with block size not specified and it attempts to align the data area on the suggested block boundary. Note that FatFs does not have FTL (flash translation layer), so that either disk I/O layter or storage device must have an FTL in it.
    CTRL_TRIMInforms the disk I/O layter or the storage device that the data on the block of sectors is no longer needed and it can be erased. The sector block is specified in an LBA_t array {<Start LBA>, <End LBA>} that pointed by buff. This is an identical command to Trim of ATA device. Nothing to do for this command if this funcion is not supported or not a flash memory device. FatFs does not check the result code and the file function is not affected even if the sector block was not erased well. This command is called on remove a cluster chain and in the f_mkfs function. It is required when FF_USE_TRIM == 1.
    + +

    FatFs will never use any device dependent command nor user defined command. Following table shows an example of non-standard commands which may be useful for some applications.

    + + + + + + + + + + + + + + + + + + + + + +
    Example of optional ioctl command
    CommandDescription
    CTRL_FORMATCreates a physical format on the media. If buff is not null, it is pointer to the call-back function for progress notification.
    CTRL_POWER_IDLEPuts the device idle state. STA_NOINIT in the current status flags may not be set if the device goes active state by generic read/write function.
    CTRL_POWER_OFFPuts the device off state. Shut-down the power to the device and deinitialize the device interface if needed. STA_NOINIT in the current status flags must be set. The device goes active state by disk_initialize function.
    CTRL_LOCKLocks media eject mechanism.
    CTRL_UNLOCKUnlocks media eject mechanism.
    CTRL_EJECTEjects media cartridge. STA_NOINIT and STA_NODISK in status flag are set after the function succeeds.
    CTRL_GET_SMARTReads SMART information.
    MMC_GET_TYPEGets card type. The type flags, bit0:MMCv3, bit1:SDv1, bit2:SDv2+ and bit3:LBA, is stored to a BYTE variable pointed by buff. (MMC/SDC specific command)
    MMC_GET_CSDReads CSD register and sets it into a 16-byte buffer pointed by buff. (MMC/SDC specific command)
    MMC_GET_CIDReads CID register and sets it into a 16-byte buffer pointed by buff. (MMC/SDC specific command)
    MMC_GET_OCRReads OCR register and sets it into a 4-byte buffer pointed by buff. (MMC/SDC specific command)
    MMC_GET_SDSTATReads SDSTATUS register and sets it into a 64-byte buffer pointed by buff. (SDC specific command)
    ATA_GET_REVReads the revision string and sets it into a 16-byte buffer pointed by buff. (ATA/CFC specific command)
    ATA_GET_MODELReads the model string and sets it into a 40-byte buffer pointed by buff. (ATA/CFC specific command)
    ATA_GET_SNReads the serial number string and sets it into a 20-byte buffer pointed by buff. (ATA/CFC specific command)
    ISDIO_READReads a block of iSDIO registers specified by command structure pointed by buff. (FlashAir specific command)
    ISDIO_WRITEWrites a block of data to iSDIO registers specified by command structure pointed by buff. (FlashAir specific command)
    ISDIO_MRITEChanges bits in an iSDIO register specified by command structure pointed by buff. (FlashAir specific command)
    +
    + + +
    +

    QuickInfo

    +

    The disk_ioctl function is not needed when FF_FS_READONLY == 1 and FF_MAX_SS == FF_MIN_SS.

    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/dread.html b/source/Module/FatFS/documents/doc/dread.html new file mode 100644 index 0000000..fa95479 --- /dev/null +++ b/source/Module/FatFS/documents/doc/dread.html @@ -0,0 +1,73 @@ + + + + + + + + +FatFs - disk_read + + + + +
    +

    disk_read

    +

    The disk_read function is called to read data from the storage device.

    +
    +DRESULT disk_read (
    +  BYTE pdrv,     /* [IN] Physical drive number */
    +  BYTE* buff,    /* [OUT] Pointer to the read data buffer */
    +  LBA_t sector,  /* [IN] Start sector number */
    +  UINT count     /* [IN] Number of sectros to read */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    pdrv
    +
    Physical drive number to identify the target device.
    +
    buff
    +
    Pointer to the first item of the byte array to store read data. Size of read data will be the sector size * count bytes.
    +
    sector
    +
    Start sector number in LBA. The data type LBA_t is an alias of DWORD or QWORD depends on the configuration option.
    +
    count
    +
    Number of sectors to read.
    +
    +
    + + +
    +

    Return Value

    +
    +
    RES_OK (0)
    +
    The function succeeded.
    +
    RES_ERROR
    +
    An unrecoverable hard error occured during the read operation.
    +
    RES_PARERR
    +
    Invalid parameter.
    +
    RES_NOTRDY
    +
    The device has not been initialized.
    +
    +
    + + +
    +

    Description

    +

    Read/write operation to the generic storage devices, such as memory card, hadddisk and optical disk, is done in unit of block of data bytes called sector. FatFs supports the sector size in range of 512 to 4096 bytes. When FatFs is configured for fixed sector size (FF_MIN_SS == FF_MAX_SS, this is the most case), the generic read/write function must work at this sector size only. When FatFs is configured for variable sector size (FF_MIN_SS < FF_MAX_SS), the sector size of medium is inquired with disk_ioctl function after disk_initialize function succeeds.

    +

    There are some considerations about the memory addres passed via buff. It is not that always aligned with the word boundary, because the argument is defined as BYTE*. The unaligned transfer request can occure at direct transfer. If the bus architecture, especially DMA controller, does not allow unaligned memory access, it should be solved in this function. If it is the case, there are some workarounds described below to avoid this issue.

    +
      +
    • Convert word transfer to byte transfer with some trick in this function. - Recommended.
    • +
    • On the f_read() calls, avoid long read request that includes a whole of sector. - Any direct transfer never occures.
    • +
    • On the f_read(fp, data, btw, bw) calls, make sure that (((UINT)data & 3) == (f_tell(fp) & 3)) is true. - Word alignment of buff is guaranteed.
    • +
    +

    Also the memory area may be out of reach in DMA. This is the case if it is located on the tightly coupled memory which is usually used for stack. Use double buffered transfer, or avoid to define file I/O buffer, FATFS and FIL structure as local variables where on the stack.

    +

    Generally, a multiple sector read request must not be split into single sector transactions to the storage device, or read throughput gets worse.

    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/dstat.html b/source/Module/FatFS/documents/doc/dstat.html new file mode 100644 index 0000000..1456668 --- /dev/null +++ b/source/Module/FatFS/documents/doc/dstat.html @@ -0,0 +1,48 @@ + + + + + + + + +FatFs - disk_status + + + + +
    +

    disk_status

    +

    The disk_status function is called to inquire the current drive status.

    +
    +DSTATUS disk_status (
    +  BYTE pdrv     /* [IN] Physical drive number */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    pdrv
    +
    Physical drive number to identify the target device. Always zero in single drive system.
    +
    +
    + + +
    +

    Return Values

    +

    The current drive status is returned in combination of status flags described below. FatFs refers only STA_NOINIT and STA_PROTECT.

    +
    +
    STA_NOINIT
    +
    Indicates that the device has not been initialized and not ready to work. This flag is set on system reset, media removal or failure of disk_initialize function. It is cleared on disk_initialize function succeeded. Any media change that occurs asynchronously must be captured and reflect it to the status flags, or auto-mount function will not work correctly. If the system does not support media change detection, application program needs to explicitly re-mount the volume with f_mount function after each media change.
    +
    STA_NODISK
    +
    Indicates that no medium in the drive. This is always cleared when the drive is non-removable class. Note that FatFs does not refer this flag.
    +
    STA_PROTECT
    +
    Indicates that the medium is write protected. This is always cleared when the drive has no write protect function. Not valid if STA_NODISK is set.
    +
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/dwrite.html b/source/Module/FatFS/documents/doc/dwrite.html new file mode 100644 index 0000000..e449752 --- /dev/null +++ b/source/Module/FatFS/documents/doc/dwrite.html @@ -0,0 +1,76 @@ + + + + + + + + +FatFs - disk_write + + + + +
    +

    disk_write

    +

    The disk_write function is called to write data to the storage device.

    +
    +DRESULT disk_write (
    +  BYTE pdrv,        /* [IN] Physical drive number */
    +  const BYTE* buff, /* [IN] Pointer to the data to be written */
    +  LBA_t sector,     /* [IN] Sector number to write from */
    +  UINT count        /* [IN] Number of sectors to write */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    pdrv
    +
    Physical drive number to identify the target device.
    +
    buff
    +
    Pointer to the first item of the byte array to be written. The size of data to be written is sector size * count bytes.
    +
    sector
    +
    Start sector number in LBA. The data type LBA_t is an alias of DWORD or QWORD depends on the configuration option.
    +
    count
    +
    Number of sectors to write.
    +
    +
    + + +
    +

    Return Values

    +
    +
    RES_OK (0)
    +
    The function succeeded.
    +
    RES_ERROR
    +
    An unrecoverable hard error occured during the write operation.
    +
    RES_WRPRT
    +
    The medium is write protected.
    +
    RES_PARERR
    +
    Invalid parameter.
    +
    RES_NOTRDY
    +
    The device has not been initialized.
    +
    +
    + + +
    +

    Description

    +

    The specified memory address is not that always aligned to word boundary because the argument is defined as BYTE*. For more information, refer to the description of disk_read function.

    +

    Generally, a multiple sector write request (count > 1) must not be split into single sector transactions to the storage device, or the file write throughput will be drastically decreased.

    +

    FatFs expects delayed write function of the disk control layer. The write operation to the media does not need to be completed when return from this function by what write operation is in progress or data is only stored into the write-back cache. But write data on the buff is invalid after return from this function. The write completion request is done by CTRL_SYNC command of disk_ioctl function. Therefore, if a delayed write function is implemented, the write throughput of the filesystem will be improved.

    +

    Remarks: Application program MUST NOT call this function, or FAT structure on the volume can be collapsed.

    +
    + + +
    +

    QuickInfo

    +

    This function is not needed when FF_FS_READONLY == 1.

    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/eof.html b/source/Module/FatFS/documents/doc/eof.html new file mode 100644 index 0000000..3d4fab2 --- /dev/null +++ b/source/Module/FatFS/documents/doc/eof.html @@ -0,0 +1,62 @@ + + + + + + + + +FatFs - f_eof + + + + +
    +

    f_eof

    +

    The f_eof function tests for end-of-file on a file.

    +
    +int f_eof (
    +  FIL* fp   /* [IN] File object */
    +);
    +
    +
    + + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object structure.
    +
    +
    + + +
    +

    Return Values

    +

    The f_eof function returns a non-zero value if the read/write pointer has reached end of the file; otherwise it returns a zero.

    +
    + + +
    +

    Description

    +

    In this revision, this function is implemented as a macro. It does not have any validation and mutual exclusion.

    +
    +#define f_eof(fp) ((int)((fp)->fptr == (fp)->fsize))
    +
    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    See Also

    +

    f_open, f_lseek, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/error.html b/source/Module/FatFS/documents/doc/error.html new file mode 100644 index 0000000..685b7f2 --- /dev/null +++ b/source/Module/FatFS/documents/doc/error.html @@ -0,0 +1,62 @@ + + + + + + + + +FatFs - f_error + + + + +
    +

    f_error

    +

    The f_error tests for an error on a file.

    +
    +int f_error (
    +  FIL* fp   /* [IN] File object */
    +);
    +
    +
    + + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object structure.
    +
    +
    + + +
    +

    Return Values

    +

    Returns a non-zero value if a hard error has occured; otherwise it returns a zero.

    +
    + + +
    +

    Description

    +

    In this revision, this function is implemented as a macro. It does not have any validation and mutual exclusion.

    +
    +#define f_error(fp) ((fp)->err)
    +
    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    See Also

    +

    f_open, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/expand.html b/source/Module/FatFS/documents/doc/expand.html new file mode 100644 index 0000000..c753c2f --- /dev/null +++ b/source/Module/FatFS/documents/doc/expand.html @@ -0,0 +1,117 @@ + + + + + + + + +FatFs - f_expand + + + + +
    +

    f_expand

    +

    The f_expand function prepares or allocates a contiguous data area to the file.

    + +
    +FRESULT f_expand (
    +  FIL*    fp,  /* [IN] File object */
    +  FSIZE_t fsz, /* [IN] File size expanded to */
    +  BYTE    opt  /* [IN] Allocation mode */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object.
    +
    fsz
    +
    Number of bytes in size to prepare or allocate for the file. The data type FSIZE_t is an alias of either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option FF_FS_EXFAT.
    +
    opt
    +
    Allocation mode. Prepare to allocate (0) or Allocate now (1).
    +
    +
    + + + + + +
    +

    Description

    +

    The f_expand function prepares or allocates a contiguous data area to the file. When opt is 1, the data area is allocated to the file in this function. Unlike expansion of file size by f_lseek function, the file must be truncated prior to use this function and read/write pointer of the file stays at offset 0 after the function call. The file content allocated with this function is undefined, because no data is written to the file in this process. The function can fail with FR_DENIED due to some reasons below.

    +
      +
    • No free contiguous space was found.
    • +
    • Size of the file was not zero.
    • +
    • The file has been opened in read-only mode.
    • +
    • Not allowable file size. (>= 4 GB on FAT volume)
    • +
    +

    When opt is 0, the function finds a contiguous data area and set it as suggested point for next allocation. The subsequent cluster allocation begins at top of the contiguous area found by this function. Thus the file allocation is guaranteed be contiguous and without allocation delay until the file size reaches this size unless any other changes to the volume is performed.

    +

    The contiguous file has an advantage for time-critical read/write operations. It eliminates some overheads in the filesystem and the storage device caused by random access for fragmented file.

    +

    Also the contiguous file can be easily accessed directly via low-level disk functions. However, this is not recommended in consideration of portability and future compatibility. If the file has not been confirmed be contiguous, use this function to examine if the file is contiguous or not.

    +
    + +
    +

    QuickInfo

    +

    Available when FF_USE_EXPAND == 1 and FF_FS_READONLY == 0.

    +
    + + +
    +

    Example

    +
    +    /* Creating a contiguous file */
    +
    +    /* Create a new file */
    +    res = f_open(fp = malloc(sizeof (FIL)), "file.dat", FA_WRITE|FA_CREATE_ALWAYS);
    +    if (res) { /* Check if the file has been opened */
    +        free(fp);
    +        die("Failed to open the file.");
    +    }
    +
    +    /* Alloacte a 100 MiB of contiguous area to the file */
    +    res = f_expand(fp, 104857600, 1);
    +    if (res) { /* Check if the file has been expanded */
    +        f_close(fp);
    +        free(fp);
    +        die("Failed to allocate contiguous area.");
    +    }
    +
    +    /* Now you have a contiguous file accessible with fp */
    +
    +
    +
    +    /* Accessing the contiguous file via low-level disk functions */
    +
    +    /* Get physical location of the file data */
    +    drv = fp->obj.fs->pdrv;
    +    lba = fp->obj.fs->database + fp->obj.fs->csize * (fp->obj.sclust - 2);
    +
    +    /* Write 2048 sectors from top of the file at a time */
    +    res = disk_write(drv, buffer, lba, 2048);
    +
    +
    +
    + + +
    +

    See Also

    +

    f_open, f_lseek, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/fattime.html b/source/Module/FatFS/documents/doc/fattime.html new file mode 100644 index 0000000..220f69b --- /dev/null +++ b/source/Module/FatFS/documents/doc/fattime.html @@ -0,0 +1,80 @@ + + + + + + + + +FatFs - get_fattime + + + + +
    +

    get_fattime

    +

    The get_fattime function is called to get the current time.

    +
    +DWORD get_fattime (void);
    +
    +
    + + +
    +

    Return Value

    +

    Currnet local time shall be returned as bit-fields packed into a DWORD value. The bit fields are as follows:

    +
    +
    bit31:25
    +
    Year origin from the 1980 (0..127, e.g. 37 for 2017)
    +
    bit24:21
    +
    Month (1..12)
    +
    bit20:16
    +
    Day of the month (1..31)
    +
    bit15:11
    +
    Hour (0..23)
    +
    bit10:5
    +
    Minute (0..59)
    +
    bit4:0
    +
    Second / 2 (0..29, e.g. 25 for 50)
    +
    +
    + + +
    +

    Description

    +

    The get_fattime function shall return any valid time even if the system does not support a real time clock. If a zero is returned, the file will not have a valid timestamp.

    +
    + + +
    +

    QuickInfo

    +

    This function is not needed when FF_FS_READONLY == 1 or FF_FS_NORTC == 1.

    +
    + + +
    +

    Example

    +
    +DWORD get_fattime (void)
    +{
    +    time_t t;
    +    struct tm *stm;
    +
    +
    +    t = time(0);
    +    stm = localtime(&t);
    +
    +    return (DWORD)(stm->tm_year - 80) << 25 |
    +           (DWORD)(stm->tm_mon + 1) << 21 |
    +           (DWORD)stm->tm_mday << 16 |
    +           (DWORD)stm->tm_hour << 11 |
    +           (DWORD)stm->tm_min << 5 |
    +           (DWORD)stm->tm_sec >> 1;
    +}
    +
    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/fdisk.html b/source/Module/FatFS/documents/doc/fdisk.html new file mode 100644 index 0000000..d72a072 --- /dev/null +++ b/source/Module/FatFS/documents/doc/fdisk.html @@ -0,0 +1,95 @@ + + + + + + + + +FatFs - f_fdisk + + + + +
    +

    f_fdisk

    +

    The f_fdisk fucntion divides a physical drive.

    +
    +FRESULT f_fdisk (
    +  BYTE  pdrv,         /* [IN] Physical drive number */
    +  const LBA_t ptbl[], /* [IN] Partition map table */
    +  void* work          /* [IN] Work area */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    pdrv
    +
    Specifies the physical drive to be divided. This is not the logical drive number but the drive identifier passed to the low level disk functions.
    +
    ptbl
    +
    List of partition size to create on the drive. The data type LBA_t is an alias of DWORD or QWORD depends on the configuration option FF_LBA64.
    +
    work
    +
    Pointer to the function work area. The size must be at least FF_MAX_SS bytes. When a null pointer is given with FF_USE_LFN = 3, a memory block is obtained in this function for the working buffer.
    +
    +
    + + + +
    +

    Description

    +

    The f_fdisk function creates partitions on the physical drive. The partitioning format can be in generic MBR or GPT. The partition map table specifies how to divide the physical drive. The first item specifies the size of the first partition and the partitions are located on the drive in order of from the first item. When the value of item is less than or equal to 100, it specifies the partition size in percentage of the entire drive space. When it is larger than 100, it specifies number of sectors. The partition map table is terminated by a zero, no space is remaining for next allocation or 4th partition is created in MBR format. If the specified size is larger than remaining space on the drive, the partition is truncated at end of the drive.

    +

    By default, partitions are created in MBR format. It can create upto four primary partitions on a drive. GPT format is used to create the partitions when 64-bit LBA is enabled (FF_LBA64 = 1) and the drive size is equal to or larger than FF_MIN_GPT sectors. It can create over ten partitions on a drive.

    +
    + +
    +

    QuickInfo

    +

    Available when FF_FS_READOLNY == 0, FF_USE_MKFS == 1 and FF_MULTI_PARTITION == 1.

    +
    + +
    +

    Example

    +
    +    /* Volume mapping table defined by user (required when FF_MULTI_PARTITION == 1) */
    +
    +    PARTITION VolToPart[FF_VOLUMES] = {
    +        {0, 1},    /* "0:" ==> 1st partition in PD#0 */
    +        {0, 2},    /* "1:" ==> 2nd partition in PD#0 */
    +        {1, 0}     /* "2:" ==> PD#1 as removable drive */
    +    };
    +
    +
    +    /* Initialize a brand-new disk drive mapped to physical drive 0 */
    +
    +    BYTE work[FF_MAX_SS];         /* Working buffer */
    +    LBA_t plist[] = {50, 50, 0};  /* Divide the drive into two partitions */
    +                 /* {0x10000000, 100}; 256M sectors for 1st partition and left all for 2nd partition */
    +                 /* {20, 20, 20, 0}; 20% for 3 partitions each and remaing space is left not allocated */
    +
    +    f_fdisk(0, plist, work);                    /* Divide physical drive 0 */
    +
    +    f_mkfs("0:", 0, work, sizeof work); /* Create FAT volume on the logical drive 0 */
    +    f_mkfs("1:", 0, work, sizeof work); /* Create FAT volume on the logical drive 1 */
    +
    +
    +
    + +
    +

    See Also

    +

    Volume management, f_mkfs

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/filename.html b/source/Module/FatFS/documents/doc/filename.html new file mode 100644 index 0000000..8104eb0 --- /dev/null +++ b/source/Module/FatFS/documents/doc/filename.html @@ -0,0 +1,94 @@ + + + + + + + + +FatFs - Path Names + + + +

    Path Names on the FatFs API

    + +
    +

    Format of the Path Names

    +

    The format of path name on the FatFs module is similer to the filename specs of DOS/Windos as follows:

    +
    [drive#:][/]directory/file
    +

    The FatFs module supports long file name (LFN) and 8.3 format file name (SFN). The LFN can be used when FF_USE_LFN >= 1. The sub-directories are separated with a \ or / as the same way as DOS/Windows API. Duplicated separator and terminating separator, such as "//animal///cat/", are ignored. Only a difference is that the heading drive prefix to specify the logical drive, an FAT volume, is in a digit (0-9) + a colon, while it is in an alphabet (A-Z) + a colon in DOS/Windows. The logical drive number is the identifier to specify the volume to be accessed. When drive prefix is omitted, the logical drive number is assumed as default drive.

    +

    Control characters (\0 to \x1F) are recognized as end of the path name. In LFN configuration, leading or embedded white spaces in the file name are valid as part of the file name, but the treminating white space and dot of the file name are ignored and truncated. In non-LFN configuration, white space is recognized as end of the path name.

    +

    In default configuration (FF_FS_RPATH == 0), it does not have a concept of current directory like OS oriented filesystem. Every object on the volume is always specified in full path name followed from the root directory. Dot directory names (".", "..") are not allowed. Heading separator is ignored and it can be exist or omitted. The default drive is fixed to drive 0.

    +

    When relative path feature is enabled (FF_FS_RPATH >= 1), specified path is followed from the root directory if a heading separator is exist. If not, it is followed from the current directory of the default drive. Dot directory name is also allowed for the path name. The current directory is set by f_chdir function and the default drive is the current drive set by f_chdrive function.

    + + + + + + + + + + + + + + +
    Path nameFF_FS_RPATH == 0FF_FS_RPATH >= 1
    file.txtA file in the root directory of the drive 0A file in the current directory of the current drive
    /file.txtA file in the root directory of the drive 0A file in the root directory of the current drive
    The root directory of the drive 0The current directory of the current drive
    /The root directory of the drive 0The root directory of the current drive
    2:The root directory of the drive 2The current directory of the drive 2
    2:/The root directory of the drive 2The root directory of the drive 2
    2:file.txtA file in the root directory of the drive 2A file in the current directory of the drive 2
    ../file.txtInvalid nameA file in the parent directory
    .Invalid nameThis directory
    ..Invalid nameParent directory of the current directory (*)
    dir1/..Invalid nameThe current directory
    /..Invalid nameThe root directory (sticks the top level)
    +

    Also the drive prefix can be in pre-defined arbitrary string. When the option FF_STR_VOLUME_ID == 1, also arbitrary string volume ID can be used as drive prefix. e.g. "flash:file1.txt", "ram:temp.dat" or "sd:". If the srting does not match any volume ID, the function fails with FR_INVALID_DRIVE.

    +

    When FF_STR_VOLUME_ID == 2, Unix style drive prefix can be used. e.g. "/flash/file1.txt", "/ram/temp.dat" or "/sd". If a heading separator is exist, it is treated as start of drive prefix and in absolute path. Any form as "root directory in current drive" and "current directory in specified drive" cannot be used. Double dot name cannot traverse the drives such as "/flash/../ram/foo.dat".

    +

    Remark: In this revision, double dot name ".." cannot follow the parent directory on the exFAT volume. It will work as "." and stay there.

    +
    + +
    +

    Legal Characters and Case Sensitivity

    +

    In the generic FAT filesystems, the legal characters for object name (file/directory name) are, 0-9 A-Z ! # $ % & ' ( ) - @ ^ _ ` { } ~ in ASCII and extended characters \x80 to \xFF. In the FAT filesystems with LFN extention, also + , ; = [ ], white space and extended characters U+000080 to U+10FFFF are legal for the object name. White spaces and dots can be placed anywhere in the path name except end of the name. Trailing white spaces and dots are ignored.

    +

    FAT filesystem is case-insensitive to the object names on the volume. Object name on the FAT volume is compared in case-insensitive. For instance, these three names, file.txt, File.Txt and FILE.TXT, are identical on the FAT filesystem. This is applied to extended charactres as well. When an object is created on the FAT volume, up converted name is recorded to the SFN entry, and the raw name is recorded to the LFN entry when LFN extension is exist.

    +

    As for the MS-DOS and PC DOS for CJK (DOS/DBCS), extended characters ware recorded to the SFN entry without up-case conversion and compared in case-sensitive. This causes a problem on compatibility with Windows system when the object with extended characters is created on the volume by DOS/DBCS system; therfore the object names with DBCS extended characters should not be used on the FAT volume shared by those systems. FatFs works with case-sensitive to the extended characters in only non-LFN with DBCS configuration (DOS/DBCS specs). However, FatFs works with case-insensitive to the extended character (WindowsNT specs) in LFN configuration.

    +
    + +
    +

    Unicode API

    +

    The path names are input/output in either ANSI/OEM code or Unicode depends on the configuration options. The type of arguments which specifies the path names is defined as TCHAR. It is an alias of char by default and the code set used for the path name string is ANSI/OEM specifid by FF_CODE_PAGE. When FF_LFN_UNICODE is set to 1 or larger, the type of the TCHAR is switched to proper type to support the Unicode string. When Unicode API is specified by this option, the full-featured LFN specification is supported and the Unicode specific characters, such as ✝☪✡☸☭ and any character not in BMP, can also be used for the path name. It also affects data types and encoding of the string I/O functions. To define literal strings, _T(s) and _TEXT(s) macro are available to specify the string in proper type. The code shown below is an example to define the literal strings.

    +
    + f_open(fp, "filename.txt", FA_READ);      /* ANSI/OEM string (char) */
    + f_open(fp, L"filename.txt", FA_READ);     /* UTF-16 string (WCHAR) */
    + f_open(fp, u8"filename.txt", FA_READ);    /* UTF-8 string (char) */
    + f_open(fp, U"filename.txt", FA_READ);     /* UTF-32 string (DWORD) */
    + f_open(fp, _T("filename.txt"), FA_READ);  /* Changed by configuration (TCHAR) */
    +
    +
    + +
    +

    Volume Management

    +

    By default, each logical drive is associated with the physical drive in same drive number. An FAT volume on the physical drive is serched in the volume mount process. It reads boot sectors and checks it if it is an FAT VBR in order of LBA 0 as SFD format, 1st partition, 2nd partition, 3rd partition, ..., as MBR or GPT format.

    +

    When multiple partition feature is enabled, FF_MULTI_PARTITION = 1, each individual logical drive is associated with arbitrary partition or physical drive specified by volume management table, VolToPart[]. The table needs to be defined by user to resolve mappings of the logical drive numbers and the associated partitions or drives. Following code is an example of the volume management table.

    +
    +Example: "0:", "1:" and "2:" are associated with three partitions on the physical drive 0 (a non-removable drive)
    +         "3:" is associated with physical drive 1 (a removable drive)
    +
    +PARTITION VolToPart[FF_VOLUMES] = {
    +    {0, 1},     /* "0:" ==> 1st partition on the pd#0 */
    +    {0, 2},     /* "1:" ==> 2nd partition on the pd#0 */
    +    {0, 3},     /* "2:" ==> 3rd partition on the pd#0 */
    +    {1, 0}      /* "3:" ==> pd#1 as removable drive (auto-search) */
    +};
    +
    +
    +relationship between logical drive and physical drive
    +
    +

    There are some considerations when enable the multi-partition configuration.

    +
      +
    • The physical drive that hosts two or more mounted partitions should be non-removable, or all volumes on the drive must be unmounted when remove the medium.
    • +
    • When make any change to the VolToPart[], corresponding volume should be unmounted prior to make change the item.
    • +
    • On the MBR format drive, up to four primary partitions (1-4) can be specified. The partition number 1 specifies the first item in the partition table and the partition number 2 specifies the second one, and so on. The logical patitions (5-) in the extended partition is not supported.
    • +
    • On the GPT format drive, the partition number 1 specifies the first Microsoft BDP found in the partition table and the partition number 2 specifies the second one found, and so on.
    • +
    • Windows 10 earlier than 1703 does not support multiple volumes on the physical drive with removable class. Only the first parition found on the drive will be mounted. Windows OS does not support SFD format on the physical drive with non-removable class.
    • +
    • Some systems manage the on-board storage in non-standard partition format and each partition is mapped as physical drive in disk_* functions. For such system, FF_MULTI_PARTITION should be always 0.
    • +
    • For further information about the volume management, refer to the description in f_fdisk and f_mkfs.
    • +
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/findfirst.html b/source/Module/FatFS/documents/doc/findfirst.html new file mode 100644 index 0000000..c2df47d --- /dev/null +++ b/source/Module/FatFS/documents/doc/findfirst.html @@ -0,0 +1,118 @@ + + + + + + + + +FatFs - f_findfirst + + + + +
    +

    f_findfirst

    +

    The f_findfirst function searches a directroy for an item.

    +
    +FRESULT f_findfirst (
    +  DIR* dp,              /* [OUT] Poninter to the directory object */
    +  FILINFO* fno,         /* [OUT] Pointer to the file information structure */
    +  const TCHAR* path,    /* [IN] Pointer to the directory name to be opened */
    +  const TCHAR* pattern  /* [IN] Pointer to the matching pattern string */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    dp
    +
    Pointer to the blank directory object.
    +
    fno
    +
    Pointer to the file information structure to store the information about the found item.
    +
    path
    +
    Pointer to the null-terminated string that specifies the directory name to be opened.
    +
    pattern
    +
    Pointer to the nul-terminated string that specifies the name matching pattern to be searched for. It is referred by also subsequent f_findnext function, so that the string must be valid while the successive function calls.
    +
    +
    + + + + + +
    +

    Description

    +

    After the directory specified by path could be opened, it starts to search the directory for items with the matching pattern specified by pattern. If the first item is found, the information about the item is stored into the file information structure fno. If not found, fno->fname[] has a null string.

    +

    The matching pattern string can contain wildcards. For example:

    +
      +
    • ? - An any character.
    • +
    • ??? - An any string in length of three characters.
    • +
    • * - An any string in length of zero or longer.
    • +
    • ????* - An any string in length of four characters or longer.
    • +
    +

    Since the matching algorithm uses recursion, number of wildcards in the matching pattern is limited to four to limit the stack usage. Any pattern with too many wildcards does not match any name. In LFN configuration, only fname[] is tested when FF_USE_FIND == 1 and also altname[] is tested when FF_USE_FIND == 2. There are some differences listed below between FatFs and standard systems in matching condition.

    +
      +
    • "*.*" does not match any name without extension while it matches any name with or without extension in standard systems.
    • +
    • Any pattern terminated with a dot does not match any name while it matches the name without extensiton in standard systems.
    • +
    • DBCS extended characters are compared in case-sensitive when LFN is enabled with !FF_LFN_UNICODE.
    • +
    +
    + + +
    +

    QuickInfo

    +

    This is a wrapper function of f_opendir and f_readdir function. Available when FF_USE_FIND >= 1 and FF_FS_MINIMIZE <= 1.

    +
    + + +
    +

    Examples

    +
    +/* Search a directory for objects and display it */
    +
    +void find_image_file (void)
    +{
    +    FRESULT fr;     /* Return value */
    +    DIR dj;         /* Directory object */
    +    FILINFO fno;    /* File information */
    +
    +    fr = f_findfirst(&dj, &fno, "", "????????.JPG"); /* Start to search for photo files */
    +
    +    while (fr == FR_OK && fno.fname[0]) {         /* Repeat while an item is found */
    +        printf("%s\n", fno.fname);                /* Print the object name */
    +        fr = f_findnext(&dj, &fno);               /* Search for next item */
    +    }
    +
    +    f_closedir(&dj);
    +}
    +
    +
    + + +
    +

    See Also

    +

    f_findnext, f_closedir, DIR, FILINFO

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/findnext.html b/source/Module/FatFS/documents/doc/findnext.html new file mode 100644 index 0000000..c39d3e3 --- /dev/null +++ b/source/Module/FatFS/documents/doc/findnext.html @@ -0,0 +1,69 @@ + + + + + + + + +FatFs - f_findnext + + + + +
    +

    f_findnext

    +

    The f_findnext function searches for a next matched object

    +
    +FRESULT f_findnext (
    +  DIR* dp,              /* [IN] Poninter to the directory object */
    +  FILINFO* fno          /* [OUT] Pointer to the file information structure */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    dp
    +
    Pointer to the valid directory object created by f_findfirst function.
    +
    fno
    +
    Pointer to the file information structure to store the information about the found directory item.
    +
    +
    + + + + + +
    +

    Description

    +

    It continues the search from a previous call to the f_findfirst or f_findnext function. If found, the information about the object is stored into the file information structure. If no item to be read, a null string will be returned into fno->fname[].

    +
    + + +
    +

    QuickInfo

    +

    This is a wrapper function of f_readdir function. Available when FF_USE_FIND == 1 and FF_FS_MINIMIZE <= 1.

    +
    + + + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/forward.html b/source/Module/FatFS/documents/doc/forward.html new file mode 100644 index 0000000..05d95fc --- /dev/null +++ b/source/Module/FatFS/documents/doc/forward.html @@ -0,0 +1,139 @@ + + + + + + + + +FatFs - f_forward + + + + +
    +

    f_forward

    +

    The f_forward function reads the file data and forward it to the data streaming device.

    +
    +FRESULT f_forward (
    +  FIL* fp,                        /* [IN] File object */
    +  UINT (*func)(const BYTE*,UINT), /* [IN] Data streaming function */
    +  UINT btf,                       /* [IN] Number of bytes to forward */
    +  UINT* bf                        /* [OUT] Number of bytes forwarded */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object.
    +
    func
    +
    Pointer to the user-defined data streaming function. For details, refer to the sample code.
    +
    btf
    +
    Number of bytes to forward in range of UINT.
    +
    bf
    +
    Pointer to the UINT variable to return number of bytes forwarded.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_forward function reads the data from the file and forward it to the outgoing stream. This function is suitable for small memory system, because it does not require any data buffer in the application module. The file pointer of the file object advances in number of bytes forwarded. In case of *bf is less than btf without error, it means the requested size of data could not be transferred due to end of file or stream goes busy during data transfer.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_USE_FORWARD == 1.

    +
    + + +
    +

    Example

    +
    +/*------------------------------------------------------------------------*/
    +/* Sample code of data transfer function to be called back from f_forward */
    +/*------------------------------------------------------------------------*/
    +
    +UINT out_stream (   /* Returns number of bytes sent or stream status */
    +    const BYTE *p,  /* Pointer to the data block to be sent */
    +    UINT btf        /* >0: Transfer call (Number of bytes to be sent). 0: Sense call */
    +)
    +{
    +    UINT cnt = 0;
    +
    +
    +    if (btf == 0) {     /* Sense call */
    +        /* Return stream status (0: Busy, 1: Ready) */
    +        /* When once it returned ready to sense call, it must accept a byte at least */
    +        /* at subsequent transfer call, or f_forward will fail with FR_INT_ERR. */
    +        if (FIFO_READY) cnt = 1;
    +    }
    +    else {              /* Transfer call */
    +        do {    /* Repeat while there is any data to be sent and the stream is ready */
    +            FIFO_PORT = *p++;
    +            cnt++;
    +        } while (cnt < btf && FIFO_READY);
    +    }
    +
    +    return cnt;
    +}
    +
    +
    +/*------------------------------------------------------------------------*/
    +/* Sample code using f_forward function                                   */
    +/*------------------------------------------------------------------------*/
    +
    +FRESULT play_file (
    +    char *fn        /* Pointer to the audio file name to be played */
    +)
    +{
    +    FRESULT rc;
    +    FIL fil;
    +    UINT dmy;
    +
    +    /* Open the audio file in read only mode */
    +    rc = f_open(&fil, fn, FA_READ);
    +    if (rc) return rc;
    +
    +    /* Repeat until the file pointer reaches end of the file */
    +    while (rc == FR_OK && !f_eof(&fil)) {
    +
    +        /* some processes... */
    +
    +        /* Fill output stream periodicaly or on-demand */
    +        rc = f_forward(&fil, out_stream, 1000, &dmy);
    +    }
    +
    +    /* Close the file and return */
    +    f_close(&fil);
    +    return rc;
    +}
    +
    +
    + + +
    +

    See Also

    +

    f_open, fgets, f_write, f_close, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/getcwd.html b/source/Module/FatFS/documents/doc/getcwd.html new file mode 100644 index 0000000..ac9a6d6 --- /dev/null +++ b/source/Module/FatFS/documents/doc/getcwd.html @@ -0,0 +1,83 @@ + + + + + + + + +FatFs - f_getcwd + + + + +
    +

    f_getcwd

    +

    The f_getcwd function retrieves the current directory of the current drive.

    +
    +FRESULT f_getcwd (
    +  TCHAR* buff, /* [OUT] Buffer to return path name */
    +  UINT len     /* [IN] The length of the buffer */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    buff
    +
    Pointer to the buffer to receive the current directory string.
    +
    len
    +
    Size of the buffer in unit of TCHAR.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_getcwd function retrieves full path name of the current directory of the current drive. When FF_VOLUMES >= 2, a heading drive prefix is added to the path name. The style of drive prefix depends on FF_STR_VOLUME_ID.

    +

    Note: In this revision, this function cannot retrieve the current directory path on the exFAT volume. It always returns the root directory path.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_RPATH == 2.

    +
    + + +
    +

    Example

    +
    +    FRESULT fr;
    +    TCHAR str[SZ_STR];
    +
    +    fr = f_getcwd(str, SZ_STR);  /* Get current directory path */
    +
    +
    +
    + + +
    +

    See Also

    +

    f_chdrive, f_chdir

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/getfree.html b/source/Module/FatFS/documents/doc/getfree.html new file mode 100644 index 0000000..bf2386c --- /dev/null +++ b/source/Module/FatFS/documents/doc/getfree.html @@ -0,0 +1,94 @@ + + + + + + + + +FatFs - f_getfree + + + + +
    +

    f_getfree

    +

    The f_getfree function gets number of the free clusters on the volume.

    +
    +FRESULT f_getfree (
    +  const TCHAR* path,  /* [IN] Logical drive number */
    +  DWORD* nclst,       /* [OUT] Number of free clusters */
    +  FATFS** fatfs       /* [OUT] Corresponding filesystem object */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies the logical drive. A null-string means the default drive.
    +
    nclst
    +
    Pointer to the DWORD variable to store number of free clusters.
    +
    fatfs
    +
    Pointer to pointer that to store a pointer to the corresponding filesystem object.
    +
    +
    + + + + + +
    +

    Descriptions

    +

    The f_getfree function gets number of free clusters on the volume. The member csize in the filesystem object indicates number of sectors per cluster, so that the free space in unit of sector can be calcurated with this information. In case of FSINFO structure on the FAT32 volume is not in sync, this function can return an incorrect free cluster count. To avoid this problem, FatFs can be forced full FAT scan by FF_FS_NOFSINFO option.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

    +
    + + +
    +

    Example

    +
    +    FATFS *fs;
    +    DWORD fre_clust, fre_sect, tot_sect;
    +
    +
    +    /* Get volume information and free clusters of drive 1 */
    +    res = f_getfree("1:", &fre_clust, &fs);
    +    if (res) die(res);
    +
    +    /* Get total sectors and free sectors */
    +    tot_sect = (fs->n_fatent - 2) * fs->csize;
    +    fre_sect = fre_clust * fs->csize;
    +
    +    /* Print the free space (assuming 512 bytes/sector) */
    +    printf("%10lu KiB total drive space.\n%10lu KiB available.\n", tot_sect / 2, fre_sect / 2);
    +
    +
    + + +
    +

    See Also

    +

    FATFS

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/getlabel.html b/source/Module/FatFS/documents/doc/getlabel.html new file mode 100644 index 0000000..ea2a016 --- /dev/null +++ b/source/Module/FatFS/documents/doc/getlabel.html @@ -0,0 +1,90 @@ + + + + + + + + +FatFs - f_getlabel + + + + +
    +

    f_getlabel

    +

    The f_getlabel function returns volume label and volume serial number of a volume.

    +
    +FRESULT f_getlabel (
    +  const TCHAR* path,  /* [IN] Drive number */
    +  TCHAR* label,       /* [OUT] Volume label */
    +  DWORD* vsn          /* [OUT] Volume serial number */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies the logical drive. Null-string specifies the default drive.
    +
    label
    +
    Pointer to the buffer to store the volume label. If the volume has no label, a null-string will be returned. Set null pointer if this information is not needed. The buffer size should be shown below at least to avoid buffer overflow.
    + + + + + + +
    ConfigurationFF_FS_EXFAT == 0FF_FS_EXFAT == 1
    FF_USE_LFN == 012 items-
    FF_LFN_UNICODE == 012 items23 items
    FF_LFN_UNICODE == 1,312 items12 items
    FF_LFN_UNICODE == 234 items34 items
    +
    +
    vsn
    +
    Pointer to the DWORD variable to store the volume serial number. Set null pointer if this information is not needed.
    +
    +
    + + + + + +
    +

    QuickInfo

    +

    Available when FF_USE_LABEL == 1.

    +
    + + +
    +

    Example

    +
    +    char str[12];
    +
    +    /* Get volume label of the default drive */
    +    f_getlabel("", str, 0);
    +
    +    /* Get volume label of the drive 2 */
    +    f_getlabel("2:", str, 0);
    +
    +
    + + +
    +

    See Also

    +f_setlabel +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/gets.html b/source/Module/FatFS/documents/doc/gets.html new file mode 100644 index 0000000..6aee492 --- /dev/null +++ b/source/Module/FatFS/documents/doc/gets.html @@ -0,0 +1,65 @@ + + + + + + + + +FatFs - f_gets + + + + +
    +

    f_gets

    +

    The f_gets reads a string from the file.

    +
    +TCHAR* f_gets (
    +  TCHAR* buff, /* [OUT] Read buffer */
    +  int len,     /* [IN] Size of the read buffer */
    +  FIL* fp      /* [IN] File object */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    buff
    +
    Pointer to read buffer to store the read string.
    +
    len
    +
    Size of the read buffer in unit of item.
    +
    fp
    +
    Pointer to the open file object structure.
    +
    +
    + + +
    +

    Return Values

    +

    When the function succeeded, buff will be returuned.

    +
    + + +
    +

    Description

    +

    The read operation continues until a '\n' is stored, reached end of the file or the buffer is filled with len - 1 characters. The read string is terminated with a '\0'. When no character to read or any error occured during read operation, it returns a null pointer. The status of EOF and error can be examined with f_eof and f_error function.

    +

    When FatFs is configured to Unicode API (FF_LFN_UNICODE >= 1), data types on the srting fuctions, f_putc, f_puts, f_printf and f_gets, is also switched to Unicode. The character encoding on the file to be read via this function is assumed as FF_STRF_ENCODE. If the character encoding on the file differs from that on the API, it is converted in this function. In this case, input characters with wrong encoding will be lost.

    +
    + + +
    +

    QuickInfo

    +

    This is a wrapper function of f_read function. Available when FF_USE_STRFUNC >= 1. When it is set to 2, '\r's contained in the file are stripped out.

    +
    + + + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/lseek.html b/source/Module/FatFS/documents/doc/lseek.html new file mode 100644 index 0000000..6dd4a45 --- /dev/null +++ b/source/Module/FatFS/documents/doc/lseek.html @@ -0,0 +1,139 @@ + + + + + + + + +FatFs - f_lseek + + + + +
    +

    f_lseek

    +

    The f_lseek function moves the file read/write pointer of an open file object. It can also be used to expand the file size (cluster pre-allocation).

    + +
    +FRESULT f_lseek (
    +  FIL*    fp,  /* [IN] File object */
    +  FSIZE_t ofs  /* [IN] Offset of file read/write pointer to be set */
    +);
    +
    +
    +FRESULT f_rewind (
    +  FIL*    fp   /* [IN] File object */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object.
    +
    ofs
    +
    Byte offset from top of the file to set read/write pointer. The data type FSIZE_t is an alias of either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option FF_FS_EXFAT.
    +
    +
    + + + + + +
    +

    Description

    +

    File read/write ponter in the open file object points the data byte to be read/written at next read/write operation. It advances as the number of bytes read/written. The f_lseek function moves the file read/write pointer without any read/write operation to the file. The f_rewind function is impremented as a macro.

    +
    +#define f_rewind(fp) f_lseek((fp), 0)
    +
    +

    If an offset beyond the file size is specified in write mode, the file size is expanded to the specified offset. The file data in the expanded part is undefined, because no data is written to the file in this process. This is suitable to pre-allocate a data area to the file quickly for fast write operation. When a contiguous data area needs to be allocated to the file, use f_expand function instead. After the f_lseek function succeeded, the current read/write pointer should be checked in order to make sure the read/write pointer has been moved correctry. In case of the read/write pointer is not pointing expected offset, either of followings has been occured.

    +
      +
    • End of file. The specified ofs was clipped at end of the file in read-only mode.
    • +
    • Disk full. There is no free space on the volume to expand the file.
    • +
    +

    The fast seek feature enables fast backward/long seek operations without FAT access by using an on-memory CLMT (cluster link map table). It is applied to f_read and f_write function as well, however, the file size cannot be expanded by f_write, f_lseek function while the file is at fast seek mode.

    +

    The fast seek mode is available when FF_USE_FASTSEEK = 1. The CLMT must be created into the DWORD array prior to use the fast seek mode. To create the CLMT, set address of the DWORD array to the member cltbl in the open file object, set the size of array in unit of items to the cltbl[0] and then call f_lseek function with ofs = CREATE_LINKMAP. After the function succeeded, no FAT access is occured in subsequent f_read, f_write, f_lseek function to the file. The number of items used or required is returned into the cltbl[0]. The number of items needed is (number of the file fragments + 1) * 2. For example, 12 items in the array will be used for the file fragmented in 5 portions. If the function failed with FR_NOT_ENOUGH_CORE, the size of given array is insufficient for the file.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_MINIMIZE <= 2. To use fast seek function, FF_USE_FASTSEEK needs to be set 1 to enable this feature.

    +
    + + +
    +

    Example

    +
    +    /* Open file */
    +    fp = malloc(sizeof (FIL));
    +    res = f_open(fp, "file.dat", FA_READ|FA_WRITE);
    +    if (res) ...
    +
    +    /* Set read/write pointer to 5000 */
    +    res = f_lseek(fp, 5000);
    +
    +    /* Set read/write pointer to end of the file to append data */
    +    res = f_lseek(fp, f_size(fp));
    +
    +    /* Advance read/write pointer 3000 bytes */
    +    res = f_lseek(fp, f_tell(fp) + 3000);
    +
    +    /* Rewind read/write pointer 2000 bytes (take care on wraparound) */
    +    res = f_lseek(fp, f_tell(fp) - 2000);
    +
    +
    +/* Cluster pre-allocation (to prevent buffer overrun on streaming write) */
    +
    +    res = f_open(fp, recfile, FA_CREATE_NEW | FA_WRITE);   /* Create a file */
    +
    +    res = f_lseek(fp, PRE_SIZE);             /* Expand file size (cluster pre-allocation) */
    +    if (res || f_tell(fp) != PRE_SIZE) ...   /* Check if the file has been expanded successfly */
    +
    +    res = f_lseek(fp, OFS_DATA);             /* Record data stream with free from cluster allocation delay */
    +    ...                                      /* Write operation should be aligned to sector boundary to optimize the write throughput */
    +
    +    res = f_truncate(fp);                    /* Truncate unused area */
    +    res = f_lseek(fp, OFS_HEADER);           /* Set file header */
    +    ...
    +
    +    res = f_close(fp);
    +
    +
    +/* Using fast seek mode */
    +
    +    DWORD clmt[SZ_TBL];                    /* Cluster link map table buffer */
    +
    +    res = f_open(fp, fname, FA_READ | FA_WRITE);   /* Open a file */
    +
    +    res = f_lseek(fp, ofs1);               /* This is normal seek (cltbl is nulled on file open) */
    +
    +    fp->cltbl = clmt;                      /* Enable fast seek mode (cltbl != NULL) */
    +    clmt[0] = SZ_TBL;                      /* Set table size */
    +    res = f_lseek(fp, CREATE_LINKMAP);     /* Create CLMT */
    +    ...
    +
    +    res = f_lseek(fp, ofs2);               /* This is fast seek */
    +
    +
    + + +
    +

    See Also

    +

    f_open, f_truncate, f_expand, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/mkdir.html b/source/Module/FatFS/documents/doc/mkdir.html new file mode 100644 index 0000000..905266b --- /dev/null +++ b/source/Module/FatFS/documents/doc/mkdir.html @@ -0,0 +1,80 @@ + + + + + + + + +FatFs - f_mkdir + + + + +
    +

    f_mkdir

    +

    The f_mkdir function creates a new directory.

    +
    +FRESULT f_mkdir (
    +  const TCHAR* path /* [IN] Directory name */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies the directory name to create.
    +
    +
    + + + + + +
    +

    Description

    +

    This function creates a new directory. To remove a directory, use f_unlink function.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

    +
    + + +
    +

    Example

    +
    +    res = f_mkdir("sub1");
    +    if (res) die(res);
    +    res = f_mkdir("sub1/sub2");
    +    if (res) die(res);
    +    res = f_mkdir("sub1/sub2/sub3");
    +    if (res) die(res);
    +
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/mkfs.html b/source/Module/FatFS/documents/doc/mkfs.html new file mode 100644 index 0000000..5f21154 --- /dev/null +++ b/source/Module/FatFS/documents/doc/mkfs.html @@ -0,0 +1,127 @@ + + + + + + + + +FatFs - f_mkfs + + + + +
    +

    f_mkfs

    +

    The f_mkfs function creates an FAT/exFAT volume on the logical drive.

    +
    +FRESULT f_mkfs (
    +  const TCHAR* path,   /* [IN] Logical drive number */
    +  const MKFS_PARM* opt,/* [IN] Format options */
    +  void* work,          /* [-]  Working buffer */
    +  UINT len             /* [IN] Size of working buffer */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string specifies the logical drive to be formatted. If it does not have a drive number in it, it means to specify the default drive. The logical drive may or may not have been mounted for the format process.
    +
    opt
    +
    Specifies the format option structure MKFS_PARM holding format options. If a null pointer is given, it gives the function every option in default value. The structure has five members in order of described below:
    +
    +
    BYTE fmt
    +
    Specifies a combination of FAT type flags, FM_FAT, FM_FAT32, FM_EXFAT and bitwise-or of these three, FM_ANY. FM_EXFAT is ignored when exFAT is not enabled. These flags specify which type of FAT volume to be created. If two or more types are specified, one out of them will be selected depends on the volume size and au_size. The flag FM_SFD specifies to create the volume on the drive in SFD format. The default value is FM_ANY.
    +
    BYTE n_fat
    +
    Specifies number of FAT copies on the FAT/FAT32 volume. Valid value for this member is 1 or 2. The default value (0) and any invaid value gives 1. If the FAT type is exFAT, this member has no effect.
    +
    UINT n_align
    +
    Specifies alignment of the volume data area (file allocation pool, usually erase block boundary of flash memory media) in unit of sector. The valid value for this member is between 1 and 32768 inclusive in power of 2. If a zero (the default value) or any invalid value is given, the function obtains the block size from lower layer with disk_ioctl function.
    +
    DWORD au_size
    +
    Specifies size of the allocation unit (cluter) in unit of byte. The valid value is power of 2 between sector size and 128 * sector size inclusive for FAT/FAT32 volume, or up to 16 MB for exFAT volume. If a zero (default value) or any invalid value is given, the function uses default allocation unit size depends on the volume size.
    +
    UINT n_root
    +
    Specifies number of root directory entries on the FAT volume. Valid value for this member is up to 32768 and aligned to sector size / 32. The default value (0) and any invaid value gives 512. If the FAT type is FAT32 or exFAT, this member has no effect.
    +
    +
    work
    +
    Pointer to the working buffer used for the format process. If a null pointer is given with FF_USE_LFN == 3, the function uses a len bytes of heap memory in this function.
    +
    len
    +
    Size of the working buffer in unit of byte. It needs to be FF_MAX_SS at least. Plenty of working buffer reduces number of write transactions to the drive, thus the format process will finish quickly.
    +
    +
    + + + +
    +

    Description

    +

    The FAT sub-type, FAT12/FAT16/FAT32, of FAT volume except exFAT is determined by only number of clusters on the volume and nothing else, according to the FAT specification issued by Microsoft. Thus the FAT sub-type of created volume depends on the volume size and the cluster size. In case of the combination of FAT type and cluter size specified by argument is not valid for the volume size, the function will fail with FR_MKFS_ABORTED.

    +

    The allocation unit, also known as cluster, is a unit of disk space allocation for files. When the size of allocation unit is 32768 bytes, a file with 100 bytes in size occupies 32768 bytes of disk space. The space efficiency of disk usage gets worse as increasing size of allocation unit, but, on the other hand, the read/write performance increases. Therefore the size of allocation unit is a trade-off between space efficiency and performance. For the large volumes in GB order, 32768 bytes or larger, automatically selected by default, is recommended for most case unless extremely many small files are created in the volume.

    +

    When the logical drive to be formatted is associated with a physical drive (FF_MULTI_PARTITION == 0 or VolToPart[].pt == 0) and FM_SFD flag is not specified, a partition occupies entire drive space is created and then the FAT volume is created in the partition. When FM_SFD flag is specified, the FAT volume is created without any disk partitioning.

    +

    When the logical drive to be formatted is associated with a specific partition by multiple partition feature (FF_MULTI_PARTITION == 1 and VolToPart[].pt > 0), the FAT volume is created in the partition of the physical drive specified by volume mapping table and FM_SFD flag is ignored. The hosting physical drive needs to be partitioned with f_fdisk function or any partitioning tool prior to create the FAT volume with this function. If the partition is not exist, the function aborts with FR_MKFS_ABORTED.

    +

    There are three standard disk partitioning formats, MBR, GPT and SFD. The MBR format, also known as FDISK format, is usually used for harddisk, memory card and U disk. It can divide a physical drive into one or more partitions with a partition table. The GPT, GUID Partition Table, is a newly defined patitioning format for large storage devices. FatFs suppors the GPT only when 64-bit LBA is enabled. The SFD, Super-Floppy Disk, is non-partitioned disk format. The FAT volume is located at LBA 0 and occupies the entire physical drive without any disk partitioning. It is usually used for floppy disk, optical disk and most super-floppy media. Some combination of systems and media support only either partitioned format or non-partitioned format and the other is not supported.

    +

    Some systems manage the partitions in the on-board storage in non-standard format. The partitions are mapped as physical drives identified by pdrv in disk_* functions. For such systems, SFD format is suitable to create the FAT volume in the partition.

    +
    + +
    +

    QuickInfo

    +

    Available when FF_FS_READOLNY == 0 and FF_USE_MKFS == 1.

    +
    + +
    +

    Example

    +
    +/* Format default drive and create a file */
    +int main (void)
    +{
    +    FATFS fs;           /* Filesystem object */
    +    FIL fil;            /* File object */
    +    FRESULT res;        /* API result code */
    +    UINT bw;            /* Bytes written */
    +    BYTE work[FF_MAX_SS]; /* Work area (larger is better for processing time) */
    +
    +
    +    /* Format the default drive with default parameters */
    +    res = f_mkfs("", 0, work, sizeof work);
    +    if (res) ...
    +
    +    /* Give a work area to the default drive */
    +    f_mount(&fs, "", 0);
    +
    +    /* Create a file as new */
    +    res = f_open(&fil, "hello.txt", FA_CREATE_NEW | FA_WRITE);
    +    if (res) ...
    +
    +    /* Write a message */
    +    f_write(&fil, "Hello, World!\r\n", 15, &bw);
    +    if (bw != 15) ...
    +
    +    /* Close the file */
    +    f_close(&fil);
    +
    +    /* Unregister work area */
    +    f_mount(0, "", 0);
    +
    +    ...
    +
    +
    + + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/mount.html b/source/Module/FatFS/documents/doc/mount.html new file mode 100644 index 0000000..70caf65 --- /dev/null +++ b/source/Module/FatFS/documents/doc/mount.html @@ -0,0 +1,122 @@ + + + + + + + + +FatFs - f_mount + + + + +
    +

    f_mount

    +

    The f_mount fucntion gives work area to the FatFs module.

    +
    +FRESULT f_mount (
    +  FATFS*       fs,    /* [IN] Filesystem object */
    +  const TCHAR* path,  /* [IN] Logical drive number */
    +  BYTE         opt    /* [IN] Initialization option */
    +);
    +
    +
    +FRESULT f_unmount (
    +  const TCHAR* path   /* [IN] Logical drive number */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fs
    +
    Pointer to the filesystem object to be registered and cleared. Null pointer unregisters the registered filesystem object.
    +
    path
    +
    Pointer to the null-terminated string that specifies the logical drive. The string without drive number means the default drive.
    +
    opt
    +
    Mounting option. 0: Do not mount now (to be mounted on the first access to the volume), 1: Force mounted the volume to check if it is ready to work.
    +
    +
    + + + + +
    +

    Description

    +

    FatFs requires work area (filesystem object) for each logical drives (FAT volumes). Prior to perform any file/directory operations, a filesystem object needs to be registered with f_mount function for the logical drive. The file/directory API functions get ready to work after this procedure. Some volume management functions, f_mkfs, f_fdisk and f_setcp, do not want a filesystem object.

    +

    The f_mount function registers/unregisters a filesystem object to the FatFs module as follows:

    +
      +
    1. Determines the logical drive which specified by path.
    2. +
    3. Clears and unregisters the regsitered work area of the volume if exist.
    4. +
    5. Clears and registers the new work area to the volume if fs is not NULL.
    6. +
    7. Performs volume mount process to the volume if forced mounting is specified.
    8. +
    +

    If there is any open object of file or directory on the logical drive, the object will be invalidated by this function.

    +

    If forced mounting is not specified (opt = 0), this function always succeeds regardless of the physical drive status. It only clears (de-initializes) the given work area and registers its address to the internal table and no activity of the physical drive in this function. The volume mount process will be attempted on subsequent file/directroy function if the filesystem object is not initialized. (delayed mounting) The volume mount processes, initialize the corresponding physical drive, find the FAT volume in it and then initialize the work area, is performed in the subsequent file/directory functions when either of following conditions is true.

    +
      +
    • Filesystem object has not been initialized. It is de-initialized by f_mount function.
    • +
    • Physical drive is not initialized. It is de-initialized by system reset or media removal.
    • +
    +

    If the function with forced mounting (opt = 1) failed with FR_NOT_READY, it means that the filesystem object has been registered successfully but the volume is currently not ready to work. The volume mount process will be attempted on subsequent file/directroy function.

    +

    If implementation of the disk I/O layer lacks asynchronous media change detection, application program needs to perform f_mount function after each media change to force cleared the filesystem object.

    +

    To unregister the work area, specify a NULL to the fs, and then the work area can be discarded. f_unmount function is implemented as a macro.

    +
    +#define f_unmount(path) f_mount(0, path, 0)
    +
    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    Example

    +
    +int main (void)
    +{
    +    FATFS *fs;     /* Ponter to the filesystem object */
    +
    +
    +    fs = malloc(sizeof (FATFS));           /* Get work area for the volume */
    +    f_mount(fs, "", 0);                    /* Mount the default drive */
    +
    +    f_open(...                             /* Here any file API can be used */
    +
    +    ...
    +
    +    f_mount(fs, "", 0);                    /* Re-mount the default drive to reinitialize the filesystem */
    +
    +    ...
    +
    +    f_mount(0, "", 0);                     /* Unmount the default drive */
    +    free(fs);                              /* Here the work area can be discarded */
    +
    +    ...
    +}
    +
    +
    + + +
    +

    See Also

    +

    f_open, FATFS

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/open.html b/source/Module/FatFS/documents/doc/open.html new file mode 100644 index 0000000..38f64e3 --- /dev/null +++ b/source/Module/FatFS/documents/doc/open.html @@ -0,0 +1,185 @@ + + + + + + + + +FatFs - f_open + + + + +
    +

    f_open

    +

    The f_open function opens a file.

    +
    +FRESULT f_open (
    +  FIL* fp,           /* [OUT] Pointer to the file object structure */
    +  const TCHAR* path, /* [IN] File name */
    +  BYTE mode          /* [IN] Mode flags */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the blank file object structure.
    +
    path
    +
    Pointer to the null-terminated string that specifies the file name to open or create.
    +
    mode
    +
    Mode flags that specifies the type of access and open method for the file. It is specified by a combination of following flags.
    + + + + + + + + + +
    FlagsMeaning
    FA_READSpecifies read access to the file. Data can be read from the file.
    FA_WRITESpecifies write access to the file. Data can be written to the file. Combine with FA_READ for read-write access.
    FA_OPEN_EXISTINGOpens a file. The function fails if the file is not existing. (Default)
    FA_CREATE_NEWCreates a new file. The function fails with FR_EXIST if the file is existing.
    FA_CREATE_ALWAYSCreates a new file. If the file is existing, it will be truncated and overwritten.
    FA_OPEN_ALWAYSOpens the file if it is existing. If not, a new file will be created.
    FA_OPEN_APPENDSame as FA_OPEN_ALWAYS except the read/write pointer is set end of the file.
    +Mode flags in POSIX fopen() function corresponds to FatFs mode flags as follows:
    + + + + + + + + + + +
    POSIXFatFs
    "r"FA_READ
    "r+"FA_READ | FA_WRITE
    "w"FA_CREATE_ALWAYS | FA_WRITE
    "w+"FA_CREATE_ALWAYS | FA_WRITE | FA_READ
    "a"FA_OPEN_APPEND | FA_WRITE
    "a+"FA_OPEN_APPEND | FA_WRITE | FA_READ
    "wx"FA_CREATE_NEW | FA_WRITE
    "w+x"FA_CREATE_NEW | FA_WRITE | FA_READ
    +
    +
    +
    + + + + + +
    +

    Description

    +

    The f_open function opens a file and creates a file object. The file object is an identifier for subsequent operations to the file. Open file should be closed with f_close function after the session of the file access. If any change to the file has been made and not closed prior to power off, media removal or re-mount, or the file can be collapsed.

    +

    If duplicated file open is needed, read here carefully. However duplicated open of a file with any write mode flag is always prohibited.

    +
    + + +
    +

    QuickInfo

    +

    Always available. Only FA_READ and FA_OPEN_EXISTING are available for the mode flags when FF_FS_READONLY == 1.

    +
    + + +
    +

    Example

    +
    +/* Read a text file and display it */
    +
    +FATFS FatFs;   /* Work area (filesystem object) for logical drive */
    +
    +int main (void)
    +{
    +    FIL fil;        /* File object */
    +    char line[100]; /* Line buffer */
    +    FRESULT fr;     /* FatFs return code */
    +
    +
    +    /* Give a work area to the default drive */
    +    f_mount(&FatFs, "", 0);
    +
    +    /* Open a text file */
    +    fr = f_open(&fil, "message.txt", FA_READ);
    +    if (fr) return (int)fr;
    +
    +    /* Read every line and display it */
    +    while (f_gets(line, sizeof line, &fil)) {
    +        printf(line);
    +    }
    +
    +    /* Close the file */
    +    f_close(&fil);
    +
    +    return 0;
    +}
    +
    +
    +/* Copy a file "file.bin" on the drive 1 to drive 0 */
    +
    +int main (void)
    +{
    +    FATFS fs0, fs1;      /* Work area (filesystem object) for logical drives */
    +    FIL fsrc, fdst;      /* File objects */
    +    BYTE buffer[4096];   /* File copy buffer */
    +    FRESULT fr;          /* FatFs function common result code */
    +    UINT br, bw;         /* File read/write count */
    +
    +
    +    /* Give work areas to each logical drive */
    +    f_mount(&fs0, "0:", 0);
    +    f_mount(&fs1, "1:", 0);
    +
    +    /* Open source file on the drive 1 */
    +    fr = f_open(&fsrc, "1:file.bin", FA_READ);
    +    if (fr) return (int)fr;
    +
    +    /* Create destination file on the drive 0 */
    +    fr = f_open(&fdst, "0:file.bin", FA_WRITE | FA_CREATE_ALWAYS);
    +    if (fr) return (int)fr;
    +
    +    /* Copy source to destination */
    +    for (;;) {
    +        fr = f_read(&fsrc, buffer, sizeof buffer, &br); /* Read a chunk of data from the source file */
    +        if (br == 0) break; /* error or eof */
    +        fr = f_write(&fdst, buffer, br, &bw);           /* Write it to the destination file */
    +        if (bw < br) break; /* error or disk full */
    +    }
    +
    +    /* Close open files */
    +    f_close(&fsrc);
    +    f_close(&fdst);
    +
    +    /* Unregister work area prior to discard it */
    +    f_unmount("0:");
    +    f_unmount("1:");
    +
    +    return (int)fr;
    +}
    +
    +
    + + +
    +

    See Also

    +

    f_read, f_write, f_close, FIL, FATFS

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/opendir.html b/source/Module/FatFS/documents/doc/opendir.html new file mode 100644 index 0000000..6507249 --- /dev/null +++ b/source/Module/FatFS/documents/doc/opendir.html @@ -0,0 +1,75 @@ + + + + + + + + +FatFs - f_opendir + + + + +
    +

    f_opendir

    +

    The f_opendir function opens a directory.

    +
    +FRESULT f_opendir (
    +  DIR* dp,           /* [OUT] Pointer to the directory object structure */
    +  const TCHAR* path  /* [IN] Directory name */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    dp
    +
    Pointer to the blank directory object to create a new one.
    +
    path
    +
    Pointer to the null-terminated string that specifies the directory name to be opened.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_opendir function opens an exsisting directory and creates a directory object for subsequent f_readdir function.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_MINIMIZE <= 1.

    +
    + + +
    +

    See Also

    +

    f_readdir, f_closedir, DIR

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/printf.html b/source/Module/FatFS/documents/doc/printf.html new file mode 100644 index 0000000..eb64e8d --- /dev/null +++ b/source/Module/FatFS/documents/doc/printf.html @@ -0,0 +1,115 @@ + + + + + + + + +FatFs - f_printf + + + + +
    +

    f_printf

    +

    The f_printf function writes formatted string to the file.

    +
    +int f_printf (
    +  FIL* fp,          /* [IN] File object */
    +  const TCHAR* fmt, /* [IN] Format stirng */
    +  ...
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object structure.
    +
    fmt
    +
    Pointer to the null '\0' terminated format string. The terminator character will not be output.
    +
    ...
    +
    Optional arguments...
    + +
    +
    + + +
    +

    Return Values

    +

    When the string was written successfuly, it returns number of character encoding units written to the file. When the function failed due to disk full or an error, a negative value will be returned.

    +
    + + +
    +

    Description

    +

    The format control directive is a sub-set of standard library shown as follows:

    +
    +    %[flag][width][precision][size]type
    +
    +
    +
    flag
    Padding option. A - specifies left-aligned. A 0 specifies zero padded. The default setting is in right-aligned and space padded.
    +
    width
    Minimum width of the field, 1-99 or *. If the width of generated string is less than the minimum width, rest field is padded with spaces or zeros. An * specifies the value comes from an argument in int type. The default setting is zero.
    +
    precision
    Specifies number of fractional digits or maximum width of string, .0-.99 or .*. If the number is omitted, it is same as .0. Default setting is 6 for number and no limit for string.
    +
    size
    Specifies size of integer argument, l(long) and ll(long long). If sizeof (long) == sizeof (int) is true (this is typical of 32-bit systems), prefix l can be omitted for long integer argument. The default size is int for integer argument and floating point argument is always assumed double as the default argument promotion.
    +
    type
    Specifies type of the output format and the argument as shown below. The length of generated string is in assumtion of int is 32-bit. + + + + + + + + + + + +
    TypeFormatArgumentLength
    cCharacterint,
    long,
    long long
    1 character.
    dSigned decimal1 to 11 (20 for ll) characters.
    uUnsigned decimal1 to 10 (20 for ll) characters.
    oUnsigned octal1 to 11 (22 for ll) characters.
    x XUnsigned hexdecimal1 to 8 (16 for ll) characters.
    bUnsigned binary1 to 32 characters. Limited to lower 32 digits when ll is specified.
    sStringTCHAR*As input string. Null pointer generates a null string.
    fFloating point
    (decimal)
    double1 to 31 characters. If the number of characters exceeds 31, it writes "±OV". Not a number and infinite write "NaN" and "±INF".
    e EFloating point
    (e notation)
    4 to 31 characters. If the number of characters exceeds 31 or exponent exceeds +99, it writes "±OV".
    +
    +
    +

    When FatFs is configured for Unicode API (FF_LFN_UNICODE >= 1), character encoding on the string fuctions, f_putc, f_puts, f_printf and f_gets function, is also switched to Unicode. The Unicode characters in multiple encoding unit, such as surrogate pair and multi-byte sequence, should not be divided into two function calls, or the character will be lost. The character encoding on the file to be written via this function is selected by FF_STRF_ENCODE. The characters with wrong encoding or invalid for the output encoding will be lost.

    +

    If sprintf is used in the project and code conversion is not needed, f_write with sprintf will be efficient in code size and performance rather than f_printf.

    +
    + + +
    +

    QuickInfo

    +

    This is a wrapper function of f_write function. Available when FF_FS_READONLY == 0 and FF_USE_STRFUNC >= 1. When FF_USE_STRFUNC == 2, '\n's in the generated string are written as '\r'+'\n' each.

    +
    + + +
    +

    Example

    +
    +    f_printf(fp, "%d", 1234);             /* "1234" */
    +    f_printf(fp, "%6d,%3d%%", -200, 5);   /* "  -200,  5%" */
    +    f_printf(fp, "%-6u", 100);            /* "100   " */
    +    f_printf(fp, "%ld", 12345678);        /* "12345678" */
    +    f_printf(fp, "%llu", 0x100000000);    /* "4294967296"   (FF_PRINT_LLI) */
    +    f_printf(fp, "%lld", -1LL);           /* "-1"           (FF_PRINT_LLI) */
    +    f_printf(fp, "%04x", 0xA3);           /* "00a3" */
    +    f_printf(fp, "%08lX", 0x123ABC);      /* "00123ABC" */
    +    f_printf(fp, "%016b", 0x550F);        /* "0101010100001111" */
    +    f_printf(fp, "%*d", 6, 100);          /* "   100" */
    +    f_printf(fp, "%s", "abcdefg");        /* "abcdefg" */
    +    f_printf(fp, "%5s", "abc");           /* "  abc" */
    +    f_printf(fp, "%-5s", "abc");          /* "abc  " */
    +    f_printf(fp, "%.5s", "abcdefg");      /* "abcde" */
    +    f_printf(fp, "%-5.2s", "abcdefg");    /* "ab   " */
    +    f_printf(fp, "%c", 'a');              /* "a" */
    +    f_printf(fp, "%12f", 10.0);           /* "   10.000000" (FF_PRINT_FLOAT) */
    +    f_printf(fp, "%.4E", 123.45678);      /* "1.2346E+02"   (FF_PRINT_FLOAT) */
    +
    +
    + + +
    +

    See Also

    +

    f_open, f_putc, f_puts, f_gets, f_close, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/putc.html b/source/Module/FatFS/documents/doc/putc.html new file mode 100644 index 0000000..1b2b26f --- /dev/null +++ b/source/Module/FatFS/documents/doc/putc.html @@ -0,0 +1,60 @@ + + + + + + + + +FatFs - f_putc + + + + +
    +

    f_putc

    +

    The f_putc funciton puts a character to the file.

    +
    +int f_putc (
    +  TCHAR chr,  /* [IN] A character to write */
    +  FIL* fp     /* [IN] File object */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    chr
    +
    A character to write.
    +
    fp
    +
    Pointer to the open file object structuer.
    +
    +
    + + +
    +

    Return Values

    +

    When the character was written successfuly, it returns number of character encoding units written to the file. When the function failed due to disk full or any error, a negative value will be returned.

    +
    + + +
    +

    Description

    +

    When FatFs is configured for Unicode API (FF_LFN_UNICODE >= 1), character encoding on the string fuctions, f_putc, f_puts, f_printf and f_gets function, is also switched to Unicode. The character encoding on the file to be read/written via those functions is selected by FF_STRF_ENCODE. The Unicode characters in multiple encoding unit, such as surrogate pair and multi-byte sequence, cannot be written with this function.

    +
    + +
    +

    QuickInfo

    +

    This is a wrapper function of f_write function. Available when FF_FS_READONLY == 0 and FF_USE_STRFUNC >= 1. When FF_USE_STRFUNC == 2, a '\n' is output as '\r'+'\n'.

    +
    + + +
    +

    See Also

    +

    f_open, f_puts, f_printf, f_gets, f_close, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/puts.html b/source/Module/FatFS/documents/doc/puts.html new file mode 100644 index 0000000..9d79a4b --- /dev/null +++ b/source/Module/FatFS/documents/doc/puts.html @@ -0,0 +1,61 @@ + + + + + + + + +FatFs - f_puts + + + + +
    +

    f_puts

    +

    The f_puts function writes a string to the file.

    +
    +int f_puts (
    +  const TCHAR* str, /* [IN] String */
    +  FIL* fp           /* [IN] File object */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    str
    +
    Pointer to the null terminated string to be written. The terminator character will not be written.
    +
    fp
    +
    Pointer to the open file object structure.
    +
    +
    + + +
    +

    Return Value

    +

    When the string was written successfuly, it returns number of character encoding units written to the file. When the function failed due to disk full or any error, a negative value will be returned.

    +
    + + +
    +

    Description

    +

    When FatFs is configured for Unicode API (FF_LFN_UNICODE >= 1), character encoding on the string fuctions, f_putc, f_puts, f_printf and f_gets function, is also switched to Unicode. The input Unicode characters in multiple encoding unit, such as surrogate pair and multi-byte sequence, should not be divided into two function calls, or the character will be lost. The character encoding on the file to be written via this functions is selected by FF_STRF_ENCODE. The characters with wrong encoding or invalid for the output encoding will be lost.

    +
    + + +
    +

    QuickInfo

    +

    This is a wrapper function of f_write function. Available when FF_FS_READONLY == 0 and FF_USE_STRFUNC >= 1. When FF_USE_STRFUNC == 2, '\n's contained in the input string are output as '\r'+'\n' each.

    +
    + + +
    +

    See Also

    +

    f_open, f_putc, f_printf, f_gets, f_close, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/rc.html b/source/Module/FatFS/documents/doc/rc.html new file mode 100644 index 0000000..694f67e --- /dev/null +++ b/source/Module/FatFS/documents/doc/rc.html @@ -0,0 +1,135 @@ + + + + + + + + +FatFs - API Return Code + + + +

    Return Code of API Functions

    +

    Most of API functions return common result code in enum type FRESULT. When an API function succeeded, it returns zero (FR_OK), otherwise it returns non-zero value indicates type of error.

    + +
    + +
    FR_OK (0)
    +
    The function succeeded.
    + +
    FR_DISK_ERR
    +
    The lower layer, disk_read, disk_write or disk_ioctl function, reported that an unrecoverable hard error occured.
    Note that if once this error occured at any operation to an open file, the file object is aborted and any operations to the file except for close will be rejected.
    + +
    FR_INT_ERR
    +
    Assertion failed and an insanity is detected in the internal process. One of the following possibilities is suspected. +
      +
    • Work area (file system object, file object or etc...) has been broken by stack overflow or something. This is the reason in most case.
    • +
    • There is an error of the FAT structure on the volume.
    • +
    • There is a bug in the FatFs module itself.
    • +
    • Wrong lower layer implementation.
    • +
    +Note that if once this error occured in the operation to an open file, the file object is aborted and any operation to the file except for close will be rejected. +
    + +
    FR_NOT_READY
    +
    The lower layer, disk_initialize function, reported that the storage device could not be got ready to work. One of the following possibilities is suspected. +
      +
    • No medium in the drive.
    • +
    • Wrong lower layer implementation.
    • +
    • Wrong hardware configuration.
    • +
    • The storage device has broken.
    • +
    +
    + +
    FR_NO_FILE
    +
    Could not find the file in the directory.
    + +
    FR_NO_PATH
    +
    Could not find the path. A directory in the path name could not be found.
    + +
    FR_INVALID_NAME
    +
    The given string is invalid as a path name. One of the following possibilities is suspected. +
      +
    • There is a character not allowed for the file name.
    • +
    • The file name is out of 8.3 format. (at non-LFN cfg.)
    • +
    • FF_MAX_LFN is insufficient for the file name. (at LFN cfg.)
    • +
    • There is a character encoding error in the string.
    • +
    +
    + +
    FR_DENIED
    +
    The required access was denied due to one of the following reasons: +
      +
    • Write mode open against the read-only file. (f_open)
    • +
    • Deleting the read-only file or directory. (f_unlink)
    • +
    • Deleting the non-empty directory or current directory. (f_unlink)
    • +
    • Reading the file opened without FA_READ flag. (f_read)
    • +
    • Any modification to the file opened without FA_WRITE flag. (f_write, f_truncate, f_expand)
    • +
    • Could not create the object due to root directory full or disk full. (f_open, f_mkdir)
    • +
    • Could not find a contiguous area for the file. (f_expand)
    • +
    +
    + +
    FR_EXIST
    +
    Name collision. An object with the same name is already existing in the directory.
    + +
    FR_INVALID_OBJECT
    +
    The file/directory object is invalid or a null pointer is given. There are some reasons as follows: +
      +
    • It has been closed, or the structure has been collapsed.
    • +
    • It has been invalidated. Open objects on the volume are invalidated by voulme mount process.
    • +
    • Physical drive is not ready to work due to a media removal.
    • +
    +
    + +
    FR_WRITE_PROTECTED
    +
    A write mode operation against the write-protected media.
    + +
    FR_INVALID_DRIVE
    +
    Invalid drive number is specified in the path name or a null pointer is given as the path name. (Related option: FF_VOLUMES)
    + +
    FR_NOT_ENABLED
    +
    Work area for the logical drive has not been registered by f_mount function.
    + +
    FR_NO_FILESYSTEM
    +
    Valid FAT volume could not be found in the drive. One of the following possibilities is suspected. +
      +
    • The FAT volume on the drive is collapsed.
    • +
    • Wrong lower layer implementation.
    • +
    • Wrong VolToPart[] settings. (FF_MULTI_PARTITION = 1)
    • +
    + +
    FR_MKFS_ABORTED
    +
    The f_mkfs function aborted before start in format due to a reason as follows: +
      +
    • It is impossible to create the volume with the given conditions.
    • +
    • The size of the volume is too small. 128 sectors minimum with FM_SFD option.
    • +
    • The partition associated with the logical drive is not exist. (Related option: FF_MULTI_PARTITION)
    • +
    +
    + +
    FR_TIMEOUT
    +
    The function was canceled due to a timeout of thread-safe control. (Related option: FF_TIMEOUT)
    + +
    FR_LOCKED
    +
    The operation to the object was rejected by file sharing control. (Related option: FF_FS_LOCK)
    + +
    FR_NOT_ENOUGH_CORE
    +
    Not enough memory for the operation. There is one of the following reasons: +
      +
    • Could not allocate a memory for LFN working buffer. (Related option: FF_USE_LFN)
    • +
    • Size of the given buffer is insufficient for the size required.
    • +
    +
    + +
    FR_TOO_MANY_OPEN_FILES
    +
    Number of open objects has been reached maximum value and no more object can be opened. (Related option: FF_FS_LOCK)
    + +
    FR_INVALID_PARAMETER
    +
    The given parameter is invalid or there is an inconsistent for the volume.
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/read.html b/source/Module/FatFS/documents/doc/read.html new file mode 100644 index 0000000..9157146 --- /dev/null +++ b/source/Module/FatFS/documents/doc/read.html @@ -0,0 +1,80 @@ + + + + + + + + +FatFs - f_read + + + + +
    +

    f_read

    +

    The f_read function reads data from a file.

    +
    +FRESULT f_read (
    +  FIL* fp,     /* [IN] File object */
    +  void* buff,  /* [OUT] Buffer to store read data */
    +  UINT btr,    /* [IN] Number of bytes to read */
    +  UINT* br     /* [OUT] Number of bytes read */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object.
    +
    buff
    +
    Pointer to the buffer to store the read data.
    +
    btr
    +
    Number of bytes to read in range of UINT type. If the file needs to be read fast, it should be read in large chunk as possible.
    +
    br
    +
    Pointer to the UINT variable that receives number of bytes read. This value is always valid after the function call regardless of the function return code. If the return value is equal to btr, the function return code should be FR_OK.
    +
    +
    + + + + + +
    +

    Description

    +

    The function starts to read data from the file at the file offset pointed by read/write pointer. The read/write pointer advances as number of bytes read. After the function succeeded, *br should be checked to detect end of the file. In case of *br < btr, it means the read/write pointer hit end of the file during read operation.

    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    Example

    +

    Refer to the example in f_open.

    +
    + + +
    +

    See Also

    +

    f_open, fgets, f_write, f_close, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/readdir.html b/source/Module/FatFS/documents/doc/readdir.html new file mode 100644 index 0000000..2c4956a --- /dev/null +++ b/source/Module/FatFS/documents/doc/readdir.html @@ -0,0 +1,139 @@ + + + + + + + + +FatFs - f_readdir + + + + +
    +

    f_readdir

    +

    The f_readdir function reads an item of the directory.

    +
    +FRESULT f_readdir (
    +  DIR* dp,      /* [IN] Directory object */
    +  FILINFO* fno  /* [OUT] File information structure */
    +);
    +
    +
    +FRESULT f_rewinddir (
    +  DIR* dp       /* [IN] Directory object */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    dp
    +
    Pointer to the open directory object.
    +
    fno
    +
    Pointer to the file information structure to store the information about read item. A null pointer rewinds the read index of the directory.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_readdir function reads a directory item, informations about the object, from the open directory. Items in the directory can be read in sequence by f_readdir function calls. When all items in the directory have been read and no item to read, a null string is stored into the fno->fname[] without any error. When a null pointer is given to the fno, the read index of the directory object is rewinded. The f_rewinddir function is implemented as a macro.

    +
    +#define f_rewinddir(dp) f_readdir((dp), 0)
    +
    +

    When LFN is enabled, a member altname[] is defined in the file information structure to store the short file name of the object. If the long file name is not accessible due to a reason listed below, short file name is stored to the fname[] and the altname[] has a null string.

    +
      +
    • The item has no LFN. (Not the case in exFAT volume)
    • +
    • FF_MAX_LFN is insufficient to handle the LFN. (Not the case in FF_MAX_LFN == 255)
    • +
    • FF_LFN_BUF is insufficient to store the LFN.
    • +
    • The LFN contains some character not defined in current CP. (Not the case in FF_LFN_UNICODE != 0)
    • +
    +

    There is an issue on read directories in exFAT volume. The exFAT does not support short file name. This means no name can be returned on the condition above. If it is the case, "?" is returned as the file name to indicate that the object is not accessible. To avoid this problem, configure FatFs FF_LFN_UNICODE != 0 and FF_MAX_LFN == 255 to support the full feature of LFN specification.

    +

    Dot entries ("." and "..") in the sub-directory of FAT volume are filtered out and they will never appear in the read items because exFAT lacks dot entries in the sub-directory.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_MINIMIZE <= 1.

    +
    + + +
    +

    Sample Code

    +
    +FRESULT scan_files (
    +    char* path        /* Start node to be scanned (***also used as work area***) */
    +)
    +{
    +    FRESULT res;
    +    DIR dir;
    +    UINT i;
    +    static FILINFO fno;
    +
    +
    +    res = f_opendir(&dir, path);                       /* Open the directory */
    +    if (res == FR_OK) {
    +        for (;;) {
    +            res = f_readdir(&dir, &fno);                   /* Read a directory item */
    +            if (res != FR_OK || fno.fname[0] == 0) break;  /* Break on error or end of dir */
    +            if (fno.fattrib & AM_DIR) {                    /* It is a directory */
    +                i = strlen(path);
    +                sprintf(&path[i], "/%s", fno.fname);
    +                res = scan_files(path);                    /* Enter the directory */
    +                if (res != FR_OK) break;
    +                path[i] = 0;
    +            } else {                                       /* It is a file. */
    +                printf("%s/%s\n", path, fno.fname);
    +            }
    +        }
    +        f_closedir(&dir);
    +    }
    +
    +    return res;
    +}
    +
    +
    +int main (void)
    +{
    +    FATFS fs;
    +    FRESULT res;
    +    char buff[256];
    +
    +
    +    res = f_mount(&fs, "", 1);
    +    if (res == FR_OK) {
    +        strcpy(buff, "/");
    +        res = scan_files(buff);
    +    }
    +
    +    return res;
    +}
    +
    +
    + + + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/rename.html b/source/Module/FatFS/documents/doc/rename.html new file mode 100644 index 0000000..eb31ed2 --- /dev/null +++ b/source/Module/FatFS/documents/doc/rename.html @@ -0,0 +1,87 @@ + + + + + + + + +FatFs - f_rename + + + + +
    +

    f_rename

    +

    The f_rename function renames and/or moves a file or sub-directory.

    +
    +FRESULT f_rename (
    +  const TCHAR* old_name, /* [IN] Old object name */
    +  const TCHAR* new_name  /* [IN] New object name */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    old_name
    +
    Pointer to a null-terminated string that specifies the existing file or sub-directory to be renamed.
    +
    new_name
    +
    Pointer to a null-terminated string that specifies the new object name. A drive number may be specified in this string but it is ignored and assumed as the same drive of the old_name. Any object with this path name except old_name must not be exist, or the function fails with FR_EXIST.
    +
    +
    + + + + + +
    +

    Description

    +

    Renames a file or sub-directory and can also move it to other directory in the same volume. The object to be renamed must not be an open object, or the FAT volume can be collapsed. Such the wrong operation is rejected safely when file lock function is enabled.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

    +
    + + +
    +

    Example

    +
    +    /* Rename an object in the default drive */
    +    f_rename("oldname.txt", "newname.txt");
    +
    +    /* Rename an object in the drive 2 */
    +    f_rename("2:oldname.txt", "newname.txt");
    +
    +    /* Rename an object and move it to another directory in the drive */
    +    f_rename("log.txt", "old/log0001.txt");
    +
    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/sdir.html b/source/Module/FatFS/documents/doc/sdir.html new file mode 100644 index 0000000..19c66ec --- /dev/null +++ b/source/Module/FatFS/documents/doc/sdir.html @@ -0,0 +1,38 @@ + + + + + + + + +FatFs - DIR + + + + +
    +

    DIR

    +

    The DIR structure is used for the work area to read a directory by f_oepndir, f_readdir, f_findfirst and f_findnext function. Application program must not modify any member in this structure, or f_readdir function will not work properly.

    +
    +typedef struct {
    +    FFOBJID obj;        /* Object identifier */
    +    DWORD   dptr;       /* Current read/write offset */
    +    DWORD   clust;      /* Current cluster */
    +    LBA_t   sect;       /* Current sector */
    +    BYTE*   dir;        /* Pointer to the current SFN entry in the win[] */
    +    BYTE*   fn;         /* Pointer to the SFN buffer (in/out) {file[8],ext[3],status[1]} */
    +#if FF_USE_LFN
    +    DWORD   blk_ofs;    /* Offset of the entry block (0xFFFFFFFF:Invalid) */
    +    WCHAR*  lfn;        /* Pointer to the LFN working buffer (in/out) */
    +#endif
    +#if FF_USE_FIND
    +    const TCHAR*  pat;  /* Ponter to the matching pattern */
    +#endif
    +} DIR;
    +
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/setcp.html b/source/Module/FatFS/documents/doc/setcp.html new file mode 100644 index 0000000..480393f --- /dev/null +++ b/source/Module/FatFS/documents/doc/setcp.html @@ -0,0 +1,82 @@ + + + + + + + + +FatFs - f_setcp + + + + +
    +

    f_setcp

    +

    The f_setcp function sets the active code page.

    +
    +FRESULT f_setcp (
    +  WORD cp     /* [IN] Code page to be set */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    cp
    +
    OEM code page to be used for the path name. Valid values are as follows.
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ValueMeaning
    0Initial value (any extended character cannot be used)
    437U.S.
    720Arabic
    737Greek
    771KBL
    775Baltic
    850Latin 1
    852Latin 2
    855Cyrillic
    857Turkish
    860Portuguese
    861Icelandic
    862Hebrew
    863Canadian French
    864Arabic
    865Nordic
    866Russian
    869Greek 2
    932Japanese (DBCS)
    936Simplified Chinese (DBCS)
    949Korean (DBCS)
    950Traditional Chinese (DBCS)
    +
    +
    +
    + + +
    +

    Return Values

    +

    +FR_OK, +FR_INVALID_PARAMETER +

    +
    + + +
    +

    Description

    +

    The f_setcp function sets the active code page for the path name. Also code conversion of string functions will be affected by the setting of code page when FF_LFN_UNICODE >= 1 and FF_STRF_ENCODE == 0. Because the initial setting of the code page is 0 and API function with extended character will not work properly, a valid code page needs to be set on the system start-up and it should not be changed on the fly.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_CODE_PAGE == 0.

    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/setlabel.html b/source/Module/FatFS/documents/doc/setlabel.html new file mode 100644 index 0000000..61592e3 --- /dev/null +++ b/source/Module/FatFS/documents/doc/setlabel.html @@ -0,0 +1,92 @@ + + + + + + + + +FatFs - f_setlabel + + + + +
    +

    f_setlabel

    +

    The f_setlabel function sets/removes the label of a volume.

    +
    +FRESULT f_setlabel (
    +  const TCHAR* label  /* [IN] Volume label to be set */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    label
    +
    Pointer to the null-terminated string that specifies the volume label to be set.
    +
    +
    + + + + + +
    +

    Description

    +

    When the string has a drive prefix, the volume label will be set to the volume specified by the drive prefix. Unix style volume ID cannot be used to specify the volume. If drive number is not specified, the volume label will be set to the default drive. If length of the given volume label is zero, the volume label on the volume will be removed. The format of the volume label is as shown below:

    +
      +
    • Up to 11 bytes long as conversion of OEM code page at FAT volume.
    • +
    • Up to 11 characters long at exFAT volume.
    • +
    • Allowable characters for FAT volume are: characters allowed for SFN excludes dot. Low-case characters are up converted.
    • +
    • Allowable characters for exFAT volume are: characters allowed for LFN includes dot. Low-case characters are preserved.
    • +
    • Spaces can be embedded anywhere in the volume label. Trailing spaces are truncated off at FAT volume.
    • +
    +

    Remark: The standard system (Windows) has a problem at the volume label with a heading \xE5 on the FAT volume. To avoid this problem, this function rejects such volume label as invalid name.

    +
    + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_USE_LABEL == 1.

    +
    + + +
    +

    Example

    +
    +    /* Set volume label to the default drive */
    +    f_setlabel("DATA DISK");
    +
    +    /* Set volume label to the drive 2 */
    +    f_setlabel("2:DISK 3 OF 4");
    +
    +    /* Remove volume label of the drive 2 */
    +    f_setlabel("2:");
    +
    +
    + + +
    +

    See Also

    +f_getlabel +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/sfatfs.html b/source/Module/FatFS/documents/doc/sfatfs.html new file mode 100644 index 0000000..79079e1 --- /dev/null +++ b/source/Module/FatFS/documents/doc/sfatfs.html @@ -0,0 +1,62 @@ + + + + + + + + +FatFs - FATFS + + + + +
    +

    FATFS

    +

    The FATFS structure (filesystem object) holds dynamic work area of individual logical drives. It is given by application program and registerd/unregisterd to the FatFs module with f_mount function. Initialization of the structure is done by volume mount process whenever necessary. Application program must not modify any member in this structure, or the FAT volume will be collapsed.

    +
    +typedef struct {
    +    BYTE    fs_type;      /* FAT type (0, FS_FAT12, FS_FAT16, FS_FAT32 or FS_EXFAT) */
    +    BYTE    pdrv;         /* Hosting physical drive of this volume */
    +    BYTE    n_fats;       /* Number of FAT copies (1,2) */
    +    BYTE    wflag;        /* win[] flag (b0:win[] is dirty) */
    +    BYTE    fsi_flag;     /* FSINFO flags (b7:Disabled, b0:Dirty) */
    +    WORD    id;           /* Volume mount ID */
    +    WORD    n_rootdir;    /* Number of root directory entries (FAT12/16) */
    +    WORD    csize;        /* Sectors per cluster */
    +#if FF_MAX_SS != FF_MIN_SS
    +    WORD    ssize;        /* Sector size (512,1024,2048 or 4096) */
    +#endif
    +#if FF_FS_EXFAT
    +    BYTE*   dirbuf;       /* Directory entry block scratchpad buffer */
    +#endif
    +#if FF_FS_REENTRANT
    +    FF_SYNC_t sobj;       /* Identifier of sync object */
    +#endif
    +#if !FF_FS_READONLY
    +    DWORD   last_clust;   /* FSINFO: Last allocated cluster (0xFFFFFFFF if invalid) */
    +    DWORD   free_clust;   /* FSINFO: Number of free clusters (0xFFFFFFFF if invalid) */
    +#endif
    +#if FF_FS_RPATH
    +    DWORD   cdir;         /* Cluster number of current directory (0:root) */
    +#if FF_FS_EXFAT
    +    DWORD   cdc_scl;      /* Containing directory start cluster (invalid when cdir is 0) */
    +    DWORD   cdc_size;     /* b31-b8:Size of containing directory, b7-b0: Chain status */
    +    DWORD   cdc_ofs;      /* Offset in the containing directory (invalid when cdir is 0) */
    +#endif
    +#endif
    +    DWORD   n_fatent;     /* Number of FAT entries (Number of clusters + 2) */
    +    DWORD   fsize;        /* Sectors per FAT */
    +    LBA_t   volbase;      /* Volume base LBA */
    +    LBA_t   fatbase;      /* FAT base LBA */
    +    LBA_t   dirbase;      /* Root directory base (LBA|Cluster) */
    +    LBA_t   database;     /* Data base LBA */
    +    LBA_t   winsect;      /* Sector LBA appearing in the win[] */
    +    BYTE    win[FF_MAX_SS]; /* Disk access window for directory, FAT (and file data at tiny cfg) */
    +} FATFS;
    +
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/sfile.html b/source/Module/FatFS/documents/doc/sfile.html new file mode 100644 index 0000000..4d44314 --- /dev/null +++ b/source/Module/FatFS/documents/doc/sfile.html @@ -0,0 +1,43 @@ + + + + + + + + +FatFs - FIL + + + + +
    +

    FIL

    +

    The FIL structure (file object) holds the state of an open file. It is created by f_open function and discarded by f_close function. Application program must not modify any member in this structure except for cltbl, or the FAT volume will be collapsed. Note that a sector buffer is defined in this structure at non-tiny configuration (FF_FS_TINY == 0), so that the FIL structures at that configuration should not be defined as auto variable.

    + +
    +typedef struct {
    +    FFOBJID obj;          /* Object identifier */
    +    BYTE    flag;         /* File object status flags */
    +    BYTE    err;          /* Abort flag (error code) */
    +    FSIZE_t fptr;         /* File read/write pointer (Byte offset origin from top of the file) */
    +    DWORD   clust;        /* Current cluster of fptr (One cluster behind if fptr is on the cluster boundary. Invalid if fptr == 0.) */
    +    LBA_t   sect;         /* Current data sector (Can be invalid if fptr is on the cluster boundary.)*/
    +#if !FF_FS_READONLY
    +    LBA_t   dir_sect;     /* Sector number containing the directory entry */
    +    BYTE*   dir_ptr;      /* Ponter to the directory entry in the window */
    +#endif
    +#if FF_USE_FASTSEEK
    +    DWORD*  cltbl;        /* Pointer to the cluster link map table (Nulled on file open. Set by application.) */
    +#endif
    +#if !FF_FS_TINY
    +    BYTE    buf[FF_MAX_SS]; /* File private data transfer buffer (Always valid if fptr is not on the sector boundary but can be invalid if fptr is on the sector boundary.) */
    +#endif
    +} FIL;
    +
    + +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/sfileinfo.html b/source/Module/FatFS/documents/doc/sfileinfo.html new file mode 100644 index 0000000..56fad39 --- /dev/null +++ b/source/Module/FatFS/documents/doc/sfileinfo.html @@ -0,0 +1,78 @@ + + + + + + + + +FatFs - FILINFO + + + + +
    +

    FILINFO

    +

    The FILINFO structure holds information about the object retrieved by f_readdir, f_findfirst, f_findnext and f_stat function. Be careful in the size of structure when LFN is enabled.

    +
    +typedef struct {
    +    FSIZE_t fsize;               /* File size */
    +    WORD    fdate;               /* Last modified date */
    +    WORD    ftime;               /* Last modified time */
    +    BYTE    fattrib;             /* Attribute */
    +#if FF_USE_LFN
    +    TCHAR   altname[FF_SFN_BUF + 1]; /* Alternative object name */
    +    TCHAR   fname[FF_LFN_BUF + 1];   /* Primary object name */
    +#else
    +    TCHAR   fname[12 + 1];       /* Object name */
    +#endif
    +} FILINFO;
    +
    +
    + +

    Members

    +
    +
    fsize
    +
    Size of the file in unit of byte. FSIZE_t is an alias of integer type either DWORD(32-bit) or QWORD(64-bit) depends on the configuration option FF_FS_EXFAT. Do not care if the item is a sub-directory.
    +
    fdate
    +
    The date when the file was modified or the directory was created.
    +
    +
    bit15:9
    +
    Year origin from 1980 (0..127)
    +
    bit8:5
    +
    Month (1..12)
    +
    bit4:0
    +
    Day (1..31)
    +
    +
    +
    ftime
    +
    The time when the file was modified or the directory was created.
    +
    +
    bit15:11
    +
    Hour (0..23)
    +
    bit10:5
    +
    Minute (0..59)
    +
    bit4:0
    +
    Second / 2 (0..29)
    +
    +
    +
    fattrib
    +
    The attribute flags in combination of:
    + + + + + + + +
    FlagMeaning
    AM_RDORead-only. Write mode open and deleting is rejected.
    AM_HIDHidden. Should not be shown in normal directory listing.
    AM_SYSSystem. Used by system and should not be accessed.
    AM_ARCArchive. Set on new creation or any modification to the file.
    AM_DIRDirectory. This is not a file but a sub-directory container.
    +
    +
    fname[]
    +
    Null-terminated object name. A null string is stored when no item to read and it indicates this structure is invalid. The size of fname[] and altname[] each can be configured in LFN configuration.
    +
    altname[]
    +
    Alternative object name is stored if available. This member is not available in non-LFN configuration.
    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/size.html b/source/Module/FatFS/documents/doc/size.html new file mode 100644 index 0000000..535df93 --- /dev/null +++ b/source/Module/FatFS/documents/doc/size.html @@ -0,0 +1,62 @@ + + + + + + + + +FatFs - f_size + + + + +
    +

    f_size

    +

    The f_size function gets the size of a file.

    +
    +FSIZE_t f_size (
    +  FIL* fp   /* [IN] File object */
    +);
    +
    +
    + + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object structure.
    +
    +
    + + +
    +

    Return Values

    +

    Returns the size of the file in unit of byte.

    +
    + + +
    +

    Description

    +

    In this revision, the f_size function is implemented as a macro. It does not have any validation and mutual exclusion.

    +
    +#define f_size(fp) ((fp)->obj.objsize)
    +
    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    See Also

    +

    f_open, f_lseek, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/stat.html b/source/Module/FatFS/documents/doc/stat.html new file mode 100644 index 0000000..2a27df6 --- /dev/null +++ b/source/Module/FatFS/documents/doc/stat.html @@ -0,0 +1,112 @@ + + + + + + + + +FatFs - f_stat + + + + +
    +

    f_stat

    +

    The f_stat function checks the existence of a file or sub-directory.

    +
    +FRESULT f_stat (
    +  const TCHAR* path,  /* [IN] Object name */
    +  FILINFO* fno        /* [OUT] FILINFO structure */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies the object to get its information. The object must not be the root direcotry.
    +
    fno
    +
    Pointer to the blank FILINFO structure to store the information of the object. Set null pointer if this information is not needed.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_stat function checks the existence of a file or sub-directory in the directory. If it is not exist, the function returns with FR_NO_FILE. If it is exist, the function returns with FR_OK and the informations about the object, size, timestamp and attribute, is stored to the file information structure. For details of the file information, refer to the FILINFO structure and f_readdir function.

    +

    Note that the file information comes from the meta data in the directory. If the file has been opend and modified, the file will need to be synched or closed in order to obtain the latest file information.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_MINIMIZE == 0.

    +
    + + +
    +

    Example

    +
    +    FRESULT fr;
    +    FILINFO fno;
    +    const char *fname = "file.txt";
    +
    +
    +    printf("Test for \"%s\"...\n", fname);
    +
    +    fr = f_stat(fname, &fno);
    +    switch (fr) {
    +
    +    case FR_OK:
    +        printf("Size: %lu\n", fno.fsize);
    +        printf("Timestamp: %u-%02u-%02u, %02u:%02u\n",
    +               (fno.fdate >> 9) + 1980, fno.fdate >> 5 & 15, fno.fdate & 31,
    +               fno.ftime >> 11, fno.ftime >> 5 & 63);
    +        printf("Attributes: %c%c%c%c%c\n",
    +               (fno.fattrib & AM_DIR) ? 'D' : '-',
    +               (fno.fattrib & AM_RDO) ? 'R' : '-',
    +               (fno.fattrib & AM_HID) ? 'H' : '-',
    +               (fno.fattrib & AM_SYS) ? 'S' : '-',
    +               (fno.fattrib & AM_ARC) ? 'A' : '-');
    +        break;
    +
    +    case FR_NO_FILE:
    +        printf("\"%s\" is not exist.\n", fname);
    +        break;
    +
    +    default:
    +        printf("An error occured. (%d)\n", fr);
    +    }
    +
    +
    + + +
    +

    References

    +

    f_opendir, f_readdir, FILINFO

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/sync.html b/source/Module/FatFS/documents/doc/sync.html new file mode 100644 index 0000000..e3f09d7 --- /dev/null +++ b/source/Module/FatFS/documents/doc/sync.html @@ -0,0 +1,88 @@ + + + + + + + + +FatFs - f_sync + + + + +
    +

    f_sync

    +

    The f_sync function flushes the cached information of a writing file.

    +
    +FRESULT f_sync (
    +  FIL* fp     /* [IN] File object */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    fp
    +
    Pointer to the open file object to be flushed.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_sync function performs the same process as f_close function but the file is left opened and can continue read/write/seek operations to the file. This is suitable for the applications that open files for a long time in write mode, such as data logger. Performing f_sync function in certain interval can minimize the risk of data loss due to a sudden blackout, wrong media removal or unrecoverable disk error. For more information, refer to application note.

    +
    +Case 1. Normal write sequence
    +
    +                                Time -->                                     ↓Normal shutdown
    +OwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwC <Power off>
    +
    +
    +Case 2. Without using f_sync()
    +
    +                                Time -->                             ↓System crush
    +Owwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    + |<--------------- All data written will be lost ------------------>|
    +
    +
    +Case 3. Using f_sync()
    +                                Time -->                             ↓System crush
    +OwwwwwwwwSwwwwwwwwSwwwwwwwwSwwwwwwwwSwwwwwwwwSwwwwwwwwSwwwwwwwwSwwwww
    +                            Data after last f_sync will be lost |<->| 
    +O - f_open()
    +C - f_close()
    +w - f_write()
    +S - f_sync()
    +
    +

    However there is no sense in f_sync function immediataly before f_close function because it performs f_sync function in it. In other words, the differnce between those functions is that the file object is invalidated or not.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0.

    +
    + + +
    +

    See Also

    +

    f_close, Critical section

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/tell.html b/source/Module/FatFS/documents/doc/tell.html new file mode 100644 index 0000000..56acb47 --- /dev/null +++ b/source/Module/FatFS/documents/doc/tell.html @@ -0,0 +1,62 @@ + + + + + + + + +FatFs - f_tell + + + + +
    +

    f_tell

    +

    The f_tell function gets the current read/write pointer of a file.

    +
    +FSIZE_t f_tell (
    +  FIL* fp   /* [IN] File object */
    +);
    +
    +
    + + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object structure.
    +
    +
    + + +
    +

    Return Values

    +

    Returns current read/write pointer of the file.

    +
    + + +
    +

    Description

    +

    In this revision, the f_tell function is implemented as a macro. It does not have any validation and mutual exclusion.

    +
    +#define f_tell(fp) ((fp)->fptr)
    +
    +
    + + +
    +

    QuickInfo

    +

    Always available.

    +
    + + +
    +

    See Also

    +

    f_open, f_lseek, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/truncate.html b/source/Module/FatFS/documents/doc/truncate.html new file mode 100644 index 0000000..498949a --- /dev/null +++ b/source/Module/FatFS/documents/doc/truncate.html @@ -0,0 +1,66 @@ + + + + + + + + +FatFs - f_truncate + + + + +
    +

    f_truncate

    +

    The f_truncate function truncates the file size.

    +
    +FRESULT f_truncate (
    +  FIL* fp     /* [IN] File object */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    fp
    +
    Pointer to the open file object to be truncated.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_truncate function truncates the file size to the current file read/write pointer. This function has no effect if the file read/write pointer is already pointing end of the file.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

    +
    + + +
    +

    See Also

    +

    f_open, f_lseek, FIL

    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/unlink.html b/source/Module/FatFS/documents/doc/unlink.html new file mode 100644 index 0000000..08e478e --- /dev/null +++ b/source/Module/FatFS/documents/doc/unlink.html @@ -0,0 +1,74 @@ + + + + + + + + +FatFs - f_unlink + + + + +
    +

    f_unlink

    +

    The f_unlink function removes a file or sub-directory from the volume.

    +
    +FRESULT f_unlink (
    +  const TCHAR* path  /* [IN] Object name */
    +);
    +
    +
    + +
    +

    Parameter

    +
    +
    path
    +
    Pointer to a null-terminated string that specifies the file or sub-directory to be removed.
    +
    +
    + + + + + +
    +

    Description

    +

    +If condition of the object to be removed is applicable to the following terms, the function will be rejected.

      +
    • The file/sub-directory must not have read-only attribute (AM_RDO), or the function will be rejected with FR_DENIED.
    • +
    • The sub-directory must be empty and must not be current directory, or the function will be rejected with FR_DENIED.
    • +
    • The file/sub-directory must not be opened, or the FAT volume can be collapsed. It will be rejected safely when file lock function is enabled.
    • +
    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

    +
    + + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/utime.html b/source/Module/FatFS/documents/doc/utime.html new file mode 100644 index 0000000..d33ed4d --- /dev/null +++ b/source/Module/FatFS/documents/doc/utime.html @@ -0,0 +1,99 @@ + + + + + + + + +FatFs - f_utime + + + + +
    +

    f_utime

    +

    The f_utime function changes the timestamp of a file or sub-directory.

    +
    +FRESULT f_utime (
    +  const TCHAR* path,  /* [IN] Object name */
    +  const FILINFO* fno  /* [IN] Time and data to be set */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    path
    +
    Pointer to the null-terminated string that specifies an object to be changed.
    +
    fno
    +
    Pointer to the file information structure that has a timestamp to be set in member fdate and ftime. Do not care any other members.
    +
    +
    + + + + + +
    +

    Description

    +

    The f_utime function changes the timestamp of a file or sub-directory

    +
    + + +
    +

    Example

    +
    +FRESULT set_timestamp (
    +    char *obj,     /* Pointer to the file name */
    +    int year,
    +    int month,
    +    int mday,
    +    int hour,
    +    int min,
    +    int sec
    +)
    +{
    +    FILINFO fno;
    +
    +    fno.fdate = (WORD)(((year - 1980) * 512U) | month * 32U | mday);
    +    fno.ftime = (WORD)(hour * 2048U | min * 32U | sec / 2U);
    +
    +    return f_utime(obj, &fno);
    +}
    +
    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0 and FF_USE_CHMOD == 1.

    +
    + + +
    +

    See Also

    +

    f_stat, FILINFO

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/doc/write.html b/source/Module/FatFS/documents/doc/write.html new file mode 100644 index 0000000..4727e62 --- /dev/null +++ b/source/Module/FatFS/documents/doc/write.html @@ -0,0 +1,80 @@ + + + + + + + + +FatFs - f_write + + + + +
    +

    f_write

    +

    The f_write writes data to a file.

    +
    +FRESULT f_write (
    +  FIL* fp,          /* [IN] Pointer to the file object structure */
    +  const void* buff, /* [IN] Pointer to the data to be written */
    +  UINT btw,         /* [IN] Number of bytes to write */
    +  UINT* bw          /* [OUT] Pointer to the variable to return number of bytes written */
    +);
    +
    +
    + +
    +

    Parameters

    +
    +
    fp
    +
    Pointer to the open file object structure.
    +
    buff
    +
    Pointer to the data to be written.
    +
    btw
    +
    Specifies number of bytes to write in range of UINT type. If the data needs to be written fast, it should be written in large chunk as possible.
    +
    bw
    +
    Pointer to the UINT variable that receives the number of bytes written. This value is always valid after the function call regardless of the function return code. If the return value is equal to btw, the function return code should be FR_OK.
    +
    +
    + + + + + +
    +

    Description

    +

    The function starts to write data to the file at the file offset pointed by read/write pointer. The read/write pointer advances as number of bytes written. After the function succeeded, *bw should be checked to detect the disk full. In case of *bw < btw, it means the volume got full during the write operation. The function can take a time when the volume is full or close to full.

    +
    + + +
    +

    QuickInfo

    +

    Available when FF_FS_READONLY == 0.

    +
    + + +
    +

    Example

    +

    Refer to the example in f_open.

    +
    + + +
    +

    See Also

    +

    f_open, f_read, fputc, fputs, fprintf, f_close, FIL

    +
    + +

    Return

    + + diff --git a/source/Module/FatFS/documents/res/app1.c b/source/Module/FatFS/documents/res/app1.c new file mode 100644 index 0000000..c66a447 --- /dev/null +++ b/source/Module/FatFS/documents/res/app1.c @@ -0,0 +1,44 @@ +/*------------------------------------------------------------/ +/ Open or create a file in append mode +/ (This function was sperseded by FA_OPEN_APPEND flag at FatFs R0.12a) +/------------------------------------------------------------*/ + +FRESULT open_append ( + FIL* fp, /* [OUT] File object to create */ + const char* path /* [IN] File name to be opened */ +) +{ + FRESULT fr; + + /* Opens an existing file. If not exist, creates a new file. */ + fr = f_open(fp, path, FA_WRITE | FA_OPEN_ALWAYS); + if (fr == FR_OK) { + /* Seek to end of the file to append data */ + fr = f_lseek(fp, f_size(fp)); + if (fr != FR_OK) + f_close(fp); + } + return fr; +} + + +int main (void) +{ + FRESULT fr; + FATFS fs; + FIL fil; + + /* Open or create a log file and ready to append */ + f_mount(&fs, "", 0); + fr = open_append(&fil, "logfile.txt"); + if (fr != FR_OK) return 1; + + /* Append a line */ + f_printf(&fil, "%02u/%02u/%u, %2u:%02u\n", Mday, Mon, Year, Hour, Min); + + /* Close the file */ + f_close(&fil); + + return 0; +} + diff --git a/source/Module/FatFS/documents/res/app2.c b/source/Module/FatFS/documents/res/app2.c new file mode 100644 index 0000000..3d14709 --- /dev/null +++ b/source/Module/FatFS/documents/res/app2.c @@ -0,0 +1,81 @@ +/*------------------------------------------------------------/ +/ Delete a sub-directory even if it contains any file +/-------------------------------------------------------------/ +/ The delete_node() function is for R0.12+. +/ It works regardless of FF_FS_RPATH. +*/ + + +FRESULT delete_node ( + TCHAR* path, /* Path name buffer with the sub-directory to delete */ + UINT sz_buff, /* Size of path name buffer (items) */ + FILINFO* fno /* Name read buffer */ +) +{ + UINT i, j; + FRESULT fr; + DIR dir; + + + fr = f_opendir(&dir, path); /* Open the sub-directory to make it empty */ + if (fr != FR_OK) return fr; + + for (i = 0; path[i]; i++) ; /* Get current path length */ + path[i++] = _T('/'); + + for (;;) { + fr = f_readdir(&dir, fno); /* Get a directory item */ + if (fr != FR_OK || !fno->fname[0]) break; /* End of directory? */ + j = 0; + do { /* Make a path name */ + if (i + j >= sz_buff) { /* Buffer over flow? */ + fr = 100; break; /* Fails with 100 when buffer overflow */ + } + path[i + j] = fno->fname[j]; + } while (fno->fname[j++]); + if (fno->fattrib & AM_DIR) { /* Item is a sub-directory */ + fr = delete_node(path, sz_buff, fno); + } else { /* Item is a file */ + fr = f_unlink(path); + } + if (fr != FR_OK) break; + } + + path[--i] = 0; /* Restore the path name */ + f_closedir(&dir); + + if (fr == FR_OK) fr = f_unlink(path); /* Delete the empty sub-directory */ + return fr; +} + + + + +int main (void) /* How to use */ +{ + FRESULT fr; + FATFS fs; + TCHAR buff[256]; + FILINFO fno; + + + f_mount(&fs, _T("5:"), 0); + + /* Directory to be deleted */ + _tcscpy(buff, _T("5:dir")); + + /* Delete the directory */ + fr = delete_node(buff, sizeof buff / sizeof buff[0], &fno); + + /* Check the result */ + if (fr) { + _tprintf(_T("Failed to delete the directory. (%u)\n"), fr); + return fr; + } else { + _tprintf(_T("The directory and the contents have successfully been deleted.\n"), buff); + return 0; + } +} + + + diff --git a/source/Module/FatFS/documents/res/app3.c b/source/Module/FatFS/documents/res/app3.c new file mode 100644 index 0000000..7f9b508 --- /dev/null +++ b/source/Module/FatFS/documents/res/app3.c @@ -0,0 +1,109 @@ +/*----------------------------------------------------------------------/ +/ Allocate a contiguous area to the file +/-----------------------------------------------------------------------/ +/ This function checks if the file is contiguous with desired size. +/ If not, a block of contiguous sectors is allocated to the file. +/ If the file has been opened without FA_WRITE flag, it only checks if +/ the file is contiguous and returns the resulut. +/-----------------------------------------------------------------------/ +/ This function can work with FatFs R0.09 - R0.11a. +/ It is incompatible with R0.12+. Use f_expand function instead. +/----------------------------------------------------------------------*/ + +/* Declarations of FatFs internal functions accessible from applications. +/ This is intended to be used for disk checking/fixing or dirty hacks :-) */ +DWORD clust2sect (FATFS* fs, DWORD clst); +DWORD get_fat (FATFS* fs, DWORD clst); +FRESULT put_fat (FATFS* fs, DWORD clst, DWORD val); + + +DWORD allocate_contiguous_clusters ( /* Returns the first sector in LBA (0:error or not contiguous) */ + FIL* fp, /* Pointer to the open file object */ + DWORD len /* Number of bytes to allocate */ +) +{ + DWORD csz, tcl, ncl, ccl, cl; + + + if (f_lseek(fp, 0) || !len) /* Check if the given parameters are valid */ + return 0; + csz = 512UL * fp->fs->csize; /* Cluster size in unit of byte (assuming 512 bytes/sector) */ + tcl = (len + csz - 1) / csz; /* Total number of clusters required */ + len = tcl * csz; /* Round-up file size to the cluster boundary */ + + /* Check if the existing cluster chain is contiguous */ + if (len == fp->fsize) { + ncl = 0; ccl = fp->sclust; + do { + cl = get_fat(fp->fs, ccl); /* Get the cluster status */ + if (cl + 1 < 3) return 0; /* Hard error? */ + if (cl != ccl + 1 && cl < fp->fs->n_fatent) break; /* Not contiguous? */ + ccl = cl; + } while (++ncl < tcl); + if (ncl == tcl) /* Is the file contiguous? */ + return clust2sect(fp->fs, fp->sclust); /* File is contiguous. Return the start sector */ + } + + /* File is not contiguous */ +#if _FS_READONLY + return 0; /* Exit if in read-only cfg. */ +#else + if (!(fp->flag & FA_WRITE)) return 0; /* Exit if the file object is for read-only */ + + if (f_truncate(fp)) return 0; /* Remove the non-contiguous chain */ + + /* Find a free contiguous area */ + ccl = cl = 2; ncl = 0; + do { + if (cl >= fp->fs->n_fatent) return 0; /* No contiguous area is found. */ + if (get_fat(fp->fs, cl)) { /* Encounterd a cluster in use */ + do { /* Skip the block of used clusters */ + cl++; + if (cl >= fp->fs->n_fatent) return 0; /* No contiguous area is found. */ + } while (get_fat(fp->fs, cl)); + ccl = cl; ncl = 0; + } + cl++; ncl++; + } while (ncl < tcl); + + /* Create a contiguous cluster chain */ + fp->fs->last_clust = ccl - 1; + if (f_lseek(fp, len)) return 0; + + return clust2sect(fp->fs, fp->sclust); /* Return file start sector */ +#endif +} + + +int main (void) +{ + FRESULT fr; + DRESULT dr; + FATFS fs; + FIL fil; + DWORD org; + + + /* Open or create a file to write */ + f_mount(&fs, "", 0); + fr = f_open(&fil, "fastrec.log", FA_READ | FA_WRITE | FA_OPEN_ALWAYS); + if (fr) return 1; + + /* Check if the file is 256MB in size and occupies a contiguous area. + / If not, a contiguous area will be re-allocated to the file. */ + org = allocate_contiguous_clusters(&fil, 0x10000000); + if (!org) { + printf("Function failed due to any error or insufficient contiguous area.\n"); + f_close(&fil); + return 1; + } + + /* Now you can read/write the file without filesystem layer. */ + ... + dr = disk_write(fil.fs->drv, Buff, org, 1024); /* Write 512KiB from top of the file */ + ... + + f_close(&fil); + return 0; +} + diff --git a/source/Module/FatFS/documents/res/app4.c b/source/Module/FatFS/documents/res/app4.c new file mode 100644 index 0000000..656a061 --- /dev/null +++ b/source/Module/FatFS/documents/res/app4.c @@ -0,0 +1,315 @@ +/*----------------------------------------------------------------------/ +/ Low level disk I/O module function checker / +/-----------------------------------------------------------------------/ +/ WARNING: The data on the target drive will be lost! +*/ + +#include +#include +#include "ff.h" /* Declarations of sector size */ +#include "diskio.h" /* Declarations of disk functions */ + + + +static DWORD pn ( /* Pseudo random number generator */ + DWORD pns /* 0:Initialize, !0:Read */ +) +{ + static DWORD lfsr; + UINT n; + + + if (pns) { + lfsr = pns; + for (n = 0; n < 32; n++) pn(0); + } + if (lfsr & 1) { + lfsr >>= 1; + lfsr ^= 0x80200003; + } else { + lfsr >>= 1; + } + return lfsr; +} + + +int test_diskio ( + BYTE pdrv, /* Physical drive number to be checked (all data on the drive will be lost) */ + UINT ncyc, /* Number of test cycles */ + DWORD* buff, /* Pointer to the working buffer */ + UINT sz_buff /* Size of the working buffer in unit of byte */ +) +{ + UINT n, cc, ns; + DWORD sz_drv, lba, lba2, sz_eblk, pns = 1; + WORD sz_sect; + BYTE *pbuff = (BYTE*)buff; + DSTATUS ds; + DRESULT dr; + + + printf("test_diskio(%u, %u, 0x%08X, 0x%08X)\n", pdrv, ncyc, (UINT)buff, sz_buff); + + if (sz_buff < FF_MAX_SS + 8) { + printf("Insufficient work area to run the program.\n"); + return 1; + } + + for (cc = 1; cc <= ncyc; cc++) { + printf("**** Test cycle %u of %u start ****\n", cc, ncyc); + + printf(" disk_initalize(%u)", pdrv); + ds = disk_initialize(pdrv); + if (ds & STA_NOINIT) { + printf(" - failed.\n"); + return 2; + } else { + printf(" - ok.\n"); + } + + printf("**** Get drive size ****\n"); + printf(" disk_ioctl(%u, GET_SECTOR_COUNT, 0x%08X)", pdrv, (UINT)&sz_drv); + sz_drv = 0; + dr = disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_drv); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 3; + } + if (sz_drv < 128) { + printf("Failed: Insufficient drive size to test.\n"); + return 4; + } + printf(" Number of sectors on the drive %u is %lu.\n", pdrv, sz_drv); + +#if FF_MAX_SS != FF_MIN_SS + printf("**** Get sector size ****\n"); + printf(" disk_ioctl(%u, GET_SECTOR_SIZE, 0x%X)", pdrv, (UINT)&sz_sect); + sz_sect = 0; + dr = disk_ioctl(pdrv, GET_SECTOR_SIZE, &sz_sect); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 5; + } + printf(" Size of sector is %u bytes.\n", sz_sect); +#else + sz_sect = FF_MAX_SS; +#endif + + printf("**** Get block size ****\n"); + printf(" disk_ioctl(%u, GET_BLOCK_SIZE, 0x%X)", pdrv, (UINT)&sz_eblk); + sz_eblk = 0; + dr = disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_eblk); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + } + if (dr == RES_OK || sz_eblk >= 2) { + printf(" Size of the erase block is %lu sectors.\n", sz_eblk); + } else { + printf(" Size of the erase block is unknown.\n"); + } + + /* Single sector write test */ + printf("**** Single sector write test ****\n"); + lba = 0; + for (n = 0, pn(pns); n < sz_sect; n++) pbuff[n] = (BYTE)pn(0); + printf(" disk_write(%u, 0x%X, %lu, 1)", pdrv, (UINT)pbuff, lba); + dr = disk_write(pdrv, pbuff, lba, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 6; + } + printf(" disk_ioctl(%u, CTRL_SYNC, NULL)", pdrv); + dr = disk_ioctl(pdrv, CTRL_SYNC, 0); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 7; + } + memset(pbuff, 0, sz_sect); + printf(" disk_read(%u, 0x%X, %lu, 1)", pdrv, (UINT)pbuff, lba); + dr = disk_read(pdrv, pbuff, lba, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 8; + } + for (n = 0, pn(pns); n < sz_sect && pbuff[n] == (BYTE)pn(0); n++) ; + if (n == sz_sect) { + printf(" Read data matched.\n"); + } else { + printf(" Read data differs from the data written.\n"); + return 10; + } + pns++; + + printf("**** Multiple sector write test ****\n"); + lba = 5; ns = sz_buff / sz_sect; + if (ns > 4) ns = 4; + if (ns > 1) { + for (n = 0, pn(pns); n < (UINT)(sz_sect * ns); n++) pbuff[n] = (BYTE)pn(0); + printf(" disk_write(%u, 0x%X, %lu, %u)", pdrv, (UINT)pbuff, lba, ns); + dr = disk_write(pdrv, pbuff, lba, ns); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 11; + } + printf(" disk_ioctl(%u, CTRL_SYNC, NULL)", pdrv); + dr = disk_ioctl(pdrv, CTRL_SYNC, 0); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 12; + } + memset(pbuff, 0, sz_sect * ns); + printf(" disk_read(%u, 0x%X, %lu, %u)", pdrv, (UINT)pbuff, lba, ns); + dr = disk_read(pdrv, pbuff, lba, ns); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 13; + } + for (n = 0, pn(pns); n < (UINT)(sz_sect * ns) && pbuff[n] == (BYTE)pn(0); n++) ; + if (n == (UINT)(sz_sect * ns)) { + printf(" Read data matched.\n"); + } else { + printf(" Read data differs from the data written.\n"); + return 14; + } + } else { + printf(" Test skipped.\n"); + } + pns++; + + printf("**** Single sector write test (unaligned buffer address) ****\n"); + lba = 5; + for (n = 0, pn(pns); n < sz_sect; n++) pbuff[n+3] = (BYTE)pn(0); + printf(" disk_write(%u, 0x%X, %lu, 1)", pdrv, (UINT)(pbuff+3), lba); + dr = disk_write(pdrv, pbuff+3, lba, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 15; + } + printf(" disk_ioctl(%u, CTRL_SYNC, NULL)", pdrv); + dr = disk_ioctl(pdrv, CTRL_SYNC, 0); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 16; + } + memset(pbuff+5, 0, sz_sect); + printf(" disk_read(%u, 0x%X, %lu, 1)", pdrv, (UINT)(pbuff+5), lba); + dr = disk_read(pdrv, pbuff+5, lba, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 17; + } + for (n = 0, pn(pns); n < sz_sect && pbuff[n+5] == (BYTE)pn(0); n++) ; + if (n == sz_sect) { + printf(" Read data matched.\n"); + } else { + printf(" Read data differs from the data written.\n"); + return 18; + } + pns++; + + printf("**** 4GB barrier test ****\n"); + if (sz_drv >= 128 + 0x80000000 / (sz_sect / 2)) { + lba = 6; lba2 = lba + 0x80000000 / (sz_sect / 2); + for (n = 0, pn(pns); n < (UINT)(sz_sect * 2); n++) pbuff[n] = (BYTE)pn(0); + printf(" disk_write(%u, 0x%X, %lu, 1)", pdrv, (UINT)pbuff, lba); + dr = disk_write(pdrv, pbuff, lba, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 19; + } + printf(" disk_write(%u, 0x%X, %lu, 1)", pdrv, (UINT)(pbuff+sz_sect), lba2); + dr = disk_write(pdrv, pbuff+sz_sect, lba2, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 20; + } + printf(" disk_ioctl(%u, CTRL_SYNC, NULL)", pdrv); + dr = disk_ioctl(pdrv, CTRL_SYNC, 0); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 21; + } + memset(pbuff, 0, sz_sect * 2); + printf(" disk_read(%u, 0x%X, %lu, 1)", pdrv, (UINT)pbuff, lba); + dr = disk_read(pdrv, pbuff, lba, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 22; + } + printf(" disk_read(%u, 0x%X, %lu, 1)", pdrv, (UINT)(pbuff+sz_sect), lba2); + dr = disk_read(pdrv, pbuff+sz_sect, lba2, 1); + if (dr == RES_OK) { + printf(" - ok.\n"); + } else { + printf(" - failed.\n"); + return 23; + } + for (n = 0, pn(pns); pbuff[n] == (BYTE)pn(0) && n < (UINT)(sz_sect * 2); n++) ; + if (n == (UINT)(sz_sect * 2)) { + printf(" Read data matched.\n"); + } else { + printf(" Read data differs from the data written.\n"); + return 24; + } + } else { + printf(" Test skipped.\n"); + } + pns++; + + printf("**** Test cycle %u of %u completed ****\n\n", cc, ncyc); + } + + return 0; +} + + + +int main (int argc, char* argv[]) +{ + int rc; + DWORD buff[FF_MAX_SS]; /* Working buffer (4 sector in size) */ + + /* Check function/compatibility of the physical drive #0 */ + rc = test_diskio(0, 3, buff, sizeof buff); + + if (rc) { + printf("Sorry the function/compatibility test failed. (rc=%d)\nFatFs will not work with this disk driver.\n", rc); + } else { + printf("Congratulations! The disk driver works well.\n"); + } + + return rc; +} + diff --git a/source/Module/FatFS/documents/res/app5.c b/source/Module/FatFS/documents/res/app5.c new file mode 100644 index 0000000..989515b --- /dev/null +++ b/source/Module/FatFS/documents/res/app5.c @@ -0,0 +1,38 @@ +/*----------------------------------------------------------------------/ +/ Test if the file is contiguous / +/----------------------------------------------------------------------*/ + +FRESULT test_contiguous_file ( + FIL* fp, /* [IN] Open file object to be checked */ + int* cont /* [OUT] 1:Contiguous, 0:Fragmented or zero-length */ +) +{ + DWORD clst, clsz, step; + FSIZE_t fsz; + FRESULT fr; + + + *cont = 0; + fr = f_rewind(fp); /* Validates and prepares the file */ + if (fr != FR_OK) return fr; + +#if FF_MAX_SS == FF_MIN_SS + clsz = (DWORD)fp->obj.fs->csize * FF_MAX_SS; /* Cluster size */ +#else + clsz = (DWORD)fp->obj.fs->csize * fp->obj.fs->ssize; +#endif + fsz = f_size(fp); + if (fsz > 0) { + clst = fp->obj.sclust - 1; /* A cluster leading the first cluster for first test */ + while (fsz) { + step = (fsz >= clsz) ? clsz : (DWORD)fsz; + fr = f_lseek(fp, f_tell(fp) + step); /* Advances file pointer a cluster */ + if (fr != FR_OK) return fr; + if (clst + 1 != fp->clust) break; /* Is not the cluster next to previous one? */ + clst = fp->clust; fsz -= step; /* Get current cluster for next test */ + } + if (fsz == 0) *cont = 1; /* All done without fail? */ + } + + return FR_OK; +} diff --git a/source/Module/FatFS/documents/res/app6.c b/source/Module/FatFS/documents/res/app6.c new file mode 100644 index 0000000..69c065e --- /dev/null +++ b/source/Module/FatFS/documents/res/app6.c @@ -0,0 +1,61 @@ +/*---------------------------------------------------------------------*/ +/* Raw Read/Write Throughput Checker */ +/*---------------------------------------------------------------------*/ + +#include +#include +#include "diskio.h" +#include "ff.h" + + +int test_raw_speed ( + BYTE pdrv, /* Physical drive number */ + DWORD lba, /* Start LBA for read/write test */ + DWORD len, /* Number of bytes to read/write (must be multiple of sz_buff) */ + void* buff, /* Read/write buffer */ + UINT sz_buff /* Size of read/write buffer (must be multiple of FF_MAX_SS) */ +) +{ + WORD ss; + DWORD ofs, tmr; + + +#if FF_MIN_SS != FF_MAX_SS + if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &ss) != RES_OK) { + printf("\ndisk_ioctl() failed.\n"); + return 0; + } +#else + ss = FF_MAX_SS; +#endif + + printf("Starting raw write test at sector %lu in %u bytes of data chunks...", lba, sz_buff); + tmr = systimer(); + for (ofs = 0; ofs < len / ss; ofs += sz_buff / ss) { + if (disk_write(pdrv, buff, lba + ofs, sz_buff / ss) != RES_OK) { + printf("\ndisk_write() failed.\n"); + return 0; + } + } + if (disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) { + printf("\ndisk_ioctl() failed.\n"); + return 0; + } + tmr = systimer() - tmr; + printf("\n%lu bytes written and it took %lu timer ticks.\n", len, tmr); + + printf("Starting raw read test at sector %lu in %u bytes of data chunks...", lba, sz_buff); + tmr = systimer(); + for (ofs = 0; ofs < len / ss; ofs += sz_buff / ss) { + if (disk_read(pdrv, buff, lba + ofs, sz_buff / ss) != RES_OK) { + printf("\ndisk_read() failed.\n"); + return 0; + } + } + tmr = systimer() - tmr; + printf("\n%lu bytes read and it took %lu timer ticks.\n", len, tmr); + + printf("Test completed.\n"); + return 1; +} + diff --git a/source/Module/FatFS/documents/res/f1.png b/source/Module/FatFS/documents/res/f1.png new file mode 100644 index 0000000000000000000000000000000000000000..5191700fd7819510137459f42378cee2d003de58 GIT binary patch literal 1414 zcmV;11$p|3P)FMzB@c;k+T%4eh00009 za7bBm000ie000ie0hKEb8vpDkdrF^Cuiw{757l&IrTq7K&yfPh(7AkN$Gx9%OPhB`ioN$cBIXBkdr z7A}ZGZC@YL4ZpxoM4e=*&vssa_um(4chJT|LpEdt{S-2k5od4LGt{SR)0%CX{@~fk zocd(H+n?T7yPWB6`R!6GH?|?`#lx4)^;_6cdqeS9h??3R>>x2<4QxFSywP!r&+w<9 zp^PM2O~CuF8;3BF_#-*qmDh1=Q~G*=zMja&qOOFd?*9Hz?fr>I)Iq2pBQV z;|V^0*Yc+x*82iJ#pi#+s`A>xrjhc6jYVAvool4Wy^Z+@x6E<_aIJ3m{^TiB6|(y1 zw?}UvKlc>ITW{nfwv z%GKK*t?!z;K5!o4gWkYY2yWWvv~iL*(&9pn0zu&UPZTY=t|8W+X|U)qII-!ouQ04)a5GWe5-y4;!8BQvaP(1 zVRKR!FFunm3pP4=3nv)WY=z8oEw-NioO{AD-GvgI-nSKkn;w&*2mRa=mS`@R;H+sY zM2&4VCgr$2&OJdtaL4{!&s&Dx)N`BeF!evHxlMPMn%7?DwpnU$)Q7qb6xUOMb6wIg zl&Bq)s9oBr&%2>2K}~*p33LyorslD(o1!nk;EC_d_}41Z+Q=Hh*KsdKMB>@HL1<(eRF)uvB>rMuqF!i^aWSHuF>v>dYKY61SXnefc1}zTGu0ohtE3 zF1Zr5gA%n%JN0=tRHAlJ#i{*P^ZD)r#U-M4JUwtuLMc%@sM^$#DN)CxL>-S3bv#Pc z@hDNpqeLB#5_LRE)bWUfnqT!F;h12hz0*QNJ^PgrG6(oWR-7Uz1vSWA1JiaG&8OB3zjG#SDt2FL z`PyM{`@l;_Ett+VLr*5%-qaWrfa};CpR*ECXGS;^W_VMKaEn_;>Wj0PnaU_;GmXpb z1D3TY4|R^buUv?$Urw%PvvN{j`Ye)mm10&xWw~-KNhZssS*0u^Capp^r2p#=)C!W9 zkk}-lNvN0l6$^@&G#E8O;M^~*cw<*F*Zwh5T~jH}IXuqmb@`R3<58lHM{!dB533dO UN1Nc)JOBUy07*qoM6N<$f=_76AOHXW literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/f2.png b/source/Module/FatFS/documents/res/f2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef0ec241e602e362cb0f21f7ccc66c9ceb057b5 GIT binary patch literal 1458 zcmV;j1x@;iP)0`%k{50G#j!0UFsW=ZN}Wy_3L z}AR_AKh^U(*qV^^Zz_={&CnjEtm+*a5@lc=J z>+E&P@Fdn{Y7Xs#=wwv$qxQ~GiuVHbujhB)Jb0@PCvAPMFH4EaQL~d?hI-UHYbRBc zRojb1ycz11(Smp}(1#GaQR-03Q%`PWY7$Q`9~V;^>$SP))4gLR_>#WboFbMz9oPwM z3i#Ic8ikan7Ht8O``sfLOZ?;Zkr2wA)BXy8cseI|_o1vTc9Dd7baQu09gPR_j6MnQ zjgGS_>%Y$nI4F+5LH#MDE2yOh$Lw$!4hKSvK@uu=Hg>w4{d;qJi{Da}Mg5Ah*^os6 z9_=U8?7vP*-B)&3STo9zxRQTMNKXC~|2 z)$c$LL)iQ5+2?XFs{F9{_SKTHNuK)bhCF$;eh+q+G5^mqu9;I+HoC_#JXzKZg!J#jpALEsPVibYNB?u8$Cvk{bfy| zzGzW%*O%Hj`>;Awn_`V%w`$Z49oHy!i8?&*d{euv=FQ&uvitZWtCIQl;d<}Tzy4lB z9LCJmOzM(3hvJNL|qOLb}sp%}7?_5Mp)I?3x^`I_s>Wbf{AZnr} zYN94;tfz%m)J0!M@<8oo#cIL^t9u0){t|V`)OO>d^3)EEs!MH`_(P($A(;J6Wvug% ze#y0>o_)*U^mnhyQx{Q+9Tau6N71VoqQ7X=%r|wk_o!*q(MmKh>VgBcpwe+26t(AU z*2o-Qr}^6D282Of-lO4=R-{Bt)I=R1we5;2ZeG!6q;6J-ny87IsEN9|)Xm(XLDWP| z)I?ni>SpegCTgNaQ#Nk|L+v}6UEHk{%9~BTsac5B-aGh3>OkID^i9o$FKV}^g^6-| zE>P_9{9cX#-b6M91J?PN8HUWat}}F)2)EGcBj;C>wtv%nyVPEZuEg6*!3oF z)bXx3C%fK6v9^$*-E>^z+QpI=>P!wtwTmVn)Y(?%d$Nl}ZQ0y&Onix`EmUplhKZ<~Bcg7Oh`KrYAL!2H*;mX%cmMzZ M07*qoM6N<$f)3X8RsaA1 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/f3.png b/source/Module/FatFS/documents/res/f3.png new file mode 100644 index 0000000000000000000000000000000000000000..9111bfc97609c492db457a23a6f93e62151c5241 GIT binary patch literal 1039 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 U;I4eK|N7ZF9>Lf){1|lMKO!t(MF0Q* literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/f5.png b/source/Module/FatFS/documents/res/f5.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0171a6724d999e1e85a7ed75ba4e2589111872 GIT binary patch literal 2224 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 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/f7.png b/source/Module/FatFS/documents/res/f7.png new file mode 100644 index 0000000000000000000000000000000000000000..7055ed1a574670e9e5069157cf8eb18f51e397f5 GIT binary patch literal 25760 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 L+Bd6iAj1C(*`FA8 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/funcs.png b/source/Module/FatFS/documents/res/funcs.png new file mode 100644 index 0000000000000000000000000000000000000000..f381ec5f064611f99b233605e0489b24605d727d GIT binary patch literal 26839 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 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/layers.png b/source/Module/FatFS/documents/res/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..f9880927e29a859fc3f83bc2d98495210d0ebf60 GIT binary patch literal 5521 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 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/mkfatimg.zip b/source/Module/FatFS/documents/res/mkfatimg.zip new file mode 100644 index 0000000000000000000000000000000000000000..63e6ad73248e13002fe288498ece81b9774c75a8 GIT binary patch literal 778875 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

    mWL8u2I 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%0D^j1Es`sm-TVm&qHQW!0?5FfrQjqd7^ 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%0DZ#LcmbpO^*PGO#Z*^0v?-FeRu8T!e3;i$=g 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 z zP_i&g4Aa;k9xhL~{_Q_hgG2jZA}+zy`=zK3D?|vLrT`Po z^Y>&_gnlV+CuFTPfuw6Vm$5AhX-N|fukVF9OUSzMbuWol7*(&v0M0WF6n8j%w?qUc zJ<$V&b!Ab2{l&jKb0$)rttj)u_MZkJ~x*rNh!!q7TQ$sX!*d0Q$xfla-`BYL_S9$jWr#)!As9DDn3(Y9y_@`%HG4Z78~QV4V_AT zzP%NG$1MH2Wx76=(T)O%sq_r+yaTnKbdaY`%b&#WF}QtpnEZ8#4If1K)a|QM@7HO>*@)o&&_}fLl;+xWF4KH}A zCG9lEJ_!?*MsvPSH4|gIAcz@zVcjn-&c@oFUF-J|XY>|t^ZMB$DDxmFz7e&2pd)F9 z_F}a(sZ{)|3pa#1uOz5saMqZ+m$9S_f?$x2E!Pa|d~9OJs1Er-ZdFZAssGt|FCJvh zbLZJFjZ@wJznGzb(h zw%`Zvd({~M%Cmx4n?oi3?M)YF=|+}y14Y}uZ+CE+a?(BmqiBN?eD7_8Fg{1%WU8v8 z&yj0O{!YQ7BMZMO5KCwYoWANu3EX1LvF6f7A@_f@VTkZ6HPMc|bV(#XV0;6yQ@UqA zpT%2H(7tZF*H8Wum+`}vsuT3H0-?pQ2kBMvfCgghCB?CyFKibq(di)qn3Q*x@@UhV zSQ7Ez85n##h$DXk$Jx|0SMfWBFxV#nlNH$4^n89gv2s2Tb?qNuuqWkzf4qN<| zZ9#>?xGWo|$H)rNMmlX|(|y>zdV$+QdWb9`zG~)A4Es4W%X#uoU{T>XBCojyI*q^4 z8K4##IKCsj!Z>>6#GjayU&7lDG1gv|l~WQbD`P43x5OdlVW2fzS#2blu^;FTf^ zl-l(%a{f>Xkt?TO+smuH*#p_{W!$$3sxqgqkp111C(L+PugCN(5^b?r{MDf z*Eq zN$#xbl|*;e9&TXrC|Uf-N1UPzf)|K_+>GCTeQii#h)eOA1TNZ9<7yk?+Y{NCR20W3 zS6VzV5DLgXgc5bWLKf-ArlPd!oKxXo{C@6& zl~})9DlRM40dzmk+JG^|Ee+p>NH&VQI`>Bxbcy|%hmil5 zGJqKjL*oV{AvP73itA z5sdcEu8;1lx>V@;$E0qE=C9#5v>`06n?W%pdGvjt^D6``-rlY}8j=Wwsi?)bup?^C zhR0%m*cQKD1lA$BNPfMi_BFpV`f2gp)j410&06e9$1IA(56uRbGO(v`E<>bljx5R1 zp0Aon`}`1P+N!`cF=nfwYK$FRZg-q`2(fzm`T7P2&(6ZfZ@sXm%!VVE)W@DZM4H|K za*!l(sSI&H8^qk%xoUEy&9R!C-CW1T&dDQo7yu%psSsxB39w zz1x_#F@>_i`hW`PY1k&r;G@H;o1Pi6K@&^Oisy^y{1Q*LbM}PGV*sB~uGfKxSG?94 z<<1EG?#P2t$`Lm0#D>u3%Bu%Koi`foJvnPcN{I|Gl{B zfd5`bwXp6%f*3a$xRQFIHpH*{2G=kvp6~cmaEE=Cs%m08dln+bfQ%}w#zRtS&C^jn z2cxjbA|VQK+Gv4!DU9El`R%k^)a2LoGjjKeZV0wj{7N#oCXl?%{K{oR8K0Dc^VhGt zUAEH*oZi(|ab{yu${{UgU1DT`>GkWE4P&XAM^Xb-XJDZ2zI^3k^sU4*b2Nur)tfCt zmHx!M{;dRJR3XkthdxAE>TbgwR?Lm(y8-L4w#;y?0Ga?sG*7+=5kebcH(_>VFHD2% z#usT!Wy%!{b>dS7>?#m%H$S2@*`^MVZ5lUQa_Tkdas}y^wgEf7Z5y_LC$6;_oDd>7 zGAiHS;-c5~;|ls!rf3gHB2%<5IYC?jds-0hXqPR`6qVcsP~^iTu|ipyp)NU6Gw9+? z#az=?f9yV>Z1Ox00)?!2GIuZ7Mik^$l_6YvHxWWFL_I`J^h>eG*Setma3K-lTC9LA zs8!`Pe(11Rz8SAcVn&G2gNQvYE%?`Ur!BN zjV&!ln17Zeu<-tpc(JIFt!M({YDqa_IxvIdo6@)&mnCuEAJtn4lvI|!8y9-n*&jK$ zY?MG=*aJorQ>&0+_Xw<5WD}o_gC&ettBNtnMCeNihbCq10g4`r zLO3hexzV|g+_RU|M>dKcRYxdcrqvPLm#cn&g%BA1Bk@o&@W9RYPt<1IjWVoD?0tU= zRQ?ykq6}K|VLT;?*7&2Y6`8}V8H zlyH2zLXNmnQpQuJ4Qkcqn@v9pw(ZkZwZ1~RVpbsd1>1HbnXODU7Gi!Asdcr><2NS6 z_4tnUFKHfo{%7a>mM|D2aSG?o4~AD zcphZQJK_qKFARB_2^g&|ME`Ps-;luI?kO94wNhE*!i-ksbV=$xYqHI~Z~Pq}_1Np6 z(+AhiHmi7sW~ZJ^Jx=m9^^H=?wo9L?mbxUUysc|#!b#N0TWm0YXmlSY3!tyJ9k%FP z8I?@P4SH2BMetpZ?2$WcP}om?8J1?7V7xH1PL0d0X0I9L_&1+et2u8vWvCQrd#&r1 z(zBy8-VOUzrbV9H51+3!Fg5rzd^D%72GVo0Y!hbts2Zp@_iE-3s)fcLd%NhXR;#;u z;d`#v0NJQ+t_pF44Ym`@&lIrLZcPf<&TknL!KiDka#7NQ68406^$dpRZMR@w>CX}# z1AKFipr*|<GV%UrA9 z%<o$=ch&xyRq3=zybzuIHUj%gM}XHfQS8u=r%)nL%HsPKr%nG6R4XAsOYhbNCe zj2Z`h;q#(!5j3G`7n;zb#A}@KE>Tiq;vy~S!l0liX^0x-`fNL4v0rc>X~?tGhQlcV ze0hH|_u#S)!58UVxUL%NF`&HSmbIPvYRk!=+NW8)_?ix z<)fPJV^Xt1>lqY!Tn$%+q3)(PE4X|$&}Zz}YXLF)692V~teH;~9j%WAUlIL&`4j3s zQ`d^NttRAAxX;X^PA!7FGu)4{;BG>Bz>Q@oE{T32q#l6ErB@vmYaTpRXZ zox3+c{-#C`MjhJaIzaxur9}Z3p7q6EZ+v)SD>i&uDxPe$k7ttFzVbMu%+zA63i0YF zzwBjhAt-(>-K}`;qkR>Bobk5VCyikSjDyQP`zi8wsfJ@}$H%j+Se}QRdR&I=+HQ{2 zL|%k*ACDEEL49aS_$4SBp40V4`WkZui8cLsM2(}8&)dRlXT&!K23Y&ubT;9^vs}yF zM9XrkFthvw5-V$LnnnJa0T(NG?V2lH^P0wMeU>`Cd80AsJcv8yP|-uYkvNilZ3b(UwH zxOY?thj%oY0<1~iePsx1N}9L+89Udx>w;f;V7e}El6bU>7b}aDO#J3%5hFWs=R zX4THH_`bwVH@HF+LRh4amV`kOMrm~vs4Expp*QDj-x`8V3^_LrjC%AjD?+a z>)az$UAH#K#g_$ep&kp5Pz_W~caYUJ$8mg(q9yQRZ`L0nH5->C2x8y*w_sieMIdE< z#&Ue?3M2?RGV0jhxUPF?Tbi&f)%p>yR{GC+n&e3I*Cnjx33`_!l(}kseA%C&xD0qN z%82_T^JIY83#Ih1pV@6^6Lbdc6}Y#fFw4t1)y4KMW-S}h`fVL&9TFVixTHWeik#zv z$MnA?;~7SNrsveWHr=FtvhY_Wi3z{ZCJ}L60@%=*xkt#@zKEToq-hZ;7w@n2^X~#N zw#qYvL`2}HlVDFfE%otW!|3{ziz_O(8#eD0rJwqF<#MzD6W3PZBQpSDX`9FTTKl-< zy7z*UtM0LT*JqyJ=r6UX3rr16{@bVTPK$=z)H{)~q)1Zp_n9k~31+JCktF5m)r_(O z{YxnaW9PHgA+<6p^-yeuVf3u?poXG_!IwB!7w>BV+7SY}0@~Bf(YkG{o+qt4wZ%_Q z1F+E&63r&7Nu#Z8vBiXzi-?{J&=7%nZ)No7Gx3z8H!aulFT9eT719Pf;IY-Sa#OpQ z$&sX&NlVp&HCAKKZ4;Di_A}I#R90Uc!)LB*>UiF%OAWku-3WqqFe3I@8eQc|t1u_A z)x{YN!^#(85lv)c`vU$anAhoI6)4kx6g;M!jy%Kcf?3r>-Z^H^{UBJn#xS}oMJ?5y0qdsTBu9hMDP(kymW<6JM@w`4&9uak4Z<16BRPA|u| zWL|+_;;@Rwbl&v&idd-@!5!~cz_ZT#oJQ#Jtc}gcB|s6!97wDhIgbCb2`FAw^k_ov z++O-0Pd!c}T!$(EK|ntsxCjV}M5zCQ)AlYuMlJd);7zpQ_Ld(Hcni}26O1(AN)}Ep zpo;(-W1cR50SW}MSk7Z))}jb@&lFq@Xd*g-#ypWO<{2|U9+d-%S0U){ zVz~%5>-p?sq^4)ze*oSrh$sN0t{K!TnhxN-fT}_S)SDx-t8nk%dv~C#SYGKe5!~W3 z_80WF5Ymh_S&=`*ixbF`%*}?f#`92z06^6+6bKwuO&0Z;1YlMD03BQ`e}?o9^VIZ3 zX+=zHJ+;oWDMutPetiZ4mx&l-kUK7UPtmNBxn~f`Kd3_JXz@{QKlz#lmBjjd5n@-R zLRzwFGJCUq*6)I{`&}2O{(FTBzBl?3A*Z}I`f{BDRVgam!NW;Ddtb1Eg+O<`hm*{S zJZ~qN><0sq%E!+LG?9NnBPZ6rzp)_|9lOANin(;~WM+@Iz4&5L%#ymZNrN$at-r2o z=?uar$)`VR(RXew3heTjbUD&^4K>H#+vv>l0w!Ic0&OLhti8f7rE!X%YHkr6pQ@CQSaq)+p|n~pr}aW08@ndE0m~MaMOR$9MTieLo0~+Y_@ZWaeU$#KZ^mb}%q5bY z*!{&MVz5uHRp{^r%*Ylxn6|}40K5bdlH`Q2I%U8z|Cj-D@f@(Xw_Z+r)f*y9-HwSK z<-O-Bj{)-4*2Oaj3%F2BXD#O+uPIuD+g{AB*7;GX*X{=_n!dy>#H8yvB;*VZdugpC ze!P{W^f$ZBX12psQoO+HVn7wX0r-<|Kq4uLo&sLSHLw>6IWMq_ac^e#z%KX26x;&z6;4xY z{tU0>hd&g`<|Tboa>_CdNh7gl4_qgN3a7*987zi_CN{nYFrM{9-R<3&=-5?&Kk*vi z#dYDkBwQmn)mvm_=O2bH+-;_zTRrYX3re19a+c%!;z(Z&O)>9thPN zz~C(BxeaXHV0B7=0ESb;L0Fs)Q~&F4Q_gm<@Dj_ob{gSc-b$zGC$xe9;VP^SJ!yS> zHsAoU!=kxN+IcbryB3`Sn6kr_Jc_mDp5D=&fvB1@-{li>Sap zt=DQkn$*cVoVfD8+`OA|fYF^6EFZoZoaJ zF{4bP{d$YdY&;*1URnx+Wu;>DK+aXcbK`iO_Ut4B70fP+*9smM9(fRx2vOjg8f)rw z#=hcN9S`a{boEzEr7GANeEX=_W?-tdBXd;mDY(qE+8<+OXfL%cV^;U-2?uUG+ z?;S~%xMwiq;*HTsVo;A*M?@Srrh9Mc3a(p*e3gJReEcv7CVVD-z8^eZl#UBX~OBRlo(r8Q~ zR`dgKX(@+x*$+$_QlJ61ru>l=l2jmb>Qnxxie5nU1P~oJhUx-9gPRThc)x+_qyf=y z`rP0J>ft(o`RWN8-b6s_324KOsdQh}aB2MU{%uhApVJ_T1B&ke?rREQ?pAO7j%-O2 z!UEz1@;#|WDDDTvWvfAik($z>P&XAaD}>ue*A+ z^XP(?O}E)4JsljIapgWjdac>#fe(sh9{((Z!tnB+o`XM4v743xcbAmWuj_9`&3M(y z&o@)meBNFY@+k_opKp%l{;$R_rjpr zj@}sbH4R0pB1WuV0MaE@jgZ9%Sf z@-k+C=~vH8AGtoZCIFRpOgypd4V1;fgM9Q-0@)6HJhOU0JU~a32eRrvU;#-2AUU1E zLnq2ZhvGL#U_WR}flckZ>7lP+G#v_!Gx!BQgL^<~ zon>bC43(E|2b5HRT7hcK_6*!!u>eMhzvQ^3HYaBzt>=5keW)jv)a87pOeu$^$da;e zasz#o6jr(Ual>4Uir%ctP3>@PXI9O3B9n_N6ie55YA;4(0P23b_H;a}R}+y7+3 z$a)2a-0vGx;{?E58#_ge=mp0rokQSUS~D2gJ<r9U!j&tK;sO@EfkNaDqpOLmQ!N zI{4I>?E~A(eO|C~@|+~kGC_3)PBZkT1*aU(rlx!bULSmPYIqJc%FEt>@GP_O`^*`D zqYQ;1e;Zuz3Q@r2!7`p_tr(x=kZUwE1WJ$l_^9zn51)6Cd8}h3QbAiD8!ETFnm~Se zuUPQ;^H65BKYa7S?+1Xa5$y{l~H`GAEDO^RveNG{NTg#*bFpEZvUJ?IdiOC z7Cf~+*w25@xVy1u;n&qB_OlrN2h3!YMlNNNJN{*E(v_Lt&hv54t240#TMA9Y1Dy7L zTuOx86fq_kEDrXL<(<`CeBB`!=>S+aN*OHHSJ2fj}f;4@K2CCTv-D*Ia9SVgxt&)?2fM> zz{=|rneq+i!l1D3^#K*M_W-%5a2tuZv4nxI?hZm~6qlaF>%fuAB%%g=wtvMGfxFQXtW-rN3f&Z)I>#LU+3>YB z(`~CoCL(0dzf=>VRC8C)Fw~U^3LfJwC+$iYQE?PahPwMdK0Z1At=~OU&xec)JKP-x z!A@PW@(LX_!v%NvHjo`%^FEaqx;+@2!RvR^ zwGzk^SEK3$LJZutVw|71f-{fDJMd~hSV|ThDItU0*yX=OhplMRKgo2WJHqQK+{eKK z>Jf*iuW@)eqQf4X+ZTv1U8TW-PfBkO_T0K348P)IJlJUS7S{b>ps*)V;LMqO(jQeU za@CUM;-5hF5C%nUz5}oBnagm|!aeHW1iDQTSOGhX?ZOpU?ZE#20kI@U{eOPEv;btn z?;p>4kGGlqKYmz9!;-*W>NmxeZ3g#K-mX_OvK%1|>LzJ$66F0R!6ASHE&#lrNkjDi zWd7d({|guWDCChcZ}Ng?~%t5Z{BvV=;7+XWSJA^`8xQdjhoJhAZgERv&?TR5dt_dNgjeng8}7!S*jNXCTXamA?yiEllmL z7HV$G0~wOE>=WArNo{brOVf*x=bBtKf-y&99=Lg~wAb92?ZmTnr`Un!MwuedH5*pA zK7V(kXt$Ht&5@@Tua3RTw9Z{`VXgcu5k58TpYAWw<3ET2E8$^<3ERnsz3L4F+j+(~ z$)m)-p>EWD+v@%S;j(doh0Cr9vNJ^!>K5j^di)!{ImPFPwtS|ZcYxHuUUiFJtrGtW z(_!Eak+nVg7S{A}lhHYR76ZSyyjJ!uUngQlNXw^e_sFr=`XVn?w?C`^5stuNqWw8mCi!i5E zu908q-|K6p!%QI;P3P=yLGLJZV{BsVwz|NH^?NB z#~i?^RqDhGVT|FO{qALQ72ph7a0m!vE#)}CaZe^e>;$N~!B2o(+np$Ce^2cq?9eo2 zKrIgEITUD|GbcD2VCpPcJO7GkqRD}$tM9pMJcvYb2R~&fWdk&?ptuCu2(Wm^z)*mV z1P@l$PVtB-+RxS4DPMtGRA>OtL)9$bp$hR<$ypQewudT=HsqQ5@iKg!oMHOg!~@ti z9@x4gfbDJwLQ3VX1R*obpcfhb;6FeqD#F2{7qEzr2+d|s;b zsxz1ZDSl68@b<2J$+6&ip9ut3OVujRMn0ec&Ki)Ycc~nMQi^l$7#WO^p&(Er`9R~@ zmJKA@M~OJChRTl;uwUNSAdFsVAe;aHmj4$qcvL{Ojzi~x3*fz! ztJ=^3kJM!gq2yRkz$cHb7QC*8Qu; z6RDbNF{hf?VKKXFez>uId`cW@KqO1G)laPXJbwzdvR)#mrY1jTxSL2XE#${h(!9=i zPTbXV)yi*@y!(zEUYp*LqQ+pRcZ_&1?5=@7dyIJ%!u>kDSr?)?K8xwYJ0oHoUr!>& zv0)ugJc8>K1@C?SAKLI3Z3y%J?2v!yG-aQz$3jwg) zoe@T}CrLsa-;8#6p4J6hR2{5N$*@{(k z{27D{;U9;2;{E}eR4qpra{%d%hL;5){;F}V)sB`3mMwjb{FrVNM`ykJhvb`S2zxR&o|ox9;3YY>7eP>L{H`nv-ue^A z|D0JnQ8!@kwf7>4_~`ByO#JFWf(g@d3p)J$TRPF23)bB`Ug(!2dXhon!~0?sEFZcE z1^V$=*g|T<7IOBibsRn3BOZo!u?grw^Z;E+>_-NE2O7$G_JQ+k;Tt+lgjw(iH9hZ- zV$XvMDrFU#(gQ-~Ov%k~dCdtldqNuQr75LgBQ(Lw=YrE}=FNXGWiW1a@5E*0=RHEQ zdjL#17R&@6ph1*v1yDZ5<%l*TaKeJqnKFd4ZSoeVkC5OYvjw9s3SAr{AN=hiOU@h~ zItE21p<<^q;OpnH1?|bu=Di?;Hyqlq6x7V~@4Yv?3G-uKUy$Iq9&xpaw)$2wo&6w) zH4`X-hV*NKC7RDAKIU>D1m4Dd+W{(y=|U(?ZYUhNTUA z-n{xUa?H8g%PvISzX4`rUzI+#4 zj!}FKJJB01FQf;Zqd=sZhMyuc-3VY|ofkUe4z?BjMmzQuY_}eB>;uJx`Tn#Q| z+j^!x<@isKEEwtwCz*$htH1vVY_RzrhI*s%+6J_m%>jnG>&jEx1c}MVwh0zBlbPPJ zb7e)KOwG5bL@0z9P7!;nc4K~|{y)0jJRa&VdKkyV#9%5hmMoEkGD3*4FBMrrmdaK{ z$(C*GTZmGGB!;nuY$5wH)=(Hr*6iEZ_jN44JN5lMujlzazuzBoU-y0Px#ymH-}Aor zo^#JR7pf29pG<^7S4_-*FJX)aM;JzX#z5SosMgvmOL5-c48%=Aw5TRXsm-HxoXkwv zo}%=WAZyvJZCn`C?gdc24v+4EoadAvN7;RN4w}n;6Ff>!0G#$AkU-1xz^(8tBzd4>!`e4ZO>L#R+n> zTqsNNAGX7VQLTI{0tALTc0e0Ma!^uL^WUTNFsK~+h@9>t_`RfPES)5u+XSEWPMiU1 z+_?%!CfmS@>=#gEJ207m)o5n7$IPN5AB}tF2445CK}NXbFmPQPKta)5J{C=o4zLu` z?Zq(C{TW8nule;X1I4ZThksak?u&xIN!gVi-L!vcV}6eHxLb)aIF?yI34)w%m3?+|JNn|-XzfdA}#6Y1_n)(AV2W(HF%zi(l&&L zNMH+-2kGDB0b;}e0n_QDMvOHbIK^z@KCmY%ped<;Dj0-#~{M zll|Ru7z}_H;K}^*%dlh#;?p@0vjr@GpEhgW(7&el{Yt zp0QbN{t>Vr&YsY!jh`|I`cqr`tsMale%4A;$Zymntw{Wk5V^E{L(+NrWUJw(^U|?C z3j5Wuh|~2(K%T;a$(Dko^K;^s!WAhm@2|iSf?k6ZJ%ez4bP1%TNAn2|3o=JH8xFl- zbig|7x}9qhe9QP`>z?G;9!nRPHH=vl)~SCxBR&^$cNtr^(I}PR(@M1Fg1Dd542~dM zwvS7|nO-9ktE32@-30mdm}@AmrxiiaX&&1N|00`$AgHoq2{>Hcz9#1IR2gMn5%XPZ zPw{5-L$LZ@t+|FW3m&S6Sb=yV1^I&D5#P@^#>9GtdJJfX-F#u-_+YFa!Ux1NLo`s? z(gR9ENuY)7q97{Nt%ufFQVfV7pr5U@2Lwr;;x(Yf#)Z-~KR0t2h&6FdOq=9@<21>{ zA^hHcg4{j(;Xg;W3xLO7zZc2mH-PHVO!)-V*!2ebD z8no1N4TUoRW4jN1h{oluf-3n{AY#*hNaJjP_cA;ahc<6v5Yz-PsT>MuW0tOoaXl{v zSIGbwQ$D5za3BGOTK^ds0FvCR`I`xte{wy%-L73^<*L6J?{)EpM7zn+oBGiKvB+y% zU#;fH`|a^hBbt=y*n=*X}3H@S6OBnFQF!zk2$RdBU@^_u1ka{P;X#aIwW{AvUZz~|D_vP@=0*KYx+1(O@iY^?Tz&u^b>K9zPw$8~c z{{`^bHrYHPCPEz3HA=K&c57OhvUmE#0j5RA*9n>Ju#;XwV%Ebk3s}0HvBs*A&_Udu=K-qNQ2JAsw9_ZI-x6@vFnE6x{4EW+ZU{n*BvtR-HozsSwZ}$qI zS{QGp0}k(zYkmx>@gq0Tg-p#5t<|r?OMx2OYx4Ro$^O?BP5LCG8r&y*Vi?xzep zYru~WkbEVB!iody^%gDQu=Y2mljd*(WVQf!aAsGA{5z9~+gbBtc>x?z+lNUwWN?%S zvny(?#cW_5_oUSR2c(k|h?7rtK@P4}lInj;w&5LBVl9w@(aITasI^ZqmgIls$+PoA z>++8sr2)LcRc!6G^Ro3g;*BT;YAy5J;5v?Hp{b>U#)@y>S0jh#0*&D-5z)c&6_*cwS$y*AJ^0;uShO!+T41EP_>1ylYZyCj&-ZY44tH1#iUONj@57+Hy2xEl zx(jipcwFS>&=6m~)&`rvus4vt5+T6U%It0QTxu;Mjjrucivt8 zyTj{#^i^Ozgc2=4*!=;qddR`5IPs~cPR~OEo121LvKH?jU`QByQ^W0|@BFX}Vrcor zst0Ue25gJd9+>q%w7yl6P5bW2lHh6uY}tqt1ck`>0`}A2*#W{~_UQwl1y$GUe|USx z8Yrv^Ujrjs!wz5YSI(J|aHeaFm2;t<`PNVl3>LSFI^=F1^L`cUe~|b`1vs((P3~=0 zzk#Qnv+Fl*;a_YQ=Tv4G3G(@pvAY@%k66s>&lK&6x0Nl>{IkvK-Rv`&H=HTjAr}L0 zVwoGu>$m3STG8Lfm>-YrZnL@sy8|zgk5>IQVrQd_^Si8ize(n%NETIrQ_jj#5KijX z29UVKBivIYzmZ_^B$zUQjkB%>*rj%GfoWys5rl3D+@%8+e${T9Uh3(j=h2g=Hng_y zI8y9?`J9GIUGa9?@ndKPO1(0?2iPxn{5ESzN3}dy(%J0zz69_Vv^~q| zP_yfnvkrj|-#~hwf^wj%)H@`BYS6Vk1qWr_Qwb%W27zeC6~AQM@HDS{dbSG!zN0As zY8jMV!|^PneoP(Y8)nS61pZ+>?V#{+j;06LM6ThAy1^$`D2py8#U(>M7K5^)Rcng@ z#=tHP0v|(<``|N#$#V!?Y^~+oO+2oM6gG{=&I=&@XaXgL%Am;? zr2lkg{sHhb;u7OhpFU0Z_Nb8uW%gtJG;o=_31nUaa8C^g@+AMUp} zrUd8@JSZIU0yyU2{vVvT+o$0JzLJU%SK)VfT;`D+Fz1th4~{;8KW{-GaK@zvi=0I$ zsB*RkIOEDqg63p?0|#EMY2Z|QPNp6rkoRs)UM`*>4Z;%2gTvI~)zfsZci5BtK{Vmh z@B|iro01H`mFqKrX7rY;<~`UWL>2;CS~I8VqJ4Q@uR4VT@iZ0C)O3CY)$0ar*^nHD zAHM{0aTZ6iKOf5nK(_`5dLv5e-v#jW3b-a$?aR`QdL>cWgLuQ>%=0wdFr6K2Pb4){ zknfp8qX<7Y(FkQI$D$%%5AYKLX1(@4a&)RmSFL(VwNU(|8N&gLY-2;~7Ko6-#aae4 z5Nml2%zwO80`1>&v1)@IlP?%lLnsG`IA-bsYuW@FrR6ZZU+pG4(2?9Q?x;Wl!Pdp} zFul`gx5@q(xN?rL)U{`b097CC{T6GusXU~=`u$li+4VG_Jq&9!+MQ{O3WMf-$=AcU z0C{fyhR4huRfs_!8`$#12?KftiIymb{QdBq=0X!3#BH?{{BfU^%#p$W7{Rgr59#*( zsaAYPS>S1ih@utsy1UuxYIP?9NcB*+W(e;n8~jl|F|VHx;|8NU^w0!Ks zxxmQhc|cgymH6tShP%MyxX%L2A2;m58M^0s)*%0V#7_uZ(sJF2Lf%pHVNo?KjuVet zjV=MYacxn)%cfUIhho1FXskX^4me~#045GvGx8A4dqjFM?H@H8{?MA6zIDfbm@Ej~ z%SpBO#@HtsQ4b48W_8UvEgU~i3rClB zfLKCUQ8DfO>l8k?B7m^emjwO<+g6}So^fcEx)rcjJpvA#2EM^mHPbIZ;qO-fW_R>I z1W8BtdJKs`g|cmB4J_(`k)F#03&&c`|B(5M2`t@#MV|A^h3D?ezmu%TzsJt@{(ee| z_VTsX-^qY$dQm6gDTVM=)I`=*Q;w|?{`{t8;&+{u{7~oYq3tD1pLto{(aMBfh^VEH^q$O*) zF9|*V{h{xqzXAL;Kzi!Je%xl0f2<72ulA7n@mU5`N6KNLW`EhL+~(szyS#|91SkCC z{{1FLp;RWG+l3MFB((g5B|u;WFY>Dz8sno<^vt_OR|GVkcSQFu*we zT&-DuMk6wFnSUK74J_}MhNAZiwT zF2n0H!OYr-9QY0h{KXtfJXZ_C>iui#FJ|vf^j^>t>ofnF;_3%&BEEnsO`r-l7l|p& zP*cfgXKEejNgNOX2Siz3A9Cr~y`U(-02@Oj6u83F?*Ek!)k{VPXVbEz<@$8;PP$QqM%P5eKTV%*H2=Y=^4t3Nrdxp?Ic3k zKW~rn=BUA8z!f}Wt?)~+{5?v?WPrOe0&q2*n~<5@<$!GWqjlJh9>BeqD(Ex80eEfM zs38p>fKRG|>hEkpVjM5%qtG$OSZh|h9%fob8uv*x5p#jFrD$qOWM1#Y6Y0~?ja|9Th zWuPz=6n0o0$Qjx9NE!c1+s%~`9-HuAqHXpzxr9;r{|gkv{(n^Z|Df|1wDkW^rwgWe zh)qQ#?2!*_E4+a^|M?-<8t8B0FbRcJV=G)zDi!$PR33GqoM-6h5B&4+Naw&6PfB<` z?eSz#BA$H+3oR}Rpsq&CxlcC2ab%|t{DS$UeaHmlt0>@jK-&yUqRmXM&;Z#AV2~pd z<+4Wm{UbjP@SgvNN7n0S;4%-X9tTut(MP>u6LndPbr9|;0E!hc#sb?jFNlYN<6~_| zz*7|hhV3uRv1-#SQqTwwj3T-uY%$TK%V6a6R#?ruZOwdZye9$- z@o%P)6on!|P{#w*A=J~1llL7&m=HX;(SF}$(-0-!Wz!J_eP6aH`VOK^a1WBYVTOyk z9^^LOYDlwOt$E6vZT{+lT#x{CfY|{s?;GoS_}>Hxxs8_^GC~2<4O7xOrR5ql4JcG3 z0t)>A;le_+$tNT7>!4CPsgfDMf9Rox{AC3OPMc92z%c+`vKehcX6mkn{G@*xUf}g* zE8rOj>m9wG&S*Gb7D;%B5z&--u*7 zqNN->RVZg{QMgVRTs#T1{5a!z9S3kPPJ8E-;tVkg|L*FqAFqS zN?l!0FqGNljnE%bM&{V2Yk+crR3U!r+&HTYXrNR&mQx=m+GDPuVUJJX0fn=l2|?fI z9JFWH@*O_lVQ+HUm62Bq#q^G-!cp?bt2trWE?e~} zFMU!FOzh|NbST4nRgpQmTBqPG<=Xcz6pJy$y+-r$(!{;SBCXK@>~}c03B7lxFOI5& zoN|AS<+MgCoBY#aoJ(Cyl3X(^eO>L`H<5Ys=#I-O(>?n$}*ueVvTx%Vn&O z3a3=O%xz-cP6$%bYy`|m>2I7-m=lT!Iqk6_i^92z17_aEpp@}8;GLRjM1`LIY^8|2 z`r;WtD}sT+wABC{P|?A|63=ifN!=GYyH3;j+QiTTMQRld=t!lD0Djz6!H{@JkP<%l z*)7>n&>%(t^a5NKZ63MK1wSiB8kGgTR;5#PVCH!977A)fka8rVr0JucdrE2kG z?jfcx1_VO^jpjhWTRbU;$-aY(SQnnBM4gK=!D{|aL#*At>*4=48ioF4cs1kxAprH(k0$4MSMZL{{r&XfzKRzX3i;{ z{b=>}llJ*;T9@|ub02%%7C!2)t+h=eH;lv>)sGgBdXcn*H;i|!j{+1VtV4XT2FHvH>w)Qx-HfK9&_T=$#(sBQ>+=1!w%IfjP=&I@Q zurKkX`fy+30dIY$J?tX+xaJJrM{c+lS8eOjeOsIx!IH6 zlhWG5v6HR-&7_m{lehMJ@RN0Jl#bzggyz{Ih38-oFCs-Y9O18 zc|;Bo4LoKKIu`Pt4Di7knM)NZ^r!WNQh#Q2OXTW7Vy>$w)Ow92F%np|5Tf%qs|H6LbmPT#J5n9s%Xee>5|zTfMwRxa5G zhs-_Xh; zB@xL=(HDmexU>$kT=-PjK`RY2M=wj}wmDkc%B(MBLILCdfHN4n?X*hK5Fo`q=(U&2C`T5RX;<>PqU+A z;gB;2h(Ek?a^P^0tyn?2SP5x8LP^EtJZ}6SW%OUlYgpepu&Xg&ffS zqi_;XX-x@$kW1&s1vs1G&ba%sZ#fA~M&##ctYhF)P$~RhF!sJIEdcM*L>T#f^dA$2tQO(TE|S1@5G;hJ zeBd$Bp{F6u?VqFulhh#q(VdB z3vW7B4s81>0|#y5{wt_EcVIB|xp%n1cpbQtkNk56m}?*$32SD!K!AaEs1GEEYoh&j zYPHY>E>qs%=CeVNSWJ3@tJLY>Z=L*}er~=gFWOab9!zSoe-Pj%5_%!DAF2$AHUn4m zsmAN$*Kp%?lyF*(NB>(!94>?&Un5(-6WC8$d`xZtJBlBWr!t#lBr&Ja+gd*!WZO#AcM8qt$C?d||p(-gwF#F?(S90ec=F28Go6##hvT^vkSBp8+5HrN~nz_4D%MX_lD20Ozu5} z&0o(<6AHUI=7Z2PvoRsH%y?i8qh%df@<<^#T8d|~Gc{#?U>77h&581YJ1M=oRRJsN z)xH$n!~Tr4tRs9J<^~_Ho|m>Xpb%shtFT{FW^9)jzw;zWjjUNP=UYQlGpn@V^BnEU z`f`4Zv2{*CQD-=#tA4Mcxs^&d;Sw}piptII* zF(%`x<@^)GVB0QC#2S%rO!wM8$~j}}efm(^#4+)rJuG7Xn`$D9t;f~sP6=myzdY%} zyNedno~U~(0#jX6#648$=9$KY*1gR=SYOMs^kt%c(|xqI`(-Q2mKKP6J$4yuYMr+C zSmixhAk=vw?O8aQ>(+xyb1sCqmqBlx=ii?^zQV_2EEWD0qyaw3k^X<^R4Yz}&v}US z@|wgQssxD>sFv~Yt;dx6r{H|ykwOZb_z&MaC|U<>^5u1QW|5aHH!u9@e$)b0EjV>F zO%oxXpU6VJwGbC6PiBOnHKX=;PRa84odJ55_Bym()arFP#M?zAfY*5}gi%tgv&u!V z^YBbki`c5Wz46y!w7u<5(J5GM6ywByi7^i0Q{GN{a{4pl1a+;{EzB5DVC^*{&xKBK zDim>RUM`5@Ymf_=y)?;I+kB@{!Y4B8?J)tTllb=dv`11SeSdh=Yn63Y6qoF2{7mcG zd+dZl2y_4r2!bHqZ)ykNr71x*?pSnkLtt_g6dtU}fzoysx_DMISnX6hO&43|^dIKZ zdzG&^-0u#>eLJ^KV!7;IWEvSbmp?Q>fUi5eSe+hB0A-iXp&ag{wL@Z+1E4~or{IsyQU3#iSfh-^qGWDh zd>Ia2eT>n^_v2bAWs;GE>9aUX1!=I}2b56xtXvJzcTg&#*wR#J^G)tItV?FRdOR6C z8@HzIrw^-8W-6I_QU==Ztsy2Az%&OD;+U-aNfH{+b)#ft zNb7Yo`8UuHZ9%UgTwXvTM2ex99rn+|H!d+4x-p$WZ zu&R8)?+uKV!{U%6-np0vt@}BtRFO-TV<-IYAfwe$c+=NV2SzsPG5}E!KYuFM30sSR zqn}RF;kqcVaiBaYC;fdCfUTF%I$55{q=FUYB)P9v6**aDl;b6KkeXkr?x=<-Umz=% zX1Uc({=cO*@1$k_Um#MkYIm)l>jQr@&bEQ)rVFtG#q2|F>uF6%=wqlXyrLVtOCRAQ z$E$_Uor|_>tPC?4xK+G(bHXE*of^?)drQ?(^RON3{?xL@S?D!SQU#l`KRh;<_Lo;x zz4528+XYWks=lm9+#7~0)1LMM7fAFn6r@B$)@A3o?QQWHjMFmV258k8?Mn^#8opzt z_76pSL{#W@Dr0rk>fup<3BJ5OtWmlYmDy4jMWl~*-Gg~StakAddh1u7T#>&DwXMo` zTKAuQfmW7W2*MAgf=Z z>|%U^S{C@dP=3+CX02cTrxn}?ZNw$d#CYsYccrl($DKSljp8YQo|O%IRIu5N%_(pz04 zqyF8b3o`N0mdw!!@^jg4iJ_mYSJ(XhCaJJ@?#q>FP_%*W^9OJfbj^Wl1 z5&f^fyI=w-;Lh|kDE!SUYw~kg9E1coPWTIbJ?nyjq_`W;`B|Iv-{kt-4@F%8%Pz#u zK55NwczAA>d{kW90Ib;5@Ul*@=B_v;t&y2lYN2tar_4o z2R`VP7R>(_9H2^%8}~z3tHCPaxmx26YO!;ifi8giO=8?apm3A}xFjP}8XS=HvU8w- zM@k(~mIFgk@ac1a=my{<=^xVCe;N6=B}g<#^4lRVQfhz`$Ph@xyCR-mq_{3J$GSzC zTU(nv!6M$>;v1NUzb}YWW&Myca9c^|JlnJB+SrBns!!bmIPhz4_ZlK-d5?uR#?-g( zC^pyAH3e@JHFxE-vC7M>vgxZtMu z2`Fp;mL9iqiqMl$AuHuXG6mlMm~GS#rmei~MQ{)}Rx7tbZ{Ap^c%z z7FPhAMJ@Vu^7Yv4jvA#W#T00+|L`7L-vt{ja7;x)0ab&~@jkZxm0nRY5l^a{Myd;N zL0uqUhJg2SNr@e>CI#Ny_!>?Eeu3k5n2wFaB^3n9aLuePkP^;>il8@D zzWn;cB>Owhv1eA_JAyr4V$1%;eLQ8wnom$3o~}Yc4&P}~_frt*+m$T6<;Q_%@F=7R z6d!f74l%*EKKV`IlUkcYM#Su`razaTtObmut@v*rhab<*O_1yC;ykRjobYR8ah_(? zzPIFTfD$X~tA~=RoN2a%1*rsl964^_5!xr6nuJuXbp`piVavOJP&gl}tRRCy< z5k1(~$vBigxG4vRM^yYp1|!|_2eNpS7!Ms-ed|Nd%3)S6faoO5sh97q66Ow3DEWoI z&p<{OF(}_32LF$-&~DSV4u+B>kAEhsyNT}vB;{Fay2VoAdLmHQpcRn4RV6=o9ctOwq>x}e49HUvS z=)p~}4$XL&RsYQufYt3E4h*pI4@Bw=%h3ff@Mg&tFbS-$j@GaPp;%;?7hhQMsvNCuml4LAF z2SO9Ed==>m?qDXUOlCcv#Kc1_j7=;??>r(jb)!OI)h$&~Wq4^22{{%K=k~$L{hO%P zOCjXB)k||59qo`pA*2W?`}kR+G)1eZ05NHNELMP(Lu@c>sn+%Wpzm^a;R&m_SJvc& zLM*23*v2&GsJ{lFH3SFxBulTlSts8959vZabH0NsshqoqV_8sSIc|+CbO+n2d1)xs zSS3Yf=>DZ4Q3-g&GkC?4a)!*1fyGd&w@QW#0|!?ZXfRaSv-s=n;#-wrucS(Iy)LGb zNx={NR`7gVel=KKjz_nz_;mz!Fj6paZozUp=V)rVCLYv{GkQ0?a$g$c8;-;KVJGU!zEeEr zqE#*HO~RSIQa_^po5jC2%akL>pMYn-W77pqvM?EIbb)uq8|Ks6OW=#^ry2KOWSJm0 z8CE%UN_cOPb&?##CN;=ujd{@&*?YF`lfOFq*|#iZ|7F8JWlM20i#lX+23&;19$aJ= z0ofGWRb%$Ew3H+)Z9h=qZ?r=Hx-6+^b@p>)1EvcRX0Mvl z>8ZI6kS@22b6P8UFFHPt&FJv2(VFvfQaqJrTkW8MvD9QeOUtzz*hk||#eJsT(ElKA ztq<8#elFLksZ|Uk$o*MD{)uMH9v%Kuezbq7Src=+D}>>xR&%$VS^WjBDz;C;50!k! zlGzV--4<=$TT|BFV8O1In$-~6%PA+Du2qq*i~P)4U4F*7_igMX*P5ck5i(@yZ2c#3 zP^I=%41?;vJ>}vVc(-TLN7u*rTKfm0_9N}qR+WXC+f0p2H!u>pg&nQc&th&Iu-QL& z@+8O;VQneX-Cgy}_y*@8ckb6G1>6dPU%VY4-)P+1kj+Zx7ts zoV{&xK=tZpYh1|GIx(ZwIvnd1v==_{`Y^F;mzXsYzD`y8#TEW><5l?BrZ>F~@xj^H zo>2+a%8|sOzBfBJT(b73FQf^%RD{}%e@PgsVJqY3Bf5DmsErwClv0_UiK!;XZe%z` zR$O19B7Umqlr_5UP5jDO7ufsA$7W1dbTG9OLjOI!z~3&h75T%BtfB;+K6}UONx$c3sHN-$ z8ShEpZ##C6KWmdGF0KA_y3wm~K7X23qcfo-9HQq5ak20dAL;n?VIha>8XGiBl<+4# z%PIOEIiIR;<@}{eeX=Wjk(q3nJe8NGbVQ6sR_Dq;v9wo`Uw&D&J|;)U#H2P zAW@*`bmg6M!?mRSRyIQ}9#;=o+T6%$k$T*I4U5`yRtU*rG~kYTX$1D{35j(_t)Uku?ek!j0i;=|%#N|0M<~rRu3V!282D2s`Rbe}- z1{Wu-SPbQu5Q94uopTa_B}6d znphAh#yg6CvPxB0PAXnz$|YNy4I$RP)g#4~FWvtHNs~ZRBXV4d>Sn=roYNQM7arU@#T5eo)9x`icYaO zC$b$jDY{K6=AWW_zi|nA&3LFdAg3DhbDt8c(PB-BDOo)OFYN1Ej|=D+?r((9J=O|m zbRK2QZi5|#n?xTWd(GS(`#$No=|tVn%=)a`8F7?>~JO- zY|sL?X?I7^LgF3S0`2{ji&H^uv3sW~KZtbAPh8;)U+NWos%K4+Wtho&Jy?zLx#Wv2 z@SSo8<^Ga=45e6Qa6W+gxgi8D=y%=3(RelmMk~MLe2}T-(0@mn+c+#2u>hyNqn8Q) zM9U^*u^KMmrzqqzA_e7lOsIIJczLAnRY>!)OV?VXW-i&+p9%Kz^}^`#h%8ru3>tR} z-vpuvr*hxC0z0Cl`$mI!<6?-;byY;Qr#V-|P9mr`t%t5rGs>|ba zMv=^&dp^k*SZ7eh0ae#JyZLlt&x&5NP(IT9G^lvo)soH#BKz%Mv4CL6Uj!{BVX~5@f?)Qx+R>6#t>#Vv}~uU$I1JI%tMQr1a@l_4$MN{_qUxZ?~C~j0jIl_>;2m z`7fpsG)HYEl6RbWw6wzScf7Hh6-vN`>BKUNeZ1;6e^*ZADpyU?J-b*B$;p_iRoX&o zsbyTA>8Y|6rr1b-mqM7)jmJV9wsCw?os88N6r6U?H}P9_4F=n=V2b#KGB_nI=P)ec zMR|-CHC?v~_f%+<&qP&Mn0%$I*;SVKoh z)3Em1 zwiwrm=vqf}gxct%4-VM|?+kp1v!dl}#X0s}1Uk(jUM>r-Iau646OWPm5-}$7`jb6v zJio8(uxBlqc;4-37|We>PcY?1NCwOz)`x_al!cQ6I-*eP-}7?@9o&@-^bH$@mKe?W zbfVbAtW5d%p4im*UR*}4hQ=edR<{SYVTRt=?o$~3(U&!xEJT%WW|aJvQ^%WhEb30r z3|?;f*dW#fYs>e?=2#5sPM0cP{xh#CU{Q}4^jGBY%v+ZDp!86Wcz!y-U`g?1VU)+T zVzAg2)f{QTU&TgDJhG_znNE=PnTpYmuN}6pD(IfRZ>+qlHKM7qS!ul`=izS{+WMJ~ zV@3~k3d5Ig9lPN+8$1+l@RE~72_g1~JHT<~Sfi&VW4na@Quoa5oTFV)gR)vUb@5oI z@v3z2OLHR~zH`nC%?#4(YPm1ovAd^7Z%eE*1p1)m%6+0zZ*a5jhD3!)`10_WhOdMf z=s4jOSj3nptxh_!g;Sq`9m#j3$1@*U7v7t3*i9k-v-jnXA8L#trFD;Blxfutivqrp zwYV#L6z>vsOHJ(PbUF?KDHbpq#n&@kFIQ89jd-jJ)iqSo@t}%SMeV{w=v^R&!PA5{wzSh}*21aeulZ zV}149irnjKQM6X%rcLDxGkx007j4*IF+xO3{IHW2M_^$)Eu@O~Qkq<#!VG!LZz3xg zH7F}uQ|2nM$zJf7tG%iD492Q?&J{bxsT`4;yLcl_U;hWTNm94kw4NI9u5y#q_lEuN zUM1+bUkQrxd}D7vXcvcCzAV{=lh z9&^6GV4#OP6b8GCGbkoPdV0lG<3ui(6)|)9M!_r%g-GfL6@t6D=8h;sV~uYvSAXwB z_V>G+4jn@J`R0s zj+{-AtUPtnK9-*8xuQP!ZXU-2PS{7yL+-Ku??2roTGS7!?Vk+aW2_;!^*)2h&>v3J z_`IPOFp~7<-YQ1Z;6#=`GDdoww=K-KUzylEmfDP zr8%VR^f#neCLa&0uKV&W5uKyE>uRHyrE&r_+Z9S3@a`w`x`ObjT!NJV++AP>!I4tt z{1S>m(tmt|(-;-ipk*zxMk0OS|Lgi0F0uj}K30-7Z*&mBxJzYOl6#PBiZOm1jD6Lk@4QOaNbF7vEt?~Tjxv~3aM z=CPT--!!M#kO5!hMd5LiS9MV+bGuu3_d*B@2k-=9NGFz_!XeCrFc zi^^hdi|Q+*%Mre+^W{SZ9`?AApXRjh&t?Oh}4%caWk?z}^aXdtd06d~^Sqrc zn}FL4ug|{S*uDl^E8!u%RQc&{Mf|f(za@lo-uSQQSgh`2jNzR90hE5|zB>a?hl%E_ zXQ5z;0j^A{>Kk@5F4GGxm2}5w*uaH%ZM^+zL{F{ZXf&tKwJ!e14E_0^TS;y4AK6=OH)Kbm{Xhcb)8H z-Pfp}W3@{HI>hwC*^!F%bj1g|F@s{_&WOxvg;m7TX=0oI*qrX;Yf_s(rPHL1$eCKZ z^JeXaD|yd-Xqj>8vLraSoX=MH^9>S;(PRT>3?=rWXS;+F@8zSKcyf+@?AqS_`8c3V zNB*U8*zJH+sa=VTzMar?nt)ZQNO@$SVf*&}bn92f42zBMR3nq$f=_~~VJx?QrS;sW zIKGG9|E0C_?R;=>90SX0h@E{Rr?4QSjf%nvybU^-ih%=Db22w{Tr4wUyH9zLfVTYmn@$I3c<_ zOnUoQghxL^+V9o=4hdJ0kJ(fd$e&qCSH_>X-^#ex!$wThiSw+H=M&g^S?0`Bc4zUo zkVV>`4r6N3mX568=h{)vlwEECD@%cQk&d(TddhS!?I$O=bTcZVBW2^R74K@_nCuJZ znQ=`(`S>#nzSdAU>64vNe;++`oIC%kQ^LAB={WegBb7TpPokt=LvE-r_}FDFiML$4 zKfRcXjLf|`7;`aS=xb1*X5x0ZS!Zj5AEQA=qZ%k17n8x}1x?864!6i(3R^bxgw9G|G* z%nt_&U@W*AiznCpyuHOSpW9BBD7q@1_$tY6Dn<$Wjm(P+(VFcdRe!B+qO+Ac-+sw{ z9*{iz#rQH!@wfUmuKtW{;kDdHOl>U;;*1zbbsM-Ew)ve`gXN?uBmA_pfI*2FZQ9{Z zoP6qrdZqBR9B#XJQxl^=F8$ni52hzozPcL)HLm@%(THo{H&fX!Zif`}O1e|#WUie| zu-<yY~+gT3hfUpP^E^^tB8Gj)`HZCYUK7k zU1(1ZjKK(k&v za_v4WQyFG4Aj0Hf`GX-#*F=S=*;qd@lveqAP*Gv5DrwG4$0~y+^iB+m_g#fK2LGqb z&d+N)OSCV)JmFptY31vtJMSzz)im;HeseFH zBj>02iz$xe9k(bo#TOD`w=~ zMBfSGx6yZbx3TJ#Rhlo%+YTQIs`_E$TW>j4AZWPgmJ%7ArOD=Hm0`=`Yd}af;qqpB zY4`07Q7CQND5QhjCDTleX{tt0*6dH8;){`9nb#{t5SF$)7WQE?4JbzB4Mw zEu07&lK-X)l=EI==Oprl&yC`KUwiv1sqhiYn%yrefwxS%>I3yb6B8Z9f%Oh+F3(in zi!qMLj}0~5u^2D(x6`}J*h_fu0%;JGK102|>a3!VYklSs?EO;8SuI+n#;+=QEI~O{ zYo`mTqmgOIx^HE*qns>jJEFLAZTc+J_u-&2e_dX~yTAPoR7J*S6Cj8Ffs%zYp$S_J zRG4$Ht$M|v>g79Jl!9Jau*MJZs=K%Fj|u{Zz-+xJ!?v?lJjGqLu=)xpRhP@n7v?Y&H6@l>$_y4 z!0!o#pR#4in{l$Ce+&}ZnC>%3VM_H>8Sya1#I>VA1Dn-6`mNr(>Z4MrIE+w3y|w+9 zk15v0yGk>t)GFJhPQLe-hX!;znTtNa1}MJTwNJCyO5_w_H?NvL0LO(JoT$b4F9I0~ zoQCi9%Xo~|fZ$#}U;J9U&82E%BRq%8#_FSU@)S?&`>nS@?g;p23+`3j_t>!8Uyl8x z&pD6oeE%ws@=lRVaiA_H?{7`BdNR+_lN#qd3dL*$)a*|hd%R+FnJ4cc-#-0g#Rek7 z^@6qUN--G*g`#h2e#N-9OnKz(b341}@ufds`Q#A-5H+oWT;s~s>?Q@G&cxGSR{V><;Q51->KHeRu}Qda|05 zrAIzpc$7dh@7cp2BY2kfMgI7=t$-*S0|S2V(>8?^=H!_TFU@oN6YlHdC=B5&=RAnU zaY(6sb}tNellr4W$y7{qwiyi+L+se<#oqimjnP+K?8AmUIh)(iMKYFtT zUE^%SbN!(!a4&O@lUUvlR>}QiahD$Hs}-lSuEli8S(!NF-RVbj<6cp5C0X-VzUM5@ z)V=q9PVG%|LiT!0*U9#4Xn538O4OI}7nIldh2C4H-*q0`eRDwecu9pouG;H%PbPDq z0)I+xs@(Mvb>dkADVM@5+-F73D~d3#Mbc*MQIi~&Smnnk%(qj=oguL56{%GgdMkk4 ztdTdM!)cBvF7z@pZ0Ks5fbKn-8+#@Z2xW1_T}SYr%$9XDhb9hDJ}*1}oACgL_#MDF z?x<~b!8s9j=22jWx4!1bg>Tvme<-u-<+HA0`4L`Gtb?5@RpYA>ovRe#8<71F8l&mSr_1QPAU^A$C$&76WV)A&4rtMd zvztUei5a|1?`nA8ROX6R%pGo<;|YZWu_!|iOOY0j?QlaQo7$w(QVZh;N2fRWU2H6~ zn?FBL7&6ox@jS|`sS}5H*P8zNl>MvSaJ5%r78xL`9ryXVr)#8Mh6QucTLE2>%lf{S z0>MwV?`J%|s*8D^E-^M=mUq|sbx{YBo3rJWfyZvY1az0^#VvI$!vWe}KA*sr(il?o zGk+=2KoC2Z61u1->5_YehXtlyq+`!ivlb`VVp{mo#K_XMZfH(mJ2XyHiV+d}+)<#1 zX3}+@O-Iya+2*C&&B44dg_g>U;9_- z^AspuTGpEdN4RV(#PS2~toFv~tqmEt==&jV?>^vdvsd2_QfqYg_tjZPU_K9pF|Kef zpA*-!q%?!zl^=JzU{)l?CljETOoWq1nX5nytJje_#X40xC+d6yp$ zQ3DrySAgCl9IZ%cYqr9eb{J>sET}I}IdwO_EP%gujVNFZiMry=Sb>XSJj3{E_fBt3 zz}kwjmfx!sgUohZB4|mcR@mQg48rBMb zpGOMPrl$Kint}=fcQ!T_xds=so`GGe5peeBBaR9hPG4l$K3;W-`t=O(LARcEt_y$u zt$-LgMhs6u>lIBSUM4#DC4f%Ys&7)y93uQPEugX*x12w2NBp|m1C-N+?(%e04CaCa zvWp5P1XLW?w%)AY!#lsq+AcVx$|j44#@a0f zZ+dw@lU*P$wRZ_Wl+Kz88iA9m2|90YliyguCopE%)+7BrJ9NM4`T%RTf*xSEc7e#% z)Dw`i>DpDQ#xC(BrGI$7Ln~O4IQb1i6Of(&Ex>eFzzPWM`->x0umX%~kqR=nlhLRk zgFBr%6)XY&=HPM#V1fH5pQVB>;7ow1Ac4=R6{*uUQSU1_-HV=}pnp$fXsmkDS=*73 zU<-tUtX%+Iz`(t&pbI!YbNBvN)LmKLw% zFM#Y_K^Ji5^#qNtj7&VKO9QQ}f;QmPrPqxvz}-64N2?Vf6RYCN_1slnJTo~KCcjj0 zx6Sm8O)JQgcoONlweRWWIhe!s6gr7^@sYfcb_NX~#Jc_h`QWUGEDqfx6)XT-8B-0q z@b~O9+5T7ODkYNR301HI)?@n|&{g(g51fNtG0~}wT_;ObVHw4#Cp{U=XQ*HXEKu$$ z(=@~L<@>OiUiI=+s(|g(8ii+~ea8#y$cs~bu~@21%d|tkK%@&a%SylOB)?s$B3^gj zyO8(XI&%EnIGOs!JeiN=1?U2+BM-<+VVzZ>3os3#p7aVa@2Q^3TPxF5iFx~$IApS! z;~8{nXS#*z3BrnH{Xqp?VB$Xpol=_2NhLevmrn8$&!iVFFret930j_Pg-*H7bd!2f zhjt;AFS}I{d8o?tDI&W{?Hqu439c2HYQyVj{t*X-=G=ZSgCVH}7IcT0q ze@}fAGqHotyF%4iy}(DBzE?np6S$~BWA~+%UN2(l->3$tpx`_CqzY=ijl_(rV9-0gdzHTUxj6eE%1@%f z_1ZBS*+^i*uZxogy6qzOR_P-0C9ZZ(T6Paq5c?LhaV!1qUbHJ|tu3akRj|nCp5It6 z)!w1Iz!JBQP9pdH)jk@2Vdo^0&7;1gf^z8eFI4*C*VH-MK9;mIed%-RER%bqez_87 z^sa9pQe85(Ua8Ht#lF)M?g!^cJ>b+o*E^%ger)Z0t1g|BbQ4FukSI5G=){@ooptEz zOx(PnB{M7Ur&I>%zuwenkQuFXXs>H)=NnvX-Gw_V9AaPjMXi>kSSLeM>>3`#6a=7!Y8_1f93<%<90PQ-;b8REPDQ`lK>J z%s_yv*i!cT-h~d=kg81h3Lda#A`-HlvEHm_o~bfD%OtVL3ObSUN{6+9i&L3pwQgnm zD$}c0(=Vo_5+{?BMZY5`GZpDPXVzp@Pzj9ref37ukaD6TEDU~An(Ix6-#TsUE90Js?9TTRq-HL~iobvu_?O*+g&|UH0Hd7OZz> zlUDVFGmE5_%(*yKUqR<>q;t0xutcfM4?20^JC;_^ZRFO2o;!@5>B(C!SoHI6tY3s7#b!Gm&|MPTdN&Y|zd# z@{8zBdGm!Hj-?Dor4QZd=?gkf=A&mWNDyr2lJSGtu~6tzH}DUFPN~iv2s&*dI&Fi_ zT`EGUss-(9;(BJT9mL+CQ!~l#D`aU5iBy_&E9ZuI0lB+cK-C8wHR!YxpY1!BjHxb= zG^#q~Ut(h=wX?atf%t(rCz1F8)x<&P=Wo~Fr;M!PvGAF9B#X{@+s{a!8rV^_kYiy2 zT+n&nKa-P44+xU1(rIs|U8D+(3`wPreqFZjLY_c#ojhuBFEmY24o2UIzc8{!vlje? zqFtj_hZ!ZcsPBz96P@~2wv|S$lz()eQ=Z2;;9R6MT};!gMc843lSt+3NB5m7vR8jk z=l(~#D$M#FS0-a^*ftfPcb%KYAJExG=AF(8u=Zafmh`tT`dw)E=RPw@Ht5vmpx{@~4V;wlIe9+8;OueF5JE#*OUpPmyJ5`TV zg+fua??iRx{)XR*CLLGt19{Runf2ZR(^Y@9frX z#4Bu)FL;H!O0-sWM2qY6Y$>}}Rpp7*RmsJ#tl17arSzk7L=`9DnbMT~oDi z1s%j6owS9;vgtf|%oeC%$<1j$Ae!?P_} z1rl_ABdC=@8_)Pa=eanDt%GI~wCuzN-WfeuLFX?h4h-Ij(c=|#O5vVW<3Y0mxZJSz zl?ewQB|IF5P9B$i8ym56X^y6eFL+^19h5|Q8#P%vi7g{xi_W?bP^qoEu>vCDi(DIc zDb}_`YV>G#&H)H2P9pKU4jMm>wUcz`WVg>2Bt!zB!e`heL)KU2`j1L{?S&Tm|t ztOuFch~_=Q$>laapiZco02G>dBGGvp_q4S7fZ*8K$0s8W_CdQoS@AFx;doL4xs!K( zZr#>=<_F94WmlfGOeg&@K_^eIwRu3r1DNwcr_?0VQ6KtHm}Oo;t+7QM=|Mu#MN~nt zu|wa7ydgUjCRfVXCOp-6g_D6^c(Ojgs7I_qkpbr9Mx#_{G{k?a4~Ij{ndz3G^#U`-p7 zzp7Aalo_W^aeZ_bh*;8HT*>B`i3e1rD+2Q1-T#STJj_!uog8{^=u@u`xi{)dD}71! zoxAk=Jg8Q;{+=py$69}xuJWMi-t6@Eu`Sh?e1Ia;FBMT#%7%HL=YVKV6{^fjB>+&jE3T`et>Je`6`EfZOzm64`){hE!9Qm*{0_^=;Q%-7*&WZge=v(D=rPl_c%Q`rzLU3VzO9jEjRm1sGF?kAa zJzS(byQ(*Mu_)xFf$0*v!ZT3g-KdOv={f-iCFoqyIYp<3ovugsm{cols^2EM6< zz3CJAul=F(7g{25R3^z!`I)b9_lX~XuM!Rr=L*z{rjDx0#LuPZ-Me$=d;@pG@od@e z`OReiK9BCBR4eUGSB+N(;q6t;cD#}@kWQJ}vtuI8@&%m|M|z{v@2pH$CzrE+$6T!IUg|b%M@kVg^Of#y4KP z|J#+&Owb_l&}kPm5^qbSq3&S)f@V^2`@oC|i2@Js`zpIIz~NLxb5J>d>WQeFXGUTL z(PdqIuYk^YIwFHkuD#-FR?0hiy^hQZ`GKW6$ofbRfao&moCrE47PD-F&b#vN`h!7L z2A%go=NhRq3Oc#S)T=5?m($Z@86bBl8wetcQl3aw;}eGbS}gRB*Fo&)uC2){%f5zKitRYc(%nY1(YsB7q4 z;WsYs#vh~(#ZZK-p&Cn&HB7OviDptnbCO5aNt_^iDl0UZX-Ai86^;hTJykduV^_{k zbr)kRPrNSXZ3TVu3^%mCA+5Ao6ro5SP4&HCy-#wuFS>Fvg}43TLBX;_7fz!6W9b`z zJenZ#RB$lXcjnyh^HhN=Dm-<2IhhlyjTu;V(#O(vj%DWkwhuCGQj^K7N~(0LageV)n} zI&~|(UG6*2L~r-P;;i_4rb_ooG{1`{XzRF!xdO7jicqjyVY#xRjU~uQMk0OjyjcMf ziHR^3gx&=@NuA^eJ~~-M|8H_E^nMs~e=8ZY#cbosjH9J46e{X%?C3rbZKLnG;^*7` zMC!D)&o-4Z&DjM<#v!$dvD+!0kwrcvACOpmXFMmKDV_CI_$DB<*QseK+9l;1a!yy6 zLcecx(C&lIlL-!c1)apE-pAHHggIYL_^8|#BU)duG>z!|&3!gd*?1*y+=dpOuJ0>(k zp;%UCc$5KYd*YE`N0)Ej^S%K=-xxYpw z41KFX%ai37nj})nL<2iW9*Gedf3&N+chI5J`=2KJz=UhZSv72+kGMviD(D13CzmIY zZ6m{3@koq1clCf6u{Kr48IkmRM>Ls969+B|U?{G+93cD@0N1<%9>btuA=nL7Ka)%`}MBHiPzv4X|95aN3kiplGl=$D|=e(+rt21?9S{=o6~7rwHmmo-7F3p#mr zQ#I~bZJ<{Kow~N;F9>5sd1%kOsjw#}5R}Ht3WX>QD3?&F|2;?;|HnS0`GJ6<a1A2aPK1KV;z8%#pxQg=ln)no!PBmErnOh$-Y|cmx-cK~c_J8p>eiij z-$eU5^~jrR_=z2l0~{PXsE~AO_b0d2Rdb<}hmCb;mx=DRT`}!Uu~FREGum%pKvX6U zJ6gOt^~XllIJ+~!!>VA+IN0*lk$B7pu0%#cw@N00GUKw+m`xQH20S5VqM8gx=3Ufa zfb<@ACcmf(3OrS2**LPcGBsu0JJ$vx_W}d7f}6OeR)n9&vsI9q?50wd$<#}cEG7WB z;*pMgQ5M-jsj}U1?L-{G*RNo}crnpwQOK5F%#f($otNgbpYuMRp-9ut3p9;`TJ;zE8XUnxWvWq}tq(S?j%$b+?I;-Wg3`AT(x zs6e*2E^=#KD*)+t(rqln7M+{LZDyKk&?$xKgQ`Msv7KXC#Q!&!R27CzB#f7dOk7ln zDXt76i(Q_1fBOEl;falu1NKX@e1B}u080yE!chSBZ-rms(rx8d(v+V zy0D_c`*|B{-kqR-JX|3C2A$vERGZhpc=56SBJV<3`o-TfI+MbKmZo6^#G$DgX`fwD z^+K~E*ZYeV46Q&@DkfZ1xA1@m#GQS>MP^Ej)C)l;*AM*yy}a1Q4aAn%city^_~MY{i4iDwwti1~v=UGK3MQ8!W zH)hnvO*{d$&a=0#eW(^-K6C>w#gRab*%gb-M*9fARl2c#)X&s;W+Vpq+f4{6SldCT z9yl`B*1$_~)7dBL!@Y0R=!F9dPja`HDZdb}JUKu!25+k! zM1h+!p7Bb`DBUKoL1G03I?w)_R#?#aj4OLM8rUE9h)27o8y*tjz(;Sw2KnrBa8Sif zS6I;bi*(jCutA)OQ4OpQ|71;8JHU**3?6CTlXyxFhFR!A=Seqp+O~t+I5=rwd4%oE zGjHq;y`LxV%os{L(n`0P`lNxx;neUnrfoSj!HrtbWvYN^)Z8q5(s`iy`!KM|0 zR#wwzY9MbI5s(J*hTY;}%0fe1H!7v935}#NEz^(58nMRlmD_=~uHv#uu3N4keeA`p zZijmR2Iq=On-iINFz>ni*@ZlT{t=gm2hg|P!0vEt-3AI#=zDlTU(1t!*Ff@E_}W3| zik{T+4crZ@@*Cq7*#~*jK+0I3E|(&z0t z!Aqkrt%00jx1JGsacc$G|8!&roh!y44LU6xqJizC9^qA%Ctksl)IQOhPsK{mdA6DG z&`z>KE9(y$$Q)tR7vBG^U@}pn35jEI*G{bc=6eO)XL@$q3Fa#it9A-$2klHQ#m0gM zQ@g+~rW~2zum+v-#l@q%oqnqxsexOu$dxuwCnl(d4U`FYv@Lje(-RLR=zO1Cd!r}N zzy@hl+%FJu9%=8Fjs?P6LYv&!2A3Jr7LgU-A2WCcXf+}3>7p!56C((NLa z_OMHrqW}9OUf|TYz5(C(MZaI@O0qsdH|X32VMdT03OeNj)g$c!pIImU%D!21)nGKC zMv!+7`s5QAG`pf_s=6C#A6#IMQqS0~Chf};o=&7jLRe=(Gu1+F2*@rpuHGl0l~wr7tz;lps_{wwvnVcd`p9GeZjV3)Cx~`n=}9 zVZq$k6T1o|UP-PpJ1XeBJqzu86JG?arh!&sEh{90PAN`>Y|!Wdq5*eBGvTq^;I*FH zPP~<+#dp5R(mq-d{Y`YIw_7Op8PRO_t~22mnE%+2$~RJ)j*Os_M^$}o@k(-q3aEA? zW$9lDIwjWBE`Wd1@fYrt!V`4#M*aFa_4ldajCt`5e3ZE{rrS*fQZbYptRM1^?H0C= z_L2UinK9J{K8m0E1+c}cct|_}{H%t)vE512m^I_n6F0JQ3w*4$@lmjO=xer$jYNG( zoGi`>NM5p3!9Q8(kH$ohX=|@Q5lQrb@KER)ZQ!6Sx`G;bDE=h2aL^9T6M$;3ctjCq zJ+?MzCUb84pb#IV4=rfUE;16llSw^m(7$hTGM+)F%%npi=;RT(w|%9-j~-_ z$bsUa2Avkmi!LmZiQEP7QsVuz*2^U+ohP@D;ZPi^qz^U6em|xDB@BoLqKe@!HX*7I zGY>kSndomT=>yqkzysoqreB~B{t*v|H&Q7VH1@`}PzwD=pcw}(O~t;^InV6Dp!0T8 zF&%WCZ7?7jcqxmT|De&8COS|0o?RHPAlH!~g^cIH*)Le0Qzwh5+uxe&-{+~MyNrDX zv5Ck<(0P}}rWfx^B9*i>C-tZeJe06uMCWa~wW5?@>mBd_JCn#p&P(^iBzuN4uqDMF=boRGy#`k-^4nPL<)9*WKh zmg#g>KqY+BNlS@l@}&#?lb3dheyC^L%2ao(DtVAv*-R1$1XgNrTBSp(;IUNtp`<%2 zRb~hBM93cWvo(-C)>pse3aTpSv1uwDlHh6wowv2Y<%$G5v*){kykU*_0!SOC7;Q~? z;WxUof}hm)IjH!FvbHNR*0ERtmGMm7ZNkMM-`Ip}0cK>-`HRHVTje%Coa{pe1qm2A3X5`v7EjQ#OE{n$fA% zs&1c7Hh1sb*7`<`5SN7wgaiT;BK*oc>rGx8{z9YAMHUSh5R2~f1_p#t58c3km|ZAU z4UC3GeL!ofh`hxNKkz#7UQK1Z}|SXK$bhETVYv1xNk@ z5~pFUKjd7&IWcnYt&v|~@_5jBd*wHR1u(n1NE-d@c54OHWK)~l8eJevhHUh+%x_)m z@AGutq61q~M+J9@xeP`ZO2doyOTB%qsp45DiF^SV!)^ESBbC8&u&c8RvXxzbpDT3j zBK3*Pd1z18_L%RCC!P1EEY72PWcK|bI|qVi(D}@jNY(@P2Ne_Tq4tJ8mZ0a`5VVtD5C@z!|>7~XKEYbF=N{rj59&ixd zf=<0Kc824{2O9e?xC?k)bd9^LICYJCcGd-*=V0mcL}{c~=mB3~#?%wz8YJ`7sA zz1*G;GVxWNI%oOak#Kkb1`JqY?ZrcR^?kX!Vc8mV^2l~H4|(q&V&AWN{Y0m1G-4@@ z__Kr1)WFa67tKb8oqe<-{EbN@jGS9&HbpR~q4mAbATELh8g%M5dUhH(Np=o)f!l_k z(LgPnE}mgiF=3`rmt?jz)4O~1ct%xy=^OJ*uf0n|w$H@LYA<=^8(j!;;{p}EQ3c?t zW9ejtP5q7W%I}w)uCJhpnV3EydtpIKYUc_%RiKlTM_2j+k)x?Aoh)F`c{i$Nk;E%# z7SmrO4_@}IKQt1gU-9ugdrIwPVS>5$nI0e%IZXIu{?s#v;W|= z?LKzyd&ft@XAU~g5p}CU|5hCK#y$tkGTpyO%tM}Qr|yJFVL|6E-B@WI`ElzPRW*vu z)ajFXxf`9TlXKT#bbO*qYoyaf5~*(lchL(vZRNgmXRHwUf(~ue?9GMu->D*hcU+mu z1^ehOs486FFlE!QLQTC&6wB7}sTT5r{&`c47qcr(GLk#CuI(@MJRwF`V8bt%bjUTV zc&9(5fseNiA{baAcI%v^{%~ejG-7lUH1x)#DBE4K3npmT+t zyD&D|X`aNvJePwg(4dM;8P!3Jrtir1z-Llqdh9B4(RtgLJREfDQcx^|P99cxIOuz$ zJE^Jn|3&+cTk!_j2P3mMCd~vEfGZ9>xX(~EHqxXbN|EWgby>jbCFXvNJcnp+l_*$+JyPVj=!V zE!9$W50y}JXjhcI!%n29+f^w;-NI58Iw#ar!$}RVnYs(x+;$<)3LAOa@*mTDe(9>zC?OjCzIcX(t+}*i7RL`u7Wy^AmKQMEapaLFGC7q7blx^h~E~ z7qC?2;~3eyjvYylcW|9u0KE(plSYrXD;IBDlfjcjLtSm>7mSKWM~YhG_MxdvsMXY& z(c?X*&H?C$%s_7Hz-AUv&?zsNG~DRGo>S9M;uS0ot+7i6a`wA!6VIrKB~cuttq+|8 zun6f!Y;+acqmv0@^u4Rb)zeL-Qlm=Pntl;W7LSAFY6@uyg-Cx)A#Txw7uHB@#W~U3Y;P ztD<}KfUid~j;hcn5f~ahf%fRGq%G`pp*80HS(SvMBD)G>y7>nQgLZbRL~nTDyB^_$ zM&@BFJ5`}fMGHFRh3~xMFf}je+~;bF#|r)^8s zv!ZD!FYI7GFo!SbiJD3iQDiAuVojDyrKYSlNO_ZAOt>GaZ*JVrPwQK2<>vY1d zmy@{A6JUL`g-27U4qWnB@Yd;rH84qoPI>ckG8a5Ogbft0BvEBPkpS7dff2Th+qNXNofYH>o*;NNG*sAF z>;l;UNwftr$F=PPb(u2tqAe!EOtN=NoiNm?EqOH9iNup*f$&Hb6nHRnrMfye)s^$PiLFfH1ne7WYr7oGwpclW$69`i}PioNlL{(Ly@d{^m@rns(fI{xI;&`8BuJq_pM3wR6);=m-G7ny`P8mxX0^CT%|*@ngP`-IQ6cessKJ<8 zF~~gV&Y+VAuKvb&MSh|Fg4;MaNub)d$*zzcJkooAKEe{~oCC1JUh$NOM%VWf(JN~h&)c@<01RI?9VQcZzM1HFdfh7 z26&juv<{s#Cd`h>T>!;`s*wl3!G>;Q>c}~CE>i2S$M;F3>I2{S!TWOR)SeHu`yZW5 z`dEE(7qG%^aT(kT?8!%ct!Kt9pW`E*BNOA5lwp1UMeb`&ZU^0Xzd`5Scrw=(bn@`# z{vX_KbmK!G>?ArIbn;|(+CE2GX%51B(25TX=sa0eG6enO?t0Q|dye$_)|D1((0NzL zGd%}Y=TuBR>U;hEJu684ZuFrBjg)5J4{$HQ%M7~kj90FJs&J-UJoL4OgUjd1KM;?6 zG{OE=O;)^;`wB)}(8)!Rm4Z(F&eWTrQ7`sLv+Zg}=Fvp^ZhIGm zVn2CC^t)+av8o>NDDQXZMtHzvAdp!ec(G1BL6^S)O}=vX`aTCC$b)3p|n6bM6X>+yy#qSJevf4!Th5;uU0G zO5>nYBGJG6sFRjRM9{hKvJW(&o++9SeXxs8s^=7n&0>YrY`^;?GI4&A@d`T6c1aEL zFoAydP3PHOnQMEPNbj<6PGQt*-GlKCT3uo6aZVLpSkwFEa=b=~F=h(Y|Oe^|^ z%v4NJCm!%M-9>{9*s`DLA!0S@Yk!z9zh3rT^W>3@LFc)8mHCcW*cZ;~MW+j>b3vE< z1hzC2=WLScs8qu${sdHXPt-lp(WpG(ME`UKT{^zsFrJRM4-C3^hr$&0W$LyS_^9IB_7rDOgn|!9C=D@e5-=jusw^pnA zRT-v;OK97;cP`Ei{ov^d#4m}wE^>PxUVo9<`~Hb?Us=am_v8d2m$%Jl8Y@j(^9*h{ zp9cmsrm%J09y{B^KUhcqKiK1L|7+R%H{(JJTFx-~iSFH&ktY+EB40@+?lSV7i%i=_ zQ?A?pzW;9ah0Q&bS|;5d7?fy@7d7g;&$Rl)=tt2TWfQZ#PunjTi5pH;jz^J&`nlom z_UOgk$lk`t|ITnIC0U{r6N)U*M_uo-$)G5o7A9sp7>wQab64N(v1;G;l}+@3Sl}XK z^V<_4S+-P!Nt@O6{5i2~6y2=%-5$NPS`#;WrHHp8BlB%}=Ha=#^!JN=$o@nb2lVip z^IxGx(c5^ijYOw$r>%AmZoS}2Kk7x@w(4da@O-J675S6je{+F)OkdNWsD?~@Uy)9q zSysg0zu$d7xC2XG1i|E zv)yf{bG;-V^2Ixr5QK>b6BjWRt5^lHd4yMlb9%Vr1r( zSs&i1ZeKIk9`+cCSL*VV-Ti`S-)`G0zu4I~8vEZbcaX>VK)&KvgQ1fu7PzR!{w@5{ zolbw7yYnvJnKEBVwxRgKlKSjFYu-MXs+R&oNp18i-*+2u+sWkiJ@I6Bb7@A27S+$c zKgP0%`L?Csd7jzt-Nn9bLkHi-_4zd}|R|@u~-2#4&ucj%V2uTVprg=c&!evlFSZUG^FIHdbW{ zf8UoU;8&_~Skw`3bk>SG;m?;S(Q>HRq~=^vIsBC=RZ=!`z1p6#K`)9o=^;~&hL)>gQKUb`xt z<;Y#zH(Ri0mGzAD%-*z_`jF}<

    Ki)C;>k{=;oWk_Y#x5K!E;KG~V@&FxR31IsbS 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Б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⩔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%0DW;vFVoUm zV;~xBO@s(*`%lxBu)G{h+Z4}3?3At5Vh2*~; z?i#g@Qgw@b#t#b6*1d)1vdCM$4U0PLdnr5=9H|-$6X1OZLsjSg)Ym`Tr#8k%A_Wzf z6(EqjZ<;K1-?*@w#TmlH!t?rrvSGIMv@+73h2QTtZIQCbVoR`Y2kkobDm5)?BV2f> zP9Q!(b|;Tpp70(kU5SE|AU<7U57&JJJTyo5-?ajKf`Tcvi?KH2s`x^&C@A*mYF7d} zcPT8dz&#o<)^?lE4~Q3UD>w*W3IV%5AJ*DMn(p9OnAoIzhfs6 z`MXlP__0deSG8Rb@&Lvq%QV$?B$&?n5sxHA=K`Zvl-3mOo{3v~bm~D_Z|JKo)FNW>Ea{FdH-tpmPwke(|*dj6`H2W;|z ziBy4uv@F=(oP z)Kc9d>9*HigsjF(6NTpR!(bZkz5bNCXetVkyi(9sQ}Omr=LAi4&nTS}5%$8qt6j{0 zm9)3D;x7W6v0nx)N*k+6^%#kRiv`8$9FNz(%uV6pOV0q#3Cz+-n+Gm3gvkfNbgPfZ zVeh`jW_Qrk%<+A#6>mMzR6DJjMc?8E+9UjH0=QgF@^QEbUGHrsrT}RSnI3mIFYe|0 zKQ{Hb4o+o)9*Ill4DtNF#AU9?q)-m0|6WXgUtpWl4G`VF5MeSSyU1nyr#l)m+`JIE zN5-XhuX6PPl)n99-QnBf&sWX7B)2>M2kQ~UHk!0?FG5P))73f4G<1Bz#2h0>7ppW( z(=W9==29VP{a>R4U9DPr(L11PR~b;iqP+R5Q?t%XFVfa($yI`!6)%8#=Ppns_U)ft`jBX3#;-A7}+iMYOP z2s}@~13yt}k;93Q01fy-%2Bdpbp_&9>EWE8kmtFOt&}9A9+d`ZUe`JI`=TF$qM-Ar zTd-2LwXfhreu2oi72JR@>5tdRzf}q=!wu~(o2sfhizo|wGJp!TJ}cOZ7CK#}57@x1 z?szQW{lj~su>!NZn~x)xW(4?Tk^HFrTV*#Sez}fu4l3Z~i@}}U6zgu%L@wH&AQMem z&uR$YNe!KR3tlpDw1jyvpchMMR`wv*EZWorzt8Xi zcM^FntB^UBnZ*YUs2yrzF6OO=C5Gi|(YwMZ>7rq_5C)~o#;0h?3bVAHO@gc`Jo}3M;z)$+hRa5qwi{s~$wE9qU?_{$#y|1Yk{U9o zE@R%XZJ&3a-|soZ?VXg%n&qne8mpNpoQxH6ek0}>bSzwD_#W| zb2=h%O(DlGcfUSr(KFt}-I zpc_n^rDR;Sk_1bM+}Fz=q|Ql6WdElRh~IERdm;J9fXY;%nN!d0U>br_pntsg+VUeP zcz&d-IBA*Y3<<|sPuGORf)AkJegx$F81RC)yGw*|gQ6OEu)t x2g;ROkw>OhRnwbUDH*J@<^3CNKy$ix^ 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 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/mkfs.xlsx b/source/Module/FatFS/documents/res/mkfs.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6024888400053c38c2f83b8833681cc2977e939b GIT binary patch literal 1491997 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 Q?Upihagy&5jk3bygF5&ok6_gM(U~5=%7C@C(Bo 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

    RrF#B>I}LGPv-=}SZu*EN$R2u;lu4)k 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

    B0eK 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�o*$udK48p+S8d>~dL2 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

    lH3*U3rNywws!(q_4J5`W+ik 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

    Updates and Migration Notes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RevisionUpdatesMigration Notes
    R0.15
    Nov 6, 2022
    +Changed user provided synchronization functions in order to completely eliminate the platform dependency from FatFs code.
    +Fixed a potential error in f_mount when FF_FS_REENTRANT.
    +Fixed file lock control FF_FS_LOCK is not mutal excluded when FF_FS_REENTRANT && FF_VOLUMES > 1 is true.
    +Fixed f_mkfs creates broken exFAT volume when the size of volume is >= 2^32 sectors.
    +Fixed string functions cannot write the unicode characters not in BMP when FF_LFN_UNICODE == 2 (UTF-8).
    +Fixed a compatibility issue in identification of GPT header.
    +
    +User provided synchronization functions, ff_cre_syncobj, ff_del_syncobj, ff_req_grant and ff_rel_grant, needed when FF_FS_REENTRANT are replaced with ff_mutex_create, ff_mutex_delete, ff_mutex_take and ff_mutex_give respectively. For example, see ffsystem.c.
    +FF_SYNC_t is removed from the configuration options.
    +
    R0.14b
    Apr 17, 2021
    +Made FatFs uses standard library string.h for copy, compare and search instead of built-in string functions.
    +Added support for long long integer and floating point to f_printf. (FF_STRF_LLI and FF_STRF_FP)
    +Made path name parser ignores the terminating separator to allow "dir/".
    +Improved the compatibility in Unix style path name feature.
    +Fixed the file gets dead-locked when f_open failed with certain conditions. (appeared at R0.12a)
    +Fixed f_mkfs can create wrong exFAT volume due to a timing dependent error. (appeared at R0.12)
    +Fixed code page 855 cannot be set by f_setcp. (appeared at R0.13)
    +Fixed some compiler warnings.
    +
    +From this revision, FatFs depends on string.h.
    +
    R0.14a
    Dec 05, 2020
    +Limited number of recursive calls in f_findnext to prevent stack overflow.
    +Fixed old floppy disks formatted with MS-DOS 2.x and 3.x cannot be mounted.
    +Fixed some compiler warnings.
    +
    +Number of wildcards in the matching pattern in f_findfirst is limited to 4.
    +
    R0.14
    Oct 14, 2019
    +Added support for 64-bit LBA and GUID partition table (FF_LBA64)
    +Changed some API functions, f_mkfs and f_fdisk.
    +Fixed f_open cannot find the file with file name in length of FF_MAX_LFN characters.
    +Fixed f_readdir cannot retrieve long file names in length of FF_MAX_LFN - 1 characters.
    +Fixed f_readdir returns file names with wrong case conversion. (appeared at R0.12)
    +Fixed f_mkfs can fail to create exFAT volume in the second partition. (appeared at R0.12)
    +
    +Usage of f_mkfs and f_fdisk is changed and some features are added to these functions.
    +
    R0.13c
    Oct 14, 2018
    +Supported stdint.h for C99 and later. (integer.h was included in ff.h)
    +Fixed reading a directory gets infinite loop when the last directory entry is not empty. (appeared at R0.12)
    +Fixed creating a sub-directory in the fragmented sub-directory on the exFAT volume collapses FAT chain of the parent directory. (appeared at R0.12)
    +Fixed f_getcwd cause output buffer overrun when the buffer has a valid drive number. (appeared at R0.13b)
    +
    +From this revision, FatFs depends on stdint.h in C99 or later.
    +integer.h is removed.
    +
    R0.13b
    Apr 07, 2018
    +Added support for UTF-32 encoding on the API. (FF_LFN_UNICODE = 3)
    +Added support for Unix style volume prefix. (FF_STR_VOLUME_ID = 2)
    +Fixed accesing objects in the exFAT root directory beyond the cluster boundary can fail. (appeared at R0.12c)
    +Fixed f_setlabel does not reject some invalid characters. (appeared at R0.09b)
    +
    +
    R0.13a
    Oct 14, 2017
    +Added support for UTF-8 encoding on the API. (FF_LFN_UNICODE = 2)
    +Added options for file name output buffer. (FF_LFN_BUF, FF_SFN_BUF)
    +Added dynamic memory allocation option for working buffer of f_mkfs and f_fdisk.
    +Fixed f_fdisk and f_mkfs create the partition table with wrong CHS parameters. (appeared at R0.09)
    +Fixed f_unlink can cause lost clusters at fragmented file on the exFAT volume. (appeared at R0.12c)
    +Fixed f_setlabel rejects some valid characters for exFAT volume. (appeared at R0.12)
    +
    +
    R0.13
    May 21, 2017
    +Prefix of configuration item names are changed from "_" to "FF_".
    +Added f_setcp, run-time code page configuration. (FF_CODE_PAGE = 0)
    +Improved cluster allocation time on stretch a deep buried cluster chain.
    +Improved processing time of f_mkdir with large cluster size by using FF_USE_LFN = 3.
    +Improved exFAT NoFatChain flag of the fragmented file to be set after it is truncated and got contiguous.
    +Fixed archive attribute is left not set when a file on the exFAT volume is renamed. (appeared at R0.12)
    +Fixed exFAT FAT entry can be collapsed when write or lseek operation to the existing file is done. (appeared at R0.12c)
    +Fixed creating a file can fail when a new cluster allocation to the exFAT directory occures. (appeared at R0.12c)
    +
    +ASCII only configuration, FF_CODE_PAGE = 1, is removed. Use FF_CODE_PAGE = 437 instead.
    +
    R0.12c
    Mar 04, 2017
    +Improved write throughput at the fragmented file on the exFAT volume.
    +Made memory usage for exFAT be able to be reduced as decreasing _MAX_LFN.
    +Fixed successive f_getfree can return wrong count on the FAT12/16 volume. (appeared at R0.12)
    +Fixed configuration option _VOLUMES cannot be set 10. (appeared at R0.10c)
    +
    +
    R0.12b
    Sep 4, 2016
    +Made f_rename be able to rename objects with the same name but case.
    +Fixed an error in the case conversion teble of code page 866. (ff.c)
    +Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
    +Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
    +Fixed f_mkfs creating exFAT volume with too small cluster size can collapse unallocated memory. (appeared at R0.12a)
    +Fixed wrong object name can be returned when read directory at Unicode cfg. (appeared at R0.12)
    +Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12)
    +Fixed some internal errors in f_expand and f_lseek. (appeared at R0.12)
    +
    +
    R0.12a
    Jul 10, 2016
    +Added support for creating exFAT volume with some changes of f_mkfs.
    +Added a file open method FA_OPEN_APPEND.
    +f_forward is available regardless of _FS_TINY.
    +Fixed f_mkfs creates broken volume. (appeared at R0.12)
    +Fixed wrong memory read in create_name. (appeared at R0.12)
    +Fixed compilation fails at some configurations, _USE_FASTSEEK and _USE_FORWARD.
    +
    +Usage of f_mkfs is changed.
    +
    R0.12
    Apr 12, 2016
    +Added support for exFAT file system. (_FS_EXFAT)
    +Added f_expand. (_USE_EXPAND)
    +Changed some members in FINFO and behavior of f_readdir.
    +Added a configuration option _USE_CHMOD.
    +Fixed errors in the case conversion teble of Unicode (cc*.c).
    +
    +Usage and members of FINFO sructure used in f_readdir is changed.
    +Dot entries in the sub-directory are never appear in f_readdir.
    +".." does not work as path name in exFAT volume.
    +f_getcwd does not work in exFAT volume.
    +Many members in FIL and DIR structure are changed.
    +To use f_chmod, _USE_CHMOD needs to be set.
    +_WORD_ACCESS is removed from the configuration options.
    +
    R0.11a
    Sep 5, 2015
    +Fixed wrong media change can lead a deadlock at thread-safe configuration.
    +Added code page 771, 860, 861, 863, 864, 865 and 869. (_CODE_PAGE)
    +Fixed errors in the case conversion teble of code page 437 and 850 (ff.c).
    +Fixed errors in the case conversion teble of Unicode (cc*.c).
    +
    +Removed some code pages actually not exist on the standard systems. (_CODE_PAGE)
    +
    R0.11
    Feb 9, 2015
    +Added f_findfirst and f_findnext. (_USE_FIND)
    +Fixed f_unlink does not remove cluster chain of the file. (appeared at R0.10c)
    +Fixed _FS_NORTC option does not work properly. (appeared at R0.10c)
    +
    +
    R0.10c
    Nov 9, 2014
    +Added a configuration option for the platforms without RTC. (_FS_NORTC)
    +Fixed volume label created by Mac OS X cannot be retrieved with f_getlabel. (appeared at R0.09b)
    +Fixed a potential problem of FAT access that can appear on disk error.
    +Fixed null pointer dereference on attempting to delete the root direcotry. (appeared at R0.08)
    +
    +
    R0.10b
    May 19, 2014
    +Fixed a hard error in the disk I/O layer can collapse the directory entry.
    +Fixed LFN entry is not deleted on delete/rename an object with its lossy converted SFN. (appeared at R0.07)
    +
    +
    R0.10a
    Jan 15, 2014
    +Added arbitrary strings as drive number in the path name. (_STR_VOLUME_ID)
    +Added an option for minimum sector size. (_MIN_SS)
    +2nd argument of f_rename can have a drive number and it will be ignored.
    +Fixed f_mount with forced mount fails when drive number is larger than 0. (appeared at R0.10)
    +Fixed f_close invalidates the file object without volume lock.
    +Fixed volume lock is left acquired after return from f_closedir. (appeared at R0.10)
    +Fixed creation of a directory entry with LFN fails on too many SFN collisions. (appeared at R0.07)
    +
    +
    R0.10
    Oct 2, 2013
    +Added an option for character encoding on the file. (_STRF_ENCODE)
    +Added f_closedir.
    +Added forced full FAT scan option for f_getfree. (_FS_NOFSINFO)
    +Added forced mount option with changes of f_mount.
    +Improved behavior of volume auto detection.
    +Improved write throughput of f_puts and f_printf.
    +Changed argument of f_chdrive, f_mkfs, disk_read and disk_write.
    +Fixed f_write can be truncated when the file size is close to 4 GB.
    +Fixed f_open, f_mkdir and f_setlabel can return incorrect result code on error.
    +
    +
    R0.09b
    Jan 24, 2013
    +Added f_getlabel and f_setlabel. (_USE_LABEL)
    +
    +
    R0.09a
    Aug 27, 2012
    +Fixed assertion failure due to OS/2 EA on FAT12/16 volume.
    +Changed file functions reject null object pointer to avoid crash.
    +Changed option name _FS_SHARE to _FS_LOCK.
    +
    +
    R0.09
    Sep 6, 2011
    +f_mkfs supports multiple partition on a physical drive.
    +Added f_fdisk. (_MULTI_PARTITION = 2)
    +
    +
    R0.08b
    Jan 15, 2011
    +Fast seek function is also applied to f_read and f_write.
    +f_lseek reports required table size on creating CLMP.
    +Extended format syntax of f_printf.
    +Ignores duplicated directory separators in given path names.
    +
    +
    R0.08a
    Aug 16, 2010
    +Added f_getcwd. (_FS_RPATH = 2)
    +Added sector erase function. (_USE_ERASE)
    +Moved file lock semaphore table from fs object to the bss.
    +Fixed f_mkdir creates wrong directory on non-LFN cfg when the given name contains ';'.
    +Fixed f_mkfs creates wrong FAT32 volume.
    +
    +
    R0.08
    May 15, 2010
    +Added an option to _USE_LFN
    +Added support of file lock. (_FS_SHARE)
    +Added fast seek function. (_USE_FASTSEEK)
    +Changed a type name on the API, XCHAR to TCHAR.
    +Changed member, fname, in the FILINFO on Unicode cfg.
    +String functions support UTF-8 encoding files on Unicode cfg.
    +
    +
    R0.07e
    Nov 3, 2009
    +Separated out configuration options from ff.h to ffconf.h.
    +Added a configuration option, _LFN_UNICODE.
    +Fixed f_unlink fails to remove a sub-dir on _FS_RPATH.
    +Fixed name matching error on the 13 char boundary.
    +Changed f_readdir to return the SFN with always upper case on non-LFN cfg.
    +
    +
    R0.07c
    Jan 21, 2009
    +Fixed f_unlink may return FR_OK on error.
    +Fixed wrong cache control in f_lseek.
    +Added support of relative path.
    +Added f_chdir.
    +Added f_chdrive.
    +Added proper case conversion to extended characters.
    +
    +
    R0.07a
    Apr 14, 2009
    +Separated out OS dependent code on re-entrant configuration.
    +Added multiple sector size support.
    +
    +
    R0.07
    Apr 1, 2009
    +Merged Tiny-FatFs into FatFs as a buffer configuration option.
    +Added support for long file extension.
    +Added multiple code page support.
    +Added re-entrancy for multitask operation.
    +Added auto cluster size selection to f_mkfs.
    +Added rewind option to f_readdir.
    +Changed result code of critical errors.
    +Renamed string functions to avoid name collision.
    +
    +
    R0.06
    Apr 1, 2008
    +Added f_forward. (Tiny-FatFs)
    +Added string functions: f_gets, f_putc, f_puts and f_printf.
    +Improved performance of f_lseek on moving to the same or following cluster.
    +
    +
    R0.05a
    Feb 3, 2008
    +Added f_truncate.
    +Added f_utime.
    +Fixed off by one error at FAT sub-type determination.
    +Fixed btr in f_read can be mistruncated.
    +Fixed cached sector is left not flushed when create and close without write.
    +
    +
    R0.05
    Aug 26, 2007
    +Changed arguments of f_read, f_write.
    +Changed arguments of f_mkfs. (FatFs)
    +Fixed f_mkfs on FAT32 creates incorrect FSInfo. (FatFs)
    +Fixed f_mkdir on FAT32 creates broken directory. (FatFs)
    +
    +
    R0.04b
    May 5, 2007
    +Added _USE_NTFLAG option.
    +Added support for FSInfo in FAT32 volume.
    +Fixed some problems corresponds to FAT32. (Tiny-FatFs)
    +Fixed DBCS name can result FR_INVALID_NAME.
    +Fixed short seek (<= csize) collapses the file object.
    +
    +
    R0.04a
    Apr 1, 2007
    +Supported multiple partitions on a plysical drive. (FatFs)
    +Added minimization level 3.
    +Added a capability of extending file size to f_lseek.
    +Fixed an endian sensitive code in f_mkfs. (FatFs)
    +Fixed a problem corresponds to FAT32 support. (Tiny-FatFs)
    +
    +
    R0.04
    Feb 4, 2007
    +Supported multiple drive system. (FatFs)
    +Changed some APIs for multiple drive system.
    +Added f_mkfs. (FatFs)
    +Added _USE_FAT32 option. (Tiny-FatFs)
    +
    +
    R0.03a
    Dec 11, 2006
    +Improved cluster scan algolithm to write files fast.
    +Fixed f_mkdir creates broken directory on FAT32.
    +
    +
    R0.03
    Sep 22, 2006
    +Added f_rename. +Changed option _FS_MINIMUM to _FS_MINIMIZE.
    +
    +
    R0.02a
    Jun 10, 2006
    +Added a configuration option _FS_MINIMUM.
    +
    +
    R0.02
    Jun 01, 2006
    +Added FAT12.
    +Removed unbuffered mode.
    +Fixed a problem on small (<32M) patition.
    +
    +
    R0.01
    Apr 29, 2006
    +First release.
    +
    +
    + + diff --git a/source/Module/FatFS/ff15.zip b/source/Module/FatFS/ff15.zip new file mode 100644 index 0000000000000000000000000000000000000000..b68391fee9a01898bf3f6db152bd69d4aac1d3e9 GIT binary patch literal 2379894 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�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%0DwH!7r~+2>VUJG{13u*KKo zRYo2HIhhLQjo!{*DC3Z>&=%!m@|P(X=U{2@cM3?GL${Dqsb9rZO%V#ngLpi>3!`Hm zxRiBYAx(UniUs!Rk`zxyz@MerKoT12bb+hK>*7_9pN-bf>sgOB`4xG-$CC-9=aE(B;pGWeb zxn{t-yD~`{BVgNVRNPj!wPR}M?uE0KeFVUc;T@5yHP0DJ|K33)8&&cV%eQ`eN6z)m zP`Ur`+;Nxb$W(N8pj2-&+mmJ0}cy*H4y>j0m~%#%8l| zBlg8O8hOO=AGnAlS|6poYY%zKqCdpev3HqqgTXM@gG_vt?9Ug@e?uC`RrB)}6Cl4? z0QlKGs9$KI7y@_pHYXcHqB-WJ*DIWvdik`JOasU0YQGW32Xz|_Wh)nGdqv500)(WY zbe(mz#s@Praq_=I_pmynbddjmgFdB#Z{+Ihr_Ezx?ttBCa@ecxq*A3S%JpE7twJD*Y``vIwLE^`%5DDg`akFZlOYu)Hw>aH%IkCGg}_ zq+K!4@dTcPVF*v+;$+WQMU(NQKMavYP`17?6j}*n`1H9z-*J^x$_z4ON1d+Zj+n~< zhG3vgJjoM7%HEa+m-fM>Cr;D6{D1iX*1CzF}o)gA{{n+H1G z_W@5w5})-8mU>=r56M~o>_inf-uc;%^N0tpxaMr|({maIyi?<>u#LbBSoSfnLN3|$U!Ed- zQkt38lMdzY9IW%i(yFkIRxN>0+WF7|wJcw{{7$!0dnwe5F3##qNhvI~2sg|AF<_Eh z>CZ##7ajDPF>)xZg;1ni&$|vMQ0v5B?uGn<@!(@Fl8I3fxj6sN3LnS(u+n%r&|kSmybWW;~S<5l>mRF znFm&|Hb%NS4mW?`Jio=yXz8XSmLYa%)De~#^AbYo$H{h19ran&GxPRR%(C1ayOEC| z9QVt9dbIzZUBxp_gi^vdZS2fIO$@#*X7KYjOp?{wcC71Pg1gB@n^*vCieFI+w7<{> zBB&(eq@y=F&ZudZkU-V}7BmOoTAL%y4dhNdB!Teg`eD-yNCFzTz){iZGQzh-#s`ba znwYd-K(C+380wtne3A5XW2w(GI76Iv#1{sB3qk`}Jx!B;zL)?Dagc@%$QwCiY4ww1 z`3MZ7y&fo)Sve8|D+XH(q5;k@Rh$^O5U7L>x6&i+=sxbBr!+V-7?i1JC3`v3MdOCv zxYI{p%}K`YE3mHt=p(|z@=;zdx{(_XZGJ(SU&q#)_HkU^i%{f2l;kNK9%cc+83&JQ zd?%^X;_{8b70#tM_z~9)JaB`rRZN@LQsgrnUda=LrICannWpbz5D9W6wy7YiwZdzL zyrK=96nnKS?8?YnehtXqSv*+c#b#{KWdmd{lX;-8)Qgz>cLQhd1X@@H$}M0-A*wB6 z_!Skbb?Z`-(0reMZBYwy!njLv-TjsP5C**Fb29#wE7Q0w(rHF*tCxazsY;Ip(Z7r< z4XOalnt_OKp#L5UtNqN?C@{`&jRD&t-~|6Kw2Y&(mA$L^{~QZ*wS0c8OQC${D>9eU zVo2Fab0omyuB*}QXxHKm-L6QQ{itnVYotshuQ3lb>Ra>+dpBL)Bppvm9N;deDVUq8 z>k9bHu-|we9e#ZMB;-uLNPkx(b-%y4KRL_MvKxK9yxDMKxMG}&Azi=ZnmJrCUeY~3 zpd8g=NPoJUjbF%g2{@m6B;j*TQ7A39Gk9MzERV3EJD96>h>FAjd)^%tv7A9FrT>~Z zFxlowAf+eS>_CTZ zv^{|mV^t|S*A}jem^yq^3H6p{$6HHFYQQHS8h3X->RBO<<3vB@Z?dDIZ~PfU$%i7N zy3^}SDQ#8~0>KpqQ`Ldg=?vrwzFNV&U??*T(u&l3;5a1#Mw;#hS+#IezaR^!MJkKT zOVIB}(*LLoGZxNaXkQw%z=E5LJ^Z=;5dbdG|G(^TYHcsltChm;RDptM|~qI=WEtfIN?o~ zV0%;$St5qqNK|Cx%%Ca}&%J9JNndY%zGOBBkeC)$W8P9okKiVMBs9O_jXN=O+2=-3 z$Fptt48zt4H95&Mk}Wkbc{IS#Mv|$(qKAxFQvKV25{rmW451O6tc0bG8VFxdx8W(N zRrMsNRR@?t;zEPKyvUFN`-20LWwwHEElpRMOk|5S)hkblW^C{nBN?XwNI2*-h8hbA z65U4ZU|0aeH1RKOr1edsiaPc^a0I5nJ!=rJUuEwAZvl8@FcpdwPC5OE7MZ#3q~rjB zveyt^z4-&Oe;x)d_f6QHGYZ4bvMNeGIe1F^h?VBeJQtX}3KU!l75bRQYBT&ID!qD^ zq=2Fy#)Q?xf<@WUEsHT8Dkt22>04z|afVG-e&OJBudlw0!Jj_ga5qI7r0>I~q<|Pk z&D@CXI7N_8I1mrvpvO5o&a=NTtfo+a ze)C(lImi%zp0mLKyO{k};m%Gs+<~qThkh1waz-yRRjoXw#2y!KHEfPH#a@n?bx7pN zeLAh2gZhYpy*?Q?*D$y7vZo+Pypw@XvCLPgkI9D8Ruyj{LMaePB-^n58|o1#5lxF0 z*-C3j@hh@cDWrm;yW2C!jVlflD^z@jm{HSZ&Iq?d6dT=J#v&bUGxbhg8qE+U6YTjA zt_iYP@1~q5JseuJGVxaXOLVbUt z!2<=ETmz4kroq>jU1H6`zLE%(VAm14E~!uI@=`Hi-DZt<@`VJ{RE-Ec@y;7|W97*C zmmUpbfSQw3M(dk;vu$AqGf+FAw7eSupuqcU*9Z?;ROK@7Pw-rSko{R2A zijeWBXpn*A=O^4q?!AE($k;0I<(pKa!IUTo_i_aylDvgH;Yz@R{C;hA)!&dBhLJ6# z60MqRQ=sD^g4ROR?y-`AJ=sa8t=45|;H`R};fP^uzCEYBstEo)D#Y( zty?g9*IWLrZv}`fr0R07#@Fn>N;bs8uRjF# z5Ee9-+j5Qkje0Ts4zS*f$Q;CCTz?;hcFr{taQ;I2+Yr$r6Dr)7kLs^r9VR$>c&NIk3o=tb@?X41j%!c7O6KfbG`M^55H^ikvoO5w`%$ac)#I*svYA0 zD*C(m7E-kSXWgAOPXtb69cK(1j_GK`JCclTKR9<&x4{qW`qr0)1J^3@%K}R*dFrAW zVrbWt4Ns9^MB{iFvmcqTp3wZwB;QSnyqy+T`?H;c8w}fxc|!M+Da(BA@6kl?FGe&` zx8axpQ;Ivg!;D!LkCN!j;Jlga?3}3@HcmAo=V3@ke)^rQ6lh(MmeZ23km($TZa4}! zEc*JUREnh&DW5ku8<~&P0pYp97-rZ{W6h9T5#s>pi6PgfSdD$S2W;XML=Bx4Je-w_s9_=tw9(Q$&_9;PswoS9iw|PovQ$Vgh>!=XLEhx@S0yY$5`v+lSY~>= z`tTJPM#Gx!r>d;Vd&-&BPW<&XTsFt|k!qg&O=uEKLX^Q8R#|VnY@t;?Lx~1(V0eg^>}H!AE|{6c*3j zPe~9RiGga_#$qwDmbxRp-_CsK)e{%i#b%agod{CM3!F-YEObmEAPu<_bgIdg;?~Lu zW7L^|GcJW~c@J}Q(uzo@6*n}>% z@)j${jZnm`;a4@9^wBu!SY6Gbt_HZjl(8)zMy$`D`9lS8cDp0~@fTpM&o-LQt10BA z{1Gf5;2u#28L~e9Jx~ssZztX@ikQ<4b$G-!ptlY}+u!o?H)PJ+yrbeao>Eyj+u8e@T~OG zewTGklJI7eZ(H*gpD?XoeT@)7*yQ+lfe4Aoa?QoD))0{8o_Clh38yXwrR<%s|?5bzDc`kLR8 zPP`*1Z^@nNt#{x8OFwP`p>2ucA!+c9D88kov2OQV_I@*JfEen&#UPk->!$-rQGBLV?f zOdL6gpCe}1d-x{BT0jG98G9Nd?p=Bg&xPq#=-Jy1Evu&Ka=7Hi3$k)3Vs!>#OHkP9 zRsMnVIzK6&0z$$=z|Z#jN>`pjgc;yv7ILp);fS89{0#vJ^A!NXykp+-tyH?J4{RH} zgYz9uQDj)Vt2py#LIKk`q#1G`GR2TT(~)^Ks3xu4yKvno14F3X%{qt=M+oJyr@4}} z{Vd@PUEdwVg@?Xl6i&iTud{jzg+N%D-H3ObW&8)VRl0Mn?51xwvk??FhLzx^H}bVCZE1SKQveP_J8RI6aIMm z$=GLX8?U^ruZ7K@`!mtCoZU63Iy8NbzNXSa*(&LF9w+%?Y`KGc#HB2tOQz_@fz%{f zWjB4q$SVh>5n|^txD2I#uE4YNhk5jQsQtf_x>}$9NM8E{gbrm%Nj0 zzvwUCTD@AffPzUbiJAqLbq^sdSSczT(+;g98^AAH6#F>pCoNSe6J+GRL@-5;9Up1M zt%?FJG#R<}AF&h3wMmvSbjJ=zRT>TaGr1^Q``;KwHrV|NKmVXqg)&w8Jos3XRqSiW z6Z6w5ub|~c?j9>x`hb@jtI!!$34U9HJJgUjFY=m_}Rl{D34v$@W%Ao~U)YN;d z**Qo#7cI>#!(p{HhiTauiorp7bloNKhQ9_N=!Y%UZB8s-z|OPSqEwKeaXY2Ng^L%? z#^UXc*p*z)ld_^ap$m6JxDz)LubdS*R)B31Di%KUyZr@EwQaatuE9I}Rz0$iqxiozTP~<1o$~q>n4gP(MfN9QH z^=V7u)>{cXoaO#I5UTy7NB|bC`Ed$a^7xw>?UjK&H z{9oy%{?GJ^$^EbN%J@fm-Q^U$qTG5uZ*00Sy50=k*w?=}3kD~|DE?><_^{)_4qSfx z{6h%QE2s;%IqY_QmV2FGPT*O&G+fu)w|?o}h1jE8`#Btvew;D{{_C zgIqD1TrsPomOuj_z0{e4U=nWfG7M6*b47np7^jk)k@~@;`DXtV{=pzg-49_hGe(yr zHMJxlxuD4OJ2W-3^+g?T4Uk^r^PY&ll%+O(zaac-?>qr3E4^VyvehK_JR7f8)3!tX15?`2-ngidt>B6x!@_))@p*r_9%5 z`F8uYhYBJ4xZ%mw_Waxd*_Ikocuy<3XWXqDzaY%uO;7hPwK4>x7k7I}h3n4EGs;DV zafI(o}Oet$Uu(`OJ+6{?XoO8q=bv3?{M@7jDtx!ce^OCo} z1(*~}yu?-=%`y+qEShA(1XKy877=Om6DqE*%nwxplleC}&U8kVMJMS*q!`6hpvqCB z=qA16G}|_bt^7m0deL9-P^ZnaZDSG%^hH&;Q=PlPP{+a0Z2j6PUou~L+tHs&Yze_X z{Gr;O0kLL@4^h2_r!Z%qN!TPtCtH3Rwtwpkh&4isGSu=kLaC)T zmJCom(%n(1E6DYQxudXW)9S0dWhN>G2rA@i@iO5`Obm8pOC?=v$#Qd`BH>bRR{G{n z{KTp(1V6}9Kw7351Rtb-H^yofh+w%Z9L3Nz=~`hvVk>}dgre7#A%f=5TtbJ_Te$u~ z1O!UpU@Sxei1y{~aMq8?q|(PjYXJkk*z{s8Jr~(`X-hT&-SPvz@)Ly8^c1c~P7izw z51~qVc$`%A&h5E- zTl3Z$n<|10d#i%gXdDxZvQzPSl$MkSoFkHTop}Ita_Gd}lQY}DA@Wl|wZL7#Vt{W(GVObGbtm9ny@oJkafxkaix7TpczbV<;1Xpv7IrraR z40`+~Ivn^mZtZ7eH$o1WC)c9Fi%t)mhmZp7kRLR`MP$bV;uH&ucygN1Ox1W)r|{FNn_BF5lA{}e*X@b)Q=ewz-V$_x{@cZa-$V7!%xx+sRn{1yN1JOd={e5B&RH%^)NfM;YFiur*Wh>s)4ieeBv4w6s`E;kCa`~vB3^8*mVs%v zYTm)ZB`iyHZsXSUPx&y$8uN4tbc@X!tR=Uqg8t<&X->4VHq4rqDbwc9Uw@<0C3siv zFw)U6mq%XToYVy&iY*jk{8@&1D}y(OC02Gi z^QAib_2u~FC6J-;Oh(m&fk9(VdI8-*nR?}KPb^?+a1JO4F`iJcy8Gy4{jPHCS~>#T zP{KMFpZJLOadoJyk(vsr_bmhq>68h9%#co+FIt23Vdl^e#b+^*p!6i(yb_VPN+DJnJy-}0W+20$Jm405SZYU#7Zx$jTDKOop_x(?b2CkD4w}^*z)}bWg||}_$ugHD+m zWEpk_p3@&xR>?9e7j57x3O$MZlKDu*zZDxeCw@ert5%Q&fKzFBUT?Ng7 z*Lt*)+8oMDeS<-z>q5r>e6ksl>mKp}kPD#H|-?9e$lHm zSbQ<`xZ>1G9+WK`r}{L0iA9}=IcwThnGmS09W(HfS52Lx9|Ln7QoEDb@<2NU5966o z&`Kf@%_xm=wwd-9GzT(a3~qH>;4fkNn;B0mq>piwxA175Xu{ty(%UXiu+Bc0H4Koz zGM6(GdC*@)R&iFVh_eXOVcq9fr$x~4c|W&@CiWqbMjUb6fH>q&LFO#Wxue#8+(p5m zC!`dHY)3S;rxxr7D#=JkR7`nywnF$}&;X_Xb(>VPQfPy{#8r57)L*0Mx$>=USTtT{uDCMPecGrCdDfsmvf z#t;i}{^@RTjEA^D$~Og{bIaeZ9f2U}#?+UoU>rGyVE?${4QWk-u{eUO?FeJ7@sWkb zh4Sf2`Sy8wQ@gnquI3vO#U#ccV%Y#LEbS1r)0!`k3xjo++oDAHqi}4yObAv035@NM zMG3_^tuK_T1L}Qh)6~_6Kf`Dlj`W0B5(yq3FV=@pl6Pxe0o<*DrpZ(igKT!!1p(r{u*yRDuL{TD#1y3wQN)z{)ttF$4wBaB@7lp6x zFJJcTX90z>TVcw&V3+)k%@sD6Q4yhjWJw`@SNj5vb&{I!w(>-1WJW{=jpp)2Gn!?N zc03gV6|Ph^b3!HS45l+rbswj2w(yP|6I}22KhHaSV!9cZhBV_r&&jUN`;WfvYL8n= zyzh6gOezonjz?4pi%s+T^b1T^g-v$})xC-rw}V1-yjYuF$)Di7Kh(XqH{MJg{FXv) zREfFdc;PB7hZZ?rnK99g9Nu?DK-nORU*OxTUXv{e3?I=Isr%T|d|No^C(jAldiat@ z9B%?q;xue4a|d_#!V?5?{caw|wb&le9`V|#X|q&=G4KWBP>=z01yj?h(pTd|RE(;R z+>Y|vJ3Jkq&*iU&rfXL?CR5~g6NfNs3JP>pAZsIASr|Ljx5W?MlRb_V!YER4E!;qo z&=;NU0l*;<^^CW|r@wX0h$9>m`*ajW!>D~fHE(O^R`BsoyERi!85zx^Wq?vgsU`ZFhF zI@CHyTzoOLcg27A5)PKXn8Q6MXzZWh1UE5#obS6~A?yizIc>e(*kBO3w3wyx5l)0O z3`<>sm6(c`1A>jSVmxsjL?jd&xiyQ%KOP7oNXBp*p-Y1?OHr%_exGtqD;&V@ro^z0 z?t`D^N|*+jyBbSwGF|V0OEX>tlt;(FNn6B7&01Tz@wWSceyB^G-+nr6M}S-WRLFg_ z*UX!D(^LydV+9!7qhrv?lCT$Goy)LG#M4qr-)js=XOj@_{JZ;M7GtyuSsZymbCj)A zYSM%PM2yREkMt#ZCyU2#cAfB+I|cg!Aeo{^C}-JIn%DRi?hEpdHfQml6bC+^z{cus zz`mmF`vxLy1GD&zjCaYZRq-xlptr(#Y3E&IHXwYSu>wM9QAFX@gBoOt6Kdh?|4f*; z;^ET?o>KF*Ux!`W~X#{u99WS7GsK#fOORDi0Lm#K=YZaJe zHHCDxH162hjAK_QEq80j@~deCV%m@*_xRxP zoS^_nA;I{{bS8{1OYXYYGnGP_INj&BZ6U?(;@_NL%uNpATHQ&h=*m+Ku3(xWb(V$cUu1k88kcj-GasjZ)WPox{+pM|3M~Ru_IR; zT}L7}%7ROBZed-i?>5l-&+JR_>qI5O};li7`UYUHX>D*VHpU#qe)|LmWvr{Mf( zhvF&y*XE-QKyUt^rL=!#)xS$=xtf3pQ3Bxk(Ku#O6P&(GJ4x*pAVtB}{777n@|d@lW~mbo7%oe2pEo1@oVEIl6SupY(5H@Q`= zG<=(nE!S`cy(bGKp>(~3TzsvxIj;|bds)ELJcr-ozuk9q$29LX^BM9{t^zHtA>xnn zTjn-F9fnkfABh$QP7!C6$vNMs58{6Dl};@w{YLzG=eT1U1*(1W6EO#R0rjw-;&7n< z)P1vw75V++KH6g(u$MshmoF~!$UP+P4t1USJ(Ha7C|cve&)7ct_MOB|rD6;KGuPE< zE$Fk%>xPKiRV@mPd=K8`U_8v&7`%A7gOT7f)T)T{Z{lN19H0iP+6d~kAuI^ZUIt@a zo)2i$=v@iMWGRJE7*v4}#_(wkbcjGF_l&R^ckI|LwI{6(iw(j+tH%mGLLLKRn^zzd1s?-#o=;fV^QUjq_mh9g* z_be+CWv@RB&|Y~t9bB#j@kmgt=yOmVx`vtZ)~LRJMN;Z<8FA+p%?3> zumOnCa~jOuP1d7Ip@g%|%3$F`OC~1v_6wn(6BWR1dKr86VO{53K!{zAJs~hud=Z`( zPMU)Fk25Al6`eQl5OF)Dw>84=;daXCja}^h#)QUJ9cai3Hu!LJKp6;IF9e~D{ge*T z1oLI%3I^Nf`bZ{%0o_eod@wzQFIpd9eDY@6T&fPxs$Pt(?fPdv3MmzJ_bp}ARM6;a z9Q*#5zucyx92qsJ7>dXakO}s%FpGalOv##kzVydKiN#KMs%nHk(+gUqAIrqp^Exio zHr~yK`g3O{@)I<hH+ zm8rI%4m~oC8ouMJO%ZzT{}Zckj8!(PO@&5oIW79S;$>bUCIOF`8VIF79MYr7NpX%| zfZp*3?lWxgp%|DVibRSzSb&C{n(@mL0LXBA>wa`9J+IHd;-MwTB8RrHDzxVmrLL|TWl`%VHQfSLF&Q4Bfb866 z0`p{%i6-7zmh(jXaj@hJ#hwI|4Q`Ddr75=8*Q%eKy}0Pg(UbKxxpeMU z;REVv()dVkZ&VSc!5OPS(Jn-F@$qZ=8OEuPq=bfdE5zy+RVrhve^={Ef)z|W)*6~@ zg|j50ew&Az+o&+lg20IX{!0ZCP zA8ycYY^acspkemx(c0#r2?2u?h!!$%{)bDL5xe*L&gr0>zK_d6Z_{v{>a|gtj^Reqy$ZN^^B2lopq$$514HPj0_UX z7k14&oJP|KS{2qPs}X6U1Eyd46a=G!LnxE02lO6ltq9t18V_g>$A( zoIR{{%rTRdUtdqM>Z->brUam!?yb)cus2Arb<7L!eWc^%o?W9G)5&MP z{ioC~FHfHa*En3{Nm|u4tU)3G96MgR`=E+9laLhpMPIaMEOti$eJUWL8|@ zHyNwBAUQ+aNzPtui!((z^f8Q>;67QL$9J%j$_cre4fT|gU_Hr&*`LQg1~SeR+vzm) z#L}}vzOgm={+}h0+&@)#&E((-B`-(et0t_+`zW5KpLM!l{&5Gb8c8f~Vj9kT4H$`@ z0TPM-G$=Zo*&EsYFNIl+27s`@f%PvbdcPH;9O{B1p8(S) z%FO(2p=x3psQr+T#Q)G;h?WJj8U4)tsI;ffuegxgx^k`5IPj|gP=0TIEPkdM6S?N@ zfl5USNlSmvdRWAJI&JMYKbc_tEdV^x%<0>eQKURlaF+$*}naw)7X@ zvF#%o(U8zF9-RIJdQ0Pimd4Q?xsE9-2EO#|0Bj80ofOBaeR`Z+NdkJvkxm)SSEmUg znHpyfEnQc~w`;QvQSMN@L5M(CDrx zZjtYY?=8lDH_TEIY{3o|B!{C%1rQYNOkfaB3Elltas6i%E$xoyMcDeJl;D z(PUNRl3fiGx%+K!%F${M=Lu;-SN_GCOq!s@jJ znbi|<`Q(C{kdYD~Zb@`7aWu=Z9Ya)0H6DQ-1=9RLXV7%rZ;`+7}@pBspRI*`$!6ZxK`4^{W zcf0wNnRCDiN-HWTN`=1DdU)UIwV1ir<#oPn+C~IPs-y!VLBTavy$rl-b_hvECbbT) zuoW;XE-Lj4!JwdiJZ7u=aZ?n%!Qb=3_;WW3frNp6JVWgF-ufMO#J$7AB4$vbv1SJuR=$Z-hNtq#}_Y6aNd|Fd)D^6yD3 zRZZDpfeFc9a!(L%7rd;6AQn<=K}KgivZzr(Z!WZ~(izp~@oa6Nx4H`HJJ%&ityBl{ zW%zdW>+1b#CjCXt;cu?5;Pue)_%d-$053j5ClWhW7vB}jQuf2IIK=5+n-~Idws62R5TQ%UHQPmwExm6JES*l#Mcv36?973NoIvtJ zX;OBFDmh_ph@;h{t^qYB&-6VUJauC=_rhk=2;cZ2&KK%|>?WeXN^F90fxog@nzQV~mIAT6GRpc$vS`@kT%PcW?&U)w@h zuEQmXWOlVOL5*fuTB6a8$he5Mwq$TSVUnN)uc%li)kJys-9M2Y)(q?X<~J`0HJ{?c zAa<;tDHKG*nqsYOqEBWa#F}cM1*SSQp{sX&Pdq&`EcgPo(j+3&*sUDC3bH+@SlQhE z=IJMO=;P+=camtbTeqe6z4p|hgIl*)W}9UCc3C8dPhk;YZd``>gVxUmu|+vmf>zc% zbuY8^6l4o;lk)L}jmbl|>f*BYYx3$inHgNj0et8BEz0CoAf>|#E#mk$%o)O+pm8GH zj5oTX_1D8ZCHs0##4qopV~%O^QC9-4`PbR~?~wJnSyP?Dt|i4hWyu;bWH^%kPjbh*p8J($n$k8jTHN@1`+e?wQ&8a z?Z7!ee+A zE2XUBVGc>eBIl)hIDhu|cYHDGA2{-LOyhI7*V0M2P3S8!=vJ3<;OQO(N)O#6&;5?1 z^~Z6U*fxkNVbXu@KX+a-Cb9Y$=GtI-n@k1^lBNu;lq6om7EJ@{bEN;ak3NTi+px`1 z*zYf>Hz^=b=YfxtU#qiWMVm81wU1`7vc#aN*wfY(pOV8d8-+2&Z_`IGFmVN&N<+uq z*()(DJR7zVv+0`Mw&D$c0Fw+fUwLu=fJ+jQIK0XYX9th7B1goeR_{iz^rQ$X!-4ZN zVha#j3&kR~uzBbbzPd)z6@I`*Ml1n*!HD# z8i0NAVR?syNF`;$uAYSn!W@{n+gZK$;5eH1;w<1=2X#lV>(0H&I#RW$U<=!5h-p|E z;?cCt;qhLT#?y~u$d2?7fr(=#%XHQn&y*HMsYA@q*kR^lQZAtAOJSC0B5sU(>Y_b- z`dI^}E)d2+c{uZ{-e&$LxupbNe)9q)^T1he2DI4P5RYJi&%HS6Ae>d1Crp&0O-LlEj3&JG-2%G<)_~!>tZ1S@puldygfisX&G>wfUo*XywXxBkWqHt-mMDbw#vk#gwJEnuq;k6ywhrY-o6a6DRBGPRaC z4*ieaM;wh$jBA`#Ehf(QZ@2j+<#!Pa^5EJpNb8L>V%h$$>@hd_Uq+&mi%*oP9uM`a$I}Y zPAX}-DiB(bq>d-e=nlI!Wh4MvNYj7M2O5fRcR@%cdRDEDy7GFJqkI|BHv zP`Y+gTGNiMRY)s89a!8TJ0_e}jo(o+de}~Stv$(&tDhNkNZhzLtV5ntT*{`D6M6q^ z1S&L%{EpAOIZ&(}zn-B$*7>Hirk=RE|CRPd=jqCsD7~br@*U)~Yd=-qHWgmqOx(`4 z{-L7R_bo6^?|mmDpJe8`VttoJIC2N2JrQm3oV@7v-OTp#4@2pFJE6RL%k`=Pz$Wbm z0F2}QM;izbZ2vHn{!=IIXBD$1vj&Hyq7#TaS)nmHV@odF01rZ{+=>$oc%Nc?f8;m^?`$Ik-1TC?O@=gGjaQz( z{ea9#U3%>}x97;dIx^81E5)7KOr2TDtZJ4c-Hda)@T@aS zWfH=FE0$XJI~H-2@3;c%%Hcsut?Dg4RoA&tM5>8YRegrdb@g}41J^piFRoEaR8dbY z{U9JS^D7_2pRF`+zK)F~poUaWqVOwUcT-eQAy}}J>Ixqqs*e5mhca1F>}mzd6?~Y`NSd(frp@avE-}RL*>f8JkxDSd62MH_f1qpy#n20P zbX`!+)XvUNk{++o!2C{tmq%*%jQ_!$_XWV2!-#dh!y_v%KWu1^ zVz7riSKy3ODy=>2uz3aw!5l9;a}nqb>m}_b@2}wYKj``f?o7jE+t{{kvt!$~ZQJVD zb~?6g+qRu_Z0BZX&RsKiow@%YU)EFg)<)GPtcE*l|5&6*9mw}}tagDY}?x;~}Pgcq{VSL7${ zoTxRo@ydQPQ1ME0Ll5NVj>66hfHytDCKk`JmH1c^G?RExs;!c+XU=_#zJnIv=OL|X zruqv*@2%l)ulU;dN6X=`vWSao=nL(_=H@`?=5{qjOR#eCY6L}RM4j{sO6^sm^ZS=Y zwvFQO`G%s3wTmvg8H^iO$ByuMKdW4eK9^P%1D>ETJNo)ADikVWt?(MFe+Pps6^*X3 zo4b-CsHm0QjS0&^J$i~fT9QKdBK1PR6Z(QIqT8|FzHAgD znG}?{6$=EOCS^W%KT}YmaIt`jKh|lpj#+OUYTJM@Ytn2%2&A>oL#Kyy6rAZ?7_F$% zV2pZz3PjzkPFk1@Ing-)0%GncbxrMBSC~NJT>}o;DB%(PokAV0S=j8HlGC(eZW9~ z##_C{JqzMSM`&~Bvp9DWuNe#=yN3n|_j+k$`LbYm-xIO+7X`T;%7S zFh5?v|2q6Z+ZjVw*vj?$^d2Gnn#ZqByh+=g*xk#E zE!58M #&fUM%bzU;WISN6XqIj1!*jaG1FaO_hwM^36c)~q!%7gR~muP%ml&Q;ux zsc1QtX!YJ@ug?-=EPls@iL4k9Ss4tneWNabz{n^1NW8TFg(1pIpPkacVg@%?{mYr* zvxN2zbebSOv0$rVR)!6|X!f6QsDV={YWp27iLQmiNYHLx=$K@aLNQxZ$A2~ zh3efambrM+IVWR0iB@x>E-$*2daPFiX;93v2y+SmI$s`VJPa0~n3iJE8WhnrbHN)2 zO~I_%Zb@Jzd$0`2wZFJ10Te*jX1ojBqEsj|I>ON#4b;whK9)`K*eh?)zSizMC+>jY*rJm^U94 zft_B?HqB+kj13kq_781ntZtgy$LslNyQts8aIbEbgs6k!!UKa@KppDOL7(KhS3gJV zzpB3-c(eN(s;jhRYwP7|@WkLvF<5;2M)_?2WZ`Bv&gf>k^I3hj+pPn0z|8dR##=^i zHNYmLzlha%O4t*WhI-k`^+6MRf~N_G6;GtS_%8%qyI+EvY)6SEuF3c%NDU32T^cj2 zF(Vk~-r2kOX$W(ehruGc z`)T}kA*bny+SK!X%pH$gru$Y@hT zO;jZIv5USg@v<=i7QUo=UvZz|4BNM{Tmkew+4%JoUAKhilK=|(AYl8(nTz-*^liu< ztB$kw`~>};?N{~rsu&I07wEtH^x99KmU*-Fb@<@{{D0OU{|gUbYGM5^-6C7nCU*Z9 z!k6#-XXx4{x~of^%{8y`mj57-LRg^T)9`6p^8!p7T!OM{lIZVfaZQE^~!>16&(-knp4=*=k z(5hL5RRIrcW4iakm~|lN3qy+)uTMP0V&3J0+$ItyJ(U5db_8Ws=0(TOWFK<=Q6or` zDIi9D2=!wRn+6siuQB!i!0fuj7C)X;kC_5$c$4eXASTw9@|{;UtWrxB^Z_0)VWzkP zkk37wA~40+05}dYo64PosHq8-e7*lsBLj(f$l|ew;(nBaB)zreRq`Jr7VS>Mb8_%6 z4Fu>o@Nj0iQGShdG4w^(jdU zS!nAgU+d%Uq$!||i?ojQ%Q>O?MIWXHD;Z4KS;2`7QH92NW{Ta?v)NyBQAZNpSumfk z|K!It<*xmT#`xPH#VKgJ2uQ3`Z|D7>m+Z;+&n6ma1Peo1H43H9<0XjPzW5a zSQjZRA5+smu4-}i^s|5^N42yzy$C6F8#9p88vMxl#2U1jc0aqWWHYFUFA=wJU*F$ z<*&&^=~^FC^%H*#)?y~Urmu7L%13s_Rd;kPqG1`^ zxo5p2<2ZIr$X!_N&44a|Zsf$tw$#Uhuor1^sdB5>tzN>2c13E|( zayL6?*3yi3QTm09YRnA>=l$V_QHyd4wy^Ozgy1C=;=5GN{QI7Nw<&vn1qCYx`z+U= zaq=IrVL1OA)&HYSS=gG|{gbk+QZx9GSP?#TbH4)?x*NA>)+E|l!)bdA7N>yNup;qV1;9-LAg!<>aW zUk<^_IEDilzE`}lPJT==Unoin`pJkjWmkbjo9c6^wAa1Wr%ZpTb-ocxN)jN=88qcnNFO$mp)GsKHVA4G@S8m|cBWZB!%jD#xnwe# zN1uB?WA(5(eg5&QpBRg1N0^ygWVlEn7Cg)Pus4u{acc5L^<~JjSI#0M?7-2bcm3di z!#nLXy(qJ{Aud$L06se(d`+rZ3*l?P18)v*o0&?(N1gI^(b*1l+?%Q zWZmS~P(D+5xKz`p>41j{cX3=)X?i{t=!z-Ly7^5uT`Q7(QK48yW` z9VPn1wls^oE1C%Ql)Nrc8>*S{l9!j`=K4NdsW6OhETXJ&eB$CmR~C!7;C$T$7HZcWpOh=SzA z!>;|vx2{_zCAz5OjAAzMF$6InhkftJ41=p;^FaEq{$QE!ZD+R0cJBTB@wUT4 zqGFlvQYl6y6}FUtZrM=63`4x)rvs?c-TXJWM(gFDE60``*qP1a7bh@WMkNSq!{qoR zrWN5Vs)Q;2Hoh=Svth=L>Vb3M8$D6CYPIO82VhTu%wVfTCl(5(lPMy>{E`oA)rm#<6MGX{Q4^`XXYA#wHRc$Us4=|F}udmHrxBX*`v+_d<26APN zpw&An>%j>SeUy&$FNU4xNKSb_ZjUPa@Y#~(&?twI{GwAAP1tijs|8oJ$c}&xe|hUW z>62Gf_WD_yEV-nc;9f|#jS(ub#?D_QA|kTe&|xg~QEeiiuazSQFVGyC(aHR(r08>} zW||Zrw6apzv4cUs^@o~-X&Awd>tbE3WGLj9~J~RPa`qf=|9w;3FL|rfUtoLl@&xri# z4_860FTWN0{=|pm{fhqYem#*RDaHTIUVH}x0H6T&UzJ`9&wovo(aH*P8~;*zH#^b! zSxkdMEu@HTk}R|R>*j3Miy_lr1YxTahf-6nR<18tiUx zW@2_fUk)**yF0n?a05>zUTwbR$NSu8ZE;Av=nJ_yQ3=R|m#ipH?md`x&FW}Q1so7pmDW5xwCLo5rY02WHKj5!4^=&O z(38tiQKBa{3cS)?Agt>P#)px$^M@Ijih`&~;0LkibkKSch7A+OsmPWBJl%QU9GnGo z?v{_idhMM%fy+*+T|UaYku(&FnAn;9-#aQLuX<ZHhoiyM)O`% zfLpH=Ly>!mu{%cDasT|r8Lp0aI#NwouuQka-gr|@jjX#zA=vSI3TYMHRLCd@=Wsl2 z2?hmbkRvn(rDbzerQ`($n^Fa|n_n$5`W<`%&!T&x#xtyF!v<{BRk>C9>mgM)I};jw`kZbBO!3{;mKBkt;QI zej7xj(2F=AqLnGH(N#WGiFIm#4lV^j;9u)t_oY%_3?q9|FjsMgi)h@)5K9pGcRYuFrnHK>xaJhv||tGv7}hWFPqWjc#A zgUNH01K-DsA~-KkW->gH1d()FaM0E;MN7YW3?ux(${Y9;znYG+hT;w5%V(~TkNxd- zG-C|i#`W2H^^geDEsLm1dtC8A)63s~Sh80|tfe?HHUjlk$N53PA(c^0**~S-&ia(< zvyR#;T-=9p0mSFG?;-zU}VTP)GS9j2qy}o3S;c3RCo%A5M!pf)_i%~}jj4BCY z_2ybiV8LFLHh`*8j)9il`loA~rq_lLI%sh$%3wRvEmO_8aD6|gMm=58QoAl#>|4Xm zx^NY~P(R|t*Bp_EAV4e*f9hs!8qq!sS;DK?7_%Hvi96;dEzOTuU=OL|0LkZ?ISiPe z1aDv5UmD$I9Q0m==4z`r6@wv<@{zpjY-xxFe9P+#<^fO=w4vdC`Vb%ksVn22cz@l3 zT$na9C&zY0-wD^l3;gC?{{eG2lHMGisNT?i*W?bXi?0g|B)kRXCtV3b$o^q^wx z1P7GiOG&TDaA4F|=zZO`_AJk@0@udclJ8F={Vi@#CS-Uw?_44a%@`JAd41IZf6x4r z$t2??2de~{)7$UH$a;wA=!FbC3#&=1 zVt;B#ZYaY#qPJR|Sw#II{p5W{k-9)o=2D{JI*t?dbf;pL0~?%<=qDiNGq4QFCgu{u z-g4Km1`2XU$I5slOkCsg+=G6US4({U1k7E}Y&&a!8x^G(jDjdM93Cv&ER`V($l|+& z42DD0K5(SsN_Gb1#WuZQJMK3h?}Nto#MhUuCyOdUeoL%Ce|E+JZg99syNvS9el z*k(hjo(0n#k-Babg*0}iZw{P)VOz$^ljE~tLwF|ltHON8o?gyN?qAp34bw6jziRmN zq~AOWogHZ0^NH@L>%n%V(IeS>38!cq5Fkyu^i!+K~Lfp3&JZ805eJ7SSzBR2J1Nr%+8IkQu3>s z#Oe&2PgND4jW$_9h;-9koQm>5@RP|k_-VoiIVWmQNu|A@dn(e-6J)Kd%CusRbF$X<4$ccWTlw=`a=)j~f&u5tTn1i+hO>U-4OD_s zV}Mz-jVr1?3ME)f{dZeen@5;9bJUa5wZeLMTlj$o1rEq5**xGZy}DgVb^vQ75Ykl> z^@4->K=|Q_+)T{3pE~=U($P}i`5C*-nE;_=OjQK5cP}TttPk3FgCFc26Exi7nBIUM z;r&JpZWnp1w{WX0o5CqAA6(9WT$*{I4*S%50+8+W7&Gk7!sq0s$Y+tCPwr93sPeIX zCI@gR*W_kjll1|8`(gmz{^9u1z|_&{F?kCer)ypPm(z&YceB2+vyZwE4(?KUvC|=b zY{jqDvB-!)+_%>q;>>y#ih&E5I!3vtJ=zObw>=csza4T*na(4kc6ZU9Ka0?FT;HNR z7ha-vZ_%FFW9f5$jXh1s>1tQESn!6mmno@$W`;jRPdpI5mPQx9{LA<+gnNJYI!E~6 zPcXX}*o9tcNyh_!eRl5G>v#k}FQcz`(1jG`S_2B?Xn}X6sJ?S*b&QE2JO=grkE%8gVJ<7??`| z;>kfhS3C+k)|5{)^BM4E&{HV%lgm_Ey&cq&2rtCm z!awgk;6k70dW0LS7OB{AQebhrT=GYdMT4Q8mI%b?Sxh054x{Mj$ zp2mgO^!%LRi$tQ-p!&N!OJMl(8VDEox->u!%3&dbQ@J|Pk{!T zuotLJzmbOZ=TMN>QwV-;Bqnts^w)qh*KbhR(PH0cQ^o1|lR{3|b6v}BDzBfsJF4`i zDhjg@0oBq*?sm1ybzm0@B0ITbbq`omS#!{I8VWe*nC>E)Y+~>{CL1&w?`2E|b*#PL z83JS^!&4;i+fgHn_>aTr0}_{yYhQT$ehl7#GE&aVy=mzpmo#={zV)!(Ha_INW6&=) z_HSGd7SOY)YH6JA@ygUs&pG(-FB3eOkVBnZFSYTppQS#sMw09-C|~h^4jczq)E&_I z=VI}1p4!loyuh;HtWR-NAlin7?o-tfhr_|ArC1!H7va>wbYQK1S2IBIGHK*i<$(%n zB#ReIx01hcT0V;{G(1oJZi08ku!jNL>U;TYWW(ArA(L$AJ3G{+*3t0c#)NBMXkfek zDG!}tTf`{xAo#9^NPSe<6GANZ^~U2oDIa3TKSnJyFCW&NEz?@(+hmq8!zCu^Whv8W zjs;4MXlYfdMT%Mb2ILO^nklq8v5Rt0k!7sqTOvD#WJyXeU`O!+fD5wR| z9OQAS2}LXI_TazAjbJiFl4u&;#8;tB7?#+C!{O7tLd~Pdl6>CUXTjKt4*XM0k8Cu_ z5#|aSsUKe@&Q(ZFNUE?a1HP}AEw#)zCy6?v_7=TTQEgJjA<9vF>id9g_95+9a;7(L zg^Ke&KTq_QbX|4Xt5YrguB~4WG{JKu-Mp()2jixhVk()0$K4Uyg}wt=ZV)>!l_93YA|BD9uBRQxq2k z4)mtP9&LikRv5LtM`pVO2EO-7Vk|y(IJwTcj!trxA7Sby(aAM0&mB94R3z+n!6B^N z`Q2}Clbri0Mho!i1{k!7_;70Qv3(oq8a&=S^5E0iAG7`kvO2pD+6m2bA1!;o| z=%NRemwS<_71{^R$5{eVVoJz=ggK_1i|D2{=t0Np!i#^{My`#)A~R7OImVFcSm721 zCWdQJ2Bl}e)fXgdE2vz`y&s&Fy3O-&;rc#tLi~Kc!0_;b!aG;uhQpjYF2M3_AifyN zOD^Bc)wwR5Z*mRY%JGVXG?(proUwJ8Yw}Dq7l6$#okocEAEb-T@lQ|lr70pZZjwlv??{?qQ3EjX&HL#zCoxF@>Jup-X$8L`Vw3UO>V2jg z?x8UZiZrDl`O+gvpuyyIMlRYeDlbz0+TPq1FIU(WO#w+(2x3HtdVs3@9j|t=i^K~^ zwKk79gIOu1jFP_GMWY0$E3oc5>2KgII-188G`Ad>x{+7w?Hx8unIIE*6*u>0ef4ye z;W^yCg6nm6^ab$P)qJW<>OmD*I%L9v_Ak*rrh?zyI2>@pZ~`i|yQ(E&kNf+wmHqjw z;F-#pO2c;ME8roC5{!?Y+IeCjgs=YLz+%~fn%U1ns`?R$t)pE%q?kRfz;>E&oP)HJ z++4UkLS()bUsvOBC(ctMHyVojQD7a3tvR)hqf6;$+_>eBf3%1(&U+TNvdvPr5KBoO zb1S{842`^cPu6!LoEflpbnx50Fr5wUL>iv8w0D3(t*C}M4dE0ExHUt+7!6{)Nc{+__hbJ5-^M&=M;BWo1Lyytg;X{ie;9n9=csRkf$qkfFneS^W2^+` z7-5<8(|t*2CW(@PfUzQwOdt(_#(ZBN2SgVMV{%W#T6Qn{Cw)LLdawoGw^ydIA_rmOBEf&GLVU6 zz0&^3=@}s8-w}5rr-W{Zg~6|SdHMQbo-cM2ctSOLPQlub^D;qrhqh>*P(4%=pJ;ca zs7NZS<@L|QUMa@azff}u$BP=vP!He8?#zqi?aOCLTdA(kVlH@WD8$0Sy`PgP=I*q~vkj9(o3x3_gK%ioukDP3<{xpA z0I6v(mMq%%FKt`wxUmKRq}El(?>6j>rGoI1G)f2vY(<1dpOhbNs_A~&D%XmQQd60n zvMS3{xMXnktIZKc=A7#z7fEsJx7ZI^!s!SHGC`;kia+7M0a{q+Ga!XDxchQR!bAG< z@Bw3x6+lB2y4EiU4)sTllM#?%1ia!_Sw$ZLeaVu2_s(9Z>}(lT?*>{kPtW*zSxLIS zg9)d4wCi@nQ$AC*&pB;bQ8+iLk*O+!%STcrp%#5l7KYhc7H`P3LFsAY@*N^o4+k*3AJx zF$WAX{vwPtYxoIa?n{t(!ztg5p~)e+-IXZ!lzP1NOoFLD>v(qH^MR^VMav>PaQC!Q zctY?yR0&|Zp2Rw>(~q_o?@}qY0xpW-)RgmE?cVA;u0nWoaex-oBd$l2cC$N}-U)Rc zJIt|>Aicq=rIA6db(DMap*t1UOn(^;#?S+}13LG~_(sM%d@MiXeyK2d73!bxyzYG@ zHbL!LKw6gCDjbf=et)~9S?kZ{r(`ZDI$jdRA7a3sZqV@NNs|@*Gv&aK(O+~QV;Ma& zSBYUpeQ6-ZEK4@V{)&XZ@F8uH(N$p`1F@3KO>rR}*yg{%)-pLc_zUY|nL7NX7I<}y z4Z`Bn72=a7U8Umw_hd1$#&T141y=;}9~8GB-1LLB?%sgU^RvGHs6h=sLK%>W1`)X* zwO{i`?f>6viY~U+7PeOZ($G|8{&Bmdi$3nVw>))=;MamJoQN9QZquP?v`t%mf`}#x z5UnC3a)dJJ`1Zq!o4Cf8`Q=3sd1Ao`n_URAP{+>e9EC>~`01~7+1Zb;dlDSNlApE3 zSmLP9K|8+9hnk-R@idN64GW#Gs9V#9GdtcVmB-(S7&Xp>w)R!jIcK~}i??*!ZNp(8 z@p8bSW6S*ztUaI$Aei}h?-hH01DF*RnajM!tj2JXnmPgs*3@j;`0}hp$}`Rc3huY% zrZY*PKdDwF$}6ic75a{#%hNE}WzGnun)HExELp9tv*m`by=Tw2kF2RlJ~A3R6fY|r zL@X5~bCo=^qOa1f#ytrM;;Ie6-DZK<78tU(OQKF)hSK<10ByTlVWL?191uXLQI0?( z^$`NLTs3{h5#A|@KcS^|Q#r6OkMcRqUpkxXfc`CPKodpzHJ1^0tm7bMe*=^fB62(9 zHN1TIJiXvn{mUK_P&XL0N{=N4<%2aFu=*_MFceYCGfiUeB1|+@YA9-y16Xi$sOL~B zulMKYRYaHB;n1EFjpg3I_HmiiG^~=MY(sBJ9j!*~N)nXiV$_hj9P1dpPG6YAMp92> z?VrdaQf3GMBorB(!&`15-SBzSwHv2(U~d1&{(dyNvp<+JfCn9=5+97NQ*Z!iq9||4 z&^Ksa%%p}}QYWk;psz>F2k!{XWXd09iS-W5LWn+3FyTIl<4Yt;wU+8HoEP6gn;n~M zPjescOR%~27qq3c0Y(#9xZ7(D7B*-^#K`-hm{K@jwAl#`yAHg26a5nSS z%Lb4)1@vugl?r0#1^>y(%_6nSGd59ZppZDwKjq6Auu+-HcgB$oY_K*7&45qbXc#|K zT^q1RdONdb=aCZED#f4d@8ttuZ`AD>G(al6XO|3AaKxKBi+AIL!=D}*a9#V^bNkuC zudL^toY{AX2U&1Z*HO1dk_|fL8jCEn!Yw}>7#;7%pg$6WtgG|&z#otkiQ*p=wP)Mp8+ zqpo>Run{F>=0TNsU0{1!;8fh3`!oV9Bt;pkYIHq|xUrm4C=bd8lJ6S0)OWtW^gf;6dqI%3yGrnB~GDktFLGLbLh z@Usj)a%Z=GvXr_pi3Gz3l1|0ltQ$f7z)lNDpbS$NIvujCO z7V7Stw{Ra!zWd3^24;+%bk`l99L<~47%_%yKMdISTvnIQv*wz=#a1ckZdFfB)mq4~ zjmZdWGwt2FHClf+RL4`>|DICE54w5MxgSQV5&%_s`I?Rjg+Xe$vW$--O9H)S$_wxV zv7X_JJS@+>Q6eXW7k7-6g88=nH4p5D4*mrAinz&&kR|Lt?s`&*OJ5y)AW8aja=yTB zSkr5VjyPK^x(>62mdYCIwNJfF?~3?Yg)lsFyXzSjSDI zrFC5X=jd{gp;Sgtuark3bb@hQh`+vqG~rPkdZa0W!+B(qon}Z5B|Du4ERNML{5G!D z;aAL2remPZFQb_@5aN+dTMne|#db_YYN6DTEo$~|v8y-Ik6&3Ia8LW7xIn~Vo@HuJ zUJrftELkuYN-u;`)c2mwY6+w?{{FdiB2ds!6stmV=7e-$_~?$<&LtMV%TE%1R{~P+w}!uyBm~0p^C~qDQWFu(l;Q^? zszL`biIehbkfj$(mX}Fp ze)ChmUx>go< zc#}B@xKXO@Zx)BVQ&H}e)M&cxx<8Spr&J(=0jhu<+dqvp;FL_$P)&s(KU=9rQCEat zdd4g<|M`1CrHZ^E#H!U~zP4<+?u2iZUKg=;vTbhenYi7GX0HRp%OSLKR~&Px>9fLQ z6%a(MzkummT_Wigpq02Cs=z}v0Wb82XGYsf+l(5?3V%I``y;mEU?Nrk^dp(mF* ziAy==7lLXbV{cE~sj6$3u}zrZ(CG;uV`vF~)gwjS+}WNy zf(svQ?h;a9wg@E(&%2a)ztYt(>R9&;Z{!Cb+^pL*abh&Dr{}1~rYhmnFUOw^V)=gm z7))bVkmHl7w-NB8CHi&=qjjyR*~Shxtna0&R7;{PyJU$WrjJS~njY9Zco8Eoxdj8| zy8&ZfGQJoSf5bd>&ee%fa^2CyP)L6y-Vk#F;1pJK8LZqOuXE9y*p{5^W|$DyD=B#+?oC2|6mJ$dgPu z=S#}_s@vbk|96*zt~XPP*`u-D_~~+kKNRf$c2>GMTKr$I^CRvNvHjCo3GPO%Vv|&B zL62V!7Uu}4d<7w4;Ivd$9;Y!A2;Z>1t_$(qZRF*qp+827kF>$;dwiL$QSvEtearjy zwn*+L3Qv6Z@B>LZ$@^3=zCQPOVZ0P(plvl*dO{5RaN_hWq@TnvY+E*#pM<2!MKEOg zi!>rL<*|p177Rl`x1O)ppW+}g=r{ojzd$G&{8scS>iE@e^rqRecXf-w6rE5nnIOb3 z+_HOnBOO*-NOTp8`kWmTwLkGXp_o{?0HfvWmaocp&mt%gvI%B@3|kRrA;A`5ocU9r z5@csBgI89#O>UTiQXY3t@le5(C1GEndB^P9gGXg`fw%M?3QQ4yH*V`*o0g7D# zyF?C_%?ugRG+~Tkqm(+)sCySvMBfX*=YxJ9_p^JuZMrzbQzuMjy}F*pD&V0#_8w{1 zXX`O`6V~Nwx&=m2NhWYd``r5eRYhnWPOQYH%^M`WY9Wg<)QBQ+PlPsa8kj7jvT|TJ zllvp4;Bs{Gd<}sKBZgjB#i&=LQ;sIUHnyI}bD^7Xe!>sk1w}u~H*ni?DB(!cP;VOj z2my=C@eNi-I6B7ts}0Bz5zT*@;!Y5|K0b?eE$2i+QNyobj_Imx2BiLKcK_ZUhc%sP zBawYZ1Lx!~2UZef`n7fWT*k~nc;0ZXq)^St{VfM)xQ!5MiIX(d6{`L(r3Ad!d4!+P zkQAftyGsO*C259}tfLi~XUON(+K>TW80Qcy$^`d zNaa(cdl=)2$AL>C5VQ<_{s)XB8iK52h0ES_a0OdAv5&KPK6$B&`ejDD*w|21Ih5{^ z!cx_@`J;@AGNr5Y*&9xx=KC~jDT9=Tt-|#Rgb3~er~~08wA%rlxoR|Pyv#!yCcq~= zsJ{T5zZ%mSVkR2WnsC-f!4uaG%-o8`)kX&a^{_D_-ARqe@!ld`s)(vG-5W6usa%1- z#oC}Gof^H?a(jCzA3_#p8orDjWuv`VY1XVXX&&`IZ)D>wp?4Dk3mA-j7 zORSe=Ik0#i9E8NQreU zIH1j|E99bqG5I3a%A%5zGiN7HvN6XZjy( zQ#-{D>9wyO+V&cLghCAF57~&BJu){Bd6!7rP%DiIGJs`y)M<|=(gW5IKY&3VveeT6kers=v+joyTr*=J`GvCQrZ=C2L?B6o0f$8NWOPx zl}2te>)i@*+$)Y@wtTNQ#P=;h?!JMMewaj4EH(^P#+d|LSS$2f@xqDi*5pi(4b@KV z`q25~=$(m5_o#QuiCpVu4m9S=ADFtXV8tV4`UHJ%%8VgwVG6~6^}8C>7ojYeHYcPA z)>02&1>f*AdDAxLP{Vd#(RQW8PzU+15##(INpj!@Zdq%+8eZ#Ge26POZ%sfAC$&pB z=d=5PgJ6zqP^3k2`PzrdS`X9JBx9XY7r&x*3JXj0{tmsdqd8=~9w#Tc5= zZoKWdWwXbrtUodEv4=Zd^X%}f4D@Aws}I5l*0#3Z|zey@ty+D-NA9{SC%F$lpv>gxNPq)7n%9UL$s2*?Y$Qsyd=|8T?{SN z$b>eQf(m>%X`8vYw#0L;Jmk7bYU@raqtl^%ein-Utewy9me%dxu;Nd7LvB&244>Rn zk_Jg(^LJr(KpqFh?*S1uox&avk!z~=@%U8G?D^8MIcNW5?)CNZ&~}NhW}%ROSCJlq zM%Vjdz{s;2^+ZpHZJLKxzoiq88`ncl$#e}cA2b0|vPxXo`p`|b=2Nth^rIY+_p2;o zP@-5S`OqonuUMarM(KK&nVEhIaq>{ioC-|0Mfz9Y*|~mwj4DF$Yu1zwGyTZT2JMV9 z4IbU|(GEQp2y^ zLRB(`GIwYK`ccriBtFdO34^X=LfPRXt>;?}#C4PLr$#H({g?)#L2#XUUrLpps{83S zKb&WUQoP6oj$yA^1?B|3e}7N^@qC0SgT{P+_`}YhYmWc*`7r%F9~B$BbxxEo-Lmh! z%K7%+sr_U&_-HOl&k3koRoN8pi;?+ps{^F$6t0?eG2gy3b&0zGTfExDfU@2>C!M@_ z&TrpFuraYC9Uwr>%4GrT)HG2HY~|9Zqe1;Kfbd=ngy25F3OQ11%t0!ME* zA?M#iA%ulS`9)Qe<@$;kuQceh?V}TqsCMM$%vzUy4FAIM!PN;~!QEx5!D-7s0F7K& z51D=&5sQV(JnhqwCsbCr%lEvoU;%SxtCh$l@AP-tRp>TE(sM6)Sz@k!1w_<6xE~0h zI{+;hZ#a^y!TwW+&HdZkHD+_}k&lbVt)9u;Z47t5O@H*3U3wwrNssSV*!Sq4En$?rgDJ+7XqS} zPwbpLk8j+P^)0v(-bn;+#8oJt6iU<}zeAoPD+k*vWtkXE?orZ+)`OQ-9U}3Qq2#&~=NfHv1-)BC0@)_^Cy^`mpS^ zpBs?3V~Q>SSG&nY)_X_eD`5&DiDN= zO7E9X#~l3>-BU<7idfR=#*K`)?%d-#EF&!aopW=kjW1irwTN9o`hdt@FVzX!+c6_@ zj=W3y3qC@mtTHoJ?o`p85z@}T!qSRlm1Xa;V#V$pulykn>I6!?aZ;+ROR3tE1cJO~ zC+CF+!*-ygRr@GoDOGYE1m#Saw4%w3Yam~LmE0HGBs2Rn>!K-hNU`*(6udDYphM{B zw9jJcH|)>|hZI^!o__h{LriUR6775ikkT~IU1~7~@cK4CE&WWdm+srQZ>0M0x81(r(T)qjGF$(*wzX337?7raq+^V1zu^($^P>Xx=-krKtRFJ zpG7ipN|A^yOlY$WEo_WDr+EWt<2QC@e&6 zkTwBJJBFzQ;yQ^7OFEeLOMJplRr2IP2TPC^Ri%KO%MybICZb#f?5@sjLwAK^WD~r{ zhj zM!68xh~ZcSPFHxOS>MR-Unq*mHVi1+s0pN1rHJ?%G|e;0XG6hoet~C-hSf-(tt5uQa ztbNLdQ)ipDyn{XoDZz0t*U52 zdT2OkG0PvMfASOgAdJSU z?a4BjS$rFAK;;jq!7tcL5L}k`l*ZbfQJmio&2BQIkT>a{2g^MJQ#LZmHK(9m;}x&D zI(r;D43g_6Rr!NOcI6d;J#WyuYf=#bWXJ8KM|KkqPv~*CxLjK$`uhO$Jhg-)NUXKj zIi>58>9}hnqop@c|4P`;;o} z)2NLpbYp9{R}XEjy0%$VBwFZ8WThUJ!bNVa{MafM-2)#55cb2;yldc@@!Ni!bQ?cCz z2hxC2g4!KQM0BA63?!tSp&l80VFSQytb4O4zB#etMyr>mkVR(6eSq;g^Rt2c`TV&9 zVKO(m&|0FVOd5(0%W$KepFSCkj&0$^bgX%M;5$%RGEc~bs`sVY<(OB4cY;gMys6J% z&yRPXYeU8i?YQ2pQ1v*s?YZqOdwZ4>uxyb9D|}xLf*OaKY*R;65%tNvWtJy*%hMwN zhq7}3lI;2ReA}M3ZQGc(ZQDI<+wN&k+qP|YPrKT-ZEyenFW$!6-T&LzjmV6fH>&Q9 ztg5U}W}frC=Lj97H{$I-5zAUKE_OcLqm>bYMTm6dWbit%w#Nc{UB8R1>091= zDXkHNdWrTc=)*Z2cJ}RKN8X^;;A$p>OBkG9YP^)J*O2Q5x+m=*$UJz27`%bDOOv5Y)^b6k!vpf(o`AY3W5%*JvF_U!<|PHI7ux z`%}isgV%ck5Vdo8V8cpQmd|0@ie_iVf04$wsC<1;WB|n|3Zyjfa~_(~=FYwXjV#P+b>QK^~p&L=^l+^vCP1hW6Hf zzO(TDY2K@*Wl(iEzMZ2Pn3It=x8H7UH~ghTK(^Lu7?TiFF|afIVAYsH-D#X&=9sK@ z<e`=F%mW5#@HknQT(-Lm~98D zPPdWme;^AH{u!p1>aq-Gf z(|)o8`5}ie8dtY&y6n*4 z7RoD9C2i-|NLJ$o0|7(azHj{6nJn>bfn{5k{>{OdYse0NZiOO>mR;7(3i)UkxkXhEK`~<$gq!WBuGD$gZZ=${;Fj_ z$Qz-XKQ!DFp1HvB8;LlTFddDcrFDVZgX5fPJ~rV}1k-55MNs{b2jfDnBbAYt>4Jb! z1wQe_(p$niI=$|2h4uHGS=@a3WkU*$AP+1DTG~FD(oG$ev&|$M`1F*V=f~xk!_{uR zpSQ!pNr(+>8@XmPy)jv}Qgiq^)OcV7{91TX zB$WB;b6A~Bts^CWBhPc5zk0;!j?my~^A{I#=eP;liTrG2I{HC!CaLs})16hzU`5~5 zA*d|<{h-*PgurmheWcA;AoYFuvB}ABEu%V|j5dzIXwk1}hS;rC_aye2B=Is!ySU+_ z(YYsDgs$lv0^d)#rEpapmaS}e?1@hjflksSI7lM7YSssr`2@W4Y{gNg-MS)?v3PxTHY_grq{uT|_Fz0{D;^YQ z6IECuP9GF$6<~Iif$wJ3jZ)0wRxxrK4FO6RcVwz5N6RZrMTWvknB1f*Hd64Dh(rng z?An$KqP28M0g~tw{iF;Cxn@j)9#pI57Rc$EZLd4HeDkhNr9tzUKmr(`FDS*PA&hDgPn#Y)0VV@u5wSY!X}A2>C@*{)jj$v z^b75rNl|(wJ9{0%YE52Se`2QERvo>p&U%fZ&TN&Mr=KBvA4B?j8bNT1izIu{xNSvtRIFJ$Ff*E5!9YuIZk? zstuCu20{)-ZGDHo33_tHR_btOiSC9OD(BcKJ`nJFxaE)`uNyS&p+-i<(9<#}EEN>K zub#s1SEMR{&nR#Jc0-~MMenc6$n2i@yenkGjt=aQw-IAfhZkFjnyU{jH}+D!{md+! z4tef(CvwH>XG=^KlDx0}Q`?c*`#U}B@TJVb^;*cKaI7!a2oE)DUiq4;al-If%0ntLXX4Y3tyeO0YpJfoo=3^A+P zH>M3b7={?zxk!~IOw8h)P4JqM;;|0N8tfe$aybsM-4?^&{qB@W(6MF(+WdO2#js1v zzmlA7r>+Krxemj*=McH(99xUkyR}Nny-r7^6;dv?LfhEZtpO&S#32$LFQN8`akwnP z8NCU{YuFA84>BGtcA|Rl(X0`Y_Ht(F4nK?d=+?=wzy3>%pnp~XGO-w>sSZ^r-siA&?8~YCb0*%Bx2RKjj9S{84&!4y6n7$ zF5gJ!U7sSjLeG`d_5S@sJ0#0>!d|Y}jlZ_u`o-s&zsnEgPcmgWZ{z`@4BIhC3e*Yq zJiM8~%%l%}U96qs-|IK}k$VL#F;ee-ATtAE#uYl3k_ChKWq)@;1025fkz z@vRG{(`>NyywOv}m>#Q4m2BA=!^>Qp;icjv=1DfK-dFvBdc8zRY&57F#KX`GOV)EY zYDLUR%ruAQ0*e^UP0}DwK$j)T(7|$sy3`fbYYZ5AforU_S7)cqe#C41JOo0} zB$LaU7AR^m-sO-|mK$4W3sfCT+#lBbAg^s z(|hM!$W#mKiygG36_U1d$NcD4yER$%p0ls6(4bD=X$6G%G^AwMU04!A%Rm$@thHom zu7{@Zn)X>Z2;zTkFAx~To*EH^HrEQNz)$bsJ9rD052;C|4{@-Sh096bdOmAEfw{1; ziSii-4fpVdMGy9U2S=_eB9e9YRe04xENK`^7n4Ko`}MyX7G2ZRS{%QJ;XhG{|Lrhj z|6Yiy%-Vh1rG3PA2`)>y$ymW3GhLOWPgJUcsKx*;<)|TpROm!P&7k=|zPi2kfS`@f zid_*|P~vNRV&kUUBwKu5u?seA+1qXH1IajP!`s~gX&^R5OkVa(vT2UxH8@Q{vI){p z+d#i8kW?ES2Im>aNFdCWM0w9-HkYhu%ATVmJloJ5xQe=}te9e>Kt9~d1)0jck!gLn z%xOUiRtP^*pEiLG<25v1`7I`n#-wf;B?wWx`v@n^jT-|2v!N9o@lN1loXfyEXi(rS zsTfG+AYfeWw75kiPXV+Wz+vg!QHGuUUAgtttA7rl2w46cMC{%L&x*b5$K7$Vw=_mY zi`(X=H|4pw;;Phye>t+;v!mkNyq6K83j`o!`}th>wLhPBRI3@V<7~0HIPg$ioSHUh zXyuyqFH+$;#Pnbh<8NkOjj}?e!b{B^X_lf0m)sg|zg*^C#o%sry|CAAS0#}LWCfhX z@uw?f%Nx@(9xq$)6{2DP*!8ENJ>@N=o8PoWmpLE~(bLo_;7^e#Hdp#7nk{QRiZxGH z4v98)caL0Klbhg?D_E~!$bn12b&VQ($86Nd2%`eDLn>cVKY!9lyCIWdAkB4*O}*UM zQAed5gk?cf{a|y8F;!ZWE4_$umw0E}t5W&Wz}EU(3%gPqlC3uap%Ovh{2sW4?WktG zxbBEE=3((Yz1s@(p6_VU?JCR%*7J+f-SZp=p~UoP@r6o0i*!Rh??DI~cw|~SMK-Dt zmiIFZlOfyYL><3P=B?#Im|^>Cmap(WIin=kTk-1M#W!S&0cyISwBII_KumQ>$I2&c zo-NN8=s(9O5YRuUEb>=y4E@IBKlT3{qh?I>_IBnG3UcD`FxcPHJ|K8W2@xeAAmG#Q zwjJ2F(HsaHP1foAz^EXjBKm!lm6f%yu<-Wwj*gB7`T|N%PcJDcsjsi^>gpO98JU@x z+1S`PIXSt$zW)09(#gz?|Goy=UPANx9teZ~RN!P9gl`ou*t?{NkcxZeMdqXV)~3V8#4E;6_A5IfwWK*(AT5T0uwe5z`V zI#k5@JEAJOn!T)V0TB-8h6jL}Rc#G|}T2kqrVm`tWw7$Y0lW<#Qs=Bg7((iQUp z)$-R7)V|8@`E#F28Lj^HxJBHDkG$vQxiiJ9f2gE>4GlPPQHsET0P(%ah?(s!?4N55 z9jmg(JnGhRmRD@Dt&iG3U0{c1U2I)?j5cKoxzzFnz10wUqak-9}?s)$yC?X zmC_iVddiczzlXVhEcCpNFRbBLU8T44+vD#9ZT6}_*{vQmIwbH&>v$Y^HuwTU>oPsW zteMGzLhVYkw$xX3#u_>)VKDF~GQhHPd%#j)F4%=31XWj@w$=qx~3(UYz z%!m9~|B+%r|7W|>l13!PmW}+Nm2ZkqNWgyNQ)gN`bQ9o|amn}~P|+sqmYTk#ci60H zWe*5zM?hUt4sg<)V@fK;ODfe}Et~GhqZX3&^@4UrEGj-6vP)VQe7#U;D-+(=(#3m; zv-5l;dLnheDC1iKW?xb*c#N_>OCQutE+$ZX*a!Glc+j+VM#8va+^&erX&-Jt>dK*)S?-38v&DC8 z1Bx;S29{i)m&{;)#pY{d(8>H%tem{p?w1+1+%?;@NU5);uJZy|rJD6|JwEiQ3*wMYgMxRA}BT3(e(iDW!B+c{S!J(4xsxVacp?3Fj2|7fU@5;+(FZYv5k*9PO z5KpBzQXqmChvLF31-PO7uP5Qb>G}@@JAVv{y5@fh^Svb_GebTLt7Q^Xg0qe4fX=&O z?)h)U?nc)Uwk%+ZDu7s3*S29FGH2tiJP&-7ajEyZ%;hEd9}>liJ1Bi2 zR-oOAXKXLFwcvR*da+J z=(fO#ZyO|-((ikZ@krxY^Pe#O?%WjaPkEKJuJOU1&Q5O9crlQ-(frWYF|iHQXFb!f zoRqP>LLXFxG^It5Bj@&52#`Ocg;1#7*j?K*KfIj0qPCQhML)iSl>Qb4#=oEdocG8{ zZKywW{MlK4?Sn-*LOB7%C#Akumm}`&eEtL`J+tQ=yl47m78o&Eiy{>O_qy!i zd^BhIPw1bHis-_gnq4M+cT!B5{TG<< z1y7ppdKKz;hHQ74W;kGz=UMbra8u)6b~1#)s-+|(!qJOf;r#YpFBWK1gdH4w(vIH& zY-V6<4}We0?#(Y^>`4T-qm2g%mCdR$#+W}E_cCG?)f%jWzh2YT8aQ&}+!o$V$Gkay zdwEiPeUjc0QT}+o%D>gM1YmdOAN-nLfmvgBA3(JHK>iDGQ_V@yu_;p5{5x;MS!Zu` zC;{VC20^?jiktwj@`622pZ$J+opx5YHc6S^jHI{*FmB0E6tT^V{Er{ct3FD^c4gg3 z#yg^vPQ~^#G~ypv*~NypbG;HAPwlU${}p!s?-~E0=kJ2}t!etF{u{=#{9hRF_Akcs z|HUW#|785m&d%A{+4tI9M3^VyzhOLR$bT|k)^VN@bwodt(U!k-&JeVsAG+TjXchb{ z1^z7)s2^HNUa+OIKRZp%?l;Ly04N}n&}!9k?r@Ljr2tHs_s2@Y!STm@nuu@w;Yap9 zg{BMKael4^Bn+}*2T4ACng3YNL;3N|U|}xXwA5tZ8$Lc99l?$de)b6}Z-=dUkr@XM z4IpvEiGiIimbtw|^7`=A-_Q-m!|7?_5=nlrWVIrzC{>9}@zAEO$!N!BA*rE*3tH}l zDuWfmXY=~Z_o(@%XT&XTUV4EdfZdp*LMLH`O9q zCgRiz*&g21zBR757NA<2N)^Ra2p-D#@G8hJnloq>{IPrCW?nOBMHKq3(H`6Gl&a807ECG@6 zQPt&C!+z>is&!JDt`#J`7$iEbG$Wh=!kPU$mDr(**ez!& zXb3lFO@l(lg?%<6n^_?{?-8W%1c+6GFz@xBQrLWU?!f`1A8d*lh3pi>pVsGD{mS&{LAN>XH+l{`I!6oYiFjT3G5oK(Q@UllCVoIXv4O zwIg|W|8e&rdP_)9W8DmSr37HGKcH*CeXC(^So@hSV~} zNLTi_?8Tq(RXpS-9%3uEdz|euFh~Qxr-FY65U77`?qTtU0AMtuiz< z+eP81 zDkTMiB4PqUs0{_dMM&_cwFBdjaG2!pjJw^I9@m!92<7#$wULrgu9K8uRbg&rsg=|A zX#n2~Rh#-n5v`2`14ts-)=;GU>7~}O!6+U}?U!Ec2qqjRukoo&PCChYxXqj5i|*N$ z#=yzt$7@pelY0swv{NOO2{fF$KJMQ9jO&rFFu-oxb{h$V&|aDvu^V5y=fzcEB5|{! zdGE_=w5SqA0nazkov*vto!nZ+87ilI5KeN4m)?q+6Eo2uCYQ0AKkNek(5#0=R#3L8239f8N|uRc*WD8H~2mn!hiD$xfZv@ z3$i6;S%f3q3UAVlOxEH`C&uxz&VC_hqinLIn+*R@&UDB#V$Z;mke!#%;17wM0)!$! z>={(Gy%uVo)(2_*8D&pM9Kvajt5${R9Vz6LT^Ymb2V~QHj>#p9Ekh;#-Ll>cnS=^0 zymY=~$$m)D87k#(Xq1~Ob+s~+>3jvIn9{xD8kbSxOES0jU@TS5re6}HZc!@mEAv~< zLv41UQ%Ui!8SOnr7&a0~{nYTx8+`_d7o=P(Qj_@zm+Y9#CFJm?EP1^({OoXU6a<9y zf}&SQgFp*%26tnxLbDI%k-U$-LV9 z691sYy_~?E0sde%_5Q)Jq^(@H81D%#mUselG{A`==1NNp$JXcYGsfb>-zJ=NR|OmYgPqwN zSW-K!h^x$o=V^(Jms!0+>+kub8e=c!Mi$S~!5XCTL2xdV0abhjZ)vkD#|zxaFGBW0 zdm1oK%#t)?IemBrl4HXTGLXL~yL`!G;JNxO$2<`{ubNS&np8S(ujy9?A6ltZi6wHc zPzw3@YIyPox|WC9vk#2NEEq`&6t-EkDjbvP>RvBYb7iUezUXlQBA7YPCoto_%0W4$ z=T&dJ<%|p96tM_PqLIjscogNa!{IV5qh;Z3JO0PH`bRefxfJqrB>k$2AB$RWk=k|P z-E$VCby4ob2nX>)z}xzV>4dRUcfL^xmD=AS<^G12_hSiD#k6 zE!8r!0YufJb?=;kR&CjsB)ty0(!wLQKz^UiGoURv(e(ytUXU=G143aFjSdE+v+v!= zIT^WK#O0QGTHNWsjIB?VLB}7ov%azpF79{%Xx@;|$zZ$(ieD?5`G|9TE*H_e!k9@J z=o$HtLQ9KApfnI(j#S;2o)rP(@7G534b)n_f)jR8&2JhWhRVM!pNhbDD$fF3b%GK* z%O4){qL;b9Bj`I7w2Q>`Z~LKo;Ztyw{akS4A?RCl{bkx7!1m&5142vfXG3BF@q4BU zN>|dh3KJZ56_JMyBiHD75yo>M|Nil6XXJ6B&X#9}e8N~NvB07N$-Bj2StyZ; zn8%Zb*%P`};)TsdQ?R=51->N^E_D>Qxuwe(RiEL9f^Z$rLl&P#;s^0V8@}k70wZ8s z4mTZRqtoXABPb?%zTy65y5OAQ20W~ zybzzt1rAZ0$%9fo!l_HSh#dR7UJItKB;#RHM0|?fjsF0Nph+3mN{4X!!}_Hl|Hq$z zG5;tiLH|l`uM16w+|}-uyvEp4&_PRU#>_6zO>gnowdK1UY8tN>&F@e}MB3?I_GmMp7Q2J7I-J9!RCl!0kK0)vkFJy`5x>77$>+N=pDGChFnzFi1z z$}1GnajWV8MFxlRV_-2JN6lYbU6aT`G6m!3k~*seZEQSe=LVYi!mbR=asldt9|;y-mOI zOdq{ZHN4+=P2FW)y=*vgo08P|Jh=k-gF*Q8g9C+!_)}x5AeC9*P9W?2ro_OZ5xh{z zM&+y}l!lZRI*nZx^RMky=L>Un0NO4`2O6{nx&|lObpy(W2l{ghxh+8t1oQ0Oey1qZ z-#fNBiT&BV~mGUQCfQL;sA`dd+LfWDJD2#YJqTLhV_$RVe{!y zo}`0DdaN9hCp|NVu{`QD;XGscWGEL7EJr5=Zi7hcxsn1;RD=^0vkF#1`|oG!3)gW9 ziY^Lj@6*bur8EQ{+^ECQ&_R>)UsJEsP8+o`z7A|vcd@uvaVfApwth+SqA{WS?#0)? z=I@uyX*F-$jrA)&=o1c|>jU_}8bkNZO(=habDFCz!q&M;ZuL7wk*Ix zHZrfUJFin!XvtdRvBkMdI;-~lcz$1H&=cVWj{~f50)8<6pe%RXy%tYKignHP(v0`P za*%@cgTqTt!NDKZFnc@#mr&6)nJ3sBE9GG|uvG2CXc+K1s%+s;zo3QjdA!BDhT1)y z{(!q&Oz2FS!-Dz{^DAnznsZ`jZ2QugH{p;E5B9RbLn12zQ4)1kSkX1pDmesi)9j$ zz#VMWISG6;9n&@hK9Lh9WfSn$w#;L2L95HDEK7?1kONI^FH$0c`C(P7~`+3EB-ef|njb-JP9W zRC;=}@8*)BpS#Ky^Fc*BC_2Jh;%AAxi_4p7ap5!6RpXCyYekjp{k5Yow6Z6dY5wkJ z+o9+Q8>~UJS17tHra{)IT>_M9CsV*kz1dbm8ybC}Leu8{#xHP$@1O)084nK1=AZ`V1cMDP|Az}PTfj6-ri$^vPAzs%J; zRS8&!gfEy0dfz{($xXoG$t!tnd$6n_G&vDva98_Y@vg37<7}Y*m6oxZ81{^u!^i@i zDg&?Gf3K4UwhfxDEw%d^=>kLy5A@^AmW1ui4zq8Dh^I$$8#3H(aizV3k154qZq!& z^abj6@CnTxRaSP+7y_2eW0}8BrZ4{NGt}ToQ>se7cQR-A=%0G&pz5Y{mLap74`#!u zs~rO}zf3?{*z~Y_A%?xWJ`x4}ksdLLCA??ErO9l#?u%=o92Vw-ylg{PHL1hIjXpQ> z%Sly8y!D;ci5XrEpWp+_AXzMIoL|StF(0J?1Cr25;reP#e#c-zMflOg8e*xCBg8QkHUKO!Uwe(?Vt8<`H6--y4kdjg9_rlR8tHsb#5sy5(hg7_O8zSO0oJd{D2}Ze@>mQMO=9 zYkQItUJC!%KbxUif0N5Y|D@QE{1XA@6(=EBQON=$$w2EEdkq3JmfVER0{hvVfwbk* zldc_)rYzqK7IlT||2R5=59hMJw52^}2Ow)5-ki(tfBJr0c{I;^Ow^m{PWQ+UC#8#VUp znY21?y?}lB4qOiw4`|UX!W$Mts0bEu>os^(&y>Hti(se3)>bfz6;nsDUHgjjK1$Ma zAZk5;b8Nk#Qnyfj(d0FCnca1i z?R9l@_mSx(aOB;6w8oiMF_QHMV^q1_V80q9N9LPdP zHv-oNrdf0aL{RuLWg5fKu@Yl@KNQ4&Ss3WIJ06hQzRE5t5K(tN&{xT*rDhwJ5%1`3>Z)E`xmV%-pk+e*qQW+uvze&RiE`qs%fgmmVgh@Tb z1AE>33R+=S)!Rbeij)fG)=mb1ok3pTH{hY92Fa)N6V+($Hy8gEyPfLLTnfK+G-G#J zNiu%+k&}~CYfpc&I-9;Fc~mYG5+(yKB zYBPdB2Sm#t4yEvqII8x^5Gg`K)GW|+=_3Um&bh$u8MK{tGe5M(7K{?U`sQl8nNM2$ z!ndwT%yTa8O?4R6;aJrhf$j=pUB>qdp+$Hh-mIMk&(lPfkniA;&BPBIR&O61T=OMb zZ=P|t)x%=XJwkiU8P4*GT4W1rWU}L%FQ-2nAoTp%cF&DxI8-bT%#Z) zrHvX-Fu7aITm78hgF_;^lFlskc)$M<>Kq8($?FFjsf-x)J)056*rfemzz;LJ6zpK? zUZ8)EGNu6!Njr@~;QGsu1G)xr-Dr!Dt_D-fo}_O!9DB_OqBpAw+ z1na2VlzS?o3~R-BBdIUx6n|@_kUjSOdVX&~aqFRTG{$FC{|LgnT#O9L)FsAc8DFd4 z2}lzQ_|uvKRL+g+Lj2qb29ZB4o3qsd+37_Q#ClEchtk#Apf+lnmW!{Q5`{Lvv@cb*8oVpUQU0ME^+{oQ-KoPWdXT2;HoK%Qwr{|OIR}7P zbSz}-LV~gZaN;hOnYF37m*`Z z7U#-!@zU2>6f@ku=hgPzK!H^oYQvcxk!gnU4WNFPvQ%=%i)|t=oSueG?cPtTWd)VM$f=VDmN*SxUu9gJ< zf~kAEIV50hM)a89z0UPl19u&(Uv$w)feBJ6N`6C~2qti?(&(;zzQXtLRbT)f39&A)@!;NZE*w+Cx&!ap(@(>^x`R>G3r z$^hY1h__qhDU(uTo-MM{d>7a2*^2d`=XNW|NGu= zmRKc1K^F)p*W}-NaX9{A@_ze)w)WTDaZHD`eIzPFpSF&$gIi<=dg|^Fv_j@Cl1>!b z)9$5GWoyS-;^o_l*Vm;}*4K6?v2{G#>*QZ^@(2aBq+t;f(V&2UzN8n*G8j-$0yt1m z=@<~mE@SGy>kuEHXZh502+CYy-H2U+wW!KSK>=m4qJGR`!FtLWzACEz0XM#|pg(|o zZh<{%3=koP;h{jC48TAKa$rD(-?<7jMUfzeqm{&zWH#ovTVo0iTUV;`jqqcCeXu&8 z$gux3!m%dvuf$p)zqU7ze(&-VGSAh5pk#;p6LxaxeDgc*s( z_b2ie6FBRm6j+}4Gp=Xpo!x7u(NHrQX#y0=uh-Hw-*g`wb29j2`poZZuS;cHOUxTf z{X^i_r+$Zt+6^Ukw@Xgdgwe9XK**{bFo6 z{GGgqsDek}NLtg^@1;!$4DOTG&|d88xC~>fEWxYFjJhE|3r!X%R$HzL_Tu6uU;QsB0d~=6Co_O=0;q5 z1+w!;Elf3tsx|FXm4T`QL&U)hpsvFmLsO`SaI`3E=z1Bd^2}`7>TW+;*|9k~o_}z# zTWi9*9)H!bgH-p-pDN|gd{u{)lV>h!DWBFPFho63eLhhUq=mO<@<{5f>_1iT8^k6# zf`4vXy8I#_NlxEHkQQl)4&DX=&xw2|z*ISc@YTPl?!v9HrJW6P=;SC3#;q!0CNC8I zrPP(JtUDJPFKEEeVj;g*Oq)eCW~ zxiqXGb|kmN5El0n)I{xc@%Jes3+-@|bGCO);xy~G3k)mC#5V;Ve#tu5&!76h~kZYn~?Y1P{VpyoFJMNn;2yD)-kDRg;{X{wx%e z7~7HXy_s@EVk#1W&(N3`|IaWRV5-f9GC1=zL9M-ZYPs#Uw7}9?(5;}U3`%)*(%KNW zey2XKS0T)B{q)^kLv!%#;CMg^iqY&w8XEsGN&()GLoGJP+O;+%w)T!^5fi42ahYlCX=Wfv6D2HBkks0hI!xWf{UHzSQWRA6>#P8cr3;Wu$CkT(N$V#8MTLLosbdD>B>F^BkP zqH=buLdG~RPDc8+EQG=QIfLxM?^sn=SS<`UwwZ_fVxSoYT4L7Ik^Z0j3eEjNGI43I z^c7DX&p6NbCEa6ZjjOu4Ek*6W2V#dEQpdPC+<8VLy||Voj9chk+UJ4$C^$!isAdM9 zcvr+;cFh71J01qE!mDAU7mhMU{$Lc<`(pcgcr;j67SDHFORM8bFK5DPDW07zCS7Az+JT=X&x~ z4ED=<_K$>$&!3ZZgamrqImpWJc`bo}qa{@UDF9-d3*HE=dJ73n?!9o8DM@p6 zVi=rma+&6?!ctA<``SONYl5BU@}hwnU_^P=tcqXbfd{-;GnTPPXr|LxlY=^e=gM;s zGH5nG-fe@2g1J2X!)XmA7VU_1C+!T$eoy0WcYs=Ll|4bF58g7(i>cy8XMV9fbWB*G zXg8%Dij|CvD_OGwhwcAd<~|R=qF4IVX86LywP1|(0|zGVLRp`Pe%n~zn|G3-8f=RV zH2rDH2kkziGAEUNl;+(~`AJP{vd0MKeeLy`XsPnVmLk&dgC4`%so!E)!YcjS^O74A zCl#*e(Car>c9KXzDub<~-hbX{?**E*OhN6EwFgbpJf6=xtHtyni1jvM!ja*D6~x zJ~)vCqZhpk7M@gVXXbIbF1?x2IC?qT9@vvmj_R%W>K+2gx&Eng~d{Zygi8z<7HD6jEWdE}hx?6@0>KvWe45 zsO~1EPHlNsm)2Lms`tsg$3YU+-#8SHg;YYMrW7Xxk_VtA5nJLE`7EoRp43knDIF|{ zow1z3*jCOp(}&PuTWF`xoI5LaG!c!h+RokDN?XjpWUgajKeka;I^L(b*=3+>)x7+| zF*W#zZw#X?>DU=XRKdH3mU zZ_#`s7@c`WTfGA}+x0p7j6%yg`6~vrbt2Jndi#~oYi>d*>W(@up!E?()Cl^*${m0h z5*$X({iP5T0s)joJ+UG48H9-|o!6Sz%e*I27)}8Q4AmtsNi2SY)_1;wPD4oF+voAK`YoM`Ui!AMiJ;nBJ#df6Ps-o4w z^!;wYFj*z$U}!u?>G9O>1n#|}K_j6Rwu%kp(#3X3a^sm?gt{!`CgJn|aY0u7JFekj z8H^F=P|v&d+nK)Rn<98#30Zz|ou^p*QX0JuIYeN)E-wgiAHoyyy4^)Sk zC)I$ySeqz^u<5|hk)I!s6zK@7d*Cdpnm=xQQQ@1wxp<;x37+y7XS=o9>y(uEywz{F zv{Rk<(<&@pUuSY3>fthv!MG2jh=WcOYp}VqX)cpqS9r2_(+YK)Gm_o(<=vdhxRVntOXa>v>WFJ`1F7t$o_kg!L9;OT7hlY@TIxiKIL5+t} z$lCIoYRV9tPYuSV7+Sx$eyU_Q2(VQ+tfDR-o9J7t4q!4T&^K=&D{{OZd<89RFGUY; zQ)B`~&0W;9<|8Shz;O`hzjsv!W_iCRFn^zPz-O%dsVvRzcMmr;HxSEV(74Jl)VD`v z0H0_-?F}jaXeHrc9o&_%lpFMQ5@|kBV@Km<_R}L%g4QS|Y%Ot}CH7o}M+(@6zqJ$h zf|UA-HO!X~&UY2J2xYUapw5*kbdN`S5~*efPIjkr065B-j5v^FfVk}B$r9K{#0`^* z7a&v^Wr)?^8MsEN#v~ACu(9y@Ogm^eu?dy0_mxrvBHG4A@?4C$Og+6fO#B0^m`S{x zNCZ&pN7D@|A)IQ5{+~&B-6!eVR`4g@CFnb>48MTDX%h)U10DI zJDLv3TEluMnO>aVN*UU^7Z3OfQh15*X_T)HB7Ns(kR*rKf+$ z1_pn){UD|Lf+`#P)1B5qoia>}Eq5*|%QqmU>W)o4a4D(@mgXsdp9h+x-st)DK-qtN zgTjLU<8YogotnD_x-m#)b9knlgf9xl7ZCv^uJKV1aRXDzo2UW2Z_Nt*BBzIHc!8mq z?&QL_d=~fT7>AiVRfp$r5>!T-=NcynV72Id08s>T2!Yey;Z$qqCNgGA_2q$~%#@s4 z<;z`JJJ#R8U}^#%mw!zLRs{A>P+uohG7krCf+J6(<2K&zL!hu~G=jOyw6yA|m~O2z z!3gh%tFcH$n;j@!oN9U_$A<-fXgDM47K&&Sqi+t&`Jc2y7G5|D-aHBIYyKe17P?r&G; zKIx;#8rS_C1qFIB5Sxirv&*<=x4F3PCG;X5ncd9sf8N!Sh6h^J+p+sJgE70)nACq! z6zkDtrqm;YTe!NFSS&Id+ZBDphm~U;6Xo@$dXpyDk2m?~B3AjimghGjB$zchWrKsUfFg~k<1i`?}{*u@O;J-lyA(rt+5`X@rhc3Spu zSB#R%Lj~Ya^I(B_Ijqts5g|7GeN}TliS@g@?$!iM3PgNHZ!6<<#!TlD7vjV2_vGuyOkoCRO%W zbsR1-FP>b{Cg{kqB)D51phKH@VA8-t6Vhn>kb%`%V%`Ik62dQ#W}0`R+u1E4CWcd`>mK_P~;uA3L%myqAS6 zoTJlM&H}tZsnic5z%5MqfFoO)JvsY$gc}Y#QbEs&Qp9wAa0|7h5;RAMdigq<$G(N*}Kyk(81%JZv6c!KZT zcDen;Hp%0dP1pw;7F^c>7K-<4B$@pb7NaMg4<8pJ9xQF;uvJ^4oGTd{P1qLHc8#duiPxaLZ0KDHT{B#m&wsQbAyFS0a^ zHu?oqSHpPYL;Uae-tvWVk+eQJmuQd6J%TvW*JozrM4k@oBtf^le8V**n*VaYj7eEy zd{(edM00%zZKgAY7=QrA!^@-Q*)oTtl}*~ORb2b^>!Dj192y7nHZx+I>JNj33n78! z0m26kY_fas%Wn(|bZe8YT)Z3@S9Ly^G0UWy-Sd;*KpJ#UJhhuqal#2IKO(OX5xG5m z+cG(R7M}+;9}%#)C$Jrjb|A`fIY7K%(vcdw1D?n$gWgrvR2=s%soNA;+fMk4@wZ}2 z!D~E{QS3z6uKd`viI5-G3tfZy$t)f?H=|JFaS^d1mceFQ+?wlbgxVo0utZ{O3#(e? zs}|griLo;N^fB)V;;3iTYQnd7KkDIf(VXLfZ5U%e;QtZpw6ZfZyGBtPkxEpt*cM$E zLzs81`S7Z^hz_tH>qTA_Wy&SvCj1=VaY4;DKoGCOnOvTe8goXK?sT^Hnbzc3$K7rR z5vU^i0iIS&t?9kolB&m}=J9Em%0^nQunK7B*Wx*;f6y8_Ac;H^Q--xP=L3@dT%1bU zN3&mCV)@vQA867I&56+ky0H{%?lzZs_{XoT1QmPZsJ>o3esk`nUC|UlX4jYH^}G+) ziZ|I8`@H2`)D#Epdt@5PpW1TZc+NN&WEN1gCrLoZ0HI4DsT~?Rb3qQWcCg^c#K0g<$k;CzbhMKT;GxD=UaD9Pfb zA1lad>YuhO*IqLF@$qS-W^ad0cVYZG>Gev!U5e;DSi$g{*E5N^&v63U1mRHli7y3* z5W#MBm8N7X-B{UIP49!a!D#J?$wJX)O#S zi7)e-ZY{DkmuoR3di~17Q4qk+hatjoFv06c$Q3A3JjUu;Qa>W(f`}ro;vBKIOC@q> z<1=YEXEQ=8eXZ~mafQ{=S}phma6TE9Cu0RgP71=P`w=B3(U#=2K2($c0Jj!by?rBE ztb&U>aA-y5wgN`G{r%(zU`yWH8L+~=w(BmosUsnoy)VwfT30Q#aQzvRzw=vycbk&q ztTBZVy`|8TXtKIaapNHq1)E=m+yTby0|LnFX{l&@O5&rY8!9M!kneX@Hm=9=hj~XN zk1OTdw-qUIpbpfn{!aW%ic30hRNd#P%eukSRNS7o7GCO6qj9c#baNfDodNxs;>u=* zY8{Z5n?*Ek!U5pWLR(#1Bfx%9J{~^0hU!neAR?9W!XgFL^oi3~_AV=BX#$2L_AbU4 zr^o(sZubL-atSJ=$u*z7+p^axReHCTFT0!QPpb*HqpD_QR6#4Jd5A(GW(wNsB=5uS zSnKT++fOQx=@+BVxyF#@}cmUav*Fw%V$MRVd| zl<+dH?j#_W2b6H4DEGXuIK=Ma)Tz_f7lt6%WhOsauNvRTYaVi7!d-p|w4O^8Qbb7w zN;1x1rAHxJesRNnd{z)|(qi{^{4^lwNcmZV5%c+~2e)GccZi0A#z=A&ftR(5KH?Hj zV+`C`{1n&2EDj@Dj%=hs-&?{|+Z0&ha4Co_oyiM}yQj{%EhR$>w}c?=-GK`j?a}A* zwMQ1qTfgVQ^=dO*5t+xU__^fM{o9Cf1r zX@rWJrc!@Rlhg|Gj1?VA4QXJuIeE}%UEbdlFJLOw+&9f6!k)8gKnUk#><5zFxOjVy zWK{W7J_--1;>kLY@#3s%-FZXfCbVbX;!>~l{41emU?owy+pjILc z&J@)^Fbq=hM#Ce5lDZk)uFp)zr(> zR6-}0>1?PW@P_uhBRo=^C8b}I{m3wm*`uZ^D$HD$mXF3izlj@L+AX-ux9jWCM1SE$ zb?+%A$YF`mi&#yM;ZL5Ma6>NUFq4Es39Jr9M|Jt;H^|5DKEf$@E~=M5e&08sp)5Pb z*VmZm%=C7SpCd)knZp(CFp-fm0U!#=$H+khgSN2bCC#SRMHQ7W-u*5Q8j?$G zs`UUzcEf9U#!aNC-e zGbLRc<7en!k?vTjPbp{>LRzpv0twgN4P!$COyfMId}D?W^^@GA-wY81Kl1i{JPNiV zQLT-aQZfdt%#T>;^I(HqVA%O|c^=7c!o{03X0GKVYa5d|&49Fq{n03~JeYH=Wy7`t zQhVGWfooolwyewTh8HxGDW=Jd$m#v?xm zIkh#H18_7l5X{`zrw?X6{ZiMS=6mMpj>gSmA5z_t!>RaD=;KC+<)J=RFG()Y^+^6! zf)6gb-h7WpZ7MJ^H!l;DklTM);u9S54FZ+?c4WDKbX zROMN+QxXD+o$&jn>5#n2%YSDXU)9_W;DM*!)a1vm)ioDfxv?PfyM2&Qfnh{ncEcOy zSOtI%LEXz%Sy5o+x12;dcQY>RGpFHc9Wj`D*rbolZNYx{ zcnMA~WGMt!(7N1Fq<&3x)kI%~gwUe|WMeqI`62KgpvpDwJ!?W+!(Wu`YMDjfqzmm39&9 z1$w9l=z;jOSa;qS-Q#R|E-MO9l6ZJWQU*@$$mbR9uT|GK%QvV% zhk4jIZ5{wE-!3EvmL$Wnq{Z)tNh~#yJDfKH=DA6Zi80k3TpGdjFIK?8k!DNu&AdzE zw<1f8N-eIN0W^InSW023=tQXcTyG&JQFYFw^^lHc?nk|Bw!7Sx`ow-P5!QW_ZT}9#T9W_2R1T9 zg+jqT1VDZ(hSS7xA^-t^*x8J`$LZ6zRKdY>0;u{v(|Qe+^p{f%#CFSFE(Az54oCMwIn2`tsb=Au>t$DaH!nFdI2&iP)qc}@c?T9Lx-8Oa5`2Ar$$ebhc=F8q6^ z9S_GE9L>io$vI|KS86Et;`@sm++JAOQ9H&LptAFf38`u#$%y*bo}7%iv;X@-YIYQM zek5M|rD8vZ%#qfmQ#l;>haRh{U7bkRnzRI##hq3j&NRc89yqn~L1#atSqx_bu7mmA zn|@Tck`cc9)Y1SgHh&2Nr?@pe*r1%=iWR~8RsNX*7T&P)7i+38#?E%*p1qd=#)KU^ zJCocVO~Cf7Q|lE&l~RhiyX}S6^G@8%^cAfTH9N-{haRj5L3ACcs2XY>CIO?-%-YxY zKNT?{Q!W%B)4{g~haI@x!D2ceNOuMHqi&_qxKj*{3914|zUj8oUM|d?@y>;t9U4c) zPT#%Pghf4czvJbLLWd@@GaMRO+$8rR4lq{No`bLNA0{+{VP?hiKW$uY!7pux^98kV znmNjyK>m6e00aSr-xnl@nOXi7KJ~5AJU?L4_JfC|8l@#xk1DD{!zH8Lvqxua ze?x;-9CG?aTJrU`6fx6E?}`!HVU6O+SCv4DY)85r?ZirWh)+33xbg;rYUa7c* z=p}9C&84sK5QhQ(pqE&_-&q!km1>9E8;+IK3p8OQzNjx^uiNQyT<+%YIUiKiQtY4I z?XsbH^lh#%Fb8}}8bEcZ5Uo3_C@_K@pDW7{X8G)diCnag= zwWBf`2`Lqgo>m>T776^WjfCQgfC%4`erAZw@9g{9-5kdD1w+qXzQ8=xorUQUccVnD zhQ6+{`fioyx$lBqD*3zJf?x9da$h73F3q;`VkC&1+l!d$IZS)@KwZKKujiY`jvY@N z&v(|_m+aa7r+&}Fl+(>S>>V#B(|608w8Ur}ev(c7>|P(6%6}_ zGY_YlXMKTak|wnaefeCzfY}g9i73Vr>iCaESZ8q@wg@2F)->tCyHSD1je$S2`iG&D zGPeQ7uJJ#Lz8`m5wNKw=Zjvc(>Hl5X2Y)G|YVp5uydgS@GHozP~-Bar3+L78(r8jgEvgBjj z|34wTF|NZh>!W?^Le)%m_``hnhGhT`-K!q+Gz0qsCzuF(<9zK-MPJ)W*T2!RbT4#L z=mP0M2$+Mzer`lF9j!AGs^WDsm_tSB@O3g8u_V61?aQ3a>jOPtR$+9tuwd1c<>Mr3 zxnHj(&l$lI=DXf^X6H1i2)bqq~VwepeM|ykK>d=oC=7nr%WA5a zztH!QgTEoWujpwZjf!y=_tzJptFM%TJ;lutCfy;`fiU)hMVxOZi+%xdY!?Jn7EBL2 zf!?WE*mnJNo)&H6Ob21>^b_|y)vx#%A6|R9H+h^chTVm)U4BK|k?wa437|owu)3<` zURc7WO3rhRjc3oNmGMEQ*D(`p6Zr$)EFbsZVTEcl_kL_wV$NYrK5PCt;z!J%r`N-H z9#ru4gn%{S{XwOd#a^dXwJ~FU*(RwfJ9;}Bq%oIP3pqWHS}|j*3N}-}prgi=Ny28N z)iV3iamv(dU(CFub-b>RakKR8_?GjzEhdDxDrfZM+F0G+e4k;O!&qo_qwnG@ui?0} zxS84gEnM0Ig~hDGp7>ketFH!-fJu{X`krFY`)0x}ho>FuBvfjH*<7l!H_4+kKi>ht zlr)=RaVX%IRPZ~v40`}(vHax&Hgya4wP88DmBO?Lopm`GAY?Lsg7dTGBh&29ZTL;M zE{Y;Dg$5b_S|5Cn8>a_>Q>`U3Cz!J$*T2cqMX9^;pfN=&Q)kpeGPqD=h*U|N&#)Dv z*jjUJV)zppD6sb-$JCC}>y73o)rU)d1!U0oHFo(xaIcJY@eYAPkg`+l%lyS3SJ9Z6ZA?N$X;JQr9`KdK$&bAbJ3W)f%~F3OmI?H1fWX}a74U2)9b zY5AMbWO-alb9y3zMqDMglDrZE#^?djm$KxO(|d+{y=Tm~Vrqxo(A2kP10VWh!x^1A zXBThMH1&vufeu+3Rh>UjM3V2dj=T`SZ^ODLhpMe@VO{(8g*P-mp&iWvNvmpe555yt z(1J)n-=)m2-@H0k>`C&~*K}g8{GBzOJBj$wC z3Snis)%EJcyoUwwkh0`VBMsP|Vq@3(xMg-RDp2~gDhC;!(v(zY7s#V}%7T7FNcSAqYAmU(oV4_Xy`tbeb+$a5f$SfMgY%q|vWLlSt7@mg&JDosnM-zz_K z`ACzR9V@Yl&crseD)>8tYK_%52*R77grwpt88*xPt0E+I}&vf`GIR8hojeCH0Gw4Bjvn*-VaKH1aV%Kd-`U6Kp+NK_wJV?!`hI8|Bk zOdj)J5Ck~sw!%x0m_5~z@lU=2Wj!@a89r^(?bI78`=Fpi$CGuN zXn_p2c*w^`0VFxzQ@`)WY)?B4x8ebZzA6AJo|!&>b~kg)SFTbr1!R^sL8HxIADC&{ z`nRleXQ<8V$EuFtOOe7cXI^YA$S4w_!MbdKcx||`@FlLcYi-cjSlFgdS}JiJZMo+P`Gfk$xe;>{ce zBy6D3>=!hJnM<8x91eiY{Fc9c7T)3%4&wiG-Jhb+uh~msp?YrfCl=>yH;UOwS!82{xV6@Wr*3gDg()TO`h(ody2fft6I#Dv_3^kNZBwjP zjIpbJ*{z&4l-$}4%ltgWeEl7sG0{b8KZZ_zKe(}9Lj+CNec3E{j^-4$Gg@j5*iyW|eJ}J^b*TcujC2x|2d4}@`3GPFwR=DbqFWX;my|r(P$`at@FHyyWBm~zl zMlpUy0rNKerqUKQE^bt)#G=`;^N(R(YBRdxVF!MY{eAeG15664T9f7bVg*=XU0gs6 zo#e>OIH*J;hl2!_#*M1B@Zf>bB(#d|dS2}O-HG!X&kTUgS2fRF4XgY*ngJe@6O6tcW*f!JZeO+ZdGg)zp%18eGAPTCHV$Sg#lhXQkcIc};`4nJ#@~po1O*ZdbM6 z< z|D)=zJ(?-6nC0t?)Yfs!8`x7klB6=f$oKlNO4DQ@$4NE&&r`r=v2r#UOo-l$^U@>J zIuC?lZZUcee4;n@hn_?ZZRieDxHj#s-5*Q(0UJ`!l^I@aJc`k|B?q0f_nZc)fkZaPhxk%dWI z(Fw3P*NPHugC@tZoaN4M)PHsIC;+wvE*=v4h9O4k?k^{&FO?lSviE5IUbBhL#2A=~ zMtXSW95GGZn)lTHt{=bkcwMyvnfWaz{wR-HXlVGh=Dj%py=tWSMEI4tNqzY?bKPJN z*M_g~nrim_asn@l#lt|^|IU&E0}=~tJ_Bdbkj9x@XBi&oq%iFK#E>gnRFeJS*7}~F z$OMq7{unyB8DhV7ogHgCOItoxuz5JXe|dsyh6w7&av9#UWm&6;UB=E%Qd*sR$=^L@ z?7B03<|xHqoT6SL8A}H;bK=zbVi1}FneWyM_VUV1-Wlv}!|ZbTaLX}TIxnc+1(E5+ z7K&_83gYSwu!etd_We7l|Pcc#t_y~y&B?b<8y&E|W#1xWR*XNn_r=Fze z%F@m|nGsJ!1XNH#5wISskOK@Yq9TwoTQ>fsIESnA(m1qx10X*K)C&r02Z1R7$Rqrx z^B@3hl7DYilmMHyZF)IQ2or6&$Gql~r>#7}Dz2DKp?79E`MODetgB9T;#1bvVd07c z^3o~6^4l{M#Jh|j{2cJ!mVvWWWPhoXSfzy8Xgbk*VB(5_2&TB2pXmnh7PYuP5~;2)yMY{OwYNmcAl& zh}4L^k2g~JR7of%I^@SM*@ky(2Ya_kp_8-KW`=M*d%`Q;TJ~NDpR!Z#4%{NGA4&z7 zFMZ{Iq)nR!^=^?>xCbxYzI%Ak2tSaZsZTmrC3629ne^UZxIRECyU0OE{a zF!6!Gi?MjLP;G4gCc)y=85e08%%xwaX^e55DPF8AO04twob~`Vrj6Y*T5IB)q**b0 zHR(dK_%Khml*}gHp1rpk{rF^{{(4e{dqFT!tgnc}IEe3h0+aBbH;bYrwkURo%Hi^- z2$i?sG#U9t3<$H5;~P5GLH`oOh#Nnv&yObUpv7c>VIlqF)$n9Fm_xY@YrDESsb^EV`87joE z5UG6LY=#V(OWGOP9At+3=!Q{chrT`ik;xN>51GcU1fbVD*Z@O${vXe7UTJ;=pp-nc z*v(E=VW$^McM<6z0Pc+>TXHD=*u213K1>le0OWm79*ISxYX{p3M(E^jOK2ft&)#{r zFgheQ)?Y4e@J81zj;_fc?7J5roTS@ zY)QzTCXw>n{?!wEvd18`Q%30>0eZV#QneTjBJsZ>ygyN_1QO4rmX^p)p1pcXrLgV* zW>wQjfXwL#)h6u*O<#K@K`Dj3Ny1gQBltBiLkH=(j25^gy;LtV!INX$&*7mhwslk_ z^ca&L^0DcU$;%?EFDV3iV=9HgyhZzg13m<}+rr>J{>fHtE{P&PDs;$Eq89u&(}xB> zJ2fs%LUP4C0_HT^r`45Y2k$>ia;H%S&8aWCtXFTKeriDd6qnCKhUl5R`2^@K@-AOQ zfIK7pqA88DfZ~)Z3n?fT|EC|(2;U|g_{Gyn7^0UJ`^vHGJEkyGL`8`wa4-DA)G{3~ zNj048_dedc#f<*(QsP4=&!c}vKC-q=cQKL?R@3O%6@L+iD#^=5_!ta!#8lFCN=NN% zW~&XSk&P7{fBhD=B$-jQ4H}*lYz#bs(%Y=;!rjB0OjEZDOx5|WFXhhEF38~c%pA?R zvx z8XhV+sF2=eb1@_Wwy)}~Lt)fvI7NOiMErxRakHYI%-B*H2M8Sii()lf*jc7w5bS;! zS7DGdRn^0;u`3U|#UBCWanw%o-@dLe?i2tvUW^bjH^h>_ZK>umAZdL<)LVu@jx@D1 z@`*u>CX|eEzjx0uG>6jXH%KG#?0v}6TeIFA;Fsbq*n+8Pze8W&`&lKC3h1Oqkgz~n zrkzpf*iT1fte)in4nc@{+50B^l_8efV0^Aa_-{+Gn)(tC0Nobv*q%T{{nOgjVrV#< zPbuWnU1>IWoFhcH5MRKaQ%aX`018*tB|N8*sJ8+@X1@wPU;tPuhO>;9NX$G7|G|LC z_meN{@=X1`SLiNzd9@c6QuO8Gc)^;i()*uC3ZJ?cpj2e{Q7-{=Wn3?s|2g6>LPj_O zGU>`k4I~34jOs2arzIkpaBv%VND8d|e~N?=$buBZR8Uz`P2ZA&hozB0v8w9=zt6d! z`%Qa19AF)F+@WY`^KZ25d;`=y_5JYE_1Cdx(H-sd;tRP(b5!SE%*vHC(^=;6UwC$0 zc!2^X^X%WXW_nvVTv+Fx)R40PpJLc#yGaaK(OxA~rDtyj$vwsi3ZEyUYIW89U66a%8t$gV!&ZdvC zhxr?yYPJJB=rom3+68QuUKm&U=IhhQ=J)g?zFk4nZ{GexcG!6N^R{L4LyzVCq0Q#p zp$}EZt>#Nx+-crn6#o&f+Z2x+kojpNibpPrv>_-_`K>ThyE;)9Rd($z`5N>GPMkH?3zr6Psc7IbUxdg)hR2@SKBr2jF?!b&Iv_yG)*5fgTHG0pplJ|Z4AVbxhMr4i4)6&sFN|{pUBq{+$znXL zg2xM&cVLG}Q_(QCox=Q2nT5Lo8E&g2`3Q0RGw4hU_-n}X^fZ7xVJFu@?`sBg0@mTM zv0M8E#|K)qMSQye>;k06i_T%V}&^)If>gBPbx%c9uB7dE@ja`B1Ls%3yT4h z+>UFJ%0G>+Y<)ZV7xB8Dhv+V}2U4!$dc2Vm=-5VTR;x*hMwqYzRX}QasY5E4O;2Mm zMVGiFgv5Qi@_sm;Y9d6{G!}igU3>8&obUQ7;M?j&U`z6`8Dc90pxO6cok=skDkQXQ zAp6%Ch~BeDZhY8jg$S|s-5(E_qxF6#C0cfQ|4UTz2H7QEXQYl@+Cb*@s~GapxJq3O z8n|Yxs`k#A5TwJs7z-w{PGrIGvx4+l5CTWhd$9i&>c zQ=H~|&K+P5U;ZX0tl?(2y@CQN_^RbkSt%;$-TN?UO15xa;g$CC;8r&((X+?f7OF-D z3M(L0YBa~5==XUMFLxpUQL(XBk>BYAn82%Ti+(>feK;OQ>kIjvqME_Ltf5}>Vg1@T zFT| z?x!@eBJX{dfdys;6xybciXwx0tI}5984=6{D zY09ZqDN6;3d3S^1R|No}A5YO_Z3!Gm%5(JSZUZ-Pue!kl8ADWmaepCJqew z(dt=t7Cpc0Zlj+<{?cC2jhrNfxcHo09kcYeuHKD$rYAzJ)iD2eSDanBlJm3pw$wIl zrH}BZM4y5#miUhA#EW5@8qCYKr%MU=C4-0DDom6n07R30*Tu+j^t6TZuOSmS6q>cM z7;y`@@;W(V$0bnGXC&ViQa0`>Hop4iu%!$7TR3|D+XxwJ&n{)@;MSv*zv_(KSWZOG znvHi_0d~!`<+p2THgIZd*1{$W3L5P6)xLCo7Y`m2;9(Mfm%<3t;+G?K&QTXc2IF3b7A1G+O9(9A~UGkdh`FP zy`nL1$|MWxvC<5P_%iWr(23%jl2y69iO=?PTGoou2WFDjQT%hdJ%4+~DxukW+$02f z9U0c4MBf~s5qE4ruUGf?)}3T!7WS!b8NW?EuEes-YMPCOvyOjlzuwud829WogIZLf zGyC99lmjF{_bw*oJ3dRKg1BGxJr?4`SufdE1bX-9JB-=t!rIiMON>Bx8wB6sF!f?esP+ko3>2plshMjDp#It9A;TW|;t7|EbU4?*Urtm){l`yQ*sZ zdp#BKUaeKo>IvC*%+tH5oY2UAn~6;fhiF*dD=K-Q@yxQHTL|ZSY`95`Bq+jgh$PLN z5r2ZDdIVyWIKOrgr1z}X3JJ(GZtNl|gFhVpyMo$Y%}$5nLVP!GE&Js>l`{O^jE_X{p! ztHsr?$kb*F*Lr;pb1M8pn%1Y91uQTTS*SBgZ6^=Uk5*|LLQrlG3=eDV1&={B0TMi@ zNtQkmv8L1N#$}&xF&A|1gIG9!Uuh!{-wAbz!kU3k&J>WTZv1bTJn6wF=v@Yq#Uu_H z=#Vn{gN`dj+V{+cshTbNTGs!yEyH)Mfx((K8hq3dS-3~>Yhs# z!($Q^@-D8G{t;|QPZj_^m?*7s3jF=BVv@OsPClslc?o^-A^s+5# zCRimT9D$~_(wWJmjxc{AeX8TDXOj@@4|v19RNK@{{>uZOgy#y}|{?mz5k__R^2aF6;#sUIiZfekRA+2mmY4GinQv-yTNEZB$vNvDesNEH?6{=q4xNzN+Zmss17hr#8e~V51lvKiHBhD;v^1KC zSHE7LmT$r`%ql4BC?e-ECMLC|>PQzJ?VB@fEiRGGqdRu9*sOE?UjyLN*g=z_gire^ zlw!tatnV%%nv)#@n1^oKUglm0t$bNB=I(aozXnd|D-DbnEkhstHf`d>Ibv2@g?E5k z23Tl-OkxkOuu)fNiq(n2xa?jv{0Q~xb1%60^@9!*V>}NR=H7lnn0s6fn|-Vg^G-!m zFisV*iQe4tL^T5(gY&WOt177Jlb4zIDhPkNlZ5>GIWS${e9+6DdtN({G{HZ&am^h) z;=%VzSarO?$lNDwX~C?>Bpiy)`WD}6SMzS5DRflB50yxI)_-3^!_IysGVz4V@7N#c za!RZ-6}H$e*Sa6mNQRb}3mctl=jS&6&C>EwvFn@Jwtx%UK$bu8_(U8Sr*tJ^V8%uw zeHb)MzC+AMHs36cab5B(X=$r`id_as0f%QD2Cr3Ww1n`d4n@8Ioie#RZq0!Z+-WGS z@$k+z&*ai%X8MlvBs0xQTufx4c=K>9Yku?fCmSz}gi;3MwoWkM_OX4vp(3;?s~lt55z zqvkJH!X7E(zriDPeB%zj1s(<+R!pQK@@_4vXfB`}<&;==;71_7^? zSSKGuIBZjBWX2`Yfdh1N&yr#13kmzqbR*8_U!pQy-X7>Tc~v^}Ke_>diX@KCPOdP3 zgZ9mO>5mqS>zLxfUYhnm+-C50w9unpx6h1S935viyvvI!&gM1FQvr5m-yB8WTtzgi zWo~bpn!hh4MV`oNwW}z>JSIVl-DSi&n2qeq)2X$51&6_(W5kjAk=klkevc>^VV~sp z!p7UZNV!#}<~2i@S%$z2dWRaNi_>%feAxWPESUyhT3$hP?QmQ36K`jnKQDIWB})m4 z^;ybRc|Zx)?nvl^{ZnKx%*ko7{q4ERD8@Oc>!r1K(C{2e1e_kP>HQbhTF?(?0R1xwAS?4 zqwnV}R=Gn4gnUN1-$%|;@0ri~k8ILTB@w9t2;O)EX=sOn$RCcgdOw^^yhz(K$4y-h zwS67PytHwa&EX*$0x2Bu&K_SuR5%@>8A!}MolNi2EB{^NX&6S&3j@lKLo7@^UDM1s zh15VJYfwQMf#1hyB9g^oJy)I>ORqFjE$54(|A!=g-#4f7*cozGg!4_1-lsD~>=cKY zh1qv^Oj&|PAbZ+o5W=oa+w#uDzhRE#dB6T>V^{WU3Y_Wh6$Zdt%TR!Alb>600fCjAb&=ns&v+X9uaVUj-PIHWJ2~!5fku37J5yok3L?7C{hhcd5HAe2=d zrSaAH+Js2fpx1N5P7Op+qqBgQu#T&NflHEITzk`zk4`#0&L9?NI;}SRg#{X!%BOxN z$chI|x^gPTx6LhQ!l1Gh)JXkx&yb=G;@Q*8t*3b#HZgCUyrY;2jPDV+ZKuALA*@yW zK!M;Cd1U86Qt_S&AR!wN5!c{;6&KWJmPT3U*+U@D770Z2%fsaK-B7;E%x`<2+$z;F z2rJTX+z`$CJ+)@|_-b*L9-n@+7K-#nk4M{MT@be*sOC296_pVmGb|;LOXMAe@^B8 z@~o!W-D>E4cZcth>7?4)Tut!aZLmm%p{rv*0)gI9zO zr%wx#ISbT=c_})C;i=G+&}y!>^k8f7a&7yy^qa>V5}>UW=?OwaxYok{&MR#p^OTqk zf5kDBMuz245d`IoPr!tPP4AbUnqV@rlvki3Zss$WCQL@kGvo;HL) zgxy9mqd$ws}1Optv>wfHqMrI^Q{>TI@z_aPHArs zUIIO8y0KN1dr4wt^S%9Ocjk^AseS?JTDiRk^+eBPVeiiTkK2t?yr@C{3;F-SQ++zo zHoZUX?O(K95ddQ&RsOK~gwtthu1VOxg@<=YgaG59ftW#Eq4ZIA?~7!XQHE%2Ra=`> z?0OwM&@=`_CLgj~R*Kb{5!u%UDJj(2;WEh$5*^KOGMlYZI8)+-7m$39U0 zi9JuC_~WSLwvJ&MGyBcn_I$47@ATlfRuU7Ps!G>j5je{NyXkxLbIE#Q#DUpnPaX63 zqzncZ!9{4Zl%@p%x=*A{>Up0%chE4sed2S{k<{_hORu*=rfpUw_lWcy=`Zw-7of2= zst43F(0BxX+_wEdM?u%WN23csGT#3)&u-F+gr3ITy*pxt8ZKn+wx3f?63j!!=b3L- zZDdt7mgUT;HI+^njIn$^)NVS!)n5u=s5RsdOuR|vu%E0Lt62D1fz!INW~}c<7poo( zWgTqAM0 z<7JN5qcZa0Gw+qI5HgS1ATY<`;2Ja4t!)*@VS^{vkqKw&b_bU^@}l*n(=*AQmPj=q zFYrRt!u;>4g;dEJJqtgZR8cr)c|;2hWx9FuAUcOZnzUd|D~JAFsQW0RqFJsDdHCdW zA=kU4(we}#L~I~PmSFsh@+u>UTVRd!y(Onwm}{PlR1k3JD>YxQJ>yr})wo!-87*$> z`AddfuRq`F(2IJ*)=d+D3cPp6>u7M6*2hgEhR!wKjP)bsN{aL(SgLSrXsmlXIXn1S z6q*w(cs790PHgVYN%b{RU%meTQ4!L zqjFcWwjQc8rasRkhro%!j-6c39!zoU&~L2-Lb#v;yOx~oHx*lpg=>#2MGnfn71?Y# zS2X5@11`fMMj5{ayq?ip>SMXT2{qr7_fZ;g=KNjq;uaZC`62M<{;TRhLgE2|en&dyP`zU!;6C+M(()t*T4xFV~sLA@M+FwBIwS4PKxXKcNs%SUd$2VyUZ^Gcg7Ln(%Wf=Y#+lq`DR6m*ko3qG z1lem^kNBqBH%Z}iPE0F2S)ZuJW#QCDgOZ8wxr%ZS18%gNJsR+q%V_anlub#mR(u)RfgU{QQPOfdhF zunkd?s_I{4Z6eH0QEBy&dGX-)b>3quBa|PFI6Tn_bH)HjK)1h*U~db7n%%!BNNC}8 zTRw#rK3AiRxeCn!1VX2we`jPW-^jERsv&=vpNX-OoLsxK$ z>;~Dvx{LO8$C=T3Y$Yk?Aawqd4UbsIG&nn*koR3f^(@+=JB$63O6ATg)PA%>fKn9( zZcAJv0R$#UX`A1Q2c%n=B243sWhxgPqek^&bN_?-bC*_vN4EUB8Tw#rP~;Q473dV& znycNNw&Y((78?uj^|+*DVEf8)%}^FW_Q1fM`nJ?8TJs0S03Ly53(9j%;ig=9SYy%f zghp*@quMX8-1+eWm=;8#v%TOHUTr*wa9cXxy>b zdHWBd5EV({x6zbVl!(T->w~l)|AlWnqb3peT)*z?bABwA2G|1^$`2{Vwm+yVc(Cfw z?voWfapRnMfLnkptwf}9Run(S2eVt+@?E{!FHR_qjEsjz1+p!VD9YRU?(@~7lga?C zmgDXzf8jV$n#xI4UEhN-JUkE5Zs&zh@iJZBo&Za6P2{DnMUMC${E}_2Z90=Zo71_V zkR%$q{e%Q^V?Xr5c&vVp7Wc$*?EbJ=bWgiKqls(No<~$NI2|ILZnpd#w`Xc}@;TuZ zf*+JyvMO`SuQ5UdLTF|baP8&*JIheniJcWuK;TG}6ELVNU<6#g6tF>rtiqt-M6D~+ z;L|8^c)Sfsdlr$&bkf1kA?2?@gF2zpKEZW8KM_q!Z)f(*W=Y`fzLpk7QeB(8lRoA+ z3J&VPbOI+l6%KjWOwNX-7$FwpJ?7c*mR_mz7pFB9I6@;0V7ba2!gtzg&D-mSqecxH z-qNq(5BJ_)oEbUcR>}<^Kd_IwgJjLC@pwKb4$t?Xml!v~L-D*Uo-BVZ5qHgc-{_0q zIS9!&ymiv;cJ>4rJiTOWpAR4V6r8fhcPp{M2`FO>{es^$*^oe{aPg0Eh~2@e(EPop zNqpt<$`IGZIFnspd{M={?1E$pDXDN#VfaA_0|ay5I&UzD#z%@ZWSkury*c~vr{ZRP ztP2yBHGaQ|I-cF*?s70^#KkEkqU~j%V@t2Cu4~}J0MMu-mMYR&So+~x(JvF8K4%Os zW^`rDw301#LjcZ`*Rb>}xzkh@d&|BGZ9*--o?eqKe{a@9IT{#?>wenc)d)V9Qgk!r z<3;l4<3LvU!Goug3%NEH;n3IT*u9XENT%j{FSLtF&#CqF7#>jrCtcZ)VL60lR4KF* zJYk!3?}s4IqZ(meOwz4H^R`U&S)JsC?Z=!p;VQbN z<*bF;v(eJTkgU%FFkMbb0SOKUp%;YWU8O>w z{JBBf6cR{V_nB1afBp_7gat|3GlYp$yL@{QDo_r+L6c?JPV zXx@EUA*8QMVb=K}WLN>BK&2B4QI8)50n_VWkZYIx$Zqd4>p>?>(&1ra;6wz4Q3O-) za!-!I*(5l1Y|O`3PzKCbHy&ao!T!aN5{?^;p};m76K5l5x>s42&pW1W8)y`xiF4O{ z;R?B5SI4xLK;CP38AO=nxq9-#QB}O=BSnnuo6@J?a-lkpQp0*;3!x;Mq=p)3Y{{gG zys6K1$ki6BhTV0J$*>mq-%36Wm0#^G48#)boPyP+nU!zc8L8ZOuXOYAQK|QAx;KG6 zq>IUB@)28|Gc<;(JZ573kg$wg)rO%1q~oWk9-(Ef!;L2k(!l{a{Q4RKL(H1C5SiJ` z=t-_8ww?K9Lw#n^TmT&HbZGoD;BFc9=2=q0BaPi<&ZG&9D>ha&qt!6D;q$K0V_xT9 zf3XQuRdXC8?{E~15eYIE&hDi*E9B2cKX8a^Z)OFhGyCuf@<(v^dkrAENZ~ym;p7$Q z93io?0G|ZBhzvim-k7lnAN6eYN0=_ywnA;2xp3W9a1oGEbA5kr?>WSEJu8XLcr+Sn zzF&CN3!B3^uT+X&vbKC4`;_~>%38WW+(DleFlc1B4=hz?zF@0CJ@pvRuv(%wP7tS! zNfWwXG~Frw7S5~?+hpI?)#_5MT1q`(2WRUzGk_qf=1Bc&M7bes5s6QNv3|zKWV+Xs zZJ>as(V_8lRt5zkZNfKGP}MM}o(PX2bF?I!Elv)N3z!bm`lOOymZY+({lUK=;7deea8x*cE9Em|L{hFrg}$LE#J{nO^CCtKW@P+UkaGi&{wKZ1PY^__QPQ%+)Mqi|-@ z9-YqEpVpqfB6gul^Q=C}Ua;HT4WzTZq=XpeVgF=7I>shcdUmson`n0J*e z*pjQSMc~8wBqDs$#@0XfaULwC8sG~`i>Nok8=HzyOE1UocxGw2z)C>kaIMruvz|Ma zE>k$S&dUn}<{3-lsing>0jD{Rv;EjeLXKvSr zjRl=d`F-GkrXrx%zvh#n48&flehJRD-z9DcKHf&2`hpgvG#ZB^L%#G>ke#`m(gY&z znC6`g^me|CK0m9Tv(;onSez(-Th$hmKi#*#xhP$NR^x4d|3#7<;raGh1bfHq zf*I-;%#ev11BS+vJhQ&;i4JUb9YS&#QxVL)x$Hs-y>df&)O3FvDEFB z6RhOMKjrGPrg|`I^GPJF9lvXju%`GNb@zYMZNu_y`77lr)7+-uTwRNoOTii)mk=Sp z33>!Lm}B5k=X#g#0GR^QczvF3kaFV04=?eb}DXmKvj!Ze+ zcrsbC80ANg1`z9ntN8p9$uQD45S@ap>r}dE4?S8Rdy~f?oy`J!OQqb#0}mh`pU^6B zoj2=={U+^%KLo@Vg6jDv@!bX+@A-}}_M5x_8gN<0g>opqbiEripTzQIg4KfVQ)gdp z`^reCtY5kZA*90xE!U%B((;S-c3GDbq@-b)eZ^c@O4aAzG7kzHEz^Uo=-j{&DP__E zmVM{V5PrkqLV{DX?cTpCHnfDF;KZu!-(rR1m00yS94E4>{~wXPC@T?J!C8s1mVp;{ zDlR&<#dqw~dmFc(bR?D@YQpUok9LJPt~%A>ZM+d7PJidnI5Ycy!~Wl}|7(V&2cJ%N zoM9fy=IhG~H4jKsYD!!4{`H{)DZQuv86N~WMDn^ZF_U&l=0elQ2F~%AB1^)l% zFD?8fN%qn3Ke!KnJp-e}{u`hef3cN~BkOpPZ_j@)kMYl%q^ z;r|6tO9KQH000080Q{$02crN0Az1tb!}yCbaO9qWpgiPb#7yG zE^uyVyt;Q(Q(xCE8bCmlqM{-lK|rZWfQU#F0g+y$H-*r96+#GzibxYFA%rF!snQA6 zpGZmQRZ0j*Z=n+)1a5fW_Z#P&F}^eI{rsfQoHP@Wavv(qOwbdA|uw4NF z01WCcp6deulz0GuBKI;4`5SlXEKBm`l7o_#5&-Zc?&|4lYVv0~&ljdX003kA#UDkI zFe5tv;25a>T*>gQ)h3oHk)sp(=NR{dz-z9K@BZd`<;Js3wk+zDFSph|JvLQccn2s_ zDXduppy_x>%a>C|KIdj6{pQMs1XzfD4Pb0;>yFE<7GQX&Pf4jw-|lVnRPisj$OE4Q zj%%`Cd2GRyGq)J%jP7-yrqgYY`zDL6{YEvlbOLnxH+ozNJ%sS_KdZ1&IXU2~*0QoP zE|W)>$ObEZgJu%1lK;tSyF5(+0EFJ)@uVexd>PutNxs~tpbWSey!77=hP|T3V>DtBNc*_R!iwQQG9iKYbj>hGmsJ$pIZVMozO2njXj~l=g<3_4-W38+Xn? zT(hPNv!@kXO;u*)#WVlFjO={tT)8*c7~9 zkL`+1uj2*sx$B22I7%rC zB@z|Xk~J)we`oRPB2B1nR2bxd76n#z^S6W?57GZH3!9o@Aw~CR1bwp)vgO-tiCh_- zP-(R%f!olBz3)?@>h;ODE&s+Wt><;3--fTd&jp2GlcRgOh6W2~i^iTF6RHhjIrrck z0qE1+AE|^joO$rn9FZ_t)w(mE8A4YZg1aF`G%^}8OSn7uQr7P+vafus&ko<%IPD%c z+63b)u|{xfQVj^KE-EevC)or2S}k)Bm9todY(q`LVd z(MrZ&CZe4Qpy=|q)i3D`GX6~f=VWsGec+4=ak89yQO;g2lZnR3a5rX_V3lb+nxCFX zJG$7QYL;Oa(O#YNpm+HfdHJmAtZ7A@b7=?k_;c_?%O75Lp-r~s#j4uU35rM7J`hCD zsp4i@YHegV`$GDmiZ0~qZ0)bJ8^|GP??G12*v||OhMF`shqmgc?(d}zYAy4hc#8R} zi-*fFpD+G_NFqX0GuHZ zjdo3mM%hE8h;%l7H!xwL-4U9FhD0P2tWgF->5-uR&+?pgqn$+3pw{8R8a6TIA^=js z$6xti-^hLgCJTSJLG|PdU|Jof&5CPNLn;bf%_EWv;q%WOz+N(UtI9tO6`#K4Xug-c z{uLV*UfF+JAiNS9;Knve*=g6pG;MFaddT(3tvD8jQ~D_Ruo|a@F+P%In_+sJRF_mkaMO+A@N>#?b5ySpHPQvZWmp?8E;XQ z^u*Ncn;2s;l(G8mO?f&Y!Rx(^n@YwBo@>jagog1eiJe*RT)(5ij(&jS zu?Z+ZpC(I1s=3+Fvgxa&RL{6~B6V0H&3?8BSJWztDc8$ZN+I6C? z{cr|Pl}w|x{G3mIdykNyoBqN{6Q|sXqE>!VTzSJ|k$&i!#^Ik4iwt)^7*ggeoVZ|n zIJEwH!XBsb=d`QP)uVue{qz<*?Bgbn%ke)go1JWm5dK7}Z`aXKV_{9v-Z_kmG$)^rm8y9{XzR6i0|Q#7N(2w8#qV`}D=sGN*d$ zW=ZA!fEjs|ci)Efp+t@HL9^7$#wWSUzh1XwNa(tcKC#(m^!BlsVd(zHz;!8{HgDB@+hJ^97Voc~7|DsY6V_NZqYEE#ZH{WYZG((n@ zSg1#;LY1__We|U+(fB&eo^4!Tg-fx(zzcl_n$V28)YGOeuo4^klXUhpz-(x@x2Q$b z)JI40U~`74>!*|)ks+v!?&I}wMu|pQQNwz71>xq))RwsvE6~y;s_*x~6sTBlDwCu! zNYV}n{=V0SZ6}~Y&?0qRteGAjoP!DT5uI7Y5g5B<7&!*4%^uJizD84)h>|Tcr83*Z zTTxw*lfu!1dBzLwBK$umHvj(&-Z6PJy*|W#=Z*M=f`U& zPnrk{FP|o*x{ZkB)ZA;Se@>Gx@WaK5}BgcUUYyver0}dwsYuUhHVGJHF6NxT58bW;4`4aO}n7f z)e%ei5pZg6sOwahHT;*mq_@f;6KQ_oFr047ZTZJm{dIsMNH3N((f0l$O2YK%qDnkf z07L3IPGBm)qhfv)&I;-p%sc;Wm2LinO%!QZ6%T8;XAM_}PsDJM_>moGv^bg~efwA( zbG4RcZhhAjxk`^|NIGxum$g2L?Y@Zlv1K!%?C=t`Bn$3MMdx+E* z2b$5&@DXXwzd~i|w+`TzKAFGeV2KKuwtIuI zu56~G-;9&k$~TM+>u%2oE^w?ZcbDCe_|ro$66FB^TtY9F%Ofvma3FR{Jt4iVlkM-W zj4zQ}l$c-12Q?Uf6Rxc10J~ewELK{Iv(p$)uh*|=6DOfoG1YETjs1X7_ir3m^12y=2sl!=w8b_q&cieVVNsxV5h-BUq;<&Y%NopIx@LJsD}M+Q-lV1g z{8o}#B8Oy}9FlE^gPe1lhjX+f>A=iZcDWG5PMf$P-q1Lx?i2x~+XU>1!R;6NoMR## zwvxwX*R=ATmc}jgeFKK3qEX(REnRL*XNJBB`nR#kty8VM-+#`{-3I7BADwhUKMMDz z=a;T{Q$L;udic;roLE}((z;53&m5ty5YXSq!8Xj6z;z--wQ^nM0X$Vj#wa)uLW*Sj zKgvs15q%IPoSx$5_5YM8y?>S6L_nA<`JzjCi7c7{igefNFRC)X;_UzTK`LRn{U!@& zwd4s)TnLS>WTM8(J#_Qgut69^JT)W3zkJfc*%{qT3COAV6FWT5MWmT>H%t!xg-OkO}XfC~t@3Q+vyO|Muvb9EYS{l&n6sjDIBmQ0n$fR@PR zgzlKkNzp2lbvV(^pYVWH+$NtMV4|F83(()Un3b2Qw(di}o{+9Eh!q8`J#?@Vpv^Xm z2@6vPF4dd8*MW(=&PWPqra;ge1+PYuDi>$vcP6%HTf!^B=gdE*O}0HLqQE#O3(8#2AN9-V~c3n!K#war`I8`>2iB!`3nDKOtw9?%=Ud)VL}bW?yk80iJb%_o0&+ zcCN+&0FuvSX!eovjMFOavccN58{D78Zn-nd1mp)5G>xgco|1a~X9mthz1=%-F~Ix8 zzDw&2n{d%(`|O^F215)_)j=l!z!#>)I|J4S&`bQW zvk(9PR+XWt*0HYhx@gDfcmHQQ4tnTmolH(lWPtyPymOPz-AC87Hp$=iq#Q>$tTo-hknM>J`; zNS!jzS111rsJR9CoMtM&k?bOI2>6T+O6W&9#ltiHh?_GSaeulHO0E;<&)p^gfX8IZ zhc2?b%GXd;#YL#EOP=s&SyI@63CZEDVzfaev_G^U-SF18I~wV<{Ji#+7;P%O+e%`v z%_?N@X;n5$4YbY)ktr3oeU}f4|%V6w5)My-{Zo|>{RhX3ra9k z?*$4Op@Ic!^QlL?z}GZS>Xm9g6;peyANy7d{8ii^>S^R_>(UI0G!I?G?Atx zgpOIP^eP@oWOD{@J|8*Us@n1y-URowO{fGs&=wm68=_rF@qqIrgS~ z3}W=%jf&Z0Rvk4+3kV%0AHN`M+h;4F^0H%0XMNWOqEJ{A`ssIl&k`OP5EL}o?3`It z^nh>$5PCt={#n7Y5lmn;HOk>FUQ-W(O+HK%pp``cfUb+Me`F)P%gLt%=-QKyDe+o8 z%L_q?x~8s66aaD`rSZKDD!AQc27Y4a4+!?VIBzwX^NuXRa z5_oP;3s|{Cjy~}6^wsafi0cSWKvu#<3Fh+@uh0g+yZ~?~15AiFgGJqpD zCEs$c$+0gvHHx{kVSDV|?#l2t>nR2XmLbJbFJnPiOAMmH50sqsc_J1FA>?JI1<`9M> z(s?oN6HNlWK?0`5%&S!VsBK- z_H=a3_v8Y%TuR~zK(Te8_}AR6+4Rn7dS&5neW>v%-?Loy?gy*Rd%3MQ8TM%?2@*Ux zRDi_vWbjV$F9$+hc~6525_0{qYd&X=+x;NgFvwv1AO!&3X2kWI#yZ)NKVB5WXjp#6 z1uakKXDNRU>rZjY8N{qO??khERSsFpF9`j(F=U2&U7n7LjwbKMZFPd-=2iE?q5O2SK6)W)LAUotsNF$9k7K`%a9#K?qZ(NlU1LWG`%jO<7a=xNJXe}q^DQL(*Ep4)Wv zcqFelCh*Xd5XJ>;_|kg!6)?*IRPWcj&rjgtZ}zGgqM6Y=j|x8?Hhyir{XLpB{dfcN zFJYLNZ}IH-BIPIp_Gu&@0;r!iyeHGcbq&cRivL#K{ZDmaSXdHQkX6|Q+q(V#!nS1Z z_lJ(={D*DvU!GnDd)pLnm|I;pC6g*zf!;)#U9s_7KhI<@-VOBGVg^I-PX(540kQ=3 zK2kVldXLsK;S+$uK#9Mq8r^oj^9BBxjTR+hhd7of~)3#Q(3fE9|w*MKJl zZ^MYYSH0IZ!d`Y{IqcD9!)s_jUAG(V8wWG|?$WgEIP4dco}%B1wi?2`ZgVaAdbfe} zcx9Y3P%#$$An>QV$8&q5zOELf@m@HVrHkVuJ_2Ct|Qi&w|J=z7g}^whnIi*GAr_7^T?Cbb`i?Ipx`j6I?u^rG#A6*T7HGfO zY8CqwQskc5>c3jzI&rP_=rZ6wC%VG>N}P^BGc6BF|8--#rh!kBfmIzV*7q=ia;%;S z-2z;;!<>CvxiM4qrV@UM4=4c}4q>f?ANM@;ed#Yw`h4m5i|r5+D_ZadM3THc759xy z*VEQJG#cBUkUKP;_y6k9c6OVvAuTdxB$7E?q(n(U0|c=DQgsHx}$TYup7g^&vodUmq4ac+&sKKcq0Gt_M*)%`ul6Ql%|Ygxq9ong*3%C zYs{-Hg*rosSEVxP06Z!QV3R_~B0`#a$e-8|=HtEpH^)BWoREe1f^^VU@0+OPcQX6x z*`OzbvKvY)0FR{Ig!X9<_m+0`yr{S6%5APz=VHKsd_xh4mXpU8_c*1<1aZXR|X~h3SP^{*-_qMb&_` zRZF{CUetHwWT`ze4}Sr1i!wl0mIAQCP$sJZJMbkdmi&93m8dRP6{EV;&E%RbUn#8d z%WL)PtZp?>-!kqAXIOOLhbbp-O}ci``BgBx#6E$vjp zybht}kAiaC&FWH>f|kwI8?`%H1f>shi&w2)m9YghU(aWji?04YN_xa<`8r6_i}gwk z^N2QJhs(FHxC+5U$GkPj zHC1{XbIQN_e3`uXvOG8a}w08izDHgZ{viBs5P;ucvar0 ztxax?;ki(AnnlSNAYwnN0j5#&puIt~QsL09q4mu$+gF1|cn`wU2>$BgHPb;y`yz{W zH|vg0JaFDv484Ni^d}`%*?S21AxEob&&Qj-Z-V)Qm=;$D-%rw!v$~oV{AcoeF9GR3 zW`juZ7> zqeeaw75~g37o^BIW#MS5$#uW6t`#d*u$j+3hDH%|W4W{n)5+jD?8&we=Um2#zx_r)I@mAI0UsK@B zf~kLCkmNW2XE-Wy!cKmapjV8z3H0nIBdXq!6g!SMeqL=fH`@aB#^G^&fy0`-FYB;z5!Wq4FxMG+D}@S?U|vnT4CfdXSoeL9Z}4*Ll@p zdOR`-ThQSnHBr9_B_HE65-+m4?D-V^=M5apgi*4o><%-G3GTg!g!WcN zhuj!@SJj(7B6D<4*Qpi}++~d(uAR_m{i<7R^Iz5V9^3Ri*~QqG=50S2%zMsdCaHwr zgDL?FoikK&sQ|^yEOL90p%M;apvUIbu*~yTm08yK(@Bd}MS^&=baWbxH-S=8i&hkX zfm{J}#kED&ilE=F^D}e;IS(|q1TV~SqygUngkLC~kCcFcs~22lJ@em>tlG&^{EPO8 z>VirsSxsA#hx)QQnia={s_rIG0jil7SqE4z;i-o=H6t_`0Rwc24vNI<^(?w|65JBx z-X*A)L9wYaYo(js_r7ZZ0Kh5+(o{2rLBjlmfV^Y?-wOaPGQc=qGm;EYarinW*Lg5HR~<8z*c!i#{MW+kgN;T$>mF+ z3YE&brJ)?yG?6+*Aq|`patBgLIZge z$Z|^q({q6bCgUyqOZsTWkWJH7CHrRkFX`icVVOkEQ>sb^i$;I9UJq@{I`?!4_08~O z%X(wQt-Jlyp@%E}O}c4q(8cQ@nvx%3YL}-6hr4_zvKYpAtg`;w$8P_3)q}E|@Xs^? zau9XgGk%;l+D|THU$AST+?ojrC_2uOBEo<$$}89m+hMk4&e|&LpBawxdE5hGjEHwm1ZIAs-Efo(fFZwpWG9rzA*zE>e!Xu`4|{C(%=TJ@RvV$0hYh9HsfiPgkU3w@ z8+(WEH>bKEOleA-TU3;=y2>!?jOW6u)7$;hQ=t!)gU^5YRiR6(32)+b9^&D{wvN`c znM!|uxNc7zk2_`R)Sn+hZf$5-)Ncr$b!kcZvYRbURnE9#Jb*3d@>~O?+C2-i9RhcL z9_oP8`QCVdh{H+4jDZKAXZhiy7Fa+0ZQ^}$AetH zaW51t&%EhSSYD#u&sB8Uhgvm|7zXzZ1$5v9l%xk;*`<1(`DsH*o#AQwT|e0Gw*2!d zx-IcqD{M% z>cjxIh!gC^>-;UCyw%*`K4MP@NBtYhxje_GJD+3YgGAV&{zCJ66NjCnBr{Ff7S&+W z<7P(`;kf@3$H@H6v?j*07jD5nP9u16kk+oQ@u9egE5mD(0WT0xhHxiNA+HxRTPX@> ztWJv|I?XX{%^#1SZAeobCwVk@Et~G;5swet+cAwLG6o@rt<{7})|z|DbU+G>2w`H}biCFZ^_yyME`M`YL4`n|TPf`SKCF>gIr5Ooq{y>Ek}+ z4ZL|y0=NTXYMSz>GoeN~hO}wy>E|(#E54|g`swnf*4u}JJqNiPJOmuIyW~p^(kfzu{$wKJ39)U)0{n{TDs~6`?91a%QkZFZQzxt67H0Y z(hhObDwDiCeqs^3|Mq99->P_1I}0}xIFBhS;7^udvUqO_u30n%_EXF8>zJ6)Zk)B$ zaS5_TNZ`eulHLlMyOBj}h&fsISJtn^O$^Rw{=rn0)O3C@YwGuw&L(4hc6VUD0JpS~ zCva%Y?QN6(Ou*Nk{)wi#aIDWe3X4X7 z5^-u@j6ki*F(pf~x6MW!CS)&9&+p$Dg-JQow1f@PX!nqx6lu2?3X4`syprOwxg zRtL@3{(pjhlHgVOk($Y>3J-n!xvWlx^QGpF#9@PC;2RGWViPsMCwx7qeRx!UrdN0Q zvPjoAzjap+uAR9rA@{Ug0)ia7N0}?t;$&&%kj?uZyLl{{+cRQjImLl$kK2V`OoGF^ zGtIsUiexfTU1ffsuJ!%3mW{CUG;v6Pny7V_QsA9~aC5fe^5{SqkD*Gr%I_gEs~)IT zi#U(iWslk-e$$M`mVWCS=&8)W@5RA-+i8}=U&`emwxFPve>t0+%bW@BzE(f}C~T|$ z+_WZiFkd{NSuV)300Cw%G#|IL+O_uOZeM1c9Zuo4?#*lcQ-A)$-crbAN#b?tNBC*b zNY`~4*kQP>%W@9Pt6?VgYy#dKD|kkqZkqTe;Eo#lr1r7W(k2)9WA z&7V!(M-JCv)<55lp%~(fwaJbW@f^@{Q#|9|_=dT@0*N6GjCO#lxcvG>LZ5I=fWvLS zx$W$s)?=35x3|-r&D7bq5U?kVQbYRzBFe*CMWE~Tf<=;Hj})%BoqT;2HS9Qn0*>E{ zshxlKR<5yR`ZOVb5aD&Ik+GZSv80b6#nug%|pKi5Xg z%AI1TklP9FjFQJQdI|8=S4x&f(y9rf!1AT94Rkclc)phjN%ps~8Qm~a(4lkgR7PuR z7V$4t`sY7EhcEN!B-saT^TG z)V0a5@R^F$DTOVFj$wYga9w3Ac*y~-G+b>Qi46fm<2EYsYqge#g4wHqj#*{59A86r zns7vSXat+nlI++E;8sz@4nRPse?f@zeBHE!?#n^MF-GCuZbPf7Y%2onRvOxEv#-7N z@L?ThWiclcSl-K;JM&t>Hbms*RGbHpTf-7^$W!_gceVEVfFCKOeRRV(eCO!txx63D z`e=E{ZZUn-&8`$KE$*T)p4xq_dI{BB?Sv6SjI!+}K=?z7t6s6>#&pH+34*syioM_T z8zBmN?!bq~{k!%MtG~z8Ez3~WYSKDg?XHr33tfRS4dddQ$zHY+A!cO_&ZG~@>vrQM z`2JsJO)H6x6KILmb)%WBqx$InzEto(zRzTaK6TK;dU`M;`@kWMuP*FMN0t(u{bDzJ z>Llc&&?h0>rXjyg_& zR6zZ%vhE?%@}3~2ii`&*O9DZBI)5}fGQV|*6FHGSme2A=>yf^G3PbKgPO4*hl_eUm zor58DzeL$sc?-54k4{9a7^0v$8D6y6L}(|qjs=Qt+3u2@jOtql}%lA5OQ zW-Kl9OF?hvSLd1FI{fHn2HbI{;J`rA;!E+*eEfJ|6?avmkQ*u@AR2k@uo#$m_|Kj+ z4;StmB&FH?gX!xCXutZF2Gs;l%&xWlY0ULM4Tp;%vr}7_)1{W^0wCnb8#P z1AKIUcPz}>Q)&YjiN90sH2LNo325KI&4m1#a<^o$R@3oXUmd*njTBK7Q*W3YxY}O= zU)QhB$D#A^Ux%}LvCo|&UIIWOOfEJ@+YAD_qk(0rZ_g^5?3W8(Xo*X>@U9&|bSATa z#rmeI9ScV0)J;}2pmm%^WeHt_VzAxDSmDRFB&)!#jjd7cs&V{cNoNdCh%^i$YY8%373*bq-CV8iZSpF z+;L=SlCS?n*C=(q{I%w4SM58upU)r0^AS>u0>}KMnNYT0W@|7?%t`fWogyz32=cEa z&l{#I^q5YYEEsu-@iC(Y3Ax9Bm-+d@jA*H>UzexDc(=7QwTY8PVNiqH&4}UL>os0+ zxm;EEMDYf{+gN)iqjoh;)lns!`48!Vk)oeI7P;)2^?L?A^*G273!@G9fAM z>#iAB0VXwvomVHwfvt}vi=UyV#|sJgSHx-9ISGG@ZSIJLDpNUx6kOscMD=f-M08$J zW?AEEouW>N`(rlO-YL5bCSdcJxp$xb6dCEOCg1htQyWz3A3VdnQgG+H6L9=5_UFm@ zQv)6w73*jrY00(ZM?1|mDYwaYdf)XFM=qYbp84oJq$Ue59FHf#UtZsBYz`T6GkV>Y*t?(VWxT#IT%#O}QeRF%EG=^rbq1SswNUn~ z*wzxsUr@IX(2^>hDf)yZ=vec3n$+4HWH?MflDw$aUGgFx*8&e+2GMEVBYFH5r#e;UE)1?KN!&2A@yQ3lpw6f%;NUU8!u{q>VvAx zAw6#$?`>4EgFPc2r26)H^V!3sKFJpl6TaC0ZTUD&r})@V`%cdpndiTl+8CY_Pw7^s z+tLE(<_TUudEuzlSy0oPc5`29^J_)7d@s-m9zGdByi3$_Zq+Vm9UEIC9h`VklLdcR zV;%O=n)QkH{>g;GEt!3Rc$Gclo@xW*=hCOTk~*593V;52jfA~g=nF8S!p4{K=HwTa zjXXvA)*)w&7_3-GZtc>@M-f0o+DMBX2 zHm$1ohkL~B>w}XX4N%@2PqHWGG0S>y$G6_;KgTx_!pX2QCc<+|zxJw?4@d+MA8_Y<0*M?<3UFXd__coM0&8t%jTbomO z2-KVnk-i*jJlta8(k3i5)apFsH(YvqXjGUg;N#C9G81>C1X(Ybaq%DHSHtwn2JUaJ zZX{9qypfcAr6peUKv#T^iQPMAv(D-;V?>Rh#>Ml~IyJTP_pd2~ARN8ijBrZN%9t4_e+rQ+RKg5aejlf3HrEtO2=K4*c2eK@VA zh&~_5=j}MH!o9j+BJeO^8&Te(Jk!tWYR%(We&?o)&ASd30bH@&<|cKXPk`fs(Af20a_l;>XqI$R*!yj~xZz+Sfw*;Mza|MJ$QrVqTrNEnUXfx1FoO_NhQT+{QBJ7Qidh#ZCC#`As#BX=0uHLI!9lbL?$jO8r86htAT9dvv z;q$*449Q0XbT0)oiIvxL|HIPX%v;`S3#`FIL)+wh$3=NFrKxj0`de08pU)#_?!*&v$&j@{t#$ZzHWMx=%rL-hNp?V3@KmjR=PjWrmR;Vt|Jq={T~WH&wlJ zJhwn<&EEpfgwyE&VnCh0SiWxZxcZgAlG?&2taa7d>3i20+Sy2A&N6+1y`|P!YFeCq z*YJT7Vyz|BrXfQ!P=S`=FMs`&-ChsG4-kgQYq4ngdVNGS4e_dVQLO`R z`!?{*VYGJHlm>RsIX}BsN%Bi<+!VXXuO(iAYw`j8LgB^%1{<}j_j}!zo(8WryUz$6 zOCPm3Ve*-bk#i%>bu`trq{42?V6(%Ild{u2@*oL;y0USWb+BjES@S&%8>`q;@v5c% zu0N&ru|Gn}pGvx)^~vKb0H7AWD=){HK5Mm9Hs73Q>b8=FnfR|9Y66bE^%pV%&Uf7v zJc67$i~A~`mQWCXf$G`ZeDt#tmc=nH{vlMxI$iUqXF2nOHZc24P{A#TPAcFu_35;x zdCK%w6$?}^7v_5@&s(}t$NGl6)ZJr;ekCX|Fg!4SR+7)Ff9%1eik}uR4dyZq;BW zuLM7T_opTsOB_EWtUGVl6rsBxhQ-Hx-S*e-rPT`>+bLZ3cp~*{btO^B1sAV2VmPl{ zXCXL_-Mx!QJ^3>2jrH@!M3Cz%X!K!rmgPc{H8CbD_C_&$>nO*-8HwJO;fZbIT%o}k z-YcKuto``*f|KM=j`9@DEc_9uifd$l%(4&|6Fi(+TMaokLRz7B4u0;AGRKWeCpqm0 z8m6u-Jmq?H72lz6jtTjtI+Y<`(yVsd?fVYv@%Li_tDDfaOL^CNdFz`gL!tm>QtIKV z;6mW{$*Gc^9W}uZT3`wJh_}eYx5$8f5z2rpVGDMrDc@{857C!Xj*aZRQlSSR_l#-w z8j7vNok#KNb#lxvGqtf+jRcRH)!(sO3`|j_EB;!qYPDUH`D!;mdjt(1?cE76@t{wK zN0#<(=~R~qc#MrA?Rrr_EXr``>OV8UnO*w^{1omxO*FanFzF7@n3{HSV-t>Lg7w6p z2TvNn=7!4WWo~s{e%8(H9@$Lv7f*?$0@P|h+%Bob0(CD@#r+XrgsL=Z?>ARS`myj2 zqzPsQ4>hB=%g9x4Nkf9fZe3loKGkyYJ_YVRme_R8Ik^61rg|B!?sHBeG#Zm!YC2m# z%7?BhdnAi%F3U##Ju3pC(H-c?plt zezz@u;qDZAHp>VwVNMt0f!sA&z4u?Ug!I`1vJ_9sVq_~mJ{b&2%6g>m@1gPj&hOX4 zAbQ(5rsgES)0)iP5;2-`bfla)_)Um~wl&0L7i8n)CuieUvq#WrnR@!4Y2}@t^CcAP z9Q#F|61ZNBl)X#H`XR+}{$|#vtK2&7R+#JnLrbFyXfg$6CttI)!d)z?Nc>+0jmLF< zCg)@QzuMa7p?Z2muGyBnV8WsLw?W;~FXIB@PkP1IJFykZ?-5@UG9)ie70N%5Y+k)6v-Qpq$L@Nat;#H;?{v_Ftk3iP zFk&{-<0~$MT9OL>RxV>CzTJdy99e;a{}GYBkf7t#%YqB57J8L*O{DOo>c&o&0`Rn} z?;Cxp^8@eo6#Qt()2$)1w;^Mv3cTzd6}F@PM<{&Y9@l<5-^_GpN#(En-cgEbwJK_7 z1sdV>_8oB=`H0h#Rg>%WR4z_-n(j3L`DO5*y(fgPA`XUm{i&BBq?rWi%l+evC*)eG zbU?0^lYY#f))$U3yQ#-jXJd~b&%UiXXL0@BbkDq8$ zW2)Ahc~_Geo}~Ssj3IfKkeT@nlZ(pKrKaVUZ7+O`_c_qAti2Fk#`9bzu;S-Qc!4{u zC|7Ov?_npSV9sGQsWizAU#SP%Sa`E%bMp_C+gM>Jzsah|e|Czg^Lubuqf59scT@Z1 zU({=zk(9bhs}>tt#NSSd17M^G$9IzE5xv=*hY`6x-QSOO?q>I_S(MC;RUlwl3!`_NK-M z0jJAMSzhE;)0I^(HVd%fdUP~V>^lS3r83n=&Vu}nH+$n6#TulC{Pu`lCrXk3%#Ix; za6^WC$mOXCe9!q)MikR-dB)qO{Gw>7reC#?%=Gl}HUDwnP90EGU-O3hdq2TW1gJw` zdizR=ep4ISWwHObjOqN|t_5ZbfP;d|XRbXK_Yr4q2{``o|g{Cu-y`S z%8AuI);*w5)+26&l>FdK=47Lu$`|X+tfyDl&@t4~Ede28IpPsdX}ykKLnztZ0@7X6 z|A?r$B9RphQB$Ctp$zQM;Z6ZKIOJLFWHG-fQ#9oh3`^4`VVCfEYx-cuJBWfX8EM=wx$2JlWCpHm^AB)#-j4pjOm6elad09CRTDkIxj^8 zb?Kl>#f`0(BOl3}xv079*N}q7wy2twb^Z=m2K|22?l1rirujXnk*RXp>}%Fd8SsmG zzE;PTj(gpTyI$>Q*NdBvTavk4gD%C&&7T}&Ha~G7BC*wvgFSqe7w1QG}M1jP=f9z>Q7F6%S&)GTN2c|Q*>zc=X6!SIDVtydV=Tg2Jk8}AY|&*U4C@!ZG9 znc(TOHaWjE@^^M=Wb}cT0v-^`YZAnNMVprER0+ht9Wxo&E3*D-%m%rSUR8K38h9YI&qx>j)B zeA+-v%YJm%M{8)f2msgb?tr5o4a7BQI5`}we4Txos`RjX+xlOL;+)nGXA__p>29{+lZBf zH(sdAZb1m2ovOr_;(fMvH^MDFI?Wfm^VTFTXRcMQLxn2bwC-dgmX)`R`Tn!mLI`LT4nHr|$WlBjJ&iA2jb&o8 zbm%*jSX$o(R_dL3JaQ1G!!!#OZ0u)~IT@g25`Ey2n92F*Lo40OXPG3oc%~V=YT7g= zMA>f5fHxC{zI4sQcX&ofLgDp0f(~^JnOqpa>?pUmqpY}11H&~>NeWR*532eUAkP;f zVFW7oXYX=-A#HQ#+eQuN6rjJS^RNfIjpy=w_dzo|QA@2Jr|Qn7jZFu%i(AOHlQ`SV zx#bMWMw^9A9LFhL;+&+9u57-{(aTm3e-aC-2vzqbXG!h9H)c(pHVI9phheP( zyKkQvcLxsBF`U(RH833Oa0LBy8;^7|V`fy?KB17gAArWix9TAdbDNB+Haxn)$Hm^w zPx~{=5ajiV6iRj==wOXH9|LfBDlAW;c(WI8d4{Xfim_sFG zR~qz})-G^K_WB8C>0a4j$nEZy%twM>V6&?FO*Y!TTxQ(VQ%s`wXjcMM>Lg`m3b6(xWd_I-=YO-uxGTuos{0u{`Z*sG?=T-{= zOvY0&f;FOW@!-6Cw+6;Zj#V{K!|?;jqqFOK818<+Ev~MovJ4`POHv&JRw4c;&b|$Bn$pSh9jS z6Xyk;n;ewrx^(yVBW%B3b9KlY{+ug~C!T#pPVj|ja3z$M>(u}7h21w^h$+X-b)X|I zf+?LO@UU!EqY0r=I9LgyPn}&npmFPCck86yfgRO%35G!OUISC$xc{e>?~H1)>DmoN z5CsuYkdA^xML@c=1S}v(QB;})M0)Qep$e#olt_^lsvw=v5?bge9g!9!5I}khp@+^1 zzR&Z0-#KTk^XvS)vnDh9o_o)=uYJwz*`gcy-6C>9$_3P55i~!cL6TOrmAo?13PJW{ z4aJ4@SfUd(Ypb6`?}BO<)gGFhXv^Wt=GXJMqV2o3vtKX``bCg`ksb|z57hc5s?Z+M zHjc;h+u0=NFz$n*C7Gl=j95&(38Ll=V~A;NT5KAtyWa2VQ#f&;*ts7wIFyw=l*$KB*xO!5RPFe|M&cV?dD~{ZucH8IfZXHetp#hz8-I%r=Zj*h9&Ki4 z2~+^2`;BvYdgc%Y_EtHbOB><3(~i$XDUiZ~JeIk#C;cAJ1g7zpQ0-W<4!-ZP*rI#R zv?J_SqtJGo$Z%0>GS*1axqs+r*EFCbBEB*3WR+_J?Dsw59{$@b4@#fCNP76~F6rcj z)T%AhKAe@&YAAA9V))2lrzbCURjrEfblfjt*D}hKV9J%{EDd}W;q+M~pI%eB{-lsg z9JKD!ru}r zsoiFjT!L-?N=Z=w=%E8mK#m_~bd`h423@$r@4k98@g<|dK5hW1H38h11Rwgt4|!P& zk*{B20}KCdt?bQrd&iG$IKei09~~oXE5nU;W0LlgP!-ER?eNc~%ujS@0(Pl3O(2qN zJRsN$3*WR?jlZ}aOn3P@XwR6Qa81QFpgPdsCl468x5jy)DBwhZv-!v|FRN;+w|;)E<5EeQ>g}%%-~_%pF=fX zkeLl%y%hk>iVxSD=J)MckLu)B<(GUGvEP7}!*le_~zC!^9! z;oJe~VArYoihnqI1FvvW=Xdn-1A!JhrqiMMIRbrxhUolgBMMs9=>dRTwaL`4Lz9T~ zQl)#x6xxJ2J0>Z`MSDrAg8i?hpBn1|Yn%90%&lDx1A|`Ov+#Mh){=2X7Q$wsb61J; zLSmlH!V-he%1(0ClF&ky(%ddF>b35EDRenx)8p(w@HAp5m30cCJyoi0@Y4?MKV{t) z(m+Fo6#1$>-;8K)&RByD^^&YCf6prI-u$mftvyX644dL!P|R0w08B_ zKB&7_Jos77ZQxE}3?x3XeQy%`DutPvoZKJuAgFb9a+l`OU!^%{$Be`4xn1HOa|E)X zd_ytH2PrMTV-?!eGj{^7J~WbwG!hbu56u~ICym+617 zRkOa@ly0dq%S_l+6%~2zSz)Ked+>hVy60rNOhBZJ1T{C803GBbH?k#x_n942 zKex?~Rk>06HAFaI^u@dqp9>1)8EW?LbL<~LOZY=7wA*Xxh``{Tm9enCi>LT~<5?wi z2!-dw=s;lj%Y*3hpMU83KDF(I=0IGo7HkjQ(&F_ogpJcB8xz}QYR!%3=B0HJ4|^;g zw(4Mo*_*CJW+9(UF9ZKT)0Ns57=BT5l{`8kZmsSavpS*;JDm08G2%4lUMgA~`ZPWQ zd8T0JSRn6ak)2Hr!F%DR-Q+XpSz-7m-L|ZF+f8;QuUD3D#<{U2R%IRL4cbV-@HEuc zOyFfvm+&gqY=h4{824cfa#p*Nal@wxmBwxEOzCCTR|N6^>#`Hg8gLh%B>%XNo?`Or*FcOr9Elz6aI!3rUhR342vudUQ;wg_w}fe zo=6-Fm7+rP$<7x2t9SL}EnH<9%R7Q_4gT#-WpexmEomf|gEDlx>hna=%n{8xCt70i zRltwF&?jT?K3_`me3_CwyB6l>x{@U9#_c_q4Qzh>bfy1fR&?(EDOCOyiKY!+KAWyr z&4oLo*c62qergCf*7<{XlvzB=*&@ja z*1WuXNlNIS`QR3&hI**W(k!|t*vgke06ohdR3qn`G=Q#$VS&BZ8vMa}w5tm@`L4>c zJ_hz>i}*k0Bp+66*r6eSl;OOfviP9?)^U6b&yMwp!>M8FqN=JoR&blZp5{M()IaM(bf@afO#~qsI7boxh!`!U*Ii5>9Pw7ka+Ltj%-O2= z`Homo!>FO@_cktnr;SKy`Hy7gePqB=Rh;3^G}Z!;=cUAH#iAYKMfpF=RcNWH( zPoN9^CxHTfA%jK5|B`Ax$*eALGJPx$T7@+hb-jNOy(=NVyDeQ;qB`zu8tle%c<=3- zC&D%idNu!wDjO7g)Y@*G>AuGI+P<+Un7L8ECFfi7BxLa=)tAeS2S>C|@2peDzy5~( zSCBdlc2@}wGOQC$VsxSP)#1z^TF48*R=xB?pmx0i2D~To&%Qh_-KxKWdYcmC0@dXh z6KbG=p~63c=y2qfKx{^_{;L*b2wl|CrK*C$$$Pvd2h*hBBRwzzHi`00T6esZPH}LF zj66oXHqBIFI^lfq&Jf*-N&mjBZ7Z4L?& z$zQ3pH%ju-EmELx1&)hVnFYSTP=RQ^GPE#^S?6r?Cr*Sw;5zWB-AkzTRve^07^7 zXQ>)+5sD#9lxk;8uOc_dOQB~!(>eiWiDTGx`aI7?V+2s zH5!q5>m~rB_g2dZ_R_*G>`|tzMk9F5#U`Y7(c{f1;1gn!=VpV`(T6bJTGpz}%l*`j z)Gh${#adZ4kYMh$2Lbh z3;MjU?;Ck|W&>_May(fe3m*s5z4g!5VwirA+vl6k@ejBR%fo;!&}JuU1?ktsH4cg= zDgJ{hBn;y?+--@o-)|u#$>d~qM_R(Dix`jvN?64qaL!_5?2jT8e!*wzeq^WVDA@g! zHl5wI8rYd7PXq**nG|0+`dO5HNVcr;pYSd0d%R27T1J;K*AOwgsjR1q{QTHU#n-EP zjjM~yBK6Gqd?5PQMNwonrRgz4lSD>k@VLD)vKT8#q;e8u^ zEfHsQhD1wj#9t?gL^=hqac|mj7`z}H`)!f@#fn8v=y`R{thEPjwGo>AeMa#%{g>=SK7=UOG5_?ah&R(& z0O06;mjh4pTe+DoCy_4CHL6{^U34tsiXxwY;F&dlFgBu*2f{)}G&yX$bj*)e8Q2(Q ztULn%;PkF09BfR`x8F7?Ws94KOXt&W1vXqTQ@n)GS8NFIZy3HmQQ@iv{Xs+CWflX8 z^&&(fe)eKTzHR!cQl+~~@tqxg3B^WW)O?ord%q6co7)bw=_~v(KaEiDuQ*aPwK^yp zi$4Luetx1a6Z~-r)UzuSwng~X%EOZbu7{NrHuD7?-#cV}7(c|Pr=xa0-S+exfIW z5_Z6YyUe(gd!8w~lQiyE=oZ&i-cw=ERnC*C0B@Z%&gniAW{mbrMEO1?{G3z@&E{ym z{^$V(0Q>lYtc=#fg+V>^IRCZg$uZ`PEYGqEb{(V<1>HV1#jhLb0naR$S(;#PoFP35 zWjT$>W{%inz!a5-G2Ry<+j}wI+UHLVEeQZ9OsTbWx!MlB4%2y3epZ~a@Z~${TO)#O zbmGs4)J`qWLWaejtX%*sNOi{hat>7#XrCb^#bu|wST>=hK=;`+Ice61!1ZNWPQ51s zYe33EM02V5xc?t;TzB&{>=V!BVmnCgBRgCaJ~V6J(DD`^rem+aW@7QT9>w7K@u!F7 zJ-X3BWJSzo58a-B18%>Q;cv-`hH#z?=+<3knw>1q&i|B1E49%tnl++2Inly@3#l)E zXb{J6*mi|bVeM`Zt`pKVPJ!m_{dLUDI)390F<;%;a+GlYKR@>ID{|wnIm@T~_QL)x zk?}D2J-a4=P}I#Gmf!k>R>s;;!3zFXWs8&IRV!D$SdHEUofNT7^|}s|lx_{9 zQex|t3GcKy$IW*9^>|5xhLnY?eBL|1^{9EwU1%oqPMvpCU4DGsShS+F%pIs$WQXK= z{Hnc5DhF#~&4GY!DA`m|pp7(gt5Qus0#0^~T0DbY+3I1R*(Invbslq=e`KrGm?#)LXS)ePGe9&5)gFCWMDkiL?)}3XSnjT>DZ5vHuwy6RDw9 zTQnjw9rCrot3>j2#}=!(;LyDq?dhZ4e!sT0?pYErXwT|s$u3FTvrZ|rX|H7EDtlrY zEa}v}Yn08oUS^@#ANV&M`lG(2GK@Lb?^&@%H7rqYu+N5vej}n2K6KUXswYa69xCzG z={QxgYN9PHJ@ zSwrVhqFpyOt;h5$?cdgU-lt^V2bSOfi|^m3Fj^*7mTH!%bW0&@xUTV-oFCtR3S|tq z5ob)Qn?x69)HgTMlecVt>a-8+_)fml#1DOq;Y*PPizog*v@#HYZfeKHOnCzUdVh`& zNYLU>>zpqitx!u0DoC#)WjcC5{5T^ANg0`nTS@G8CCPOCLb36M21fRavX0>*E@m1Z zmXn$Uuh#TsiI&0SjP8mTN%#=mzQMz4_BWC__@YW*Wy**ylR*~L8}P)ED39;-dwq(m z9^f=cFX2T}Fp@a&gfp;s!ais(ri_fq)$=bf;b@lxS6)gluy`K zI`CTe_jyz!{&HJ;(tlc;Ly~3Pl{HGOi7YfyC7$#$v&rq*0EeWAbeu_aSD4Ccut%Dr z4AE{y%tkUnJdqLqYnTIXqdTk-01=AQqiG{~X(^%!SfrkmemthWZVA)1|9;|5u%iQV z+%2gd-Xj_{P%l$Y#kEGWaF!T}dPVbgW35NmcMa8IG-k6D?3J2~XL(TeOknDV*Wzj`rfq;B`s}NMkcPq6Mf`35#Gt-O`CN?zu-Hr(9MPB&7BW}8V9?V;r*KP$c8GU zjbuc7Yf|erg)GPTx^NeJlCn!eHJ>?YYj*=2JthW;`%C7LwB7ne6|>a2YX-p%_eeez`Z#69EDFKOWG z5~V{J;bG(hd#oq-gs))*Ug(a{A;`^yw_+VSSRO`vX+^jOHw41v`Zde^N#PI44R$e^ z5I0-ju~dK{#@rNUqH_&D`klhYXDZp6d~|=A2-3_kejQU9u;-hH@>N1ae-eNd!fkoy z$?cN(@-SqMmZp{9yjumKn}RfZEQ$TM;hvj45=VV)Gxeh(-E+8(#1u1VIDY;>ZN{mg zkO5DE&xuP;(9Yly2PJe%fyf>iKFLw3^5p@ErJWm=MuE2RVXx*}XAV2+qB+QR!x2IT zd|{p?SFyba8NutRh7vBD*i~{w{9g_ zf8RAfgC}rNp04nhj~3iXqag zsoLjhh=u7&I!{UQeGTix+`AvenxR#dNuBBZA7;%qXPvHwGlLxhXn*88%C7jcplJX` zEJ}WLbD>K*bvD@*%EeVksb*k3G`Qld0XyhgeVFer-u`qs#w_V}Tn3~$U1>~@<#fXY zfbIy3X>p^VuK2;0r{taRj;TR{M4@bF#w~TK+Wy6Lc+nb_&sB6tv*UujQl5eR-vCN1 z*^2cwPHP7p8O+))f0?i2K7kFsM30|jV-{j!B;@AoXSfD)8}>UinEbVfSao5I7Dn?J zX~;7%C25X=ZL*|ktU9)~;r2x(#eQf-#$vMT6ECC__!d7iGWVVIR83*AA9IMHde{5Y zp>w1|Z{4TlPn2-_i|$EpPsjUryvrX}uSz}_YaeqTYTs|3irDy5eI~KqFzsZcquc6M z&5F5Dg7IA-fIa(zqZm{Mz?T|5jZBR?lOkJj^LdN;mzZFLrih;1QCc<7jEh~SL#?OQ z9lRmhWL(@Zwz^rT>-bk`d`yxp~rCu8#Az|+fTY(g>) zW-`eijT81iDqd0Yhs2qL;}Km-d__g?b=(d#rPGtKy)uE%*ymEqReWL8lRB5OK^&ga zh5>FaDkd07lUPZ0ElX+)klTN6b*-s5V4^6WyOOTO&X)67&|Ku=e;k`Ad48iC-9AQW zk-5oJ@1rfF1r|780NdK@L7IF)*ck25=?=QHEA#pXEf?zBzI$1? zljRL%4_)2+(?zBs{Au5}eKTe2QCte?k|pKXuN7|6TpuE>;B> z^}VP$`$xp8#7}b`^79if3n^zg*v$7}^5aeri=sav3$po|1KgtYJ3Bh^f_YzyWxiCA zIL9V)QQoWLTZZSHFM2%4U<#P_9IZdi3YF;~3UtJ1nHn2TC?pu6PLT*tRB-rNMH*dv(c zTZ}5@#cc3BvJ(#1H}oOOyxaH9a(+k|ul~@{82r=fcWK*5RCLB6-Dy-rAE=CVR$DJQu`ZCU?kw4H6hY#!#&a;8|5 zmLMZ!(((B3c15NzpSYMF$|`ZY$NForzUQ}(!b0yKo|-Y9t>xx^YT4Z*383!zBpAEK z8E0hi`2|1=#FLq&P^GynOGI*&o!Tf$=;-}}x$SG4qBVcFfor*-oe7~ck;spV=jvrU zTC-kfoU)n3Li(0F9kW09OP~atA-mK^j+l-@&ZdkAAxLbQ?HzhsQ8_er_weU&#%@FoEga7F=8o zSt{m#gsvVTSmkE`(SMHkwFxhyCS?cKK6Q)%35RqI7`Fe5&tFpNePMAl9y6x^)7?Qq zS>T%xC-Nije2gq-dKcNtKZU31O9l99PslFHZZ zqW7QO#CJ(k8(~So-v*PGq1wXD&W9x{XmRL~c)KxJbiFe~hQmi_$(w+yYDVIlSzRe1M=&eX7d*crHY^SjY$g{(`J_C4@f!Rxu9mC~bDhflYL zFL=$plqt= z5j`q>soKRjaQtyIUkdS>PP!^I@pNWZ*3q>rIni*I7Q#2 zyd$2$p*Sv%_Sp2?n(l9bJVhx!nWGN57iAM|?KW3BN}KJ&aH(W5Tk(Z=@*N zn()TPfO_^A;P_PL&>YI;X=k*_9)knsXij<{R-~dHpNuES3woPP2jSvs z%pH)i;dnQ3>Y z=vhQLw$uGU`;{=Nr`7ITQ5rw7Q;p3hX0c>UiJU*S+t;=-|FrM>m6(eEUnz;g-xDxN z843;u+bc3ls&j7Mi2*9vvOOIHAsYj08pfzaYc>a;h25U4{hQDtOYkZm5d2Mlk03C~ zbMV_svNsz8LnxMC9OB<0MdZz01@DB9xtEW#UgU|t#d;sKY2d}0j;6dk?M#IXK}10j zbCay8mIk3rYpP6+fs)bks^41(Bh`;5o3=p!msFL%UsgU zbkH;A*^!7$?VJ8<|K>KF+|F@LG8J0Ra#|C$R`Kn&rd$(mnRcH}U4~(elKxv)EYif*pu=nY z#G|vn5PlIQrVmgEo_KktNb|#88%J+X_$GX}{ARrN7SH3Wq+4?e4$j;~8+9G;dT9(w zFry4TmX~nF@vgI(*M^fFZY@P)`d#M5-63_1At z;ztZeL&C$k<-~xHG{pH3TxgCjON#1q4vJMCDa6?y&?W=b^EzGM533XhzokR|y<%DV|8eIE?D`3~+_wBd$IiAB z}1f4Ky;=W4pX`4LU2c%$cu>K!YuNLpK_K=GF0=Y9o!&c9pZI`Gc*Ip02iLpj|I zBwvi~Rr?c16KNP1)*z!>f9HBa-$8t+YFFG-Wqo3GHDZY$ecQ6AZR@=3DLP~;NI$n! z`+ib0=*`FTs-0VRQh8=&jhMHx%cu|aOk&RXgj8X7(+fJ`BZg=-=Q8h)lK(=Fq4`Dg zA=yC(k;$5LmFXWW(13x}7ZJu$MWC4m(&9geJO4zbn|j*g)7e4T9NgQ4;<3HyUqsx# z;yS9@7}qWzZrbyira<^#5{SF|tAb%ONwMhq>c=!1HC8o=BYUKRIhDJ|&Amyb7GUt+ zu`+vzwU&F2=eilYR~2wK?OCmOY0cX)CgyFz_g{lg$3g>$INvTbk?7jL4@d+z9-Ucq z2HXw~h5>4qGL!WZ-`eU&3*0a#*|cUNu#k})99t1j*H>dRZ{?bzf=_0p(e1}egNk)> zRERiwou&&o7e?nLqqz8WqH+#9D0Gqz4LKe}EW_d&hsk5(Un~-_bF^XJn2^*?va?{L z!)`$@qs*Bkx!pa>Y=gE-Mq94;LXwT>ug72|S@JPkuzJ_!;M7u_F|`ZRUj^k)W3S(> zAD$U$YlgM;O?{dNcU>MW9mWZ#qMyy;H|#7dgHD)kMT+Vi{5jqe)P3sxjxPN)U}v%m zV71T8tpmGX;2c`x{K2TSJJXwDZmjBu#opebb6u1NZXby#1*~_qNs$8>F9X<( z!H+aT-`I`#PiY|L$DglHhyqGMhsh9LRoH#ptDj9jgI0W{0b`e|HWGSi5MKF9>!IMz z)4K^%ZUSue>Q)PsyfT_`Yjl_m7dT zY`mF&QZ^pYd2u+tM`14je(tsQ%kfjzgUj|$<#!f~lX&e7`Px@8Fom7T1{-~CJaMu4N0{#!^R0TA6reTZ#(qsn)J?G;3e2sYbqvTxz z|A(gc8p;%KV0cZ+AEGhzLRK(O&4}Y~%E$SDxZY#WbmDcwE{+$Ba2`?#(THn$sThaJ0u^$F5IqGzavYPPU1S5LGVcPjlHy z13)B_{G0(S^mXOPx3@==6OIPS89hRY@YA&G`#(WG{EeeOyzZ5zvFn(ClT}!^_JRU69K60pqW)@liqij zbDhOy%3MbB4x4|;N7+idOF`4`n~_7mcO>bdl(k;j!JV`&&N|UeY^Y}L5>}>|{U*qS z?c0E^9_3Im}I(dslUHw!b0AB_q0{K68!FpCnqt7963KrHtpTKM zny=k+t@}OpEf)`R0@qE7 zWPMDLxDs;RYZq)A?6;fm$v!hb^SpoA*4z8fTw_%!mAA~|o<%r>@ zXt7mO$Z~nW;@Q3v=_~^S3DGHP3K{wAa4{EeO8mJ^@d%#W4B3^hN=PIY7nF{qyU$I0 zJKAwWDR6v}W#jy;UML2V0|2mW(_MHHh$jH0iAtqaPwqEiFi6C_raMF*zDv z%+v9v_O1aTLhr!y=UTgNY~Rqg)%jIL#IA%&C@?2K&+!cy&l{*M$XY1*Sd40{*KaX=tydL;licQcyYm?d7GiDR0qDQxCMcjk+f{iK5 zG{q-U3rqWT*yyzM&cmY^R_ix$X)lZdJU&;?JIwm!hm>CX3H4u?ieBh_AeJ~G+ybPS zaw>i3XY;I3n@sjM?w;`h*GJse;y8;?qXm&#=vEX>ApQI~+(qY4P=inOz+dqQv%TNj zh!!!+xkgdQNSSXZWfl@M@|F8e8TtFgvx&mi1C;++bSU8X<{N=Ebn?>i)}qzF9P6tX z$7cknUzJ?pj^iSE_kJI;;Ekzg1lI%tj-Qe8Oxy0#!n#_e+GsB$`2Q))-+Sy~;#()J z*+@lk2bI%)lEVt+FD0tZb1{2Ii6LZ>``blztpe>;^88gzN~l)D%ci0beIGxi;)eq^ zPT4_3Fp0Ao-%;>>$-{RT=N5gdK9#6vrT1hp?gzjAveK0&fm3Dl0(E57mp1NC*o9r< z=IG%1w<@GCvl2V)!|h1s1@Ag`kd?YqwQQQX!{hnx;TzoxUSeJp-kZHWh9V{DpVIIS zed42zAR<-Fs(VcDcb1)j@&$4PDcQ?D?!*b3A}<&u%eSK=*q?HmYK5O1zQ&UGq#2@B zS_??NIF$yKD>^jS0!#8+$16I9LDh{1#;Oie7Er?7q=O5%MZ8Gq z52jJ(m|U~UF}IX)9^MX8X`spLVu$Lggr#0JvMX;<3r7a`X1@I_qg5pTg>iRwKH&U( z;mtYANsClpLJ%J&36+ps z;{2nmUfodW=!C_#Oha2|8fx@=_1y!wzOu#Fn#Y)?&ASfFLZ&0uiU$V}S8ukg$|KH{ zv*M#Dpu}*WK@#PNLh4)RHYbJ2Q;ar#b7CT~u2!;-xc~Z*5`iN9@tZXWP|N~&b%e47 zm#s|Vn2>(Ri%45LOm`rC5^xWf>9V2kM%b0+s@9q=+ez;6l7E~qO5tF8ck_kgG>~jG z-vK<~XtPK9+%2J_YtuQ{%_m+hnKmFm;1PVdE&I}WFzD?1!=%c*=jYivHJIop-M@w{ z9rrXP+ zGT`(NX;QR#>MIev#*mOMvnR8wS{`oO@)Pav!wy(Jg8^mAbo>Io6G9^J;W>Ez4>ogO zL&NnHjM|gel0)bh3JF4rg?o4e7AEmtucAphPEGMkWy3jJif2{|h;^swRyE8np2Eb_ zosYR4$v+gGsK>YcsjqasQ*dTY*e;w*Y}=YRnb@4zwrxGJZD(TJwr$(CZSA~O|NeJ< z2VYm?qi|*CNF2+`S=G*;Kj( zo`*yd8i((S?cDZGK0kkPS%PkT%ox3f&jLH9R^sFbxNAhMREYXGw=~D|X^Rpaa-dkP zm>2ta4CRg+D^Zl)SWE~|#4?rwLq|k4Zw4CA7nAdfUnMc5NRCnr=U`Lz{*J-oUt@`0 z3xlhu8C97#%9n;oWP>(Lhc?C^*LFejG9i4+fQ}t43KFlSu8{Vj-U_GD^0>*LiEOAV zGMV3o?&e{{3{U=X25Ww|jcAJvTK5Um;@6oPa0*UBSXt9Xsyq=wgsqN;pYQelh3`N% z5+<|K{fph+EWAx2t6siS$#5{3B;6%Y`Piw2x5JiMyhAsK=FsMgKa)=DOdt3kp$0n_ zbFI#CLk)~R^maxP+61oQ#yFx!ZQ^9X5i8kx8+}{dgZhCN=Wpgown7F=4pPlFut~}k zQ}b2cJSG5llcVi}R%~8MztLtmr&!Zo0n?w%S|F6BPBAKYzCaGwq6c(=I`Vr|(RK1O zzYAgf-9g!j80rL0w1gY#lMe(}d=a%j+cS>jCb_R7M+A7QE6f}4XY~xRc(P3G;a&sN zjW%B#iU%`*7M2Kxn#r=O=J>L3c30sl5Ll+I5_cdM%7F{p^`UCVD>zOT4P?gaC?FV? z-4B*doO%3Cqn>+Sfq$t(Nz5qMmlsg~Ll??2dvGw8p{X5l!Tx zotJd*K}<>!x6ah+d=k+Z{=U!JctpQ$6;jxVuBf(-DDyy3PSe9~N=(CgE+?PTQMng>Sv3bS%S7$awBdQJ_S9)mkN=9E zr!H=FvWG4KcNAMS=|HBRWyYFdJFgD6gZ3g@BW;gM!DJ3%!x(zk(^rAJ;fhrupT{@e zQtR?YgNEmC*3;!pHvV{BV97kpE0(v={VosU6>zIsW(Y4YN)vo|YZ4ap^=MZk>9LE; zfyccE!ENLU+5jgLY4Sgj+H5ZRbrHL#hA_y<{d4xQZg#7~ z{D90_GtL!mp|Dc_=WtKo!Ov8eeD%FSNlMwowhMyid03;i1EW?xQuosH`^&}h6P-su zeFFeN$BB7A@-kQ8zW*zWgQZYUucIYNnu}n;dNkt90$y@cwN*wNAC@xp2Q&usyPf+K z`Qd&RB9lLN3nc@Rt$iuuT)d+9v>v&?w%RnuPf8Eo=!dHnt{r}sGRz}TU>rQ4Tpg$) zrP(0|JZ^qJ&Uh$LET~WDKj;2ro(Lo7mSN$9S{P3;nk^Xzn!ME*#0jUrs>uN(+c@3a@o>`q%OXzeKn@y1afpc4Z?)O=ac1Jc%=5S4x5vzz^{)p;f8w;5Ai_xm7zNKUc???0k1<8j$Vlqf8jYCts!=We0+|I z<&jhVwo-hW6RPV>0d9f&<=!#ca6Xe0B1;4aD85u-vjsZ2AWhUx7&O`OE@N-+mpiB< z`~C`&dk3osk?}l4l~y3x(N@BOS28s-sl>nY61^Wh&tUW$cIhe3x7B%&L~F)W*Ef|4$EQ@>J-MEI1$_5Ck9~tp6ny$?%^Gb7QiL-27zQ zu+Ivxc{Ok;ur87uD&k*Te$-3k&l9oB1Uqv{NWX zp9@|f1W6c(A+U|3c=uVFQ_<9tc!pJb@8%yR4hzg>E=RZ+O|b zBs{4=jydTn*rs#qaPWA@|BX1M@PM3WE5SlG-E%;>dLZdfSwlukg32BoSvp6ct&i)4 zJ)TCR+yNP{IhN#N+obTVx46`zsmbE&)LFNBz-M0de1sGEWy zc=S&%4h-%T*3S6jwfd?lJ2nnV<$;A}@!L+kjq1^ftZJNyJ=Tgi^SFkY#cY!E($*+W zr50MBAlKbmojXnOZ#SaS$csc;ur7uf1^Yj2kW&RDmkaUW&k!n8h>V)zoC znXv9I?xi%Ig`k-)P%)FFMal5uGyx=}Y%LJWhWxFm44G}x%~5a5VPx2`+UVBf<|cIQ zVO0{2nKa4e8v3-jE1ZANG?gQ5M^B?SU!(uyo;=GF*aK3m%lIS zFPyDHclyQM#lLojGz@BUh?HMA1MxkK&NX-{ip#9Qxx82)5MX6<=-j&OH>7N zD)H3oHCXwoA0cZ2ED0AM28-}|uA5?Ki&T-|w}wASM{JK^#|;C?E87XW%z@hD08`v? zYLzod-N+P54sGRB8_hTJdG7H?@@X1;DS%^%T zo*Wj+n*n>HSv%lUG9(%dYm{2ycnKBFZKZqUnm*LCYYnoy8G~jZNRYLY^gKTq*p#@@ zwbeX19r^B;EqWRK?>vy+r6Xx8>uk5wj>;LV?QCkAo5+64@$G!$Mf}IJFP~rFr19f& zjT`X{6iYMPqY8*)56Twkf7^yrKB@z5t9NFSsoUSk1OhCC`EZ+iPboLf*dXwotu@vu zH9LmK7-C*6TcNXJi zB3fn7*pN@8Tr{H?zZ14pjdAk5{#f;IedJAtDRZBOa65z<5Vi4U0HoiE1K#+6B$exh)kTd^5*Qeaw9x zW_4wkg?m045==!c2G;_K1-V|Q~l4Zs~hrfY7{a9l|ahi3zqYiLySwh}`>ywg+TeVA)BGVP`A3bG@n0;ZV1 z7LEokHaTXey{uUsw;R$QhI;|_lDz>{VyOXsI~Ppm&}0PRXp6MyuYuP6{$=$6m=^Zf z;2;D3JGOXLbvqQQPrYD&ERxWUnorV{GkBJ9w2S@~oLfBfsQc`sfClCO6Oq1h`23TW z{~QBs7Y=0`#0E48R;kT6mQ1Z3`h}z(S+Zth`G&f4nNp{qDNnXzIlwRP$rK)-^Gg#0!3ZB%6(z1 z>+!LqhHXo*Xegx2ARp`=aYTT)CfNsyY;HC&-h+cwc-Xk;Y6J5gGD!kD3kB`^LSwu? zzO3Eb+7YSpcDmV>80Na^>Xv~(?+sL4FUMuc!lnGW1b6e~j!IDac%fUaOI-Xbyl0%} zBLN?o`0=dd9>Bi-UroE5ZKgaB;$`g=ET9{iJ4cr`D`rf|-McG>jSfVv{g2Xe`>Lxx z@xlZVLLL)k`WD0H!-c1bSu9N9T+Sccb2wTol)TZj%efEfJpy<5n8F(n8%5%OZdo0# z;6k`8d0M3^$1)~_5q@0Kybnt1sb%cE35^LEM~#D%7#s>A4X#nalOgvYe)tYC=^KNM zI|+$bU;DhZ$z;CgGM#I5s1e8S@lk75?y`|9%y<1~DW~httrWcJ_V<4=UO5GWDTOpp zjyl|W6gm-otA%_~@`Ns3N-L;je5^@1l@-I%j_{N2jd_kOTSDyz8DTssa+vWXI8767?0DNb`qD_xbr3r0(-BwnTcYrSuLdBNT0`;HytRL6!@=IN6X3c*#Qk}${(K&h3;|DcvHCkVlgbP z5AMSpT?UGA{jCX@Wau*)xk0Q5WI>vuEn!|9p`)|$wyY-IJ>N7?YEIyj<(ts!JP?lz zLWtGp3N=>;C-gyAS;jJUFmjR%A)sZcgn#mENMBI7Mkh|zJ|hRNm(c0!IT+))S9nX2 zI6secTT8y-Lh*AVjKjQwxqo7cCuv!$?PkD*u^a8OqgjO3E}Z@=Kk+go>Qgi~=}H{G zArc__TX!03^OS_^G?0y%ogdP_OpRpxg(6I@@W7qOX^h(0(r&WeK2S*wxOth4Rpqxshliw_~)}+I`L&f%dfW{55Z_IZU2-yl$iAHQBnB@l+ zt4hKckvTfyT>lH+=5LLD21U)AEy(Y)HRQ}lo3+&JUWSg>Ir9Cy5 zo6{*$@!(=H93CrgO)3iOx7MY=Yq0wrN#tI+DEY*J@Kippl>s$07{SaSCKxHEYvyn< z8jLM>=JEtOpt`I}BO)S4wgDp6OVXU{L#p~9vbD-b0(9}lw)x|=dE24I31dTSJNfW| zP;!2`gK=gi%t)ths(fA@m9AEEgr51$o!Tb62K)X=5T8%XExCMjr+F0Ym!k_!CvG=a zsrhU(nWfGFxZJ8obwqJu4K9c4-SI1Cl`WaRy?Q%Nl~pB^$G7weys6Zl?eqJ@ak+?| z3_kjNn}0zZjsv%5a-rk-Mar1+7hlhGf~}^v-jpa`>byF1-(9U48&PyU60jJEIMm#! zn4e9T88MB2Cpa2E7qmRmpiSGfFY|;y!xKtY<;O}6y5Lt&K6cx}$!nzj{@6mhI}nFD z!p*qML7Itl(w!+}6N9>_L56sFLJgryf1{Iz;qNW1RxH>(c16*UBvZaWm%OIp*X=31 zC$SKh1bbDn<1?r8T1@+VM$ruWP_c&B&bp$&lzZzp*aEqAj#C z$UuFt(dIagu)g{Lm>}s)pYl>0nro=IN?BgxF2x04WcQEZW)mk={)WmEWm5+SS9(? zFri}ijTb`|XZ@eB_xuND0PpVG`uaK*;ohT367%NVcVxPC=~J2N_E8bBBUweAs+*RD z)!5r_BE9di_!!tFdBhTDCi=yz>uizbUZfxC2O_arEOIoR#S0-k*gG7w;h`Z3*iPai zO?Ff%sSGeb{!ak6V?;aB(|i8e1Mf1PFn{Pj{3kW!My?}yF*a+evNGq@JJ=B!TONXp zYyrK{8(164XKG`k>OewNCKJ&uig{R!kRMjK1*&AnikV9iF0NF}NZRxC7w9RB?H^K7 z6gIYbvSb6Xn(R79ad{~9+qhA`D*3ijOO7X4{Dqo2M`2o5a<09m{kt&OebOUMVa-6v z3*y6on!9POM3L0TU$dKc_es1EtNm;)xbmSF{HM*hJ24>Ri&(Uey@q7h=-a=I)HVxs z(EyJeKdRN_E&UhzJ}ph8cP30Hh&Ume$@jP4?@4010T099KsZpaKVWi9pi@zskr&zfVr5ft%eILf|7PLzwDb;Ld zVPi_WgoSvDsD{Kr?XWKcvNlO~<+DHtIN!IwygM0P^n?5K${70^(tNy}4FTZN!*w0&_5q z(ecjivvZskCH1Jk$w_>Uyc6);I42EV6?OkIYO%d%dl{PA;ulCOJiD97jo5m7m4qOw z-_47iIxNxaYqD;K&0wb%E14bia1lJf#M@l+jlI>eL1ZDD(&@*jTb^IV;igBOOF%7eW_)A(w#{MW#%U9R+VmSHuAse&H%_CMKO{=1GAx9YmAK zx!3vbBZ;c@qK18j`3Gs_6`iv&tjz@HD&K%@arR1v@}UgAAxWA<%hWVLa1-0 z82e5}-kh8p_9nqK-9}DjsI{5=BH#2kRD5ZOV;gY+MZNx%05@t`bWOFh(&zJb*U%;t z{=EDsU0zQp7?gd>2#UegNqIgu@OGj?X~g>3qGC||-X;l_BPzpCFI?3y?kDKdSC0%3lSR2f3;!I?5&W+A(`Fhc2pKt_UI4LBgGyC;kP)KsJ@HLYm z(cSa_=d{tQ&+!8=fu$KBzU6SJg4}x-T`Ri7rBJOx1ww34ShIUDbF=o2`UK6u8Wkh^ zw-a9L``!t`35aJfo1C>KxFi}^Shi{wQ}qFUC#%dY=zy_&MEHQnM=9}f%cUZ|uJJSM z{;96PLhD`>&=__lAk>pwT!fI7tMR7+Pm-uhq0{`y2V9-7HEbK%HW3qFxQr6(J?P5P ztoc;=`V-X)DZiWF{v6vz4%BX}Z0MvZJ}WC!OxnpygJLs^ zfeEu(KwF0m9OdO>bv`!Rf=jwLnr_Zj7yH(O9Z~nO~^ zo81N{=7S8Oic=dIi`1GEjXrBHz%a@cwjto=AsXo!U{g4z7gBFR^0>dIG=0({4YqXW zTh7H4pUTM7$VxXI4krNLfa^)GvqZ1wHp?^g?ex_TvA=bap$xft#)^PpaHO}&xD=dK zPgldoI52wqkoxC8C;UcSAdCj=ISkv%t5I`I{;j{|z}?75dOScWd*C70O+gB-KO)@U ze4^HMMkSLz)>qe$*t5)t8a?GpfyL#;vUj@6ufLr$O$)`V*vlYjCsg|iB=CaAtLR8I zkCm`4E_}{kGPM(Oel2}a*>*PZ>~2-FXu^y$kssUfyfugjrw-t=!r-nm()!(D;? zfjE{FCK2~cU%)xNvCA0VR52nruM%a7~!%unTqVO1ac|f^Ue&?VL z)VuA)@tBUf%BCALWqJ8zi%ZXV{`YUEIVA1fI6QFSE6?2KdBu6^?*`rPLS!wrSh6+U?Om z^fC5RwO1{flTVz0@Y8FWg;AzUy)Y@*`5m4s+=RWQZY)uKq*v+O1K%9(IvLHxkWAz- z3;kn}Lx4)()%XrYYd-26-J|`AyYQz~yiJ$iO3!j>zt`{^bYsnUnu7!d%~qB_?2N!~ zPvO$|^NbK4f5oe69J<@5pra);S=JVgjQNE3KP)$ztN}e`nb77`tfFyVt`U3=_rd7( zG>tEA6#Gce1v6JSx9ZzC6aBe_fu4ThN2+jsZh_M)y-{=bjTX?J@Ih9!Jd*U%0{1ti z+J{bc0{WtA--MTDpl&(n{vV#*o-)X7&PFS|Q^)90;;b!+w(lzK-|17lr?p5S zPnT0H!#SyQehMvmYt=vSq77^;(&f#=G&GutOoxSsm|4b3StfxHh5>&1M(7kYD42wH z5;%0(XyU`_@PtH#znNK!a3z{ku7^sgoe3?C?O}9&SpGcn#b*TgxTgzKVnoDL+dzePr3-v}

    E3o4QFF+X{0MCv2b`sD)hY2zwu<)>P1C%N4!T0kFoZPOS@y;=_r(Gz z&}q_8?yPL#^{-EXE#g`>Tv-S4rP_QLtuW{>u1)V%fUB^Sv-fRv#$^SbBH}}@zw4qx z=T>>Tg{^3~mtE_fh#RLp+3<%(KiwxyknkSVenVm_H`@iRyr?cUcpt@1@utRl?c(FS z^r0h3;XWW<$J0?@(c!{(uN`}HQ-B$6QT`hw?#+(We7HMYZ4NaQ8ODb&&oaBwkK)}K zTUT5W8?$Q1iBF+O`lcZr2$U?u{iMHNdWfpet`G7&(lKjt=2=Bp0+RkyN|n#vX0hnF zI%CNPTB8BJ#Tz(zZT&Ih{bz!=$!DF{+pqV0oJ z<#37JQ3)+;{Z(tWp>pNkk#Z5jOQy0xtlBy0Gv61-K$$AJckf}O8Ay}+84i8AZ?mhO zYXDwPU5!Y6S-&J6GlJrc8^r>QNNk#=wMWztDXm8@Zze0^7EGATV6P~^794?O35AgYa?eO7|Hro_KtTk*(7^)@SM`z{>7V;N-AsX9x1#qNhOgRdZ zgsiO?j=!Un=o)OySs$CZ`y>I;|R<)I14u-m7Lnh zj#)Hwd5i;m`j@qyZYBoo8howpEC21q%5QzP6pZYIk77*~rT=2ojr%ONXe&3q!)BqF z6%mK;{4;xm-J(v}k*ckkZ>=7Ev-;kPA7I{GfytvY5pyv(g|6#p*1u+l)bTsYfv`)5 zc}iFf+XbxIB`9*bFrcdDbL?w3r*Zt(XtIdO15~bOEj*SfQKlNYev@3KyWhY?r#CTO%$w*$z%mHymc5spiYjy^r8)(6=30qgmky)6$K`^aV zq|4<$M=@N)Rwr-U5Ic-GZ{!TZwd0qnyJNJTsoo_jrPv4hQbYs$Q&b`Bf1fAMdD1I3 zlVLHQ_w!$S)l0wr<*J#OPyyfG#Y`f)sH4E$M{kGheR}D>H^>a7p8exnNt%ntO^Ld~ zPWKFS{ij7RN1D~ka1$n-zCiS-o<=RT+b3koUVx6Bv0a+TfdH$z&Jb>MKg*iV=E7?~ zF8}LBoAl3B;&OyZrzP<*FNG?vngeb4@$WyflDh-Jbp*R{@h4Eb<|;w`{GJZ7!Z)zl z(r%J$pM`pKRiwtRB0EY86kX%-0i&iBThC<53G`)7yk>67j2DS2jHTSvzTzgUZl(sm zGzO1h7{Uwd4{|sP?$-TDWJo)-qYX@5Cc*F9ppwskIsDw@cf`ImIOa+xb4E`U&>i14 zaq%N*jpfv$*t43uR31W!LW3%~;BUG%Jdof&Yk#?O+3-ZQtN-SFaKP5iM@k7qlZ75I zQl^y4G?PXCt%a)HJhzh@i?Q2zi^=X!vD?d00DiJnJB{*v?EGF0RjEj{DNJ{{`?Go@e{26Mz-Pwj1wcTMz2ZUwO0F4~8`2T$ zBA7rs;+-~KD^@Z=TThq{qk_3L&7H@woe%#6k=@t6r0emI3?$}5ry^9PkGm85E+(Xtk<0?gmYPE)wK(nn z)n(Hd`NzTrX)5~pA)AXKy1Lq0u`z~>LRx>ab*75qbtcKSON+I-%r3f7XILrRPb;CD z!F0kam^7p!kv~PECcigJ)01#L%u-1p<|BtOV|ub?WibpRR{ySq)&3sEhZBwF&9{#Z zMqjDAQqvzbH0YD@N>aaBv`Ppb!JO!*Y5FwBmgK6Z)@DgJY3wqXb`tXIUEHd?sm6J7Mab+hURZHPkJkXq z1X&B$%onXr*VBzO=0AdY5*%lWZ!`KHUJXOV+`l!L7}+xtz4qhlAtW&McF;i?$g zB^$r)sF|n$3Nq9JQQ38h)4?)a951|rddbUu;~TXZbc}_sVpd zC0_VPOouLA#aMPYcmgS~+#>CcBpQbe!f#~y87` zGBM8PkrX2UAlX%L%}MIpK-w7uxQiv=4_{jhR_cRnIi;;>O^A*r{%8Fa>bmPIvwge96}0*K6(Y=Fte z5o^5v?~6D$H2o$8a~@L`PR+z>f##yNLvu#28kk}y-ZW`Wc<5PNIc*{4dQ5TT;<}*k z(NSzS26V7`bjWaxJU(U^o;NZvX(wi)w}i7QE~yty$eg1rzHJba&j)G76HCTru39Bn zm};vgPLz+f#FV+&A{6dfTu`{|8&{op3I7YGt{V;;%bm-D=)!HM;_~LD&FUoI7L=K~ z=-J)U^Lg;mC1FymciWbg?xkMAn;UNF|FpSiiSP7WU@&Q`UhOgmbSI}<>zX&M|Hycs zIYtZ}I_U@DWoJs8ZFH^H;`MvMY~Qv${7Hp<*@nV5UEv+lmVM@|haZ=16PDUjvjU5j z{S(ZAXvGK_mFPWuDF{Eq_i;@UGjH9zZ|*(3NQf?mApu~@mLgUtHW3l=48l_S~ThZ=X4WK-QwdN~ESf zt6!|I{kZIF=RNqYoJ4>9?sUSv$)-nz0QPE070`}Qn(7B`vCCdhnO`HzBE*lLEHIGi zb0`aRPau75OMXzl11ks4)_{mjnrNN9P1i4s?i@>wV!tu4r3vl`R94&&GYq}hhyCBo z<}!aRH^R2>&8LPU?KFKtwz+!cA+Y5hAU!!# znr^I!xC$o^;NPBppl}fBtDNnIvNseBomJJfN9>ymDLnqNOBxNJ7Yoj3GvE+^(-RP@ z=k=Wlu5u=v9g!yyoNC}I(}6t&VK$e4M97!*^q((zEurd@nk6+Qc2Z^>VD^euC)<7@ zHiK1i!tm}Qu2ZfNNH#22shtO|MjJC~0-|P~q}SA-#x<`E*neg3avRt3+G%h-LL&%z z2*PAv-E!%$m0323A|^K52k%09hObbQPy^Nj8QJ>oimd;bk-1e+ikRJCe`tcryWya~ zitZ$!1q>Ni!=KS4Hk-?W%T4D-&nnlL7yJ6p_ybm{)&rLe>;{Y;=D{FtIUL)1#2F$#xSN_md2c#j1p)UqGn%GXTCU^@9JG|l=3bVGm^C1ST z71ss$;#Cp;t${^=YOZw(RpMDPH@aQCt-;q)@Ord&H5ov)7qL1}wik5?aI|Of%Kvm- zdgAR#ymmibmyddTG(*gsGn^sM;pLg37TU#_p@;HCnPFPuMYv%r+NFfyO5)}Co#C_7 zig7aiGP-T`qG?34BF_7_Wp#(M;=?1hb#LMScZ$Giulpphc>DQ%A}1;Tcd8K=mJzBF z)bszJComs!H+7Fa7@+?e_RlOMTSF&nV;e^Ry@N4;-rCYc-_hLKl+NAU?*FcX1d@!f zl*D=JHlzas0;>9^I|4uuEn^5|@g%x4OC73mJ)a<;ZvsRsH#Vi?_PVjbxW)85U?s z>h?Wf^mga0ZJw9Uwz9HL5+H-}hJ7ipqbdd8KZ@4NG<~w1u^}qw6XrJ)riS-7Ns2dD zczCR?t~ntHo@LT1_xp#u?`!cyig@ctGKvWTEyj-EA_#hGXZTmniTW>b(3Ec`uW`z0PfqI0jIFF6WvA7F zB@SAK5EXtQr}03y)`Nyn96-+($U$D@7=D8&l=2ZsKb@yj;yG{q49x*8vkI1ygkjp6 zmJeSUtu6Jzv?l{n+grpnovHZvhC<{vXof1eb}m(-+&G#qNkRq z(C=T8Js^~=J&e7M#Vj$$#p`_BHSd+q_eUG}9Lb-%#??^>0q3(dmm9Ea`Co@8RSYLC z@5lWUD{@d5G^&_NYkL30>h?#0q()V-2964C*+r;LXM!ASnoC{p!o8bX+ z@$BfK*K$a?@h#$*ON)C~Iwe$nHz}_mvD`@b+|zF+i<6w`iZ=0?;v6e~kaN?gwr0Or zZOs&lD<904`ovgVc4PH0sB>fsxvX_2ox2^>w5Q(#agWpkA*winu)Eq4WAC zeg9;iN1vP#T`UEoONuSb2BmucgGHRb%->;=|aMPjakVM})^MhzyDQVf4vffXrTZaL3k3P{` zMqOdfiy2LvNRH`8IvBq4`VgjH%uTvcwvR83VKQTMgpbWBW9@w3dq`>U?5(^P#>F;M zeV-{{`ZN#Ug35>7k#&K~aD#9PaevfWbT!=lx{?pN;yb8Iy+#Bi z-hSW-zJ+e2wEZE1oo8xK2*+F&DX?*~xAJIWOJD7)_ky(22kDu{Zy*ObCvOnb%vEDB>b&&E72{O zs#bkd$<^18;RxI$h1uepl}agH2N3En?DJL>6#R1+qVSMBWJ7Qy!Z;;y7GZK-5}UlV z*Cxr->yEsHVx1E=Qbg}6vOY?lQdI)Szpb9TvwPOf7r&J}z#K4Hr0qF;9&(!5y{+jK zTCqW0_huLQ&Dj%Er#)uHko1%S{`8l72%+E`JxBY&!k@v&72g4)n=b9tz)nT;UJ+#K z8|43Ot&oY9lJ{V*Kn*58f)+c#KtGxqKnliI#`*x`|F;<%yBc3~`go!)w*KL5=SsJV zmp1VO%>z|;lxGf|g%jKmVvF4*6kMq>N=A*>i!g6+d){Flt30@&|4&I0*`Xv^B3`pjg5Wfolf0EytwT2+MfRO15aIHt#)h zSYmfI4z{)4u5Vj)d}mi|w|wV@bWLh@fB81byNs<0UL1utA6>qiar5mDxp@_5ReF;2LbqR$Y5foEsXUN+ ze8|yuF{0~vwaX{liBC^raY#fh!z5vCVeY$h90>+|eHbIgto8k&+RQ~4qP>x$mR9H| zY9BYc6!13Y&hovA z-Xc$ofGR>PK$@!+5E`-YZgN26-XfdJbAY=hO!`3$!~AwLovbN)o8=4zfJ6D;t+~*t-tX^y+o!rC?5AH#c~j ztLCnWI>2?vhnEJ=PV|-rZ?In2Xngcz*wbKMxH^P@!w7ZH`R8dTh=>$0-k0jPJPcG{N2YuXPT`M8=O^T zV^v&)^Ky^fdKjeiz?pF6s@u9}2Uufw^gC0qc zJM-ITflwwI>BWz|30P=SvrFjfYjxZ@C$+#bG-;yGT0@F~;6=6R$kTTG)|07_e{dnR zIIcMkxdcGo6g$biQ7}HR931FmrNIvAAKHM|0 zRlso;uVROoM-speKyEM}V^!sq>dB}mwuzC1opQEAw5lDjxLVP;o{;Qn67S-`I6z4~RiJqA1$4#TdVpucau(dlc^Y$AT*RfvM2+pXeZ=><@%9$|20kj0f?~Dfc zeCEN7ITQ#-T~$T%)-%AW@FaYcQ@yp+?9W89svDdP1kD)kstKza_gZSDD3kOA-y3%7 zSAs?Iq|-8lNT96|bBc7{1&S)DsCVcy@*7=jgS>Qa!0EF{5S7@Li`qX4An_e&|Gp&I zhFcmc*z7~vS@x1W#mf2wuYd~s_ZG7aqiZz2g9~y^Q$shrvM;D$l6Gm{Rd`RE4QTGI zJ3O@kbOZ|0yG(m3(wS*SpTuOXm~vChV04vNLHWg77-8kZh_VYL1zund$*PgW%~grR zmVCpAQLG9*r+6;SuMLJD$2^{2D0t=Nn=$ti1db0x>VM3?yy|*h4)K~cYN(_VENOQY zJ7(q6*IPo%l3e||!#@JUYs7JvY{elupc2X8%LS>7en`s(@Gf-Ec6?(i?*;(YzvGu` zUtKjquU%8K8S7@;f!ZLfs>tclFrUDO7MM#%I<7!AQgNH;Cq)b>h&BwPo%ZM@RPmzw z;DzMkX9*OW)BVc{2F*?b1PEI#*&ePs&~KG#YP}EjT9(lE$m&` z+{!=h)(`OiP3s)y_5tNnuJkKd19LD|ls!Q@TB@GoT|LkOTD*AWF2miNjTbHIt_&Oq z#P`=WPY}7?j6mApmV5>J^sDiAqgvT>bd|-rN2TcIGJU4QO z3C*bmoRY3$Ep)EQxeUrS84%No0#RuP`Ln?J`5xoYZlfKpP|NsYG2Z`g_1+L-;f-XgJ~KW_5!*B8_Gi<`9;8!SN~3tCYg zF92N7eRCkRmhw0mAwf2NZphF&9>#XWR(x{x0Q~}93?l9P9~v77y#=j8&`?AgX&lOZ zx>k0;os+kR5I#B9+Hd=0?ZR{56*2;{Obqi~tv_6AbN(a*w?#8Z_y^QBG%i|401(bQ zDFx%3>WKady^ZYfj?@Mu(ytuyK`+`BatvmwTe37#wQ|l`W~-3dY$NJW+ZJY_oAAw;6>OAVTfCfa z_dTfaamPG?Tg~{+kDn-UqPej8XC)jyxPy+@LT05jHyEpajU-XU4r^8MRL5Cf-^GsC zV-CTraV2L2kmo==LpSGZssU{t*Tnsbpu~kw=of;MjX1-G#uA~&*X9a(E&8#!;zK$ zN|eZ5S|_wUScB=5jPG~rR~4r^b?rIAMUI3(ikt(`tmZWZ%Ys>SM8+6sGFEOn%?Afx(Dru|?ZMClaMO-ui_4O5v~uoDddkQ2Yf3 zbLNiDt|{)%jpiVLE$Lpjs9$=u?mWbH6327K4B#am^iP8{+iUi^gy z<4RD4<+!mhnE#bKM!RwhGOMe&k+|@Mgl-{njm2V5F@PkaXE-W_2G8M`E9m;d>27{a z#dwT2;!^G$dcC1ZXOxX^>i+;>K%c+f6%)KLVbks^&lHwpUvj0{znT~>C%3JI<45C# zp;JO8n0T{*ro{lvmjO)- z7cJ(w$Ha)fyk1<)2t!!rRVu76n4y`1ORVP$RfUn>uvf>|b^=SN@gT1>SITcHD{Og6 zvz63nno;f~UQLgsEEPvLHogltVY;$(50IOrpzB7B0#H|6_yW!YpavVo((2CNs|UBb z%e;TpnO7<jcjq8`j&0xb?XqTW-ywFADlBTo4e&E8?%82VEsN*+*g#nwy2gdvk z5Re1I2!=2Uj-~Ev21tlkt}&A_*y8Cp159g; zfs`co5`bHBGqe>BYOQU_*7H5eGOO&)BOQb29f9e~D*g=Y^+!<9=FSHlZp&>gHFvrU zV0-{GY{(Q~$iBH6LtdNwC!VpOK_i<$S!K(5ue=sLAqBQB*dDWCw0ZWkcw$uV}<(4U2``ZVe0sTZ=gLJlL zwOpo3Hm6=Hd=NWv5jlxlcm|at%FsHnUt;KJ!2Z-`3Xa^y!!lVf7@YAhU^w%z!)s3j zKVT(Y>l)iUu%zcGWe<*P`jKll)r%umJ_YUz1k+0J{K9920ehrgVjl$1f3*+Qiw-NS z3@skv29>zQ$`6N!wxM?1vOq`;zG~3$Zk>vFL0T8^2}Ikz1hQ;m#2T<3z-0w%AdeJ% zj$2yZmOD;Ro9uuI(E^5P$iaH>nnMfG=-2wI7e}r9{cv9(u#O9Y-!a08A40j~0v9?3 z=>d&*CmXL1!cg^G`60d#s1FO~(fl*WSAy<3aU~-o`S@tYs=#?bo+K$MP^X zHUP6=i^}^BE(kXeB0N0sEJIzmTr_b^t=Wqay1X@Sae4d%0Pv;I-+`awggyQlov;Gs zzC*ytYql8y<21eE{kMAY(ly&|z?=>dA%d1zAIvJn@(Att#kxc{Sc~NY-vQMkj%4sR zJ1+2P6vlC3+Z_D~{R#QPA!Hc(m&j4%+rU!PPjm!;Be?h@!O+PVL7xjOwrK0HnTySQ zdfThP(}v)PK`_CBnrGI>Sxoopg{+|t9j`ZAhB{bCP_k_xTCGd+VGBmlnk@eqyP`3Z zMVkDy>56aT*&LFbe87_NjK>Fy4o1%EHn6^FN`G=u~3Ef zR2Q`e+g9bHuP_v4g?om|Q!IR;yvmaBJO;K*HkR@-vj63A`&GI-ZrLLPT8ON{o2 zBWc^FxgB2$S-`t3X-lLTaX;B;xc{Z-92QZd{ zrj;WKb%t1*yRdkGHxQ%`p$U{CJpxeY=onQ^_uoW^~Xf_bIm*qk;Agu+o=}ENS&J?D#R!6oZ zoA8-fZ%EeD_B^|n6}s&a*t0C;2<$w?dSR*Zi%T$_!S9bTe1@0o`INSg>jA3lrMz-6 zW)W4kvCpo`kktYJyp=pc8#ktuW93K1tT3fEY2ssV&l%z$73(?idwSeS?x`g60qqOu z`%(6HaN!MD<6iC|Q$MAawB~-Am5Q~MWVS{_TSb}V&TFmE2S;?U+D7zT_!d0|Vn(>% z57z^SN?{zi^^!Zi9v!4CtZR=b9t=}thkLm27>cRexMTR z$GL|U3Eh8^R(| zw(AYAD(o#%bFSpGN^YA}F+VtJ5Q>$G+DbA&l70afz8*DZQJJlP3(vqY_%^Jj^|<>< z?s>SGvM-|$#&50%|E&Nd=W|9g{0&h62#)Fnqr%=3PgmHT$BFof&d_C~z9~s7a_4am zgSE@R0tM$^a$7pxY!K++!nh0+_eKw?Nzft=>jYj|q5~gz`KNTf)GLqTf~#zGvt$uK zy)d!nI)vpIwI!um+Y*eX3X8NzY9+}}lwwF#n4|oZ#!^WRlmZRPE-PKcDHO;AB-QV> zeo@NQJ6o@--$S1ycS@JrY=wmdf=Cr)UJOMtGbxgatg@w&B4VC zZ>yIpfYfCv!nNE!k8U;D_;GRtrpb3oi)t~F0xKi67K7B2@Ks`T3+)XSgpVb&z#OUz zN19UUx(BD%9L6;tKEfM1bvO;C#3L+A3nOW@0&9;{$G}81fg=T4Ih*`ii|K%qC7vn1 zVy`ZS&dSiCDZ|ddPnxE<(`o_hVla>XIS=_=jOt{?Jy5p7Tjj3=6`i}98mC?wi$O(y ziVNdR;fo?LC$l|Jod*jlk32V`fv~XErVo|bmIir)vNi>FrL}wWxKI^{30eb%kcy+M zzyZa%zNiT?!Vtce&)ZVC6C$HJsP(HSsCnGQyKwULd)xK$7&3jbuWv;^Dk1$!#LLKZ1R4 zjctSEHcNNc%d1lCXX~X3R&md(qS32XA1sI|jPy{R^iVc2PysOmo7P&n&?mUad}ha6 z+%6iUahoJxHrKu?J$gC~D7MI-#w!8zx+%h)sKwt0E&3wv%>y*%2XsD-d-n?4bwg1L zpZ+2`F9T?egQ0I8it6~(7tzyuHy(&g^^q629+oD@o7gy}FFkmP#6xA*0)_7T&k35$mdVWgi1VOQ!B zL0B(7G@BS;nP3310K$U&4dAG7`}{h5+f^~Iay5DWg9K|dl^m?M?8E@-J7mSj2|qeC z%20Z&(a+Ni@vyqpk5k6Am!>P(vmHHK+5DJ1j4wKInEooShunV!=P_(sk(d9v)5&mZ z6Sjc4m3`SQA0W#PA-?=ej?t}pc@+4F=C<~}qO4#Z3`K`MRak=PGUyiTnzIq6!mI;T zk^eqyr&dRFn_h-p#f$>HWt>7gQ3uz-41(tkt3^*^gA-Yu79yS$->dYZpjc3Yn!#nQ zNdznY8J9zaWhm<8LNY^LT65^gcWrw#AdvJ#MRfl>F}xsf@3X zn{B~W8CE$(_L(s5?E^awhEl2cLEVf14yAlL)l41|KaF}w?3(H)5sExdj&&|I=*WL) zj0XdEa(uFq%DImes&v1A&ZhY_fhRv2p?iU#mr|~b7~e9Wb8J+~)9PYAw7~<6hid3Q zTu2(?D^OGrZ>8KNEh4$+leljg0{dOap%!_8T%PA6E8?^cjPQEdmx6AhpCzB*b~()Q znZTEnE?iQuImT+WC(S6oV!wW6e{q6VXC>Aa(BoEQA~Pqb+AL?=aI_}eP%IM68fiY4 zq%3DYs);x#Yc% zH0!IYZe0@D!JGuLQ5~@D`?~m>;;1U59>Uphi z=PV#MP^FQLdmeo)_Q$i>Q4NMooT!h%*t#M_zn;K*2JA=d3bqQlQ+uCwnriQ|I;ucV zXJ4&A#WV9zehSE&G+=@TdsuBsr{+YR_{zMP4E7yb6yW7_GK`;m|1U|qKb;!=6lgCC zx%6ZX*l+a&41TieuXN9X>6#8RZ3P@zC3qBTTPir;;cngpUaS?_in_NLHV$*kC@Kl= z;a5_$mk^AO`vJx{6t5b7lMDYYg>JoNU_DZ^MDC8p({RgMZ*zh?%}13T9^yjZO~E%? zT>1;WSQ7^4{j%pp2n>F z9tj{?E&=V#7HplBY~3=7W!vULYdy5i;-|MA4}Opuyrk!iu#pP6on^L6Lwq_uW5a35 zhFGqzdJOEcDF)$wkjnXJQ`3Df`soz=5jjTRH-InT=-38&oL%`Sc!Z^fQy2;!K>GvC z|8s{>et?TKR-()grvmqk>5Qtv23w-4;~e*cb$~M703GB{>cEU0C>w2)@i+e`_^AW2 zHAN|7*m#yw=F}Z0K=>4$7%?b&sU3edjV=tNfyy$-D+Ul0mILO^Gju>^zTvR4!lEv} zc;bdv^SiYXn+zkm6}EYCyVCqsP!)1RFW`@NXE+z{&@l_7nMC`G+r_gISsa z2n#WOF`N1~+z%cFIB+`37~y-z;~)ZMeB;1xaa$PC3+pM&)9*+ZZ8?qbl^*i%r>KEi0GorS1mlTYGL(vGmE?y|9#2!;Ru6gR6jhr_MQ-4p z%1(FAFlnS+T-$&FL=V|`ifVy*m5MvhL$*@rT&g{wPvKsrVreDW0Hv^v+g1}FZ96}p z_mKPWv7#WLt0Y!<45TQ&JHTI}2UV64c0(k9jQptEhp(@Y!qKv5zslY_gqS(1=wp1VE=31rM#Yx`y{X& zmPR2iPr9DLH<(gv5N-?%`^X?tttvitHTmcyGThXFCpA3e9c|R{+2h^ZzV3@BXC47j zU>LO}I;^TprH|}8srjdyfL9v73LLO^fO&KY9T~K&{2pH=Y3`jc@$P~ld6FE$_Fz{b zg*SuAD7*lz3Q>a=qH+4LU!|*Kih*Zgb=WZ6M7wx@8(MB_(0=r-CUdSJ{|iuO_&oo8 zp*Jx;_K)WHwJrEU7o*?oA5-GyVmlbv?Ct{N0%|*C`R`=mLz-L!9s60O!MoL09?2 zj)Cme&QU!?AB zz6WF!kFL$+3>^_h@;kt_>Dm9}P$}bAHtUk-N3}}j1#Fbx*|6*-sFpAs@@xiuFVe8~ zLMhXLwQ5do4{TMvXzfmIumT|INT)Hif%kCzEzE}MD*09mB=OV){)P}X&qJ)FI)kcZ z8!c0UNC~a+kb7ufxkEaD5zB5mbH-g^$JMEY7Z^duw3&w)k;>-wGL>-zog-)RCCNQ z6B^7%Ur?BAIxap1;e^eqaSaXudG1wnOaP3OEQjHO^yHyBgJKqnYv{{N*ibuDVKsL? zj3dzADmDzhh~qa=F^Kmx^kDY4iEOmtx0rn@k^PT`$1(e8BD*KyUpTM$d&Q{zmVv%G zD~{^XGhIv7^p0Y=oDD9%RVX~*IrI;UgODMArfk;VCypAL<~9tz3|&vtx}G>R0*bmA ze4ewZSnQ0+=61Ra+-Q9UcC_*3vUb+(A^!qP%7C$Van!g6kBjf%WWJsC zkruNyCgXnGtFBC&Cy>$bDfayQm(*JW-p_5=iv_Kz6Qt-Tk@EEfDIh}FuHngHfSpHO zJu|V=SQS5AEWvqWgt-kNL{)MHm0=R98Oc%6qxE7G?7`cPqrZ!BN__1OCV#G+Ln}M1 ztH~Y56ERF$ca{q&Xi$|P1qLp(he|wlcPs@JuJLIomv5!5Ut#S>>_g$m*6Zb*2oy&@ zNHe^ZSpUJh7~Y_KM^_4cIJz4L#ZE3t*yv}hJnXo*#k2brL_=H2NAtT4Z-cWI?MtgP z90nvF!&|G#voH*eO1V=$mfscqm=!yw7<%*H&}Cv{-)f-OMxN=R3~pGAB<5>wot5&? zLvmq(yi5a;;PhT7y7f6|w$-M^>+m217(%W$6Hx^q_930yu@GSzKj8Kmar}77_71$w zPzrxXBT`l4(a+LaE)Bu%(|CJ4U-{FmwAh8kB|~8NH_nXbC@cPnk>5H#Aby}z{xpSp zL!YIE&%(U*q1Ff+|I>M^Givijzuyoe(>-MS8!$7J1>C;n;ED}%zaP;e3NytHu*R>{ zV+3yr`1UOK`(ZirB_N$L*l;W{kGyd=vO2#Pzt8wE&1>iYetQhBR+2LGoO5v0Ft@+N z=~!>e%YTdeeGf4G)%-Vrb%v7(EIwgMQf{F4<k75kA~l-Ky<+MtwdfM&%dBLZ zY2MZ3!ZB5)O#;x!>WSw~NGY04?;J}G$V)}@lVjA9Z0JU|Rj@RUnG2(&3Rj<0xK6*C zgL{v5`T^D%LR;AhCbN^6e916*aZq)e=RuBC`qUgNAn|G1)3M%`%g+bId8kTT5#uq# ze~NK$5@QbT5W8`OM&s#T(9|oi)sqJ5`>uy!pgm-N%^o2_qRDHM{;K3NexEFu<&_q> z$s|YR3*O12`7HcImT=21XFEY%|Hfh z$``v(q=cO4fL{E-fJe7(Irl3taSB~d<}tbJ1*{bZ*haJ1XE1cDw(zntCzwD=8P-GE z4cW)m!Yu^XUbt>J-j>pu+UC}^mh0NwdcfOSt`|EEVi(2!+5~pkb0=Ualuqo_i(Ptz z`t=nWG#IfHVZ<&S*0xT@kq=2OTo$-Ya4~QV1092K5xC^CNBgC+ANE5^ASIBVf%FWd zgOCnFdLGjAkPbsS4Cxr8V+xC}F&M+3VK~v5tm2?oz_k{xO<3XrJ|2lZh7?YI)<&Nw zLEB<7M}QqkScSiROxaO1mY4+Fl}X6FeC}6c&~J|$`@MJ)I30A;@h0bFM4OX*oRdGh z=$s(%WBtencqo9Y&26~hcx$;q{ETw%bIQH{n1mW>OTb*2tIq(E&O+-X$j2tZ0nn8> z`^+GIjwEvr`@q?|8g~eiN8oxKuAjs83|zm3>rZfXx#`^G0k88Q&4n}<(rid!7k$(M zsRdFqq-ID>keVQ6A!V*F4=6cTaDL|_ESYQ zW+43uAk~Y18vSI}71CD%9~?3MJ)h(vlB-W~Sv+1V_)<*M7L3gKO`-|5N%4JCju$v>C2k zxaKeae?xygcHe~la^ClM_1ELe>6{?&W6!{IH(Z0u{~P`F*nR(~{-SvQkMvgpcNrur z;93LMdbl>iwFxdBt{>d@Kc&Ak9z6~By>RV^>$Us-hx8X+>w)wDgKFiwGpS))qm|YS zypL~xs4^&d543}xH(9eLbdUyeJ z08W@GkVhT@imJ(n^YNVv6j(?NE!a8_2!CJ8 z5qtg&;~+X)0?I^gM<}v=PNE=TsncI*^+D^q`*mb_!e-7P$GWaH}n- z=XR#TwF-)M`k`oN9Ta`L-U+vdJaF5(0dCEkq2ilRw)5LiwsRYl?cBLp*%w52<`CZR z752!`XVaMcQB91Jkta2s2Qs9ZF}cPp$9^VvgDBZw&3{!q&0+F0dDwm_{}QNTOyuJk z?+D9f!6F|MPw$jg62}+(wEQo8UJtp6zE?IwYk4IJAK|yjH5R$bY^yb%akZ znS}{{xoVF%aavJcC+4u9oSlkaoNIHJYmay(*O=rwFS&-jKVK_%FT~HDJWu`nYx&3d z*_BV(Bit{swuZpirImv;ssKe*&}MkuMb{W)Sw4%bSE=J}gf8(sBW#%DXHc{Uw?O>- z9J^~dGY=H#9+I(ykuv-7p3{f-S?}R}VK3fG{tWl}M{*c5CYk4HZdMOXjIYsTZZ}PC zeFc)A|Ij!LiR@zboS`YZXAn}wW!f`_`EcKus&*L{!?O$@EWyq*Gh3GAJ{^W?=PJ$J515EBK$qz?RyCS_g?2hqIfeixG>5aJQj>Xl_}i!PnqNA!s6MO|G<{ zBX>j_XP3|pb6Yl;)t#!EABBNZL}zZL&9%19No`k}#F1>k+B7ZEh7$Sm-vP(b`H1B< zd?)j3)cdG{caVJi#4TcV4B~mhI7epEyc6;pU?HeR7Fc%CZN?ue5h}cXr8sPY67e49 zMU0;bRxio88IVb-c!))DX9x6>+a#r|mE5_Kn~i76_ejkq>29euSE^-!dHN}6zSlX| z;TlUaPHZwU{7q<)LRW~Fzs5%n-2&XMH>;lkLG`(ecq1d$o0#fJ%=XD&bOJo|{0(v% zHXi6%Ubacfl9x3|6|9`)$Xt7-l;Nk!nS8vI2`}3$q>?um0bGjgW*x@upF-ty85&L0 zn@D*9;$fk5$hlcBWQ)r->!A}}JY6;cW+#i4owYR`EHhMUcJe9WcY$`BdM~>@L!Q#A zS9RRJNZiaFj8uBaAcuU$lXZr)l$e^5oQc8sG*FjqE|a>_OrA$odbbLgn#|13Pm<#s zDmOdv+^Kw$zeC(|1{Y_b zI~~vPnVmwdk8B0Yqxyxuej0}7XNtq)FgM-e>DlsNbley{onkOQkE=eemtP$!we1vs zgmBj&TsFY<&4yJP?MpGRN&>25$Y~35;co&r>_;3YxeyvOZPO&B7b#cz=pBElq4kN+ z;T}4{g=PaiOU0KFfRUbh1rqKN4AiuB%(oV=-8O|g*ufnPt_77T_Hp*1IBOq*-Q{2? zx*duFsnKD!S_(f7%^Xqg2fs_h_f_HkI#8_&at_%07-ceL-Sd>C&r@bTPnrBYGIL-n zG=qLbV&#{M#K7Mv5)(gn*)l!{a$MMtZ!r{vHx1l3@yrg~Gx4k&K;O27KBJv6V4JAY z59Gpg@X{^9e6fqw=2_l3<`|b=Mrt@^#595N;!{{O@ClU2bow8Rq;m&fRmw~~nm7!+ z236AYII@ALNke<%SJ4uR_Lmeb<-x#DDMIoUgcQs7DVBTrs^FytzASiY6Q3Krw2cdY z!;~Bk15X2M5X`Yjn7%Yo2ns`+t%0Hm`Yi*uPCQ!&=D>5Cq4-W=R`C0}LSe?zWYge8 z)A3Y>DYjF9J1D@f5CGL`0^lzQu#pSBh3U7r(Ce6fn+qMrRNz7{W4fISJ&);HF7&%p zWDiP%62`^l;r4ZSv`HrFLTUoHg;DaV`Rio`7oPGwN*;M;6y(&fRO=SMr+fxKqn-@$ zFhC5fOw|Nscq8{iJO#mp@Nk7V?B#y=C0aNkoP3d#@)i)DwQ!l1E#tyJ1`8|LVeJZ| zD5A-rNx#M@XAzxF<*D;+G=p)>zrf1B?Se1h+RMj0+IgNZ4%wrGQ7w4Ll0q6$ zfgN&o7u9ssN}bkLKGsSByC@tMY7I521{Oj`a_Yny0E5IKFJm3Y_(H9396NW2kragH zvwxP~aeR2vAO;O6F;okD1dqF)oEWc%9Jn1MW`KsZhc|OS9HkTfp$@YTaF4u1%fHDz zT8P{C@VEHyh{F%@^TgqAbK$37GZ0W24Kp**;6;?A9TTr*C!C{^(8l$A= zQBvjJc)Erdo7;zQPE1m`6|2g}r0^q`Cl;kjbuz3Ym3E;q0ZN~yAlSkSUTF~Q2y(}@ z==S!=FXOnxSMpju!4<|^wM8T3CNO%{g^wV(K?AR@4!(?}epAQ;A)W-(ia>w8CJE%Y zRhW{P6By)DZQ*$b4EUm#4h5%8Quf1B+$NGOTnK;v2gExh;hf{%uuq4}6CrM5zB1<) zsu8{gkZlxzt?Uf{8PbB*@LQL$haR}=aV}lsbkZ!ipz)X-NXAgq%I9jF8H$3*!yPIg zi?g_Reg=k2`4|=&eg+2Ji7P-e9dGZPv4eGVZkckiS3JR7eD})W5{uz6kcfBXVL@*{ zCDOTOn#_~L;aZVu;EPlbT`d}NS4K=onL~+Igmc<n^2CH=>zKm-L zIKCd238iAMlfUCP$Spoio2pymxqEfVOny9Lub!WxWvtrtA=hNOYv(`JNAFmwiGf*| zp;F^cp{v&$u#(O6jJ8>&CW!pXF!E zpZlH6V3m`x`kYKNT(83Q7F;u-{NA+~b<~`gJr?k%Cd_mUFI+Lx#b2Q(&v*kX6za(1 zaroyJ;HHD+Qg|NaRl#K~P8ObjIVn$)LQVK5kTB^foX&)$N$tG)N1hm_iE@S}Pj%BI z{0dEe6`{%RkSRa^A!ViPVwII_7wrjy5D8B}!L3iecTC&Qx+qaIFdjjPMR5e-pNKyM z7`ayqIw+KIj}~^o?>NJ!1XDmy4xq+tnDN!918^4kdgdeKE9H~A5Sd1HXKR5(Lyg)8 z&A*4uYX<&fJP}&O;Moxe`})(c3i)ZJ;>fLyUntAYiX&6DWd$O?i#Zn_DBy9RT!3CV~IGI83^J4Pzeic7w0Z&)UKZ1D|xV>yW7oLuKXr)D|B9eDZUT4O4P%F=fqvL#? zaxbH>>*N)?vX!!37RfazGeB$j2)JSIkl?Kh1D)!^ksZ#R<+5v7?uA~3W5Fg^Gd4Np zY7(wVkl>>v+(ptT3FoyD#(;1far_9dwx#GBTmGp}xLGXOJ{@B?)&@+8foc#uEyc-I zrhsm>nuF!yD<&B{>l<#RA(*1IW`1ge#*sJWZgQhmEUz4vmYKgw(ykA$CTT0?VT{X6 zFuDWaqrQNXQ{**sq17rL2B&C`lH*V{kf$a@uM%S!KJv?1_!1FVY_8t>urP!CJ1!Fj zTrftgFk8_Bz76;cnm&^}LaVOF@qXyFp8`!kU8-gGTC^YElPgSO-?)?|xe=Mz_qo`u z$1e_RS*d31H#9gipKLgj2<7l*vgS-OjFYJfX7YTV7U)m)k-HYb<3+a_f9KDyISCj7 zxm#JLld|NB-2CBt9ivhO+dRwf!KMrDq;D=j8^u?O-B#!oUrv4(_zU(s_~|3)r$@p6 zmXAj-X&(3!)B`u}M`s?y$;xL3^j>cz`DbAK4IQBI(Q}^*y|%41wVLA7?P|GSahYg$ zhZZKgD{30!(-M3FtJ7tgi!Vj$*3}+KhJLese*9gjm1oGOXK|J+z;wIn=;HNKf#V`@ zWDzJIKmH}&t{$Ra$Yuwdh8ft1=#Y~Cz3W$SkwfxB%dEV(n@w(F#( zF{N229>CuR(>2dfTxY&`;$uPo`e5UJSfr!c<(A-R0iV|8%0?SHUf7me zyq(W1UQ3J61dPvt2Ma!=i^CRS8h{H~6pAfgE3oC*#UGHI{VGO2PFxhSxqU~uc5}s0 zl;us_!K30pL44-Lr~z$@+uM!?2ksA!Tm$9X4B~)Qj2>~U%-(Vh5N#@QjWymRu#Q)^ z&Vei|Hdz?q2HBOnYOhJKVvaY+O=gVc$Jfa4Ao1E zv79$ttQos%0zqZQbCWOyUzyu=bxCotM?k(TAYvdgMaJ{fmM}tU!v?Uy<2ny{mTsZh zS3-+2)3TUqoLj{07K31uo!KQ;<4>;Pb4uo5l2vj&CaEQi^JhB2NUmFmF)xe?HvG#s zor&Oj@~wgY5P@youjVX+Lg-%2DT9ZWE-Y&Cr__U{3R*8(OI$i?V4 zJp5qBq%inkJcEAZu7|!lS%+Y1985+fwV+{~gDJGgS)law>TwEVZagy)%`MqXb@Vk2 zn3B4A+Af_=d&Z(_5`*b(C_C_);+KP_pvPk?+WaC5&6YPwk4JOua#hBQlf zL<_cP13r+{1YWatyiCo(Qka8SAh*GZFPa`6hE3f>cHz)aNbRSV7R@RH!+{GOM%!eT z6Q0{#mS5s)0Svx!;ir(n3mXu9nVG?ZAyQLsSmn2?3pZlnZM1Mu65f-V`X!-H{EUTX z$HhiJ$$+Y&6#gt^maBIXBV^@aav=l5&FVV|q@QPCX#&{?8C2C3HT4U|B3B=ug*cmf zC08HqL2l}e|69Wv82S7APR9A!4{DY!o8Npy%X?my+AYYEdn z2Eq+vrwbNe%>FA@#K_)@s+xF7&1f&FW8>72teGg)Vd?LZr2+c8v*al)k69=nk0!FR z>LaN*yg?sXbSJv$9SiZE4Mww%{5yUAF};7!j`wlu%Fn(71mWob45yl&Qn&3vX|L5N zsH_Bo#^m$chwLgSVn^QPT&U#J${{1FGa5gG8z*i9L;(XizZj<(HEN+&@Zn-@&&w1` zEU-yK#Y`Q3kBCZ$3*nEnHavZ}lzA~5R-yOMGGLmYlrN@Jf**@$M~NPwZbNnh3*ZOu z&%(D}OsDYy4g^unS*w|^H#W2ao`z994#+rxflJ1~=V&;5%EZqc zhR%TD!1^gmn1&D_$?vZ8kjzDh0*@h2u@7lv{FR<|&juHJs38b&;L>in^DCsjpuvDT zR0|L1^;4jVuL3=x0X0~xI;LUmVLb33rLit^{EonRHD?Xl+r5sz@-}f)oG7m1&_&z(qcVT)1vYgxuf})*kn2nNK z9ZOEKk35@>a)aNHxY6$Pt>67#KblodCizuwQ4yad_da;aEJn?ScO6F?KYK7@Hgq_; zx0s5G1XhmXn&yYKHy8F!k#{g3u4qLn8ghy&-wCgAF59 zY>=0+cm#$1CZ?R(10BmHf5!W9!-(UZCfkEY%yRR3abuAQDrogAtX^Vx9|&^1x#I(T z%gxBm8%rK#n23Ny6FsW}=OU)bOsW`|=^-Zw1t0nga{Go2#_r#J-s4-!CvVd#k zlNaI<4Zj`V)#Re_`81#@F5z|MKJqoNRI3#}Mc0-RiU^+u*m6JFmWj%$x>_p10~(+O zk7^ja@g+WTGc=HUmj>@HspfAF=)C0KOnldc?*aJ=JcBS+_%{n7mmcWI7Q0x(x!~Q5 za6qN_$X9Adq%fzRF<`7*bR+h(Q^O~CQ(H=_eu-3N zZo3Z5H;+7a9OE+ER+GV3ef^Dem~Wiui}LqK7JK6KFAfTZ{x+R2^t%`;oZbT^hW5 zJwJlf-iV(X&&FI zJfj88Q#0rO4E6gj-I`17^JEMdc9}Ma(U%> za6+~$k%yz7=oOZ8L>uq)knd4#Qtdd$-<)V}829@S!I8^J1k3i|5hIBnHv)Uc01`!& z86|yp0}zJv!;;wy)cNhFz^#Z03)HveVaF(M?lK|-jZ)sA=4=8Gad^9s9?-AdgB5Y3 zh58vlx6-Kn=OL<`fpz?aX`CZ=Q!%mOi>y=#R z)wjXD2Cm%ZAy0$rSPjg9+#Ii06^6m2Jr7Xo+ZaVrg)vftr%&ktqA{>HH=;I=#n+3& zdY**=Jgnwyz@kCNIWE))JY0MopY8-!kK%18ztib~zDQ9TUHCw**{9~LhZX}abS8vh zpPw+t>3*N6z~6MnJz!141~j?2&%xBdy;^bo91PJN0Fkgz0?vT7)<Wi9=aUuKxb=lQ}xN(<}7b|O7g>^`-{(}^7e1~2h?{f9gXF~8I@|zcFkljmW4jK6Hk78JUjYvilIEvxhX!*NEprM{qlEo1p8ZqN|@RYU^#lwbuLj5l_=*%sI-je()H@pL)1>|*cCh#0xxNmu~G_^ZrILFM1$pP;Q!x|@37 zAWQ;camLfcVS~WJqv;A&@8u_0x(FzWrz2cf3JSndan!&)f^XwhI^kfi_n?aupOQG^ zl@JvC;qlC~)HL<&?>Sz|9K@R+R!`>^PEJj@C0(pzyzz^=S_;*RP`&>(6#6c(k$eQ( z_ref#j7x@}v)lTScHUryN2^rdR(qhrBnO8!>=KrSavA@&x@4rZPz45>5TFq&Na&Sd~Hwn}^A-e2g z?31XWqi?mS9*)%4* z%#wQ(o^aibXM^Bb-MWdaoeH(d7CC65%AbM+0(n3yp#PSMy2)m;!KAs#KEI~+)rH6u z@bi9zO?xPZD;iL>1$1N)OZTB_{M|~Q2B|LOk);?tucot|8vvi-Ftvx(oS!2*D_B)Z ziKl_H1kJ1ML(tQcP+o_VgFetedXy`> zMGeLwHH-H!0wD2mlaO4;paZrJ@sguNRdEH->HA+Pbk^Y6On#A)oWZ{p&{dxyH}OY} zL$$b>EJSH+cpSj|>e~&inC{txHp|-$J7{LJmf>lJrx~!hA%(WMp!VPb!cRdFkm11- z<>><+Q?%{IHAzwI#&y(X#D=w7ovi1L_jTk}+n1v6Fd))RGFT!c9fSAdF?}Y@Zee zRCZzX&!H8f`6&Lpxy<}O zh%KsN0~Ozcie~Od2}Q#TVhPTRL0B4K$u(?Z>HEkv^Qf`f4|0&^^N_nRJF!+Xs2kMJ z2#bKEcsjH+;<}Cb0(dZ&O8#%Pbvd1U2j2<}Y6{mw=Jey?lWH;mX)IuA7({CRxgSGZ zQcXVy=1&cp2^=ugNlkr@5>@+XCzy_^z=!ew&Z%P&I?Whz|2?JX`C8ZnJ$P&49;% zgE;bwz11@#iNm;o>;}u5z|LhKYG!=D)bt( z$8Cu!!I0*94|*l|*25hS*+Jg=5)<*9j||gJV#x`Zs`=GAm;~M+yWS&5KG0_3cMRRT zb!2wJ9K)q>s1-y^EWS|q5eBHPQ`idy@FXp!cC1<;cIA?3a~RE#HM_-e+l~{UfACkT zZ4?si)-Pn$E6+md@Eyc5m`T{Mrisn0j?eU~Z~93O{=oH(AY7fMmT}zocDzR+>u7X6 z4Iu@CM}6~3{l~TICSF0Pg@+5MX{H_GhK08n=jOMkac;_Ca_pyyX5ms1a>@2H;9*@y zIzLT@*h~bu0}`PWQi6-F<5{^Y{!k#7tQ)1f96F_B`e}UYXr{52cx51+R5RM*DY{OW zPnqE-=~j&q!VEtd$F`)eFWCxKTs%X%I}Tg%hoh6i(aGgdb{Z!koy@yp3gfwLMH`xU zHzQ2*kn1%mh3$C?8T%ObjywO8bM@mu?l=3A?@uw#@3Rj%I(L{H)Lm=LBlkirjdE%r z!o}n! z+Hxk(c-1j)zY->w@TkRBR?Ue3OAlc?G#o}L6I(+@oG_=OtMPnW_%i_Q3}b;c6yX;r zPknv~|4o)|ZlA%?y={7a)ag+k&&2wGbv3z(9_=s?IRn9abrRtsk}j^(9q0xwKHVI(8r^)&<`Cv zF*>m%!ItvE^e8I_$?jvYyUyyJ2HJ6aT)3{wh>yrOHK!X8Ev^~kUGmCd@&3)1|uBq;rpz##avWH zxLxQ}1)DwtlyAV3B7EMK6*|I&IvD!H#IRV74E&n83JvNad1XJKdGJU9?4QaX9@FL~ zeoLDh|6R{{+`hZU1s_&dKM4h9O7?GEs;=F(Xh}s6PT!O1YeP_tMS&Crk$SEf$;5ju@wJN7}tAH?2HpyQ-T7}l-af-H?OsI zGbx3N0j&a8LlbDMT+}eFt=k8%?qij%*a@#mou=#<|P#r7?L6EOJ+vvZnZA8?zJu;3gW(1v2LiSgRzQA0V6fPdv5|_+u!&3{_(!g z`_Ie6&CJ}n_s+T7x#ygF&bjJ8LE$OnlC2;PL>OYjOv&VuJ-(+mz!O-|tDXYzcEMci zb-0b7A(!lUCBg2O3Fe~&-d(UfcKOTrf~SapSyJN5m;f@ykxLGPrw`x|m9TR_0&)pt zh>w-|30Lf_>2ynEi_cFQ$MiUhRZxY{Bp=5uD zj}uz$ui#Ds9CC0=Q{}x#+F*6zj)??5>}mV3qwPb<%LnI#Rw7z6E#XMY!MwvlIUE&v@s^86=W6vD3T|E7iO*-%3H!WQ3PY zH9ls->)f640PT(!!9zeQcp7^U;q5n@eR+lrJa4D56wr(uW0WI+D1~TW9BF8KTY`bBHMAZQuk1n2jtM-wbjNwAL7-Hh>Y!F}@Bi9Ir9ZebN~Z zy_NF%mzFu>U$ox+-FnyTziVCap@t%u)MT1K_|z0Cd_Gq|B7Y-+_As!_!ja*7<`R6b z8C2i<{oG#c-3wri>25$COY9i?%>|#zLAhHA?H>UBFsU4=OU9~0L(-RmGNzJ=p}#_o zWGYx}J{CSThJY`1QsGJ#nk<1uk?>vy1?t(*#opi?N{JFBghARkni|#lqR}OnjUbuOA40aDrIVbGbvPx z+x5ZTnSe@$TW}y_XskXsB;DXeioL?)#{KpH_pdE`ecy(pLycj$iv~9|gwI2kOaNC{ zt**Xm)r!4-RZu9w32oIpV;8BRss>0~#+AH@U{({%14VL)R^}0j37>XlXT{TM91% za5+ZY;+ED18iSs01O<2WrMnN)fe%c8XQ}bZ;MpxIbhrm}5I8<6Od*p9gWeQLXpM2LltG9Pnn0Hn`wwpiUAs$De zRN>@(s3{P04ysOh&uWnz@ILvNEKLnyxdV^~r7JO&;Jw#-7p+e!(db{Yl` z;L<{`6f>guGO5=X70T{-;r{@i^TO|pB*4gn{5Tmuj9Y3Rf*g@NiaFXhAHXdQ613YjG~QRzE5f0=a(cP<{WZm zfvVnSb2FyoKXUlApvXkT`q&ej$V7ok3AiCP5KIT+v{xgnFm+|8pKg(TkQL-5_gH{c zoJq}6qy*6I0zgYpOQ6E^x(`P|`I3aygFG7dX|$v4cbeeaSav30yv5;vL;ZY3GgK7< zWO@}`KSdx1amou798J}Jxl3<05XOdckc&S*4CUm-+A|y|&=6L%%3vbcD#$+$VGpz> zMC#Y<$WuQ3wWB0-rr_+2q%dTi4;Zpj$bs<#c*M;BQ(v~&S3uf73TWpmfH>wQ54p8~ zV*AJ^k|enepeg~z-mf6p4QQ+i?1@+HifVUH_M_I)*iTUTMAB8njkGN7P?kj|UL_UP zY%WMp1`A<6Y8Bz`sp$!_?i$cmwgUSL@Tcj6?m*+3A?Ozazp*9(((>cpC z_<11IJPI&jWRjrqEL0Zi%j!Uh03wWy`^Tq_oE<&2m0(hJA z0LkG(tjhqULk2Y@wC61jvF1QdjDS`UaWi5nV@HQN(|ZF5LJCSHWRQ1Id%H6nJbJrb z^>fh^L3)r5#TwCpWs*QB8>j;B$z`auPyv7&N*@N>D^U=#WOzGhE0h4wQc8#QvjT4J zOMpHcok&#cn3BcMIzpwVbXY728iklYgk$XHkPOOD)Mq691vN2J1EG1DdtAtYQVIKe z6RM1HDCvaX?0=k_B#0@A6CMp&vNiyEiFc;Q-GRoP?5>Z{ijDTypsDc)F9O8fD>VT3 zC6cgtZPGY-KKBNx?VL&VQb0X8VH&B#yAxK+pW8=A_;ea|Jm?_ZiE1lRLKw+(SSgYN zn$M?52^$V>!;&a7>4XD`TN=A_7-}v!xI!|!f%n9ISbt84^(3cFnE-}1g_bAQcYdYd zGhCPvrVI$lJPjVa>9Bk+Di=|D!vF>!7HEnH*&P#8IhA+;n!0qv2m%2UXx|Cz=j&#F zLYWuEvCE+f%2Xk0q>%I!_#ISepdU`-yQ!Vk5<7bD(^qLtEJSb&L2y850Md&^-wUxk z14FX*9q^v);&|PcCPN-Fi0ood2pLk_g$u_Q90Fh{gYgMZwI_YE5Oo9?ap_RQ%0If2 zz~~AGS=>RskwiLSG_e+biqjvB4QKjj@GDFb%!wrnhargIuj94&#h#7;ry%&sIi2Ht zU7I2B-H;beuoK>JPob)G@zsG_9)RYH?-$g7TkfmDdVuz3AB3vZ zDGIRiI-PZHFkhWcSZ@DPWP~pvOC`z_C@b_&+$!Pq5Nol2lA-F7W&O(~PU~Qp`M)Nx zF_^m(CKO)({!pG{z57+Zkff3^j$aF%_+ApRfY1MDEZ0v-h(KNF5CD4k`c;!9{qVoStK^PB8*x~QIN*i>4 zNf>2<|N=gj?%miR>or%p7DN^Z&aT4}zXoPS$99r`XNvwzB`8uE7lshzJcVhF~ ziNTB0>Jj%@2f5D{C!&ZO0jy@Hqa-}%q61{L8gBxg4{yBbXFCB4$@SgcAz zunS;RJU9$mHwGSL6E{B{`bmdcTW8$uU)2I+jr~C5wmSkEKc#*tAj5}NfvTA`q;qml_V6KTzlmrXQXFr%;8O%-M z8-%5E+QHX>koEHphGnn<3I28{dj=R%2ES0{Y#CJAn-w$ z+`rV6z;3AW?Fv+-1Dpjh!z3^X4nPoB!XNiU?>rrO9{HpMlfIl!2Dy{TGJ*{;4kOqg zWB<{{-t3q|Et2jQgM-thKBTeb00eI({Bd_b0PDOG{ZCG7Z%Q0P~! zi76q{sslo-RdC5otTwez<+3%$AiY`xMe^89P*o_=Zzi7ejU7SdjP2n0roBk2T^-V{fQC)<s&ARcLLZ(%BQb z^1X>y-B;Khzr#V*RyPrr@|JhrWZbK$*0_6smL=1wpe~J(pUPnm+<;wx-n|M~S2D2$ zsvt7)jD6JPm=bnPY0E%?BLaJ62&^9V>SG*w1jv0p?A++mmcbZ|?D}dD2U_F)$nVJ! zG+|8Tr*9x07+vE3oDZKG29yM}ur&Ee}bDhm56ESHK;XYPh^39l!S=$>G!SyHJ62{2=`j z8URPZ@$+CT@uCjH_|>o&??u2V_#(HW$npNjmA=RV6e;mXW}b)hUmXgS*NmYl3w^~) zSR;y;!$Ajsgk?r?Y#*4+I7-5vI}h;~d?M@EBj?fnM^k!(@%?nKu^&jO+3%t>Iy3Fo+DSC03Ui%D3^d0%@)L*3wJaMOFG#P{-b2|LCA zk`FK&dhZ*r%4KgiQ_ zktQf&=4FJr{~*r{>1pH*7n`6N#Y0DzjE=)c4n1zv|sb55I%hg$naMIIljLIkl$feUdEg5W28bLJdbYA5^14c zvfLEn=$OHe8xCN36Tsr`(fY_28{2u4LQM~0=D>_F0453Zn7{%ZoGQuC1$ouA^FhaD zyvZKj{}Ogfi;T?IP{&`ww`%_@@bzzn4{K?t9-yJlBEzJSL(5(^P7n6WHXkT$+c@Am zP=%x?jxC>bw+dlxG5MgIlCM0s=RqY(1+ zv`QWzu$-9z31Ir#0eD@;*pr$YN&`aD&x04Zv-beqKCV; zb8L0%o27f;wj_8N1Yc@+(0MP;C$&646?2p7?a4f7I0k-Yd^^quU_nm_ZN92+B5nuR z_4Og?*`S>MrX~*9wK&59EVeSGlV-j_&2zhg2N-4 z(0i1{Uv>uxA3c(B0^dtwO$PiJrzQ5q=n=l#(SpSbMsQ3Wh>5%xD2A91@Z%I5jPIGj z-is*8J5%tg603ih!*^hqlilEW?|;-ezUu?2b9AUw!hW^F$0!{R_M)W1b};Q+9`O}F z6wQv+!;lpae>IG^e+ofF2A(V9z@3sD3^SM3e}omxM~ZgJC{Z3m6Xo7{Us~ z(ak5?!CV4guGMJrHH30e`jo@*faB%2+R;z9_iTMDb&l0F&uDH3}k`d`8Y0t>A zX(ebDTQN9`!T3*XO18)G?QuM!gg@3)pUNYjBd)9TUI=$Va0={EKQK^zu!W&?7IS6- zB%o*(dghHFkM%!YS{n@L_;_M;lb6VN05v?FInCf=7l7*{uzbfgLr<-C39n)?3vS>; zJNTV3rsJdn478?p&>qDp4z`cx0dCGY7Tf@ik4H@YApse&?E3+Z7stpEj-xM1ttFtV zGDIUx+z#`3Xo!I+dB5>ogoIC)y<9|z2f;pU23IzL3hsDZ>MsQt?Tym=A>^@tV6=Kt z+)Ui98zX!So&J+=*^>lzeRD{b0=#V~186Q0+;A@opN3=$AzhQyT>6X$a9|Vh?6bK+ zsh??}z4HW~a01^n!iV3Uh0o~;=UJ0;d;mglIS|41^&z;oh|=n|FPG;01ILN^pfo$Y z;gR3-?F*p)@BXI(lA58}X-L*uI1vF0o)lc_<%yl+2Q(92gzhGg`g&*Y=XSjSAV`>B zFR*L)_HjIjQO5DXuTaA`sT||m11$17#3Jo^gg1On@5O1aLo9N-Ef#SmwGVH$Ck$+=9TotYhuR_F65@ou zc>ped7nCdtu#anY>SCHfPnEvliNNXsB8V5LN`{8SX3zl$IhvZ`>y{UwafIU51?2@? zP)-4qXAEj-?=CMF6cJibg8s9y!GZ$Xdmciz^Z1}th;K~-uBqAXgQxX_N%hX)$K(Ro zlu&C8zih1&IeVbyF_SY`U2>;nt_ ze@Sy0q`7R;x`T=D_?$L5>p;!{{+u0Nd3PDSyKL&lu7KL0RUpRiP@n@OBiNxxd3v0{ z9zc!|5JSAiJN7;Z$Pofk08kF$@ft(POw>Z;!kmP+lOQ~&P46OIGGD`uP9S4j;Oyc} zY$kK9Aet!Ux$i-2^Y58IJ|`i@`}Qf*YyN^kp{d~$0N$(|m0k((CP*TG#v?oS2XxP4 z|8M})eGwcH!p0CQ+M6EB6OQGZbYL!_(U{hkJPjvGvvc7PFy`#~2XE^#66_$n2rk#4&Y3Ll4ZFM;(N125EDL zg&7HuXaGq%zZ{?)zJoNEb6t|C8$ zYcTOCTwbA`f6hLn=YM@~i=Kb@9>^xHga$Z7Q-G-pU>A9Sm4KAE#N8X(=XO%ExEJws zrtawtrht(|c?eiYUK-k5f*O{l4^x8;vF&C+RHZF!bW||T<{X1jyFrw{(jn>jaDjp{H8e;ZkWAvSYfky9jI(Q> zpbA$*=zaj-^pD3e&>@Gd5!DrnO`zGvU?r>c_?id6_zpRud9<*6b|6^}PnoJ=d*ph( zIIDPqgkd1}cj#=)FzBpkH0YBc&?lhjTl+w%dWC32WrqK=%p*CVOs}b${m^&NW=pqx z2+?0!HODld%>adk;x7s52S{w=ehnTrqUVE3|9%2ZnzWj9Z%8_v|Ng#uU&&Vd>F=v^ zpm=s5U}Iy`s!cOq+K^q_3@aYwo&fVg5i#4@m&lmn>nryx1j)YvNcWnQ{%JBu$r^kg zGQI_RW9~^MD}v8#>E@TSfgQdD3S_r{s9I=^1@d=iS8VpSF=&%)Mh0zUh5Ot~K?k7b ziQ`_-(7oB&n_qQe=h=iBuTz!wF*-o_R*#m z$*OOz&fC-?HE;(*|NX{bSQx-)a!^836YqoXLE!$fd4g#8Y_ z{rjfY&7#-Y?>DvGB>D-qn2f8*3g>3Cq%is(I@CVlpy(aFEPmRRHFg1Hi_uQB#u|K13(S&f~~ zR&Q(t?>}~oB%Ay@M#-I9cZ@*I;4Tfp^36l8T?44Ry@cIX4(k6>a@ocTLJ9RUAIJ8Y z2v?yYI1c?IraY*K2kch>I_|gmjL+`h{wYl2?$*W!Nkuyt6$s~pK6FtenG_0;(3l}% zMt+>|xT%4t1g#v}zjU-PF*Ge8&Yl>$5~e4b0z<5u0-&mOh;;GR z#3zH`*%yi7pu2?aw0?qKnbAnCc+6z+3$5@O8;5sOBoR>z!EH#UOu zXMf^M_>BK4hsWW}d!4-xMkje#SZ3^9!8vgPZk9>d=TKz>M0Kd(z%~LrpFOc2c0hfs zzCOhIzW~VXnd*I-KF~K=xKCnx8#er4*d{pcOMt|d7s;c52ofImS!XmR2E$Jq-;LGx z4zX^9xG|}BNcN8$=xMLF*A&(^XKfCAe|%A*5B$dvd_Wa<@Ppr-?GM4P7d|znRs=!t ziE_TXr-Y6DR}IKI=(7tXj7Q#6UVfvc4%AuWTzym9NRt_L9 z`}5yOg;i6lL0waC*Vo1B`M%x>wI}jl=_)t|%>rbE`v95-Kq@u@_Hkl(i1iAZJ5ci# zG$!mfcDVrQD1tTzHMl?yu15_DT3gc6EXWTHD5jxyH^{x{Q=+MQ-Vjj9mR9NZ8fcYf z;dA4)iuR~gDp0Gu-T1FoX#%a{1qpY6%Hk^a>hEZ20uL(GyY;Vrkr&h8js}h6Oa!$E zlc-?hm>#eX0hcmXs>!>2iTSa%OEMA zSO*{rj!g`Mn>ufysB-6&YN(qB_q5r$&Q`C(FD0Yj!Gobp{lKl)6osI9xj{#L_oaW?xCP@W+lLzT)2di*j3&GhNhPE`i!U2Y({(;qnXLzxd9^WW; zn_?Q^-?>(MosU4gCw)`hO2Y!14Hu^I6CF>6MT;p_r*jbdk^Yd>}xy1vg& zLRXB{pz9!3imtucG3YvkjYrpEY-|aHFwQ$Sj{OitC9r+bbu{}Xx{hbNqpO7Ng06Bl z2wm0ei-Yj0V;j(QBKr_sC$o3aHHE#7t~1z+=sJ@x?KTpCFphy zyiG*6>*4KC^zHZCdNc)G(_k`4*bW&t0X*==K{ycL8BscaOgj`a7ch7e|MXd(JUswn z{!z#xa%8Zu-DH2Bvjh*BPLh}W^k1gP4WlCqp$C1&KGC%1L0utufMIZHZTqPqk4oHpza37F|ER}N@TkX8@TkX8@bt$~@L0!D@L0!D z@L0!DGg}UHJk$0xM*(s-#DDeBMnL}$LnkE?x4yS4>V?OQuk}ABm9TTXa8N=APNbqf z{hTq8n<(gi2w+1%i>Eb_N%c>E0`J@(Hr^mAK*4n|8rq7$=sGAyRtUI9`=61)gV`6M zve4;|K5$MTu0o|iD*hQIaY%!tFCcmKEh^~$v`H9<%q2!Q#~fu%OOQ>1fRyx;k&-AG z8w!_~!~B1lBtS!pgeZYRlKLVgr{tgZ6%uDc6wjx74^s7m_7%{w!fPB#ER1^JYYY+^ zqu!tUfpgGYGI+avd{i(rtys97$1%O(v#m(j&S%GP{5O!1ckhN^`<3ba#uYIolS%Y! zUciGem;|IWn3M&_O8KUCsA^@n^tTmY(zrYMZ=ePfl$MU**{269q!P78uhAajalB_* zw^nh$eH>S+7HWl^A^$N4C*k3I>pL@J`}OL3v?_8Z&)KdSOaIfPf1Ce2zRZ6F#P9}i~rQU7=AC2dn z3ajGNqT~{g=BQ`~i-hg#zTHv@ztJ9`R=UON1xCS;H=&_Dv~z10Q#sYnk12t2Nn{yP z$6n0x`c3gnZ}}1dRJN-NNY>U8ANpcC2HhTo>r*b^yj1VJ@WQWNaN^ZJ zsS_GM9_>}qc;@Y+szVpCaR$QzgEW zhJ0tkz>{K@9Bp}mDz9x0i%I49&T8q#;l$Z@!V_A2XUF`<=`5*S_R(su_e827MGdjR zhYT`e(nImkjTZ6H8TwW6keY7AC3uUtc1S9ZZT{8kms9?I&Fhy_8at75nu&)UphE;M zX=)V|K}$R+wG-g2lEvN-Vb+o5>_Zwk=YyLMrW#Q0u|3|l@^h7vJqjh8(7ljkB{F(? z5n$@juozO90j5sGi$GKFhPZ?PV|PFZECWeX1IQ+}0OrvEhgb#5 zKDJfK);t3({x6#3&B5k-M72?g-bDFOc`nsf+67hB z{-F|0P)H?uT5CFAGe36ugkJv_D$yT#d@bLi65R#Pmg6r_C)Bt@*e=xnNusrg@=LT( zv%G9*K<%z4jBl>z8+$@F=H_;<*E}`25&3n~*n{9fup@ad^@@UDPAK0=P$@hCl)mtx z#Rc%-m#k=FbIF~_(w;bT8@{1LMM1V;}gT-Z)I5g219>2fUtW*H^o>WFPn#n|8qz3I|VXDg=*lm@+khwf*At z`O*O3^an{KFB5@j-USNoU;Ki`QMJ1hk#^NhOE+OXvD;N7#@0T&H=J$~PRVi_>K6R=zCc%N57Q8!td-ASu$T#%u zSmS7KdUlfT?#hat?4FUII*f z^IcHNV$)&61TA#qF}!(bnek(5iSg0U+s1dSHO708Q!6ue15sB&R1k=|;4U&u@WDL% z1;__3fBP=Y@Zya=0~-7P|M&m7zv_ztoH`JiK?uGS!08D>KM)3iFcJhg2w#J+7=!{4 z)`M^ugj*mqfY7BXfYTR*p&$$gK@P&_Aj}3K1B6u|>;>Th2=_tofDn2aooa!B(poHX+e&Uo`KPNVq}XOX#)v)G)= zT~6e2R}lH!l|%t|6;a4tO%!q05XIcJgp0e5ptwI0GEgh?BgCI_H&OD2e>DQgWQuu3HKCH$~{e# zanBHkxo3$Z+;c=Z_dHR-y+9o0{!UbKFA@Q~kyZgO&f1k1Z+(q7-1<6igf*0xVC}|B zw07r>vcAC^Z4Kj%vG(ANwf5wVv-aYRxAx{GS^Mxr);D=#>svgDHJm54M(||TNFHu| znTvr?S4oQ(OD-G}d={$=3IHT5Erv&iX!2Z~cI0uztv!VEu?U(TeeA zS_klESqJiFTVr^0tb=$)>tLSA`Y~^w^%LHF>k!@oYb@_u>rmczRv~Ypbr>(r`YCUb z^?$s@*3WomYaGvFjpq^8;XJE#1TWp1z*}NXM!^8hFM}#++ zqr)eg`-XpE#=;+)2Zm>wW5S(gVfZ>THzLd2J;Gv(h_KrFN7R`oM#ycGA{4gIBb2r; zB2>1?5o+6%2#sxOM6&J62(2w8LT8&6p|{P9i1W;fi1*Bn819)9F~VbvNbr~<5aBPK~^2 zo*sG2Y>C`wCL;HnmqhM0+aiB6uZ_H7J{U>aUVHnhd16$YZBkUc?enPNwlAVa*d|9M z*rr4!+NMU0w0#*h%9au}+BPj}j4d^4tZjPKINOY<@wTs`l5Af`iEQ6QiET5ZB(_;m zQrqk(nQcxKZsSBRw+2N2WDSg7VdX||v<647w1z})vI?SCSznLdYz>WGV|^p~XKPsW zYHP3PE!N)AYps2v_gcfFcUs?$-fE4C{?Qs8z0cY&dbhQI^fv4J(d(=qMenj=(Z5+^ zqJOatie7L1Bzli^Nc4WIFnYUnSo8+#XVJe}hesct zMT-4wkzrdcIQEN0j%~9jug>-10Sc!txDv(lQe}WtoMYw#>%PSmt17Ek^8|#e|)=%*8HP=3&2E=3^Hv3$RO; zZ?P)Nci3giLhKJq8g|992)k

    K|wEs^4XBr;{irPx?TGqPe(%aF(laMWd6 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≧+iuB+(L1K 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

    GG29jyk)!6|8W<7l<`V$nRRHw2 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®LK)1&w=GTrm7{yh1I~}}CL|Qf^{q+=N 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

    7U;p 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%0Av1+o)nXm&65Fs ztJwi1ktdB4_081*rKBce?id{X@tWsT77usNJzcq?do_d@*9S+59S>?HSxGRQIJWMB2>#f4(be z(9|Q_Y)yQA9F6ff z9};%vFd@gt<%MVDo73(JL;BWcPk4(R1^FPc`csymV4K!u@LzJB9pDXPGUE#zYR7dK2*?JER7YRYXO!<``Aqj_Nn$4| zd-jZAnV|fPYJ&ud?KAUvL^o$sd&;N1lpdc_^p6&uQVWIV5>}ST`$uZ`vll;7u$&^& zrexQXM9MGpF$suTx|jlh@CA7|;LtQxNVI|E89kV7{N%z%8gQx9Lg{EprYt(K1yY3{n9T=B5&hq-L+>j}fzW_?-iiEE2}q{!Ys5Q?qQ z-px@=owizom37wNU(k^iSWZ(G@~w6#>60oGV`&6IB92!Bo45BrVxsrE{y7GI1x!=j zShkwW9Q2k1$cdEX8QE?BQQ){0yhM}P@Y?0N=_}$`_Jc|qo!t#=##H% z6jJgZQSXdaXIsEe5I0g?#=G)$ViNqj%b2Fpf8O8$%OD@a9SX z@glt2Bqrl+&$kA(QQ6WOn8c}1E>%W6T zgiL=1hRBltdrg)4QdzMGhhbd}zsL~eFvs&xPo>gv%C^i%NX}-#DO1vkVF*n?|$M~W=Not<9{S?dG5@y5wH{3QH{Aw8YZjIucJ^1ovI_MNV zVr@m{3{u=}z|mjQV>&G!O~m;N1TPeE@a-njY05Tb?5}y%;eFuwihGVX%bI=HvE5|~ zSzaV=$9-ocSH&&N0yqQU9r+U*KdUSb(KcgaeHW(u;eV=!-6#1^yrg*6YL{0Vvth~| zNk#o$;NclD{g)3)?j_CNn6D|O9j>c**2q#H7ypd#tEc~t0er`_0vu1}zlY%QapS2Uff)%fh%H$}xt2FPW8 zoWPMas?&ss>+Qx3NdB<}l1sdly9ho}-KBI~&1Gu~rSxV-ziV=tA{-|UwyXA*d}$@x z^vQvV16f>?HHZCT#@UA4o`YHoyVMLiR)-)Rr&Fpa%=Doa&N?x^Im z#@|*SnlpPXSb7s#*Tl*-U#t5h=~NN!*waskSo~rC#L5C7gnhH$wmykx9?FaM(#ByL zL=9_ZLv@pwupnMswsOsAGTk6twg*gciRXf_j4CtHqM^a|uE zZzG*sA$T3x5)0IaEw!MDSH;L^fCvXQemRR3hAsTSHQfvuN{RsQkPXYIKR}1_*!JhC z$X~i0UTb6ruP$}}s`=KgsFds|Tssp~`imifnshod_r2>4Rtk+A>OTuFjZeXu>C}^s5`&uB5{Q{L;SxlZf(-PE>zbTurJYO@otpc6l<*SevIoD;IG-F~q_9 zwMEdk0@R758{b(tfBaE#74d``gWs>l1xlNUu@(mtfqUFM+kcef`58588IA5u zv<}SRGOmn?F1=jDPHlWDYwnxA|#a=h#n00K3T`$dO~LdMOEnOnr0R@GqWeY+AA6${y2RFl8=Fv(73#S zhbnh+dPZ#YV^g9yTJXFL-DBG;1UzE>Jm)d9c1-rpC2b3JcAprV3^eL^kC`K%is9?G zbuMQUai3~s30dF5<6XS}!@}1!JL>=Ha~aUuZVCn1?IBNIA|E8J8KT= zO?}wZZ1?0P*|_x2tbhjk`&hYmF+c&2Pg0zvd6%7&bnKy+lz@ATuP3E|oF}1Y2rMFJ z`ZHT5d$y?tmuazDibWIOzjnV%Z)vT7J*soX>P`j8rpdlxI}V>MD#PdBH=dGos$s5z z%=aw9l^$YGN02F*Rn@tXX{lmw{Y)hk>~?U4v~m*?WOVMH#ut>aW_>i7^5F+r#rLt= zkp44%M`UzWxv{~#5A&i3MWRk3~c$6E?U<>P{PL&q9}Bm0t$wIZPt^^dEK zM`E7GeuFYS)`UWnFFnd79<`~j2E?$(xZz#0V_&oFOOAiYnF7KIT-Wx^t?L1q7GKo( z>|TOTD^(UK!EM3B-9KN!zVM&at1{xvh*p@fdJhvVVbh%)*hFN3rZ zOw=xWDT@Ju)AC=<7o|@5*Q4{NWu#}JXdjJOvU*k}?!UrKRYx2bB5$R2OnNy|-G}%p zyi3H3LgJbU>B)8JJr6Pq(Jodxyk_piycYw7%rL{9SlzwMJG}2(*loYT1N{~GKrnSy zJLjh*+w4AwNJ<#>gt+gjbi_mJiLv=1y*gxY;yUG-y_GL5#kz^-3` za9P>)qZBIc+bI?lo1tESar_x+Fe{-*%cNrUbD{qkk?^R3tAcYizJ&aya?gH1``iOrP<(T^@ez>8kXwj9^=4Q#HL}k(!vP|w?MILkaY1h0!Sk$KQzG(*QrR-cD z;Gkd$M8P?iZQ}|}UX3_y!e={6h~O<3Ym_95`2pm0@8sK zpIPk_wmSLMy z_aI7Ab+ge)?Ce!8EP-i#_zLe)ClO+r)$Elcs7`CcgDrc$oy327FeUbiHKCDU=HS_B zrxFOW?1$4p;eRX~VG~U1nNaStEkwoVs%}lVN)^1$>}>@SgAzr=wmTkf}|(+Q3yn3!2tA^8oAqY2c}YSs4;70tm<@KV#j z{ZHaktq10VGcmetAD?eDagEd2z)8G+6x~(+8J^s6w6~#WK$Yy%!Jwj@IqLV(^`p3j zqf?4lMlAZRdeR3e`$`HR{4jqAZM> z=X=r)?j%bE2{>jKo#g{_|CEZ<3*;Bm179kTCPrHIDD>K6@Xw`P&vz^FaLQ4UTwd)O z1|V1VXZtxDLkRA@Z$)f7UO_yN_GUFURB_`cYl$TAAe3bYpP(sSwM@Hbxm#v|9kVw zeMHmjFg9>c%Bg9Z;|R=Znz_5w{Z$Q{4@Cy3{TZJ;%UZfBQl6^~CtAnOZaT@A7uel= z`-WHPVY=Fdx3@;Nij$9HcX=mzu?;Dt3C@$}-*&u+NmA0n_SWbK=|T`6t(gvFl{hNQ z)#uxO;5al9+2AAvOtU2$#_)B{VqGJ(=GN^h-PO+nN1^jB_KQK$|fIoOD=YTv4xed#R z@1t`ydP2fp0!YJZk≠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�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%0D2w+=$X6*py#Ez06ja8K;UeC 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 z {yqUyN>cW7s* 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

    3*Lb(?&St>A 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

    RmOQM^l8-&MFxXi0Qf!=g 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Π?neWh?(MD<43*|glxsWP{OC#*Fo?#oG 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 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/modules.png b/source/Module/FatFS/documents/res/modules.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e69a3e0528d14d7c2e0eaff685c693c2f70e8f GIT binary patch literal 15396 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 literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/rwtest1.png b/source/Module/FatFS/documents/res/rwtest1.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0330200bcf272a14b4d0a103764e25ceec1a3f GIT binary patch literal 69114 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 AM*si- literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/res/rwtest3.png b/source/Module/FatFS/documents/res/rwtest3.png new file mode 100644 index 0000000000000000000000000000000000000000..cbaa3d118948580fc8ed1f4ab9f2ea9149ea9757 GIT binary patch literal 3011 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 x4< literal 0 HcmV?d00001 diff --git a/source/Module/FatFS/documents/updates.html b/source/Module/FatFS/documents/updates.html new file mode 100644 index 0000000..9db87b7 --- /dev/null +++ b/source/Module/FatFS/documents/updates.html @@ -0,0 +1,481 @@ + + + + + + + + +FatFs - Updates and Migration Notes + + +

    Q^=}wt)O}0*Qlk3P5S}0n91Mb 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 literal 0 HcmV?d00001 diff --git a/driver/inc/hc32f460_adc.h b/driver/inc/hc32f460_adc.h new file mode 100644 index 0000000..edaf0b9 --- /dev/null +++ b/driver/inc/hc32f460_adc.h @@ -0,0 +1,509 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_adc.h + ** + ** A detailed description is available at + ** @link AdcGroup Adc description @endlink + ** + ** - 2018-11-30 CDT First version for Device Driver Library of Adc. + ** + ******************************************************************************/ +#ifndef __HC32F460_ADC_H__ +#define __HC32F460_ADC_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_ADC_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup AdcGroup Analog-to-Digital Converter(ADC) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief ADC average count. + ** + ******************************************************************************/ +typedef enum en_adc_avcnt +{ + AdcAvcnt_2 = 0x0, ///< Average after 2 conversions. + AdcAvcnt_4 = 0x1, ///< Average after 4 conversions. + AdcAvcnt_8 = 0x2, ///< Average after 8 conversions. + AdcAvcnt_16 = 0x3, ///< Average after 16 conversions. + AdcAvcnt_32 = 0x4, ///< Average after 32 conversions. + AdcAvcnt_64 = 0x5, ///< Average after 64 conversions. + AdcAvcnt_128 = 0x6, ///< Average after 128 conversions. + AdcAvcnt_256 = 0x7, ///< Average after 256 conversions. +} en_adc_avcnt_t; + +/** + ******************************************************************************* + ** \brief ADC data alignment + ** + ******************************************************************************/ +typedef enum en_adc_data_align +{ + AdcDataAlign_Right = 0x0, ///< Data right alignment. + AdcDataAlign_Left = 0x1, ///< Data left alignment. +} en_adc_data_align_t; + +/** + ******************************************************************************* + ** \brief Automatically clear data registers after reading data. + ** The auto clear function is mainly used to detect whether the data register + ** is updated. + ** + ******************************************************************************/ +typedef enum en_adc_clren +{ + AdcClren_Disable = 0x0, ///< Automatic clear function disable. + AdcClren_Enable = 0x1, ///< Automatic clear function enable. +} en_adc_clren_t; + +/** + ******************************************************************************* + ** \brief ADC resolution. + ** + ******************************************************************************/ +typedef enum en_adc_resolution +{ + AdcResolution_12Bit = 0x0, ///< Resolution is 12 bit. + AdcResolution_10Bit = 0x1, ///< Resolution is 10 bit. + AdcResolution_8Bit = 0x2, ///< Resolution is 8 bit. +} en_adc_resolution_t; + +/** + ******************************************************************************* + ** \brief ADC scan mode. + ** + ******************************************************************************/ +typedef enum en_adc_scan_mode +{ + AdcMode_SAOnce = 0x0, ///< Sequence A works once. + AdcMode_SAContinuous = 0x1, ///< Sequence A works always. + AdcMode_SAOnceSBOnce = 0x2, ///< Sequence A and sequence B work once. + AdcMode_SAContinuousSBOnce = 0x3, ///< Sequence A works always, sequence works once. +} en_adc_scan_mode_t; + +/** + ******************************************************************************* + ** \brief ADC sequence A restart position. + ** + ******************************************************************************/ +typedef enum en_adc_rschsel +{ + AdcRschsel_Continue = 0x0, ///< After sequence A is interrupted by sequence B, + ///< sequence A continues to scan from the interrupt + ///< when it restarts. + + AdcRschsel_Restart = 0x1, ///< After sequence A is interrupted by sequence B, + ///< sequence A restarts scanning from the first channel + ///< when it restarts. +} en_adc_rschsel_t; + +/** + ******************************************************************************* + ** \brief ADC external or internal trigger source enable/disable . + ** + ******************************************************************************/ +typedef enum en_adc_trgen +{ + AdcTrgen_Disable = 0x0, ///< External or internal trigger source disable. + AdcTrgen_Enable = 0x1, ///< External or internal trigger source enable. +} en_adc_trgen_t; + +/** + ******************************************************************************* + ** \brief ADC sequence trigger source selection. + ** + ******************************************************************************/ +typedef enum en_adc_trgsel +{ + AdcTrgsel_ADTRGX = 0x0, ///< X = 1(use ADC1) / 2(use ADC2), same as below. + AdcTrgsel_TRGX0 = 0x1, ///< Pin IN_TRG10 / IN_TRG20. + AdcTrgsel_TRGX1 = 0x2, ///< Pin IN_TRG11 / IN_TRG21. + AdcTrgsel_TRGX0_TRGX1 = 0x3, ///< Pin IN_TRG10 + IN_TRG11 / IN_TRG20 + IN_TRG21. +} en_adc_trgsel_t; + +/** + ******************************************************************************* + ** \brief Sequence A/B conversion completion interrupt enable/disable. + ** + ******************************************************************************/ +typedef enum en_adc_eocien +{ + AdcEocien_Disable = 0x0, ///< Conversion completion interrupt disable. + AdcEocien_Enable = 0x1, ///< Conversion completion interrupt enable. +} en_adc_eocien_t; + +/** + ******************************************************************************* + ** \brief ADC sync mode. + ** + ******************************************************************************/ +typedef enum en_adc_sync_mode +{ + AdcSync_SingleSerial = 0x0u, ///< Single: ADC1 and ADC2 only sample and convert once after triggering. + ///< Serial: ADC2 start after ADC1 N PCLK4 cycles. + AdcSync_SingleParallel = 0x2u, ///< Parallel: ADC1 and ADC2 start at the same time. + AdcSync_ContinuousSerial = 0x4u, ///< Continuous: ADC1 and ADC2 continuously sample and convert after triggering. + AdcSync_ContinuousParallel = 0x6u, +} en_adc_sync_mode_t; + +/** + ******************************************************************************* + ** \brief ADC sync enable/disable. + ** + ******************************************************************************/ +typedef enum en_adc_syncen +{ + AdcSync_Disable = 0x0, ///< Disable sync mode. + AdcSync_Enable = 0x1, ///< Enable sync mode. +} en_adc_syncen_t; + +/** + ******************************************************************************* + ** \brief Analog watchdog interrupt enable/disable. + ** + ******************************************************************************/ +typedef enum en_adc_awdien +{ + AdcAwdInt_Disable = 0x0, ///< Disable AWD interrupt. + AdcAwdInt_Enable = 0x1, ///< Enable AWD interrupt. +} en_adc_awdien_t; + +/** + ******************************************************************************* + ** \brief Analog watchdog interrupt event sequence selection. + ** + ******************************************************************************/ +typedef enum en_adc_awdss +{ + AdcAwdSel_SA_SB = 0x0, ///< Sequence A and B output interrupt event -- ADC_SEQCMP. + AdcAwdSel_SA = 0x1, ///< Sequence A output interrupt event -- ADC_SEQCMP. + AdcAwdSel_SB = 0x2, ///< Sequence B output interrupt event -- ADC_SEQCMP. + AdcAwdSel_SB_SA = 0x3, ///< Same as AdcAwdSel_SA_SB. +} en_adc_awdss_t; + +/** + ******************************************************************************* + ** \brief Analog watchdog comparison mode selection. + ** + ******************************************************************************/ +typedef enum en_adc_awdmd +{ + AdcAwdCmpMode_0 = 0x0, ///< Upper limit is AWDDR0, lower limit is AWDDR1. + ///< If AWDDR0 > result or result > AWDDR1, + ///< the interrupt will be occur. + + AdcAwdCmpMode_1 = 0x1, ///< The range is [AWDDR0, AWDDR1]. + ///< If AWDDR0 <= result <= AWDDR1, the interrupt will be occur. +} en_adc_awdmd_t; + +/** + ******************************************************************************* + ** \brief Analog watchdog enable/disable. + ** + ******************************************************************************/ +typedef enum en_adc_awden +{ + AdcAwd_Disable = 0x0, ///< Disable AWD. + AdcAwd_Enable = 0x1, ///< Enable AWD. +} en_adc_awden_t; + +/** + ******************************************************************************* + ** \brief PGA control. + ** + ******************************************************************************/ +typedef enum en_adc_pga_ctl +{ + AdcPgaCtl_Invalid = 0x0, ///< Amplifier is invalid. + AdcPgaCtl_Amplify = 0xE, ///< Amplifier effective. +} en_adc_pga_ctl_t; + +/** + ******************************************************************************* + ** \brief The amplification factor of the amplifier is as follows. + ** + ******************************************************************************/ +typedef enum en_adc_pga_factor +{ + AdcPgaFactor_2 = 0x0, ///< PGA magnification 2. + AdcPgaFactor_2P133 = 0x1, ///< PGA magnification 2.133. + AdcPgaFactor_2P286 = 0x2, ///< PGA magnification 2.286. + AdcPgaFactor_2P667 = 0x3, ///< PGA magnification 2.667. + AdcPgaFactor_2P909 = 0x4, ///< PGA magnification 2.909. + AdcPgaFactor_3P2 = 0x5, ///< PGA magnification 3.2. + AdcPgaFactor_3P556 = 0x6, ///< PGA magnification 3.556. + AdcPgaFactor_4 = 0x7, ///< PGA magnification 4. + AdcPgaFactor_4P571 = 0x8, ///< PGA magnification 4.571. + AdcPgaFactor_5P333 = 0x9, ///< PGA magnification 5.333. + AdcPgaFactor_6P4 = 0xA, ///< PGA magnification 6.4. + AdcPgaFactor_8 = 0xB, ///< PGA magnification 8. + AdcPgaFactor_10P667 = 0xC, ///< PGA magnification 10.667. + AdcPgaFactor_16 = 0xD, ///< PGA magnification 16. + AdcPgaFactor_32 = 0xE, ///< PGA magnification 32. +} en_adc_pga_factor_t; + +/** + ******************************************************************************* + ** \brief Negative phase input selection + ** + ******************************************************************************/ +typedef enum en_adc_pga_negative +{ + AdcPgaNegative_PGAVSS = 0x0, ///< Use external port PGAVSS as PGA negative input. + AdcPgaNegative_VSSA = 0x1, ///< Use internal analog ground VSSA as PGA negative input. +} en_adc_pga_negative_t; + +/** + ******************************************************************************* + ** \brief ADC common trigger source select + ** + ******************************************************************************/ +typedef enum en_adc_com_trigger +{ + AdcComTrigger_1 = 0x1, ///< Select common trigger 1. + AdcComTrigger_2 = 0x2, ///< Select common trigger 2. + AdcComTrigger_1_2 = 0x3, ///< Select common trigger 1 and 2. +} en_adc_com_trigger_t; + +/** + ******************************************************************************* + ** \brief Structure definition of ADC + ** + ******************************************************************************/ +typedef struct stc_adc_ch_cfg +{ + uint32_t u32Channel; ///< ADC channels mask. + uint8_t u8Sequence; ///< The sequence which the channel(s) belong to. + uint8_t *pu8SampTime; ///< Pointer to sampling time. +} stc_adc_ch_cfg_t; + +typedef struct stc_adc_awd_cfg +{ + en_adc_awdmd_t enAwdmd; ///< Comparison mode of the values. + en_adc_awdss_t enAwdss; ///< Interrupt output select. + uint16_t u16AwdDr0; ///< Your range DR0. + uint16_t u16AwdDr1; ///< Your range DR1. +} stc_adc_awd_cfg_t; + +typedef struct stc_adc_trg_cfg +{ + uint8_t u8Sequence; ///< The sequence will be configured trigger source. + en_adc_trgsel_t enTrgSel; ///< Trigger source type. + en_event_src_t enInTrg0; ///< Internal trigger 0 source number + ///< (event number @ref en_event_src_t). + en_event_src_t enInTrg1; ///< Internal trigger 1 source number + ///< (event number @ref en_event_src_t). +} stc_adc_trg_cfg_t; + +typedef struct stc_adc_init +{ + en_adc_resolution_t enResolution; ///< ADC resolution 12bit/10bit/8bit. + en_adc_data_align_t enDataAlign; ///< ADC data alignment. + en_adc_clren_t enAutoClear; ///< Automatically clear data register. + ///< after reading data register(enable/disable). + en_adc_scan_mode_t enScanMode; ///< ADC scan mode. + en_adc_rschsel_t enRschsel; ///< Restart or continue. +} stc_adc_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief ADC sequence definition. + ** + ******************************************************************************/ +/* ADC sequence definition */ +#define ADC_SEQ_A ((uint8_t)0) +#define ADC_SEQ_B ((uint8_t)1) + +/* ADC pin definition */ +#define ADC1_IN0 ((uint8_t)0) +#define ADC1_IN1 ((uint8_t)1) +#define ADC1_IN2 ((uint8_t)2) +#define ADC1_IN3 ((uint8_t)3) +#define ADC12_IN4 ((uint8_t)4) +#define ADC12_IN5 ((uint8_t)5) +#define ADC12_IN6 ((uint8_t)6) +#define ADC12_IN7 ((uint8_t)7) +#define ADC12_IN8 ((uint8_t)8) +#define ADC12_IN9 ((uint8_t)9) +#define ADC12_IN10 ((uint8_t)10) +#define ADC12_IN11 ((uint8_t)11) +#define ADC1_IN12 ((uint8_t)12) +#define ADC1_IN13 ((uint8_t)13) +#define ADC1_IN14 ((uint8_t)14) +#define ADC1_IN15 ((uint8_t)15) +#define ADC_PIN_INVALID ((uint8_t)0xFF) + +/* ADC channel index definition */ +#define ADC_CH_IDX0 (0u) +#define ADC_CH_IDX1 (1u) +#define ADC_CH_IDX2 (2u) +#define ADC_CH_IDX3 (3u) +#define ADC_CH_IDX4 (4u) +#define ADC_CH_IDX5 (5u) +#define ADC_CH_IDX6 (6u) +#define ADC_CH_IDX7 (7u) +#define ADC_CH_IDX8 (8u) +#define ADC_CH_IDX9 (9u) +#define ADC_CH_IDX10 (10u) +#define ADC_CH_IDX11 (11u) +#define ADC_CH_IDX12 (12u) +#define ADC_CH_IDX13 (13u) +#define ADC_CH_IDX14 (14u) +#define ADC_CH_IDX15 (15u) +#define ADC_CH_IDX16 (16u) + +/* ADC1 channel mask definition */ +#define ADC1_CH0 (0x1ul << 0u) ///< Default mapping pin ADC1_IN0 +#define ADC1_CH1 (0x1ul << 1u) ///< Default mapping pin ADC1_IN1 +#define ADC1_CH2 (0x1ul << 2u) ///< Default mapping pin ADC1_IN2 +#define ADC1_CH3 (0x1ul << 3u) ///< Default mapping pin ADC1_IN3 +#define ADC1_CH4 (0x1ul << 4u) ///< Default mapping pin ADC12_IN4 +#define ADC1_CH5 (0x1ul << 5u) ///< Default mapping pin ADC12_IN5 +#define ADC1_CH6 (0x1ul << 6u) ///< Default mapping pin ADC12_IN6 +#define ADC1_CH7 (0x1ul << 7u) ///< Default mapping pin ADC12_IN7 +#define ADC1_CH8 (0x1ul << 8u) ///< Default mapping pin ADC12_IN8 +#define ADC1_CH9 (0x1ul << 9u) ///< Default mapping pin ADC12_IN9 +#define ADC1_CH10 (0x1ul << 10u) ///< Default mapping pin ADC12_IN10 +#define ADC1_CH11 (0x1ul << 11u) ///< Default mapping pin ADC12_IN11 +#define ADC1_CH12 (0x1ul << 12u) ///< Default mapping pin ADC12_IN12 +#define ADC1_CH13 (0x1ul << 13u) ///< Default mapping pin ADC12_IN13 +#define ADC1_CH14 (0x1ul << 14u) ///< Default mapping pin ADC12_IN14 +#define ADC1_CH15 (0x1ul << 15u) ///< Default mapping pin ADC12_IN15 +#define ADC1_CH16 (0x1ul << 16u) +#define ADC1_CH_INTERNAL (ADC1_CH16) ///< 8bit DAC_1/DAC_2 or internal VERF, dependent on CMP_RVADC +#define ADC1_CH_ALL (0x0001FFFFul) +#define ADC1_PIN_MASK_ALL (ADC1_CH_ALL & ~ADC1_CH_INTERNAL) + +/* ADC2 channel definition */ +#define ADC2_CH0 (0x1ul << 0u) ///< Default mapping pin ADC12_IN4 +#define ADC2_CH1 (0x1ul << 1u) ///< Default mapping pin ADC12_IN5 +#define ADC2_CH2 (0x1ul << 2u) ///< Default mapping pin ADC12_IN6 +#define ADC2_CH3 (0x1ul << 3u) ///< Default mapping pin ADC12_IN7 +#define ADC2_CH4 (0x1ul << 4u) ///< Default mapping pin ADC12_IN8 +#define ADC2_CH5 (0x1ul << 5u) ///< Default mapping pin ADC12_IN9 +#define ADC2_CH6 (0x1ul << 6u) ///< Default mapping pin ADC12_IN10 +#define ADC2_CH7 (0x1ul << 7u) ///< Default mapping pin ADC12_IN11 +#define ADC2_CH8 (0x1ul << 8u) +#define ADC2_CH_INTERNAL (ADC2_CH8) ///< 8bit DAC_1/DAC_2 or internal VERF, dependent on CMP_RVADC +#define ADC2_CH_ALL (0x000001FFul) +#define ADC2_PIN_MASK_ALL (ADC2_CH_ALL & ~ADC2_CH_INTERNAL) + +/* +* PGA channel definition. +* NOTE: The PGA channel directly maps external pins and does not correspond to the ADC channel. +*/ +#define PGA_CH0 (0x1ul << ADC1_IN0) ///< Mapping pin ADC1_IN0 +#define PGA_CH1 (0x1ul << ADC1_IN1) ///< Mapping pin ADC1_IN1 +#define PGA_CH2 (0x1ul << ADC1_IN2) ///< Mapping pin ADC1_IN2 +#define PGA_CH3 (0x1ul << ADC1_IN3) ///< Mapping pin ADC1_IN3 +#define PGA_CH4 (0x1ul << ADC12_IN4) ///< Mapping pin ADC12_IN4 +#define PGA_CH5 (0x1ul << ADC12_IN5) ///< Mapping pin ADC12_IN5 +#define PGA_CH6 (0x1ul << ADC12_IN6) ///< Mapping pin ADC12_IN6 +#define PGA_CH7 (0x1ul << ADC12_IN7) ///< Mapping pin ADC12_IN7 +#define PGA_CH8 (0x1ul << ADC12_IN8) ///< Mapping internal 8bit DAC1 output +#define PGA_CH_ALL (0x000001FFul) + +/* ADC1 has up to 17 channels */ +#define ADC1_CH_COUNT (17u) + +/* ADC2 has up to 9 channels */ +#define ADC2_CH_COUNT (9u) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t ADC_Init(M4_ADC_TypeDef *ADCx, const stc_adc_init_t *pstcInit); +en_result_t ADC_DeInit(M4_ADC_TypeDef *ADCx); + +en_result_t ADC_SetScanMode(M4_ADC_TypeDef *ADCx, en_adc_scan_mode_t enMode); +en_result_t ADC_ConfigTriggerSrc(M4_ADC_TypeDef *ADCx, const stc_adc_trg_cfg_t *pstcTrgCfg); +en_result_t ADC_TriggerSrcCmd(M4_ADC_TypeDef *ADCx, uint8_t u8Seq, en_functional_state_t enState); +void ADC_ComTriggerCmd(M4_ADC_TypeDef *ADCx, en_adc_trgsel_t enTrgSel, \ + en_adc_com_trigger_t enComTrigger, en_functional_state_t enState); + +en_result_t ADC_AddAdcChannel(M4_ADC_TypeDef *ADCx, const stc_adc_ch_cfg_t *pstcChCfg); +en_result_t ADC_DelAdcChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel); +en_result_t ADC_SeqITCmd(M4_ADC_TypeDef *ADCx, uint8_t u8Seq, en_functional_state_t enState); + +en_result_t ADC_ConfigAvg(M4_ADC_TypeDef *ADCx, en_adc_avcnt_t enAvgCnt); +en_result_t ADC_AddAvgChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel); +en_result_t ADC_DelAvgChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel); + +en_result_t ADC_ConfigAwd(M4_ADC_TypeDef *ADCx, const stc_adc_awd_cfg_t *pstcAwdCfg); +en_result_t ADC_AwdCmd(M4_ADC_TypeDef *ADCx, en_functional_state_t enState); +en_result_t ADC_AwdITCmd(M4_ADC_TypeDef *ADCx, en_functional_state_t enState); +en_result_t ADC_AddAwdChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel); +en_result_t ADC_DelAwdChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel); + +void ADC_ConfigPga(en_adc_pga_factor_t enFactor, en_adc_pga_negative_t enNegativeIn); +void ADC_PgaCmd(en_functional_state_t enState); +void ADC_AddPgaChannel(uint32_t u32Channel); +void ADC_DelPgaChannel(uint32_t u32Channel); + +void ADC_ConfigSync(en_adc_sync_mode_t enMode, uint8_t u8TrgDelay); +void ADC_SyncCmd(en_functional_state_t enState); + +en_result_t ADC_StartConvert(M4_ADC_TypeDef *ADCx); +en_result_t ADC_StopConvert(M4_ADC_TypeDef *ADCx); +en_flag_status_t ADC_GetEocFlag(const M4_ADC_TypeDef *ADCx, uint8_t u8Seq); +void ADC_ClrEocFlag(M4_ADC_TypeDef *ADCx, uint8_t u8Seq); +en_result_t ADC_PollingSa(M4_ADC_TypeDef *ADCx, uint16_t *pu16AdcData, uint8_t u8Length, uint32_t u32Timeout); + +en_result_t ADC_GetAllData(const M4_ADC_TypeDef *ADCx, uint16_t *pu16AdcData, uint8_t u8Length); +en_result_t ADC_GetChData(const M4_ADC_TypeDef *ADCx, uint32_t u32TargetCh, uint16_t *pu16AdcData, uint8_t u8Length); +uint16_t ADC_GetValue(const M4_ADC_TypeDef *ADCx, uint8_t u8ChIndex); + +uint32_t ADC_GetAwdFlag(const M4_ADC_TypeDef *ADCx); +void ADC_ClrAwdFlag(M4_ADC_TypeDef *ADCx); +void ADC_ClrAwdChFlag(M4_ADC_TypeDef *ADCx, uint32_t u32AwdCh); + +en_result_t ADC_ChannelRemap(M4_ADC_TypeDef *ADCx, uint32_t u32DestChannel, uint8_t u8AdcPin); +uint8_t ADC_GetChannelPinNum(const M4_ADC_TypeDef *ADCx, uint8_t u8ChIndex); + +//@} // AdcGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_ADC_ENABLE */ + +#endif /* __HC32F460_ADC_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_aes.h b/driver/inc/hc32f460_aes.h new file mode 100644 index 0000000..eca2f48 --- /dev/null +++ b/driver/inc/hc32f460_aes.h @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_aes.h + ** + ** A detailed description is available at + ** @link AesGroup Aes description @endlink + ** + ** - 2018-10-20 CDT First version for Device Driver Library of Aes. + ** + ******************************************************************************/ +#ifndef __HC32F460_AES_H__ +#define __HC32F460_AES_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_AES_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup AesGroup Advanced Encryption Standard(AES) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + /* AES key length in bytes is 16. */ +#define AES_KEYLEN ((uint8_t)16) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t AES_Encrypt(const uint8_t *pu8Plaintext, + uint32_t u32PlaintextSize, + const uint8_t *pu8Key, + uint8_t *pu8Ciphertext); + +en_result_t AES_Decrypt(const uint8_t *pu8Ciphertext, + uint32_t u32CiphertextSize, + const uint8_t *pu8Key, + uint8_t *pu8Plaintext); + +//@} // AesGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_AES_ENABLE */ + +#endif /* __HC32F460_AES_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_can.h b/driver/inc/hc32f460_can.h new file mode 100644 index 0000000..34e689a --- /dev/null +++ b/driver/inc/hc32f460_can.h @@ -0,0 +1,518 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_can.h + ** + ** A detailed description is available at + ** @link CanGroup CAN description @endlink + ** + ** - 2018-11-27 CDT First version for Device Driver Library of CAN + ** + ******************************************************************************/ +#ifndef __HC32F460_CAN_H__ +#define __HC32F460_CAN_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_CAN_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup CanGroup Controller Area Network(CAN) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief The Can error types. + ******************************************************************************/ +typedef enum +{ + NO_ERROR = 0U, + BIT_ERROR = 1U, + FORM_ERROR = 2U, + STUFF_ERROR = 3U, + ACK_ERROR = 4U, + CRC_ERROR = 5U, + UNKOWN_ERROR = 6U, +}en_can_error_t; + +/** + ******************************************************************************* + ** \brief The Can transmit buffer select.(TCMD) + ******************************************************************************/ +typedef enum +{ + CanPTBSel = 0U, ///< high-priority buffer + CanSTBSel = 1U, ///< secondary buffer +}en_can_buffer_sel_t; + +/** + ******************************************************************************* + ** \brief The Can warning limits.(AFWL) + ******************************************************************************/ +typedef struct stc_can_warning_limit +{ + uint8_t CanWarningLimitVal; ///< Receive buffer almost full warning limit + uint8_t CanErrorWarningLimitVal; ///< Programmable error warning limit +}stc_can_warning_limit_t; + +/** + ******************************************************************************* + ** \brief The Acceptance Filters Frame Format Check.(ACF) + ******************************************************************************/ +typedef enum en_can_acf_format_en +{ + CanStdFrames = 0x02u, ///< Accepts only Standard frames + CanExtFrames = 0x03u, ///< Accepts only Extended frames + CanAllFrames = 0x00u, ///< Accepts both standard or extended frames +}en_can_acf_format_en_t; + +/** + ******************************************************************************* + ** \brief The Acceptance Filters Enable.(ACFEN) + ******************************************************************************/ +typedef enum en_can_filter_sel +{ + CanFilterSel1 = 0u, ///< The Acceptance Filter 1 Enable + CanFilterSel2 = 1u, ///< The Acceptance Filter 2 Enable + CanFilterSel3 = 2u, ///< The Acceptance Filter 3 Enable + CanFilterSel4 = 3u, ///< The Acceptance Filter 4 Enable + CanFilterSel5 = 4u, ///< The Acceptance Filter 5 Enable + CanFilterSel6 = 5u, ///< The Acceptance Filter 6 Enable + CanFilterSel7 = 6u, ///< The Acceptance Filter 7 Enable + CanFilterSel8 = 7u, ///< The Acceptance Filter 8 Enable +}en_can_filter_sel_t; + +/** + ******************************************************************************* + ** \brief The can interrupt enable.(IE) + ******************************************************************************/ +typedef enum +{ + //<empty and =almost full, but not full and no overflow + CanRxBufFull = 3, ///< full +}en_can_rx_buf_status_t; + +/** + ******************************************************************************* + ** \brief The Can Transmission secondary Status.(TSSTAT) + ******************************************************************************/ +typedef enum +{ + CanTxBufEmpty = 0, ///< TTEN=0 or TTTBM=0: STB is empty + ///< TTEN=1 and TTTBM=1: PTB and STB are empty + CanTxBufnotHalfFull = 1, ///< TTEN=0 or TTTBM=0: STB is less than or equal to half full + ///< TTEN=1 and TTTBM=1: PTB and STB are not empty and not full + CanTxBufHalfFull = 2, ///< TTEN=0 or TTTBM=0: STB is more than half full + ///< TTEN=1 and TTTBM=1: None + CanTxBufFull = 3, ///< TTEN=0 or TTTBM=0: STB is full + ///< TTEN=1 and TTTBM=1: PTB and STB are full +}en_can_tx_buf_status_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Acceptance Filter Code and Mask. + ******************************************************************************/ +typedef struct stc_can_filter +{ + uint32_t u32CODE; ///< Acceptance CODE + uint32_t u32MASK; ///< Acceptance MASK + en_can_filter_sel_t enFilterSel; ///< The Acceptance Filters Enable + en_can_acf_format_en_t enAcfFormat; ///< The Acceptance Filters Frame Format Check. +}stc_can_filter_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Bit Timing. + ******************************************************************************/ +typedef struct stc_can_bt +{ + uint8_t SEG_1; ///< Bit timing segment 1(Tseg_1 = (SEG_1 + 2)*TQ) + uint8_t SEG_2; ///< Bit timing segment 2(Tseg_2 = (SEG_2 + 1)*TQ) + uint8_t SJW; ///< Synchronization jump width(Tsjw = (SJW + 1)*TQ) + uint8_t PRESC; ///< The Prescaler divides the system clock to get the time quanta clock tq_clk(TQ) +}stc_can_bt_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Control Frame. + ******************************************************************************/ +typedef struct +{ + uint32_t DLC : 4; ///< Data length code + uint32_t RESERVED0 : 2; ///< Ignore + uint32_t RTR : 1; ///< Remote transmission request + uint32_t IDE : 1; ///< IDentifier extension + uint32_t RESERVED1 : 24; ///< Ignore +}stc_can_txcontrol_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Tx Frame. + ******************************************************************************/ +typedef struct stc_can_txframe +{ + union + { + uint32_t TBUF32_0; ///< Ignore + uint32_t StdID; ///< Standard ID + uint32_t ExtID; ///< Extended ID + }; + union + { + uint32_t TBUF32_1; ///< Ignore + stc_can_txcontrol_t Control_f; ///< CAN Tx Control + }; + union + { + uint32_t TBUF32_2[2]; ///< Ignore + uint8_t Data[8]; ///< CAN data + }; + en_can_buffer_sel_t enBufferSel; ///< CAN Tx buffer select +}stc_can_txframe_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Rx Ctrl. + ******************************************************************************/ +typedef struct +{ + uint8_t DLC : 4; ///< Data length code + uint8_t RESERVED0 : 2; ///< Ignore + uint8_t RTR : 1; ///< Remote transmission request + uint8_t IDE : 1; ///< IDentifier extension +}stc_can_rxcontrol_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN status. + ******************************************************************************/ +typedef struct +{ + uint8_t RESERVED0 : 4; ///< Ignore + uint8_t TX : 1; ///< TX is set to 1 if the loop back mode is activated + uint8_t KOER : 3; ///< Kind of error +}stc_can_status_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN control, status and cycletime. + ******************************************************************************/ +typedef struct +{ + stc_can_rxcontrol_t Control_f; ///< @ref stc_can_rxcontrol_t + stc_can_status_t Status_f; ///< @ref stc_can_status_t + uint16_t CycleTime; ///< TTCAN cycletime +}stc_can_cst_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Rx frame. + ******************************************************************************/ +typedef struct stc_can_rxframe +{ + union + { + uint32_t RBUF32_0; ///< Ignore + uint32_t StdID; ///< Standard ID + uint32_t ExtID; ///< Extended ID + }; + union + { + uint32_t RBUF32_1; ///< Ignore + stc_can_cst_t Cst; ///< @ref stc_can_cst_t + }; + union + { + uint32_t RBUF32_2[2]; ///< Ignore + uint8_t Data[8]; ///< CAN data + }; +}stc_can_rxframe_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Rx frame. + ******************************************************************************/ +typedef struct stc_can_init_config +{ + en_can_rx_buf_all_t enCanRxBufAll; ///< @ref en_can_rx_buf_all_t + en_can_rx_buf_mode_en_t enCanRxBufMode; ///< @ref en_can_rx_buf_mode_en_t + en_can_self_ack_en_t enCanSAck; ///< @ref en_can_self_ack_en_t + en_can_stb_mode_t enCanSTBMode; ///< @ref en_can_stb_mode_t + stc_can_bt_t stcCanBt; ///< @ref stc_can_bt_t + stc_can_warning_limit_t stcWarningLimit; ///< @ref stc_can_warning_limit_t + stc_can_filter_t *pstcFilter; ///< @ref stc_can_filter_t Pointer to a stc_can_filter_t type array that \ + ///< contains the configuration informations of the acceptance filters. + uint8_t u8FilterCount; ///< Number of filters that to to initialized. +}stc_can_init_config_t; + +/** + ******************************************************************************* + ** \brief CAN TTCAN + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Configuration structure of CAN TTCAN pointer to a TB message slot + ******************************************************************************/ +typedef enum +{ + CanTTcanPTBSel = 0x00u, ///< PTB + CanTTcanSTB1Sel = 0x01u, ///< STB1 + CanTTcanSTB2Sel = 0x02u, ///< STB2 + CanTTcanSTB3Sel = 0x03u, ///< STB3 + CanTTcanSTB4Sel = 0x04u, ///< STB4 +}en_can_ttcan_tbslot_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN TTCAN Timer prescaler + ******************************************************************************/ +typedef enum +{ + CanTTcanTprescDiv1 = 0x00u, ///< Div1 + CanTTcanTprescDiv2 = 0x01u, ///< Div2 + CanTTcanTprescDiv3 = 0x02u, ///< Div3 + CanTTcanTprescDiv4 = 0x03u, ///< Div4 +}en_can_ttcan_Tpresc_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN TTCAN Trigger type + ******************************************************************************/ +typedef enum +{ + CanTTcanImmediate = 0x00, ///< Immediate trigger for immediate transmission + CanTTcanTime = 0x01, ///< Time trigger for receive trigger + CanTTcanSingle = 0x02, ///< Single shot transmit trigger for exclusive time windows + CanTTcanTransStart = 0x03, ///< Transmit start trigger for merged arbitrating time windows + CanTTcanTransStop = 0x04, ///< Transmit stop trigger for merged arbitrating time windows +}en_can_ttcan_trigger_type_t; + +typedef enum +{ + CanTTcanWdtTriggerIrq = 0x80, ///< Watch trigger interrupt + CanTTcanTimTriggerIrq = 0x10, ///< Time trigger interrupt +}en_can_ttcan_irq_type_t; + + +typedef struct stc_can_ttcan_ref_msg +{ + uint8_t u8IDE; ///< Reference message IDE:1-Extended; 0-Standard; + union ///< Reference message ID + { + uint32_t RefStdID; ///< Reference standard ID + uint32_t RefExtID; ///< Reference Extended ID + }; +}stc_can_ttcan_ref_msg_t; + +typedef struct stc_can_ttcan_trigger_config +{ + en_can_ttcan_tbslot_t enTbSlot; ///< Transmit trigger TB slot pointer + en_can_ttcan_trigger_type_t enTrigType; ///< Trigger type + en_can_ttcan_Tpresc_t enTpresc; ///< Timer prescaler + uint8_t u8Tew; ///< Transmit enable window + uint16_t u16TrigTime; ///< TTCAN trigger time + uint16_t u16WatchTrigTime; ///< TTCAN watch trigger time register +}stc_can_ttcan_trigger_config_t; + + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void CAN_Init(const stc_can_init_config_t *pstcCanInitCfg); +void CAN_DeInit(void); +void CAN_IrqCmd(en_can_irq_type_t enCanIrqType, en_functional_state_t enNewState); +bool CAN_IrqFlgGet(en_can_irq_flag_type_t enCanIrqFlgType); +void CAN_IrqFlgClr(en_can_irq_flag_type_t enCanIrqFlgType); +void CAN_ModeConfig(en_can_mode_t enMode, en_functional_state_t enNewState); +en_can_error_t CAN_ErrorStatusGet(void); +bool CAN_StatusGet(en_can_status_t enCanStatus); + +void CAN_FilterConfig(const stc_can_filter_t pstcFilter[], uint8_t u8FilterCount); +void CAN_FilterCmd(en_can_filter_sel_t enFilter, en_functional_state_t enNewState); + +void CAN_SetFrame(stc_can_txframe_t *pstcTxFrame); +en_can_tx_buf_status_t CAN_TransmitCmd(en_can_tx_cmd_t enTxCmd); +en_can_rx_buf_status_t CAN_Receive(stc_can_rxframe_t *pstcRxFrame); + +uint8_t CAN_ArbitrationLostCap(void); +uint8_t CAN_RxErrorCntGet(void); +uint8_t CAN_TxErrorCntGet(void); + + +//<< void CAN_TTCAN_Enable(void); +//<< void CAN_TTCAN_Disable(void); +//<< void CAN_TTCAN_IrqCmd(void); +//<< void CAN_TTCAN_ReferenceMsgSet(stc_can_ttcan_ref_msg_t *pstcRefMsg); +//<< void CAN_TTCAN_TriggerConfig(stc_can_ttcan_trigger_config_t *pstcTriggerCfg); + +//@} // CanGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_CAN_ENABLE */ + +#endif /* __HC32F460_CAN_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/inc/hc32f460_can1.h b/driver/inc/hc32f460_can1.h new file mode 100644 index 0000000..9bba878 --- /dev/null +++ b/driver/inc/hc32f460_can1.h @@ -0,0 +1,514 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_can.h + ** + ** A detailed description is available at + ** @link CanGroup CAN description @endlink + ** + ** - 2018-11-27 CDT First version for Device Driver Library of CAN + ** + ******************************************************************************/ +#ifndef __HC32F460_CAN_H__ +#define __HC32F460_CAN_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_CAN_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup CanGroup Controller Area Network(CAN) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief The Can error types. + ******************************************************************************/ +typedef enum +{ + NO_ERROR = 0U, + BIT_ERROR = 1U, + FORM_ERROR = 2U, + STUFF_ERROR = 3U, + ACK_ERROR = 4U, + CRC_ERROR = 5U, + UNKOWN_ERROR = 6U, +}en_can_error_t; + +/** + ******************************************************************************* + ** \brief The Can transmit buffer select.(TCMD) + ******************************************************************************/ +typedef enum +{ + CanPTBSel = 0U, ///< high-priority buffer + CanSTBSel = 1U, ///< secondary buffer +}en_can_buffer_sel_t; + +/** + ******************************************************************************* + ** \brief The Can warning limits.(AFWL) + ******************************************************************************/ +typedef struct stc_can_warning_limit +{ + uint8_t CanWarningLimitVal; ///< Receive buffer almost full warning limit + uint8_t CanErrorWarningLimitVal; ///< Programmable error warning limit +}stc_can_warning_limit_t; + +/** + ******************************************************************************* + ** \brief The Acceptance Filters Frame Format Check.(ACF) + ******************************************************************************/ +typedef enum en_can_acf_format_en +{ + CanStdFrames = 0x02u, ///< Accepts only Standard frames + CanExtFrames = 0x03u, ///< Accepts only Extended frames + CanAllFrames = 0x00u, ///< Accepts both standard or extended frames +}en_can_acf_format_en_t; + +/** + ******************************************************************************* + ** \brief The Acceptance Filters Enable.(ACFEN) + ******************************************************************************/ +typedef enum en_can_filter_sel +{ + CanFilterSel1 = 0u, ///< The Acceptance Filter 1 Enable + CanFilterSel2 = 1u, ///< The Acceptance Filter 2 Enable + CanFilterSel3 = 2u, ///< The Acceptance Filter 3 Enable + CanFilterSel4 = 3u, ///< The Acceptance Filter 4 Enable + CanFilterSel5 = 4u, ///< The Acceptance Filter 5 Enable + CanFilterSel6 = 5u, ///< The Acceptance Filter 6 Enable + CanFilterSel7 = 6u, ///< The Acceptance Filter 7 Enable + CanFilterSel8 = 7u, ///< The Acceptance Filter 8 Enable +}en_can_filter_sel_t; + +/** + ******************************************************************************* + ** \brief The can interrupt enable.(IE) + ******************************************************************************/ +typedef enum +{ + //<empty and =almost full, but not full and no overflow + CanRxBufFull = 3, ///< full +}en_can_rx_buf_status_t; + +/** + ******************************************************************************* + ** \brief The Can Transmission secondary Status.(TSSTAT) + ******************************************************************************/ +typedef enum +{ + CanTxBufEmpty = 0, ///< TTEN=0 or TTTBM=0: STB is empty + ///< TTEN=1 and TTTBM=1: PTB and STB are empty + CanTxBufnotHalfFull = 1, ///< TTEN=0 or TTTBM=0: STB is less than or equal to half full + ///< TTEN=1 and TTTBM=1: PTB and STB are not empty and not full + CanTxBufHalfFull = 2, ///< TTEN=0 or TTTBM=0: STB is more than half full + ///< TTEN=1 and TTTBM=1: None + CanTxBufFull = 3, ///< TTEN=0 or TTTBM=0: STB is full + ///< TTEN=1 and TTTBM=1: PTB and STB are full +}en_can_tx_buf_status_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Acceptance Filter Code and Mask. + ******************************************************************************/ +typedef struct stc_can_filter +{ + uint32_t u32CODE; ///< Acceptance CODE + uint32_t u32MASK; ///< Acceptance MASK + en_can_filter_sel_t enFilterSel; ///< The Acceptance Filters Enable + en_can_acf_format_en_t enAcfFormat; ///< The Acceptance Filters Frame Format Check. +}stc_can_filter_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Bit Timing. + ******************************************************************************/ +typedef struct stc_can_bt +{ + uint8_t SEG_1; ///< Bit timing segment 1(Tseg_1 = (SEG_1 + 2)*TQ) + uint8_t SEG_2; ///< Bit timing segment 2(Tseg_2 = (SEG_2 + 1)*TQ) + uint8_t SJW; ///< Synchronization jump width(Tsjw = (SJW + 1)*TQ) + uint8_t PRESC; ///< The Prescaler divides the system clock to get the time quanta clock tq_clk(TQ) +}stc_can_bt_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Control Frame. + ******************************************************************************/ +typedef struct +{ + uint32_t DLC : 4; ///< Data length code + uint32_t RESERVED0 : 2; ///< Ignore + uint32_t RTR : 1; ///< Remote transmission request + uint32_t IDE : 1; ///< IDentifier extension + uint32_t RESERVED1 : 24; ///< Ignore +}stc_can_txcontrol_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Tx Frame. + ******************************************************************************/ +typedef struct stc_can_txframe +{ + union + { + uint32_t TBUF32_0; ///< Ignore + uint32_t StdID; ///< Standard ID + uint32_t ExtID; ///< Extended ID + }; + union + { + uint32_t TBUF32_1; ///< Ignore + stc_can_txcontrol_t Control_f; ///< CAN Tx Control + }; + union + { + uint32_t TBUF32_2[2]; ///< Ignore + uint8_t Data[8]; ///< CAN data + }; + en_can_buffer_sel_t enBufferSel; ///< CAN Tx buffer select +}stc_can_txframe_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Rx Ctrl. + ******************************************************************************/ +typedef struct +{ + uint8_t DLC : 4; ///< Data length code + uint8_t RESERVED0 : 2; ///< Ignore + uint8_t RTR : 1; ///< Remote transmission request + uint8_t IDE : 1; ///< IDentifier extension +}stc_can_rxcontrol_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN status. + ******************************************************************************/ +typedef struct +{ + uint8_t RESERVED0 : 4; ///< Ignore + uint8_t TX : 1; ///< TX is set to 1 if the loop back mode is activated + uint8_t KOER : 3; ///< Kind of error +}stc_can_status_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN control, status and cycletime. + ******************************************************************************/ +typedef struct +{ + stc_can_rxcontrol_t Control_f; ///< @ref stc_can_rxcontrol_t + stc_can_status_t Status_f; ///< @ref stc_can_status_t + uint16_t CycleTime; ///< TTCAN cycletime +}stc_can_cst_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Rx frame. + ******************************************************************************/ +typedef struct stc_can_rxframe +{ + union + { + uint32_t RBUF32_0; ///< Ignore + uint32_t StdID; ///< Standard ID + uint32_t ExtID; ///< Extended ID + }; + union + { + uint32_t RBUF32_1; ///< Ignore + stc_can_cst_t Cst; ///< @ref stc_can_cst_t + }; + union + { + uint32_t RBUF32_2[2]; ///< Ignore + uint8_t Data[8]; ///< CAN data + }; +}stc_can_rxframe_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN Rx frame. + ******************************************************************************/ +typedef struct stc_can_init_config +{ + en_can_rx_buf_all_t enCanRxBufAll; ///< @ref en_can_rx_buf_all_t + en_can_rx_buf_mode_en_t enCanRxBufMode; ///< @ref en_can_rx_buf_mode_en_t + en_can_self_ack_en_t enCanSAck; ///< @ref en_can_self_ack_en_t + en_can_stb_mode_t enCanSTBMode; ///< @ref en_can_stb_mode_t + stc_can_bt_t stcCanBt; ///< @ref stc_can_bt_t + stc_can_warning_limit_t stcWarningLimit; ///< @ref stc_can_warning_limit_t +}stc_can_init_config_t; + +/** + ******************************************************************************* + ** \brief CAN TTCAN + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Configuration structure of CAN TTCAN pointer to a TB message slot + ******************************************************************************/ +typedef enum +{ + CanTTcanPTBSel = 0x00u, ///< PTB + CanTTcanSTB1Sel = 0x01u, ///< STB1 + CanTTcanSTB2Sel = 0x02u, ///< STB2 + CanTTcanSTB3Sel = 0x03u, ///< STB3 + CanTTcanSTB4Sel = 0x04u, ///< STB4 +}en_can_ttcan_tbslot_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN TTCAN Timer prescaler + ******************************************************************************/ +typedef enum +{ + CanTTcanTprescDiv1 = 0x00u, ///< Div1 + CanTTcanTprescDiv2 = 0x01u, ///< Div2 + CanTTcanTprescDiv3 = 0x02u, ///< Div3 + CanTTcanTprescDiv4 = 0x03u, ///< Div4 +}en_can_ttcan_Tpresc_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of CAN TTCAN Trigger type + ******************************************************************************/ +typedef enum +{ + CanTTcanImmediate = 0x00, ///< Immediate trigger for immediate transmission + CanTTcanTime = 0x01, ///< Time trigger for receive trigger + CanTTcanSingle = 0x02, ///< Single shot transmit trigger for exclusive time windows + CanTTcanTransStart = 0x03, ///< Transmit start trigger for merged arbitrating time windows + CanTTcanTransStop = 0x04, ///< Transmit stop trigger for merged arbitrating time windows +}en_can_ttcan_trigger_type_t; + +typedef enum +{ + CanTTcanWdtTriggerIrq = 0x80, ///< Watch trigger interrupt + CanTTcanTimTriggerIrq = 0x10, ///< Time trigger interrupt +}en_can_ttcan_irq_type_t; + + +typedef struct stc_can_ttcan_ref_msg +{ + uint8_t u8IDE; ///< Reference message IDE:1-Extended; 0-Standard; + union ///< Reference message ID + { + uint32_t RefStdID; ///< Reference standard ID + uint32_t RefExtID; ///< Reference Extended ID + }; +}stc_can_ttcan_ref_msg_t; + +typedef struct stc_can_ttcan_trigger_config +{ + en_can_ttcan_tbslot_t enTbSlot; ///< Transmit trigger TB slot pointer + en_can_ttcan_trigger_type_t enTrigType; ///< Trigger type + en_can_ttcan_Tpresc_t enTpresc; ///< Timer prescaler + uint8_t u8Tew; ///< Transmit enable window + uint16_t u16TrigTime; ///< TTCAN trigger time + uint16_t u16WatchTrigTime; ///< TTCAN watch trigger time register +}stc_can_ttcan_trigger_config_t; + + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void CAN_Init(stc_can_init_config_t *pstcCanInitCfg); +void CAN_DeInit(void); +void CAN_IrqCmd(en_can_irq_type_t enCanIrqType, en_functional_state_t enNewState); +bool CAN_IrqFlgGet(en_can_irq_flag_type_t enCanIrqFlgType); +void CAN_IrqFlgClr(en_can_irq_flag_type_t enCanIrqFlgType); +void CAN_ModeConfig(en_can_mode_t enMode, en_functional_state_t enNewState); +en_can_error_t CAN_ErrorStatusGet(void); +bool CAN_StatusGet(en_can_status_t enCanStatus); + +void CAN_FilterConfig(const stc_can_filter_t *pstcFilter, en_functional_state_t enNewState); +void CAN_SetFrame(stc_can_txframe_t *pstcTxFrame); +en_can_tx_buf_status_t CAN_TransmitCmd(en_can_tx_cmd_t enTxCmd); +en_can_rx_buf_status_t CAN_Receive(stc_can_rxframe_t *pstcRxFrame); + +uint8_t CAN_ArbitrationLostCap(void); +uint8_t CAN_RxErrorCntGet(void); +uint8_t CAN_TxErrorCntGet(void); + + +//<< void CAN_TTCAN_Enable(void); +//<< void CAN_TTCAN_Disable(void); +//<< void CAN_TTCAN_IrqCmd(void); +//<< void CAN_TTCAN_ReferenceMsgSet(stc_can_ttcan_ref_msg_t *pstcRefMsg); +//<< void CAN_TTCAN_TriggerConfig(stc_can_ttcan_trigger_config_t *pstcTriggerCfg); + +//@} // CanGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_CAN_ENABLE */ + +#endif /* __HC32F460_CAN_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/inc/hc32f460_clk.h b/driver/inc/hc32f460_clk.h new file mode 100644 index 0000000..84c555d --- /dev/null +++ b/driver/inc/hc32f460_clk.h @@ -0,0 +1,647 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_clk.h + ** + ** A detailed description is available at + ** @link CmuGroup Clock description @endlink + ** + ** - 2018-10-13 CDT First version for Device Driver Library of CMU. + ** + ******************************************************************************/ +#ifndef __HC32F460_CLK_H__ +#define __HC32F460_CLK_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_CLK_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup CmuGroup Clock Manage Unit(CMU) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief The system clock source. + ** + ******************************************************************************/ + typedef enum en_clk_sys_source + { + ClkSysSrcHRC = 0u, ///< The system clock source is HRC. + ClkSysSrcMRC = 1u, ///< The system clock source is MRC. + ClkSysSrcLRC = 2u, ///< The system clock source is LRC. + ClkSysSrcXTAL = 3u, ///< The system clock source is XTAL. + ClkSysSrcXTAL32 = 4u, ///< The system clock source is XTAL32. + CLKSysSrcMPLL = 5u, ///< The system clock source is MPLL. + }en_clk_sys_source_t; + +/** + ******************************************************************************* + ** \brief The pll clock source. + ** + ******************************************************************************/ + typedef enum en_clk_pll_source + { + ClkPllSrcXTAL = 0u, ///< The pll clock source is XTAL. + ClkPllSrcHRC = 1u, ///< The pll clock source is HRC. + }en_clk_pll_source_t; + +/** + ******************************************************************************* + ** \brief The usb clock source. + ** + ******************************************************************************/ +typedef enum en_clk_usb_source +{ + ClkUsbSrcSysDiv2 = 2u, ///< The usb clock source is 1/2 system clock. + ClkUsbSrcSysDiv3 = 3u, ///< The usb clock source is 1/3 system clock. + ClkUsbSrcSysDiv4 = 4u, ///< The usb clock source is 1/4 system clock. + ClkUsbSrcMpllp = 8u, ///< The usb clock source is MPLLP. + ClkUsbSrcMpllq = 9u, ///< The usb clock source is MPLLQ. + ClkUsbSrcMpllr = 10u, ///< The usb clock source is MPLLR. + ClkUsbSrcUpllp = 11u, ///< The usb clock source is UPLLP. + ClkUsbSrcUpllq = 12u, ///< The usb clock source is UPLLQ. + ClkUsbSrcUpllr = 13u, ///< The usb clock source is UPLLR. +}en_clk_usb_source_t; + +/** + ******************************************************************************* + ** \brief The peripheral(adc/trng/I2S) clock source. + ** + ******************************************************************************/ +typedef enum en_clk_peri_source +{ + ClkPeriSrcPclk = 0u, ///< The peripheral(adc/trng/I2S) clock source is division from system clock. + ClkPeriSrcMpllp = 8u, ///< The peripheral(adc/trng/I2S) clock source is MPLLP. + ClkPeriSrcMpllq = 9u, ///< The peripheral(adc/trng/I2S) clock source is MPLLQ. + ClkPeriSrcMpllr = 10u, ///< The peripheral(adc/trng/I2S) clock source is MPLLR. + ClkPeriSrcUpllp = 11u, ///< The peripheral(adc/trng/I2S) clock source is UPLLP. + ClkPeriSrcUpllq = 12u, ///< The peripheral(adc/trng/I2S) clock source is UPLLQ. + ClkPeriSrcUpllr = 13u, ///< The peripheral(adc/trng/I2S) clock source is UPLLR. +}en_clk_peri_source_t; + +/** + ******************************************************************************* + ** \brief The clock output source. + ** + ******************************************************************************/ +typedef enum en_clk_output_source +{ + ClkOutputSrcHrc = 0u, ///< The clock output source is HRC + ClkOutputSrcMrc = 1u, ///< The clock output source is MRC. + ClkOutputSrcLrc = 2u, ///< The clock output source is LRC. + ClkOutputSrcXtal = 3u, ///< The clock output source is XTAL. + ClkOutputSrcXtal32 = 4u, ///< The clock output source is XTAL32 + ClkOutputSrcMpllp = 6u, ///< The clock output source is MPLLP. + ClkOutputSrcUpllp = 7u, ///< The clock output source is UPLLP. + ClkOutputSrcMpllq = 8u, ///< The clock output source is MPLLQ. + ClkOutputSrcUpllq = 9u, ///< The clock output source is UPLLQ. + ClkOutputSrcSysclk = 11u, ///< The clock output source is system clock. +}en_clk_output_source_t; + +/** + ******************************************************************************* + ** \brief The clock frequency source for measure or reference. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_source +{ + ClkFcmSrcXtal = 0u, ///< The clock frequency measure or reference source is XTAL + ClkFcmSrcXtal32 = 1u, ///< The clock frequency measure or reference source is XTAL32. + ClkFcmSrcHrc = 2u, ///< The clock frequency measure or reference source is HRC. + ClkFcmSrcLrc = 3u, ///< The clock frequency measure or reference source is LRC. + ClkFcmSrcSwdtrc = 4u, ///< The clock frequency measure or reference source is SWDTRC + ClkFcmSrcPclk1 = 5u, ///< The clock frequency measure or reference source is PCLK1. + ClkFcmSrcUpllp = 6u, ///< The clock frequency measure or reference source is UPLLP. + ClkFcmSrcMrc = 7u, ///< The clock frequency measure or reference source is MRC. + ClkFcmSrcMpllp = 8u, ///< The clock frequency measure or reference source is MPLLP. + ClkFcmSrcRtcLrc = 9u, ///< The clock frequency measure or reference source is RTCLRC. +}en_clk_fcm_intref_source_t,en_clk_fcm_measure_source_t; + +/** + ******************************************************************************* + ** \brief The clock flag status. + ** + ******************************************************************************/ +typedef enum en_clk_flag +{ + ClkFlagHRCRdy = 0u, ///< The clock flag is HRC ready. + ClkFlagXTALRdy = 1u, ///< The clock flag is XTAL ready. + ClkFlagMPLLRdy = 2u, ///< The clock flag is MPLL ready. + ClkFlagUPLLRdy = 3u, ///< The clock flag is UPLL ready. + ClkFlagXTALStoppage = 4u, ///< The clock flag is XTAL stoppage. +}en_clk_flag_t; + +/** + ******************************************************************************* + ** \brief The clock frequency measure flag status. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_flag +{ + ClkFcmFlagErrf = 0u, ///< The clock frequency flag is frequency abnormal. + ClkFcmFlagMendf = 1u, ///< The clock frequency flag is end of measurement. + ClkFcmFlagOvf = 2u, ///< The clock frequency flag is counter overflow. +}en_clk_fcm_flag_t; + +/** + ******************************************************************************* + ** \brief The source of xtal. + ** + ******************************************************************************/ +typedef enum en_clk_xtal_mode +{ + ClkXtalModeOsc = 0u, ///< Use external high speed osc as source. + ClkXtalModeExtClk = 1u, ///< Use external clk as source. +}en_clk_xtal_mode_t; + +/** + ******************************************************************************* + ** \brief The drive capability of xtal. + ** + ******************************************************************************/ +typedef enum en_clk_xtal_drv +{ + ClkXtalHighDrv = 0u, ///< High drive capability.20MHz~24MHz. + ClkXtalMidDrv = 1u, ///< Middle drive capability.16MHz~20MHz. + ClkXtalLowDrv = 2u, ///< Low drive capability.8MHz~16MHz. + ClkXtalTinyDrv = 3u, ///< Tiny drive capability.8MHz. +}en_clk_xtal_drv_t; + +/** + ******************************************************************************* + ** \brief The stable time of XTAL. + ** + ** \note It depends on SUPDRV bit. + ******************************************************************************/ +typedef enum en_clk_xtal_stb_cycle +{ + ClkXtalStbCycle35 = 1u, ///< stable time is 35(36) cycle. + ClkXtalStbCycle67 = 2u, ///< stable time is 67(68) cycle. + ClkXtalStbCycle131 = 3u, ///< stable time is 131(132) cycle. + ClkXtalStbCycle259 = 4u, ///< stable time is 259(260) cycle. + ClkXtalStbCycle547 = 5u, ///< stable time is 547(548) cycle. + ClkXtalStbCycle1059 = 6u, ///< stable time is 1059(1060) cycle. + ClkXtalStbCycle2147 = 7u, ///< stable time is 2147(2148) cycle. + ClkXtalStbCycle4291 = 8u, ///< stable time is 4291(4292) cycle. + ClkXtalStbCycle8163 = 9u, ///< stable time is 8163(8164) cycle. +}en_clk_xtal_stb_cycle_t; + +/** + ******************************************************************************* + ** \brief The handle of xtal stoppage. + ** + ******************************************************************************/ +typedef enum en_clk_xtal_stp_mode +{ + ClkXtalStpModeInt = 0u, ///< The handle of stoppage is interrupt. + ClkXtalStpModeReset = 1u, ///< The handle of stoppage is reset. +}en_clk_xtal_stp_mode_t; + +/** + ******************************************************************************* + ** \brief The drive capability of xtal32. + ** + ******************************************************************************/ +typedef enum en_clk_xtal32_drv +{ + ClkXtal32MidDrv = 0u, ///< Middle drive capability.32.768KHz. + ClkXtal32HighDrv = 1u, ///< High drive capability.32.768KHz. +}en_clk_xtal32_drv_t; + +/** + ******************************************************************************* + ** \brief The filter mode of xtal32. + ** + ******************************************************************************/ +typedef enum en_clk_xtal32_filter_mode +{ + ClkXtal32FilterModeFull = 0u, ///< Valid in run,stop,power down mode. + ClkXtal32FilterModePart = 2u, ///< Valid in run mode. + ClkXtal32FilterModeNone = 3u, ///< Invalid in run,stop,power down mode. +}en_clk_xtal32_filter_mode_t; + +/** + ******************************************************************************* + ** \brief The division factor of system clock. + ** + ******************************************************************************/ +typedef enum en_clk_sysclk_div_factor +{ + ClkSysclkDiv1 = 0u, ///< 1 division. + ClkSysclkDiv2 = 1u, ///< 2 division. + ClkSysclkDiv4 = 2u, ///< 4 division. + ClkSysclkDiv8 = 3u, ///< 8 division. + ClkSysclkDiv16 = 4u, ///< 16 division. + ClkSysclkDiv32 = 5u, ///< 32 division. + ClkSysclkDiv64 = 6u, ///< 64 division. +}en_clk_sysclk_div_factor_t; + +/** + ******************************************************************************* + ** \brief The division factor of system clock.It will be used for debug clock. + ** + ******************************************************************************/ +typedef enum en_clk_tpiuclk_div_factor +{ + ClkTpiuclkDiv1 = 0u, ///< 1 division. + ClkTpiuclkDiv2 = 1u, ///< 2 division. + ClkTpiuclkDiv4 = 2u, ///< 4 division. +}en_clk_tpiuclk_div_factor_t; + +/** + ******************************************************************************* + ** \brief The division factor of clock output. + ** + ******************************************************************************/ +typedef enum en_clk_output_div_factor +{ + ClkOutputDiv1 = 0u, ///< 1 division. + ClkOutputDiv2 = 1u, ///< 2 division. + ClkOutputDiv4 = 2u, ///< 4 division. + ClkOutputDiv8 = 3u, ///< 8 division. + ClkOutputDiv16 = 4u, ///< 16 division. + ClkOutputDiv32 = 5u, ///< 32 division. + ClkOutputDiv64 = 6u, ///< 64 division. + ClkOutputDiv128 = 7u, ///< 128 division. +}en_clk_output_div_factor_t; + +/** + ******************************************************************************* + ** \brief The division factor of fcm measure source. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_measure_div_factor +{ + ClkFcmMeaDiv1 = 0u, ///< 1 division. + ClkFcmMeaDiv4 = 1u, ///< 4 division. + ClkFcmMeaDiv8 = 2u, ///< 8 division. + ClkFcmMeaDiv32 = 3u, ///< 32 division. +}en_clk_fcm_measure_div_factor_t; + +/** + ******************************************************************************* + ** \brief The division factor of fcm reference source. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_intref_div_factor +{ + ClkFcmIntrefDiv32 = 0u, ///< 32 division. + ClkFcmIntrefDiv128 = 1u, ///< 128 division. + ClkFcmIntrefDiv1024 = 2u, ///< 1024 division. + ClkFcmIntrefDiv8192 = 3u, ///< 8192 division. +}en_clk_fcm_intref_div_factor_t; + +/** + ******************************************************************************* + ** \brief The edge of the fcm reference source. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_edge +{ + ClkFcmEdgeRising = 0u, ///< Rising edge. + ClkFcmEdgeFalling = 1u, ///< Falling edge. + ClkFcmEdgeBoth = 2u, ///< Both edge. +}en_clk_fcm_edge_t; + +/** + ******************************************************************************* + ** \brief The filter clock of the fcm reference source. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_filter_clk +{ + ClkFcmFilterClkNone = 0u, ///< None filter. + ClkFcmFilterClkFcmSrc = 1u, ///< Use fcm measurement source as filter clock. + ClkFcmFilterClkFcmSrcDiv4 = 2u, ///< Use 1/4 fcm measurement source as filter clock. + ClkFcmFilterClkFcmSrcDiv16 = 3u, ///< Use 1/16 fcm measurement source as filter clock. +}en_clk_fcm_filter_clk_t; + +/** + ******************************************************************************* + ** \brief The fcm reference source. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_refer +{ + ClkFcmExtRef = 0u, ///< Use external reference. + ClkFcmInterRef = 1u, ///< Use internal reference. +}en_clk_fcm_refer_t; + +/** + ******************************************************************************* + ** \brief The handle of fcm abnormal. + ** + ******************************************************************************/ +typedef enum en_clk_fcm_abnormal_handle +{ + ClkFcmHandleInterrupt = 0u, ///< The handle of fcm abnormal is interrupt. + ClkFcmHandleReset = 1u, ///< The handle of fcm abnormal is reset. +}en_clk_fcm_abnormal_handle_t; + +/** + ******************************************************************************* + ** \brief The channel of clock output. + ** + ******************************************************************************/ +typedef enum en_clk_output_ch +{ + ClkOutputCh1 = 1u, ///< The output of clk is MCO_1. + ClkOutputCh2 = 2u, ///< The output of clk is MCO_2. +}en_clk_output_ch_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of XTAL. + ** + ** \note Configures the XTAL if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_xtal_cfg +{ + en_functional_state_t enFastStartup; ///< Enable fast start up or not. + en_clk_xtal_mode_t enMode; ///< Select xtal mode. + en_clk_xtal_drv_t enDrv; ///< Select xtal drive capability. +}stc_clk_xtal_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of XTAL stoppage. + ** + ** \note Configures the XTAL stoppage if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_xtal_stp_cfg +{ + en_functional_state_t enDetect; ///< Enable detect stoppage or not. + en_clk_xtal_stp_mode_t enMode; ///< Select the handle of xtal stoppage. + en_functional_state_t enModeReset; ///< Enable reset for handle the xtal stoppage. + en_functional_state_t enModeInt; ///< Enable interrupt for handle the xtal stoppage. +}stc_clk_xtal_stp_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of XTAL32. + ** + ** \note Configures the XTAL32 if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_xtal32_cfg +{ + en_clk_xtal32_drv_t enDrv; ///< Select xtal32 drive capability. + en_clk_xtal32_filter_mode_t enFilterMode; ///< The filter mode of xtal32. +}stc_clk_xtal32_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of PLL. + ** + ** \note Configures the PLL if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_pll_cfg +{ + uint32_t PllpDiv; ///< Pllp clk, division factor of VCO out. + uint32_t PllqDiv; ///< Pllq clk, division factor of VCO out. + uint32_t PllrDiv; ///< Pllr clk, division factor of VCO out. + uint32_t plln; ///< Multiplication factor of vco out, ensure between 240M~480M + uint32_t pllmDiv; ///< Division factor of VCO in, ensure between 1M~12M. +}stc_clk_mpll_cfg_t, stc_clk_upll_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of system clock. + ** + ** \note Configures the system clock if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_sysclk_cfg +{ + en_clk_sysclk_div_factor_t enHclkDiv; ///< Division for hclk. + en_clk_sysclk_div_factor_t enExclkDiv; ///< Division for exclk. + en_clk_sysclk_div_factor_t enPclk0Div; ///< Division for pclk0. + en_clk_sysclk_div_factor_t enPclk1Div; ///< Division for pclk1. + en_clk_sysclk_div_factor_t enPclk2Div; ///< Division for pclk2. + en_clk_sysclk_div_factor_t enPclk3Div; ///< Division for pclk3. + en_clk_sysclk_div_factor_t enPclk4Div; ///< Division for pclk4. +}stc_clk_sysclk_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of clock output. + ** + ** \note Configures the clock output if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_output_cfg +{ + en_clk_output_source_t enOutputSrc; ///< The clock output source. + en_clk_output_div_factor_t enOutputDiv; ///< The division factor of clock output source. +}stc_clk_output_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of fcm window. + ** + ** \note Configures the fcm window if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_fcm_window_cfg +{ + uint16_t windowLower; ///< The lower value of the window. + uint16_t windowUpper; ///< The upper value of the window. +}stc_clk_fcm_window_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of fcm measurement. + ** + ** \note Configures the fcm measurement if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_fcm_measure_cfg +{ + en_clk_fcm_measure_source_t enSrc; ///< The measurement source. + en_clk_fcm_measure_div_factor_t enSrcDiv; ///< The division factor of measurement source. +}stc_clk_fcm_measure_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of fcm reference. + ** + ** \note Configures the fcm reference if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_fcm_reference_cfg +{ + en_functional_state_t enExtRef; ///< Enable external reference or not. + en_clk_fcm_edge_t enEdge; ///< The edge of internal reference. + en_clk_fcm_filter_clk_t enFilterClk; ///< The filter clock of internal reference. + en_clk_fcm_refer_t enRefSel; ///< Select reference. + en_clk_fcm_intref_source_t enIntRefSrc; ///< Select internal reference. + en_clk_fcm_intref_div_factor_t enIntRefDiv; ///< The division factor of internal reference. +}stc_clk_fcm_reference_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of fcm interrupt. + ** + ** \note Configures the fcm interrupt if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_fcm_interrupt_cfg +{ + en_clk_fcm_abnormal_handle_t enHandleSel; ///< Use interrupt or reset. + en_functional_state_t enHandleReset; ///< Enable reset or not. + en_functional_state_t enHandleInterrupt; ///< Enable interrupt or not. + en_functional_state_t enOvfInterrupt; ///< Enable overflow interrupt or not. + en_functional_state_t enEndInterrupt; ///< Enable measurement end interrupt or not. +}stc_clk_fcm_interrupt_cfg_t; + +/** + ******************************************************************************* + ** \brief Configuration structure of fcm. + ** + ** \note Configures the fcm if needed. + ** + ******************************************************************************/ +typedef struct stc_clk_fcm_cfg +{ + stc_clk_fcm_window_cfg_t *pstcFcmWindowCfg; ///< Window configuration struct. + stc_clk_fcm_measure_cfg_t *pstcFcmMeaCfg; ///< Measurement configuration struct. + stc_clk_fcm_reference_cfg_t *pstcFcmRefCfg; ///< Reference configuration struct. + stc_clk_fcm_interrupt_cfg_t *pstcFcmIntCfg; ///< Interrupt configuration struct. +}stc_clk_fcm_cfg_t; + +/** + ******************************************************************************* + ** \brief Clock frequency structure. + ** + ******************************************************************************/ +typedef struct stc_clk_freq +{ + uint32_t sysclkFreq; ///< System clock frequency. + uint32_t hclkFreq; ///< Hclk frequency. + uint32_t exckFreq; ///< Exclk frequency. + uint32_t pclk0Freq; ///< Pclk0 frequency. + uint32_t pclk1Freq; ///< Pclk1 frequency. + uint32_t pclk2Freq; ///< Pclk2 frequency. + uint32_t pclk3Freq; ///< Pclk3 frequency. + uint32_t pclk4Freq; ///< Pclk4 frequency. +}stc_clk_freq_t; + +/** + ******************************************************************************* + ** \brief PLL Clock frequency structure. + ** + ******************************************************************************/ +typedef struct stc_pll_clk_freq +{ + uint32_t mpllp; ///< mpllp clock frequency. + uint32_t mpllq; ///< mpllq clock frequency. + uint32_t mpllr; ///< mpllr clock frequency. + uint32_t upllp; ///< upllp clock frequency. + uint32_t upllq; ///< upllq clock frequency. + uint32_t upllr; ///< upllr clock frequency. +}stc_pll_clk_freq_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void CLK_XtalConfig(const stc_clk_xtal_cfg_t *pstcXtalCfg); +void CLK_XtalStbConfig(const en_clk_xtal_stb_cycle_t enXtalStb); +void CLK_XtalStpConfig(const stc_clk_xtal_stp_cfg_t *pstcXtalStpCfg); +en_result_t CLK_XtalCmd(en_functional_state_t enNewState); + +void CLK_Xtal32Config(const stc_clk_xtal32_cfg_t *pstcXtal32Cfg); +en_result_t CLK_Xtal32Cmd(en_functional_state_t enNewState); + +void CLK_HrcTrim(int8_t trimValue); +en_result_t CLK_HrcCmd(en_functional_state_t enNewState); + +void CLK_MrcTrim(int8_t trimValue); +en_result_t CLK_MrcCmd(en_functional_state_t enNewState); + +void CLK_LrcTrim(int8_t trimValue); +en_result_t CLK_LrcCmd(en_functional_state_t enNewState); + +void CLK_SetPllSource(en_clk_pll_source_t enPllSrc); +void CLK_MpllConfig(const stc_clk_mpll_cfg_t *pstcMpllCfg); +en_result_t CLK_MpllCmd(en_functional_state_t enNewState); + +void CLK_UpllConfig(const stc_clk_upll_cfg_t *pstcUpllCfg); +en_result_t CLK_UpllCmd(en_functional_state_t enNewState); + +void CLK_SetSysClkSource(en_clk_sys_source_t enTargetSysSrc); +en_clk_sys_source_t CLK_GetSysClkSource(void); + +void CLK_SysClkConfig(const stc_clk_sysclk_cfg_t *pstcSysclkCfg); +void CLK_GetClockFreq(stc_clk_freq_t *pstcClkFreq); +void CLK_GetPllClockFreq(stc_pll_clk_freq_t *pstcPllClkFreq); + +void CLK_SetUsbClkSource(en_clk_usb_source_t enTargetUsbSrc); +void CLK_SetPeriClkSource(en_clk_peri_source_t enTargetPeriSrc); +void CLK_SetI2sClkSource(const M4_I2S_TypeDef* pstcI2sReg, en_clk_peri_source_t enTargetPeriSrc); +en_clk_peri_source_t CLK_GetI2sClkSource(const M4_I2S_TypeDef* pstcI2sReg); + +void CLK_TpiuClkConfig(const en_clk_tpiuclk_div_factor_t enTpiuDiv); +void CLK_TpiuClkCmd(en_functional_state_t enNewState); + +void CLK_OutputClkConfig(en_clk_output_ch_t enCh, const stc_clk_output_cfg_t *pstcOutputCfg); +void CLK_OutputClkCmd(en_clk_output_ch_t enCh, en_functional_state_t enNewState); +en_flag_status_t CLK_GetFlagStatus(en_clk_flag_t enClkFlag); + +void CLK_FcmConfig(const stc_clk_fcm_cfg_t *pstcClkFcmCfg); +void CLK_FcmCmd(en_functional_state_t enNewState); + +uint16_t CLK_GetFcmCounter(void); +en_flag_status_t CLK_GetFcmFlag(en_clk_fcm_flag_t enFcmFlag); +void CLK_ClearFcmFlag(en_clk_fcm_flag_t enFcmFlag); + +void CLK_ClearXtalStdFlag(void); + +//@} // CmuGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_CLK_ENABLE */ + +#endif /* __HC32F460_CLK_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_cmp.h b/driver/inc/hc32f460_cmp.h new file mode 100644 index 0000000..19d4b63 --- /dev/null +++ b/driver/inc/hc32f460_cmp.h @@ -0,0 +1,279 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_cmp.h + ** + ** A detailed description is available at + ** @link CmpGroup CMP @endlink + ** + ** - 2018-10-22 CDT First version for Device Driver Library of CMP. + ** + ******************************************************************************/ +#ifndef __HC32F460_CMP_H__ +#define __HC32F460_CMP_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_CMP_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup CmpGroup Comparator(CMP) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief CMP function enumeration + ******************************************************************************/ +typedef enum en_cmp_func +{ + CmpVcoutOutput = (1u << 12), ///< CMP vcout output enable function + CmpOutpuInv = (1u << 13), ///< CMP output invert enable function + CmpOutput = (1u << 14), ///< CMP output enable function +} en_cmp_func_t; + +/** + ******************************************************************************* + ** \brief CMP edge selection enumeration + ******************************************************************************/ +typedef enum en_cmp_edge_sel +{ + CmpNoneEdge = 0u, ///< None edge detection + CmpRisingEdge = 1u, ///< Rising edge detection + CmpFaillingEdge = 2u, ///< Falling edge detection + CmpBothEdge = 3u, ///< Falling or Rising edge detection +} en_cmp_edge_sel_t; + +/** + ******************************************************************************* + ** \brief CMP filter sample clock division enumeration + ******************************************************************************/ +typedef enum en_cmp_fltclk_div +{ + CmpNoneFlt = 0u, ///< Unuse filter + CmpFltPclk3Div1 = 1u, ///< PCLK3/1 + CmpFltPclk3Div2 = 2u, ///< PCLK3/2 + CmpFltPclk3Div4 = 3u, ///< PCLK3/4 + CmpFltPclk3Div8 = 4u, ///< PCLK3/8 + CmpFltPclk3Div16 = 5u, ///< PCLK3/16 + CmpFltPclk3Div32 = 6u, ///< PCLK3/32 + CmpFltPclk3Div64 = 7u, ///< PCLK3/64 +} en_cmp_fltclk_div_t; + +/** + ******************************************************************************* + ** \brief CMP INP4 input enumeration + ******************************************************************************/ +typedef enum en_cmp_inp4_sel +{ + CmpInp4None = 0u, ///< None input + CmpInp4PGAO = 1u, ///< PGAO output + CmpInp4PGAO_BP = 2u, ///< PGAO_BP output + CmpInp4CMP1_INP4 = 4u, ///< CMP1_INP4 +} en_cmp_inp4_sel_t; + +/** + ******************************************************************************* + ** \brief CMP INP input enumeration + ******************************************************************************/ +typedef enum en_cmp_inp_sel +{ + CmpInpNone = 0u, ///< None input + CmpInp1 = 1u, ///< INP1 input + CmpInp2 = 2u, ///< INP2 input + CmpInp1_Inp2 = 3u, ///< INP1 INP2 input + CmpInp3 = 4u, ///< INP3 input + CmpInp1_Inp3 = 5u, ///< INP1 INP3 input + CmpInp2_Inp3 = 6u, ///< INP2 INP3 input + CmpInp1_Inp2_Inp3 = 7u, ///< INP1 INP2 INP3 input + CmpInp4 = 8u, ///< INP4 input + CmpInp1_Inp4 = 9u, ///< INP1 INP4 input + CmpInp2_Inp4 = 10u, ///< INP2 INP4 input + CmpInp1_Inp2_Inp4 = 11u, ///< INP1 INP2 INP4 input + CmpInp3_Inp4 = 12u, ///< INP3 INP4 input + CmpInp1_Inp3_Inp4 = 13u, ///< INP1 INP3 INP4 input + CmpInp2_Inp3_Inp4 = 14u, ///< INP2 INP3 INP4 input + CmpInp1_Inp2_Inp3_Inp4 = 15u, ///< INP1 INP2 INP3 INP4 input +} en_cmp_inp_sel_t; + +/** + ******************************************************************************* + ** \brief CMP INM input enumeration + ******************************************************************************/ +typedef enum en_cmp_inm_sel +{ + CmpInmNone = 0u, ///< None input + CmpInm1 = 1u, ///< INM1 input + CmpInm2 = 2u, ///< INM2 input + CmpInm3 = 4u, ///< INM3 input + CmpInm4 = 8u, ///< INM4 input +} en_cmp_inm_sel_t; + +/** + ******************************************************************************* + ** \brief CMP INP State enumeration (read only) + ******************************************************************************/ +typedef enum en_cmp_inp_state +{ + CmpInpNoneState = 0u, ///< none input state + CmpInp1State = 1u, ///< INP1 input state + CmpInp2State = 2u, ///< INP2 input state + CmpInp3State = 4u, ///< INP3 input state + CmpInp4State = 8u, ///< INP4 input state +} en_cmp_inp_state_t; + +/** + ******************************************************************************* + ** \brief CMP Output State enumeration (read only) + ******************************************************************************/ +typedef enum en_cmp_output_state +{ + CmpOutputLow = 0u, ///< Compare output Low "0" + CmpOutputHigh = 1u, ///< Compare output High "1" +} en_cmp_output_state_t; + +/** + ******************************************************************************* + ** \brief CMP input selection + ******************************************************************************/ +typedef struct stc_cmp_input_sel +{ + en_cmp_inm_sel_t enInmSel; ///< CMP INM sel + + en_cmp_inp_sel_t enInpSel; ///< CMP INP sel + + en_cmp_inp4_sel_t enInp4Sel; ///< CMP INP4 sel +} stc_cmp_input_sel_t; + +/** + ****************************************************************************** + ** \brief DAC channel + ******************************************************************************/ +typedef enum en_cmp_dac_ch +{ + CmpDac1 = 0u, ///< DAC1 + CmpDac2 = 1u, ///< DAC2 +} en_cmp_dac_ch_t; + +/** + ****************************************************************************** + ** \brief ADC internal reference voltage path + ******************************************************************************/ +typedef enum en_cmp_adc_int_ref_volt_path +{ + CmpAdcRefVoltPathDac1 = (1u << 0u), ///< ADC internal reference voltage path: DAC1 + CmpAdcRefVoltPathDac2 = (1u << 1u), ///< ADC internal reference voltage path: DAC2 + CmpAdcRefVoltPathVref = (1u << 4u), ///< ADC internal reference voltage path: VREF +} en_cmp_adc_int_ref_volt_path_t; + +/** + ******************************************************************************* + ** \brief CMP initialization structure definition + ******************************************************************************/ +typedef struct stc_cmp_init +{ + en_cmp_edge_sel_t enEdgeSel; ///< CMP edge sel + + en_cmp_fltclk_div_t enFltClkDiv; ///< CMP FLTclock division + + en_functional_state_t enCmpOutputEn; ///< CMP Output enable + + en_functional_state_t enCmpVcoutOutputEn; ///< CMP output result enable + + en_functional_state_t enCmpInvEn; ///< CMP INV sel for output + + en_functional_state_t enCmpIntEN; ///< CMP interrupt enable +} stc_cmp_init_t; + +/** + ******************************************************************************* + ** \brief CMP DAC initialization structure definition + ******************************************************************************/ +typedef struct stc_cmp_dac_init +{ + uint8_t u8DacData; ///< CMP DAC Data register value + + en_functional_state_t enCmpDacEN; ///< CMP DAC enable +} stc_cmp_dac_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t CMP_Init(M4_CMP_TypeDef *CMPx, const stc_cmp_init_t *pstcInitCfg); +en_result_t CMP_DeInit(M4_CMP_TypeDef *CMPx); +en_result_t CMP_Cmd(M4_CMP_TypeDef *CMPx, en_functional_state_t enCmd); +en_result_t CMP_IrqCmd(M4_CMP_TypeDef *CMPx, en_functional_state_t enCmd); +en_result_t CMP_SetScanTime(M4_CMP_TypeDef *CMPx, + uint8_t u8ScanStable, + uint8_t u8ScanPeriod); +en_result_t CMP_FuncCmd(M4_CMP_TypeDef *CMPx, + en_cmp_func_t enFunc, + en_functional_state_t enCmd); +en_result_t CMP_StartScan(M4_CMP_TypeDef *CMPx); +en_result_t CMP_StopScan(M4_CMP_TypeDef *CMPx); +en_result_t CMP_SetFilterClkDiv(M4_CMP_TypeDef *CMPx, + en_cmp_fltclk_div_t enFltClkDiv); +en_cmp_fltclk_div_t CMP_GetFilterClkDiv(M4_CMP_TypeDef *CMPx); +en_result_t CMP_SetEdgeSel(M4_CMP_TypeDef *CMPx, + en_cmp_edge_sel_t enEdgeSel); +en_cmp_edge_sel_t CMP_GetEdgeSel(M4_CMP_TypeDef *CMPx); +en_result_t CMP_InputSel(M4_CMP_TypeDef *CMPx, + const stc_cmp_input_sel_t *pstcInputSel); +en_result_t CMP_SetInp(M4_CMP_TypeDef *CMPx, en_cmp_inp_sel_t enInputSel); +en_cmp_inp_sel_t CMP_GetInp(M4_CMP_TypeDef *CMPx); +en_result_t CMP_SetInm(M4_CMP_TypeDef *CMPx, en_cmp_inm_sel_t enInputSel); +en_cmp_inm_sel_t CMP_GetInm(M4_CMP_TypeDef *CMPx); +en_result_t CMP_SetInp4(M4_CMP_TypeDef *CMPx,en_cmp_inp4_sel_t enInputSel); +en_cmp_inp4_sel_t CMP_GetInp4(M4_CMP_TypeDef *CMPx); +en_cmp_output_state_t CMP_GetOutputState(M4_CMP_TypeDef *CMPx); +en_cmp_inp_state_t CMP_GetInpState(M4_CMP_TypeDef *CMPx); +en_result_t CMP_DAC_Init(en_cmp_dac_ch_t enCh, + const stc_cmp_dac_init_t *pstcInitCfg); +en_result_t CMP_DAC_DeInit(en_cmp_dac_ch_t enCh); +en_result_t CMP_DAC_Cmd(en_cmp_dac_ch_t enCh, en_functional_state_t enCmd); +en_result_t CMP_DAC_SetData(en_cmp_dac_ch_t enCh, uint8_t u8DacData); +uint8_t CMP_DAC_GetData(en_cmp_dac_ch_t enCh); +en_result_t CMP_ADC_SetRefVoltPath(en_cmp_adc_int_ref_volt_path_t enRefVoltPath); + +//@} // CmpGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_CMP_ENABLE */ + +#endif /* __HC32F460_CMP_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_crc.h b/driver/inc/hc32f460_crc.h new file mode 100644 index 0000000..756d249 --- /dev/null +++ b/driver/inc/hc32f460_crc.h @@ -0,0 +1,118 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_crc.h + ** + ** A detailed description is available at + ** @link CrcGroup Crc description @endlink + ** + ** - 2019-03-07 CDT First version for Device Driver Library of Crc. + ** + ******************************************************************************/ +#ifndef __HC32F460_CRC_H__ +#define __HC32F460_CRC_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_CRC_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup CrcGroup Cyclic Redundancy Check(CRC) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/* Bits definitions of CRC control register(CRC_CR). */ +/* + * Definitions of CRC protocol. + * NOTE: CRC16 polynomial is X16 + X12 + X5 + 1 + * CRC32 polynomial is X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + \ + * X8 + X7 + X5 + X4 + X2 + X + 1 + */ +#define CRC_SEL_16B ((uint32_t)0x0) +#define CRC_SEL_32B ((uint32_t)(0x1ul << 1u)) + +/* + * Identifies the transpose configuration of the source data. + * If this function is enabled, the source data's bits in bytes are transposed. + * e.g. There's a source data 0x1234 which will be calculated checksum and this + * function is enabled, the final data be calculated is 0x482C. + * 0x12: bit0->bit7, bit1->bit6, ..., bit7->bit0, the data byte changed to 0x48. + * 0x48: bit0->bit7, bit1->bit6, ..., bit7->bit0, the data byte changed to 0x2C. + * The same to 32 bit data while using CRC32. + */ +#define CRC_REFIN_DISABLE ((uint32_t)0x0) +#define CRC_REFIN_ENABLE ((uint32_t)(0x1ul << 2u)) + +/* + * Identifies the transpose configuration of the checksum. + * If this function is enabled, bits of the checksum will be transposed. + * e.g. There is a CRC16 checksum is 0x5678 before this function enabled, then + * this function is enabled, the checksum will be 0x1E6A. + * 0x5678: bit0->bit15, bit1->bit14, ..., bit15->bit0, the final data is 0x1E6A. + * The same to CRC32 checksum while using CRC32. + */ +#define CRC_REFOUT_DISABLE ((uint32_t)0x0) +#define CRC_REFOUT_ENABLE ((uint32_t)(0x1ul << 3u)) + +/* + * XORs the CRC checksum with 0xFFFF(CRC16) or 0xFFFFFFFF(CRC32). + * e.g. There is a CRC16 checksum is 0x5678 before this function enabled. + * If this function enabled, the checksum will be 0xA987. + * The same to CRC32 checksum while using CRC32. + */ +#define CRC_XOROUT_DISABLE ((uint32_t)0x0) +#define CRC_XOROUT_ENABLE ((uint32_t)(0x1ul << 4u)) + +#define CRC_CONFIG_MASK ((uint32_t)(0x1Eu)) + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void CRC_Init(uint32_t u32Config); +uint16_t CRC_Calculate16B(uint16_t u16InitVal, const uint16_t *pu16Data, uint32_t u32Length); +uint32_t CRC_Calculate32B(uint32_t u32InitVal, const uint32_t *pu32Data, uint32_t u32Length); +bool CRC_Check16B(uint16_t u16InitVal, uint16_t u16CheckSum, const uint16_t *pu16Data, uint32_t u32Length); +bool CRC_Check32B(uint32_t u32InitVal, uint32_t u32CheckSum, const uint32_t *pu32Data, uint32_t u32Length); + +//@} // CrcGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_CRC_ENABLE */ + +#endif /* __HC32F460_CRC_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_dcu.h b/driver/inc/hc32f460_dcu.h new file mode 100644 index 0000000..21bce80 --- /dev/null +++ b/driver/inc/hc32f460_dcu.h @@ -0,0 +1,216 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_dcu.h + ** + ** A detailed description is available at + ** @link DcuGroup DCU description @endlink + ** + ** - 2018-10-15 CDT First version for Device Driver Library of DCU. + ** + ******************************************************************************/ +#ifndef __HC32F460_DCU_H__ +#define __HC32F460_DCU_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_DCU_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup DcuGroup Data Computing Unit(DCU) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief DCU register data enumeration + ** + ******************************************************************************/ +typedef enum en_dcu_data_register +{ + DcuRegisterData0 = 0u, ///< DCU DATA0 + DcuRegisterData1 = 1u, ///< DCU DATA1 + DcuRegisterData2 = 2u, ///< DCU DATA2 +} en_dcu_data_register_t; + +/** + ******************************************************************************* + ** \brief DCU operation enumeration + ** + ******************************************************************************/ +typedef enum en_dcu_operation_mode +{ + DcuInvalid = 0u, ///< DCU Invalid + DcuOpAdd = 1u, ///< DCU operation: Add + DcuOpSub = 2u, ///< DCU operation: Sub + DcuHwTrigOpAdd = 3u, ///< DCU operation: Hardware trigger Add + DcuHwTrigOpSub = 4u, ///< DCU operation: Hardware trigger Sub + DcuOpCompare = 5u, ///< DCU operation: Compare +} en_dcu_operation_mode_t; + +/** + ******************************************************************************* + ** \brief DCU data size enumeration + ** + ******************************************************************************/ +typedef enum en_dcu_data_size +{ + DcuDataBit8 = 0u, ///< DCU data size: 8 bit + DcuDataBit16 = 1u, ///< DCU data size: 16 bit + DcuDataBit32 = 2u, ///< DCU data size: 32 bit +} en_dcu_data_size_t; + +/** + ******************************************************************************* + ** \brief DCU compare operation trigger mode enumeration + ** + ******************************************************************************/ +typedef enum en_dcu_cmp_trigger_mode +{ + DcuCmpTrigbyData0 = 0u, ///< DCU compare triggered by DATA0 + DcuCmpTrigbyData012 = 1u, ///< DCU compare triggered by DATA0 or DATA1 or DATA2 +} en_dcu_cmp_trigger_mode_t; + +/** + ******************************************************************************* + ** \brief DCU interrupt selection enumeration + ** + ******************************************************************************/ +typedef enum en_dcu_int_sel +{ + DcuIntOp = (1ul << 0), ///< DCU overflow or underflow interrupt + DcuIntLs2 = (1ul << 1), ///< DCU DATA0 < DATA2 interrupt + DcuIntEq2 = (1ul << 2), ///< DCU DATA0 = DATA2 interrupt + DcuIntGt2 = (1ul << 3), ///< DCU DATA0 > DATA2 interrupt + DcuIntLs1 = (1ul << 4), ///< DCU DATA0 < DATA1 interrupt + DcuIntEq1 = (1ul << 5), ///< DCU DATA0 = DATA1 interrupt + DcuIntGt1 = (1ul << 6), ///< DCU DATA0 > DATA1 interrupt +} en_dcu_int_sel_t, en_dcu_flag_t; + +/** + ******************************************************************************* + ** \brief DCU window interrupt mode enumeration + ** + ******************************************************************************/ +typedef enum en_dcu_int_win_mode +{ + DcuIntInvalid = 0u, ///< DCU don't occur interrupt + DcuWinIntInvalid = 1u, ///< DCU window interrupt is invalid. + DcuInsideWinCmpInt = 2u, ///< DCU occur interrupt when DATA2 DATA0 DATA2 + DcuOutsideWinCmpInt = 3u, ///< DCU occur interrupt when DATA0 > DATA1 or DATA0 < DATA2 +} en_dcu_int_win_mode_t; + +/* DCU common trigger source select */ +typedef enum en_dcu_com_trigger +{ + DcuComTrigger_1 = 1u, ///< Select common trigger 1. + DcuComTrigger_2 = 2u, ///< Select common trigger 2. + DcuComTrigger_1_2 = 3u, ///< Select common trigger 1 and 2. +} en_dcu_com_trigger_t; + +/** + ******************************************************************************* + ** \brief DCU initialization configuration + ** + ******************************************************************************/ +typedef struct stc_dcu_init +{ + uint32_t u32IntSel; ///< Specifies interrupt selection and This parameter can be a value of @ref en_dcu_int_sel_t + + en_functional_state_t enIntCmd; ///< Select DCU interrupt function. Enable:Enable DCU interrupt function; Disable:Disable DCU interrupt function + + en_dcu_int_win_mode_t enIntWinMode; ///< Specifies interrupt window mode and This parameter can be a value of @ref en_dcu_int_win_mode_t + + en_dcu_data_size_t enDataSize; ///< Specifies DCU data size and This parameter can be a value of @ref en_dcu_data_size_t + + en_dcu_operation_mode_t enOperation; ///< Specifies DCU operation and This parameter can be a value of @ref en_dcu_operation_mode_t + + en_dcu_cmp_trigger_mode_t enCmpTriggerMode; ///< Specifies DCU compare operation trigger mode size and This parameter can be a value of @ref en_dcu_cmp_trigger_mode_t + +} stc_dcu_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t DCU_Init(M4_DCU_TypeDef *DCUx, const stc_dcu_init_t *pstcInitCfg); +en_result_t DCU_DeInit(M4_DCU_TypeDef *DCUx); +en_result_t DCU_SetOperationMode(M4_DCU_TypeDef *DCUx, + en_dcu_operation_mode_t enMode); +en_dcu_operation_mode_t DCU_GetOperationMode(M4_DCU_TypeDef *DCUx); +en_result_t DCU_SetDataSize(M4_DCU_TypeDef *DCUx, en_dcu_data_size_t enSize); +en_dcu_data_size_t DCU_GetDataSize(M4_DCU_TypeDef *DCUx); +en_result_t DCU_SetIntWinMode(M4_DCU_TypeDef *DCUx, + en_dcu_int_win_mode_t enIntWinMode); +en_dcu_int_win_mode_t DCU_GetIntWinMode(M4_DCU_TypeDef *DCUx); +en_result_t DCU_SetCmpTriggerMode(M4_DCU_TypeDef *DCUx, + en_dcu_cmp_trigger_mode_t enTriggerMode); +en_dcu_cmp_trigger_mode_t DCU_GetCmpTriggerMode(M4_DCU_TypeDef *DCUx); +en_result_t DCU_EnableInterrupt(M4_DCU_TypeDef *DCUx); +en_result_t DCU_DisableInterrupt(M4_DCU_TypeDef *DCUx); +en_flag_status_t DCU_GetIrqFlag(M4_DCU_TypeDef *DCUx, en_dcu_flag_t enFlag); +en_result_t DCU_ClearIrqFlag(M4_DCU_TypeDef *DCUx, en_dcu_flag_t enFlag); +en_result_t DCU_IrqSelCmd(M4_DCU_TypeDef *DCUx, + en_dcu_int_sel_t enIntSel, + en_functional_state_t enCmd); +uint8_t DCU_ReadDataByte(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg); +en_result_t DCU_WriteDataByte(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg, uint8_t u8Data); +uint16_t DCU_ReadDataHalfWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg); +en_result_t DCU_WriteDataHalfWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg, + uint16_t u16Data); +uint32_t DCU_ReadDataWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg); +en_result_t DCU_WriteDataWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg, + uint32_t u32Data); +en_result_t DCU_SetTriggerSrc(M4_DCU_TypeDef *DCUx, + en_event_src_t enTriggerSrc); +void DCU_ComTriggerCmd(M4_DCU_TypeDef *DCUx, + en_dcu_com_trigger_t enComTrigger, + en_functional_state_t enState); + +//@} // DcuGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_DCU_ENABLE */ + +#endif /* __HC32F460_DCU_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_dmac.h b/driver/inc/hc32f460_dmac.h new file mode 100644 index 0000000..6a75373 --- /dev/null +++ b/driver/inc/hc32f460_dmac.h @@ -0,0 +1,363 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_dmac.h + ** + ** A detailed description is available at + ** @link DmacGroup DMAC description @endlink + ** + ** - 2018-11-18 CDT First version for Device Driver Library of DMAC. + ** + ******************************************************************************/ +#ifndef __HC32F460_DMAC_H__ +#define __HC32F460_DMAC_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_DMAC_ENABLE == DDL_ON) + + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup DmacGroup Direct Memory Access Control(DMAC) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief DMA Channel + ** + ******************************************************************************/ +typedef enum en_dma_channel +{ + DmaCh0 = 0u, ///< DMA channel 0 + DmaCh1 = 1u, ///< DMA channel 1 + DmaCh2 = 2u, ///< DMA channel 2 + DmaCh3 = 3u, ///< DMA channel 3 + DmaChMax = 4u ///< DMA channel max +}en_dma_channel_t; + +/** + ******************************************************************************* + ** \brief DMA transfer data width + ** + ******************************************************************************/ +typedef enum en_dma_transfer_width +{ + Dma8Bit = 0u, ///< 8 bit transfer via DMA + Dma16Bit = 1u, ///< 16 bit transfer via DMA + Dma32Bit = 2u ///< 32 bit transfer via DMA +}en_dma_transfer_width_t; + +/** + ******************************************************************************* + ** \brief DMA flag + ** + ******************************************************************************/ +typedef enum en_dma_flag +{ + DmaTransferComplete = 0u, ///< DMA transfer complete + DmaBlockComplete = 1u, ///< DMA block transfer complete + DmaTransferErr = 2u, ///< DMA transfer error + DmaReqErr = 3u, ///< DMA transfer request error + DmaFlagMax = 4u +}en_dma_flag_t; + +/** + ******************************************************************************* + ** \brief DMA address mode + ** + ******************************************************************************/ +typedef enum en_dma_address_mode +{ + AddressFix = 0u, ///< Address fixed + AddressIncrease = 1u, ///< Address increased + AddressDecrease = 2u, ///< Address decreased +}en_dma_address_mode_t; + +/** + ******************************************************************************* + ** \brief DMA link list pointer mode + ** + ******************************************************************************/ +typedef enum en_dma_llp_mode +{ + LlpWaitNextReq = 0u, ///< DMA trigger transfer after wait next request + LlpRunNow = 1u, ///< DMA trigger transfer now +}en_dma_llp_mode_t; + +/** + ******************************************************************************* + ** \brief DMA interrupt selection + ** + ******************************************************************************/ +typedef enum en_dma_irq_sel +{ + TrnErrIrq = 0u, ///< Select DMA transfer error interrupt + TrnReqErrIrq = 1u, ///< Select DMA transfer req over error interrupt + TrnCpltIrq = 2u, ///< Select DMA transfer completion interrupt + BlkTrnCpltIrq = 3u, ///< Select DMA block completion interrupt + DmaIrqSelMax = 4u +}en_dma_irq_sel_t; + +/** + ******************************************************************************* + ** \brief DMA re_config count mode + ** + ******************************************************************************/ +typedef enum en_dma_recfg_cnt_mode +{ + CntFix = 0u, ///< Fix + CntSrcAddr = 1u, ///< Source address mode + CntDesAddr = 2u, ///< Destination address mode +}en_dma_recfg_cnt_mode_t; + +/** + ******************************************************************************* + ** \brief DMA re_config destination address mode + ** + ******************************************************************************/ +typedef enum en_dma_recfg_daddr_mode +{ + DaddrFix = 0u, ///< Fix + DaddrNseq = 1u, ///< No_sequence address + DaddrRep = 2u, ///< Repeat address +}en_dma_recfg_daddr_mode_t; + +/** + ******************************************************************************* + ** \brief DMA re_config source address mode + ** + ******************************************************************************/ +typedef enum en_dma_recfg_saddr_mode +{ + SaddrFix = 0u, ///< Fix + SaddrNseq = 1u, ///< No_sequence address + SaddrRep = 2u, ///< Repeat address +}en_dma_recfg_saddr_mode_t; + +/** + ******************************************************************************* + ** \brief DMA channel status + ** + ******************************************************************************/ +typedef enum en_dma_ch_flag +{ + DmaSta = 0u, ///< DMA status. + ReCfgSta = 1u, ///< DMA re_configuration status. + DmaCh0Sta = 2u, ///< DMA channel 0 status. + DmaCh1Sta = 3u, ///< DMA channel 1 status. + DmaCh2Sta = 4u, ///< DMA channel 2 status. + DmaCh3Sta = 5u, ///< DMA channel 3 status. +}en_dma_ch_flag_t; + +/** + ******************************************************************************* + ** \brief DMA common trigger source select + ** + ******************************************************************************/ +typedef enum en_dma_com_trigger +{ + DmaComTrigger_1 = 0x1, ///< Select common trigger 1. + DmaComTrigger_2 = 0x2, ///< Select common trigger 2. + DmaComTrigger_1_2 = 0x3, ///< Select common trigger 1 and 2. +} en_dma_com_trigger_t; + +/** + ******************************************************************************* + ** \brief DMA llp descriptor + ** + ******************************************************************************/ +typedef struct stc_dma_llp_descriptor +{ + uint32_t SARx; ///< DMA source address register + uint32_t DARx; ///< DMA destination address register + union + { + uint32_t DTCTLx; + stc_dma_dtctl_field_t DTCTLx_f; ///< DMA data control register + }; + union + { + uint32_t RPTx; + stc_dma_rpt_field_t RPTx_f; ///< DMA repeat control register + }; + union + { + uint32_t SNSEQCTLx; + stc_dma_snseqctl_field_t SNSEQCTLx_f; ///< DMA source no-sequence control register + }; + union + { + __IO uint32_t DNSEQCTLx; + stc_dma_dnseqctl_field_t DNSEQCTLx_f; ///< DMA destination no-sequence control register + }; + union + { + uint32_t LLPx; + stc_dma_llp_field_t LLPx_f; ///< DMA link-list-pointer register + }; + union + { + uint32_t CHxCTL; + stc_dma_ch0ctl_field_t CHxCTL_f; ///< DMA channel control register + }; +}stc_dma_llp_descriptor_t; + +/** + ******************************************************************************* + ** \brief DMA no-sequence function configuration + ** + ******************************************************************************/ +typedef struct stc_dma_nseq_cfg +{ + uint32_t u32Offset; ///< DMA no-sequence offset. + uint16_t u16Cnt; ///< DMA no-sequence count. +}stc_dma_nseq_cfg_t; + +/** + ******************************************************************************* + ** \brief DMA no-sequence function configuration + ** + ******************************************************************************/ +typedef struct stc_dma_nseqb_cfg +{ + uint32_t u32NseqDist; ///< DMA no-sequence district interval. + uint16_t u16CntB; ///< DMA no-sequence count. +}stc_dma_nseqb_cfg_t; + +/** + ******************************************************************************* + ** \brief DMA re_config configuration + ** + ******************************************************************************/ +typedef struct stc_dma_recfg_ctl +{ + uint16_t u16SrcRptBSize; ///< The source repeat size. + uint16_t u16DesRptBSize; ///< The destination repeat size. + en_dma_recfg_saddr_mode_t enSaddrMd; ///< DMA re_config source address mode. + en_dma_recfg_daddr_mode_t enDaddrMd; ///< DMA re_config destination address mode. + en_dma_recfg_cnt_mode_t enCntMd; ///< DMA re_config count mode. + stc_dma_nseq_cfg_t stcSrcNseqBCfg; ///< The source no_sequence re_config. + stc_dma_nseq_cfg_t stcDesNseqBCfg; ///< The destination no_sequence re_config. +}stc_dma_recfg_ctl_t; + +/** + ******************************************************************************* + ** \brief DMA channel configuration + ** + ******************************************************************************/ +typedef struct stc_dma_ch_cfg +{ + en_dma_address_mode_t enSrcInc; ///< DMA source address update mode. + en_dma_address_mode_t enDesInc; ///< DMA destination address update mode. + en_functional_state_t enSrcRptEn; ///< Enable source repeat function or not. + en_functional_state_t enDesRptEn; ///< Enable destination repeat function or not. + en_functional_state_t enSrcNseqEn; ///< Enable source no_sequence function or not. + en_functional_state_t enDesNseqEn; ///< Enable destination no_sequence function or not. + en_dma_transfer_width_t enTrnWidth; ///< DMA transfer data width. + en_functional_state_t enLlpEn; ///< Enable linked list pointer function or not. + en_dma_llp_mode_t enLlpMd; ///< Dma linked list pointer mode. + en_functional_state_t enIntEn; ///< Enable interrupt function or not. +}stc_dma_ch_cfg_t; + + +/** + ******************************************************************************* + ** \brief DMA configuration + ** + ******************************************************************************/ +typedef struct stc_dma_config +{ + uint16_t u16BlockSize; ///< Transfer block size = 1024, when 0 is set. + uint16_t u16TransferCnt; ///< Transfer counter. + uint32_t u32SrcAddr; ///< The source address. + uint32_t u32DesAddr; ///< The destination address. + uint16_t u16SrcRptSize; ///< The source repeat size. + uint16_t u16DesRptSize; ///< The destination repeat size. + uint32_t u32DmaLlp; ///< The Dma linked list pointer address + stc_dma_nseq_cfg_t stcSrcNseqCfg; ///< The source no_sequence configuration. + stc_dma_nseq_cfg_t stcDesNseqCfg; ///< The destination no_sequence configuration. + stc_dma_ch_cfg_t stcDmaChCfg; ///< The Dma channel configuration. +}stc_dma_config_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void DMA_Cmd(M4_DMA_TypeDef* pstcDmaReg, en_functional_state_t enNewState); +en_result_t DMA_EnableIrq(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_irq_sel_t enIrqSel); +en_result_t DMA_DisableIrq(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_irq_sel_t enIrqSel); +en_flag_status_t DMA_GetIrqFlag(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_irq_sel_t enIrqSel); +en_result_t DMA_ClearIrqFlag(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_irq_sel_t enIrqSel); +en_result_t DMA_ChannelCmd(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_functional_state_t enNewState); +void DMA_InitReConfig(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_recfg_ctl_t* pstcDmaReCfg); +void DMA_ReCfgCmd(M4_DMA_TypeDef* pstcDmaReg,en_functional_state_t enNewState); +en_flag_status_t DMA_GetChFlag(M4_DMA_TypeDef* pstcDmaReg, en_dma_ch_flag_t enDmaChFlag); + +en_result_t DMA_SetSrcAddress(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint32_t u32Address); +en_result_t DMA_SetDesAddress(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint32_t u32Address); +en_result_t DMA_SetBlockSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16BlkSize); +en_result_t DMA_SetTransferCnt(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16TrnCnt); +en_result_t DMA_SetSrcRptSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size); +en_result_t DMA_SetDesRptSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size); +en_result_t DMA_SetSrcRptbSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size); +en_result_t DMA_SetDesRptbSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size); +en_result_t DMA_SetSrcNseqCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_nseq_cfg_t* pstcSrcNseqCfg); +en_result_t DMA_SetSrcNseqBCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_nseqb_cfg_t* pstcSrcNseqBCfg); +en_result_t DMA_SetDesNseqCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_nseq_cfg_t* pstDesNseqCfg); +en_result_t DMA_SetDesNseqBCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_nseqb_cfg_t* pstDesNseqBCfg); +en_result_t DMA_SetLLP(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint32_t u32Pointer); + +void DMA_SetTriggerSrc(const M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_event_src_t enSrc); +void DMA_SetReConfigTriggerSrc(en_event_src_t enSrc); +void DMA_ComTriggerCmd(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_com_trigger_t enComTrigger, en_functional_state_t enNewState); +void DMA_ReConfigComTriggerCmd(en_dma_com_trigger_t enComTrigger, en_functional_state_t enNewState); + +void DMA_ChannelCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_ch_cfg_t* pstcChCfg); +void DMA_InitChannel(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, const stc_dma_config_t* pstcDmaCfg); +void DMA_DeInit(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch); + + + +//@} // DmacGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_DMAC_ENABLE */ + +#endif /* __HC32F460_DMAC_H__*/ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_efm.h b/driver/inc/hc32f460_efm.h new file mode 100644 index 0000000..a6185bb --- /dev/null +++ b/driver/inc/hc32f460_efm.h @@ -0,0 +1,209 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_efm.h + ** + ** A detailed description is available at + ** @link EfmGroup EFM description @endlink + ** + ** - 2018-10-29 CDT First version for Device Driver Library of EFM. + ** + ******************************************************************************/ +#ifndef __HC32F460_EFM_H__ +#define __HC32F460_EFM_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_EFM_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup EfmGroup Embedded Flash Management unit(EFM) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief The flash status. + ** + ******************************************************************************/ +typedef enum en_efm_flash_status +{ + FlashReady = 1u, ///< The flash ready flag. + FlashRWErr = 2u, ///< The flash read/write error flag. + FlashEOP = 3u, ///< The flash end of operation flag. + FlashPgMissMatch = 4u, ///< The flash program miss match flag. + FlashPgSizeErr = 5u, ///< The flash program size error flag. + FlashPgareaPErr = 6u, ///< The flash program protect area error flag. + FlashWRPErr = 7u, ///< The flash write protect error flag. +}en_efm_flash_status_t; + +/** + ******************************************************************************* + ** \brief The flash read mode. + ** + ******************************************************************************/ +typedef enum en_efm_read_md +{ + NormalRead = 0u, ///< The flash normal read mode. + UltraPowerRead = 1u, ///< The flash ultra power read mode. +}en_efm_read_md_t; + +/** + ******************************************************************************* + ** \brief The flash interrupt select. + ** + ******************************************************************************/ +typedef enum en_efm_int_sel +{ + PgmErsErrInt = 0u, ///< The flash program / erase error interrupt. + EndPgmInt = 1u, ///< The flash end of program interrupt. + ColErrInt = 2u, ///< The flash read collided error interrupt. +}en_efm_int_sel_t; + +/** + ******************************************************************************* + ** \brief The bus state while flash program & erase. + ** + ******************************************************************************/ +typedef enum en_efm_bus_sta +{ + BusBusy = 0u, ///< The bus busy while flash program & erase. + BusRelease = 1u, ///< The bus release while flash program & erase. +}en_efm_bus_sta_t; + +/** + ******************************************************************************* + ** \brief Structure of windows protect address. + ** + ** \note None. + ** + ******************************************************************************/ +typedef struct stc_efm_win_protect_addr +{ + uint32_t StartAddr; ///< The protect start address. + uint32_t EndAddr; ///< The protect end address. +}stc_efm_win_protect_addr_t; + +/** + ******************************************************************************* + ** \brief Structure of unique ID. + ** + ** \note None. + ** + ******************************************************************************/ +typedef struct stc_efm_unique_id +{ + uint32_t uniqueID1; ///< unique ID 1. + uint32_t uniqueID2; ///< unique ID 2. + uint32_t uniqueID3; ///< unique ID 3. +}stc_efm_unique_id_t; +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + /* Flach latency cycle (0~15) */ +#define EFM_LATENCY_0 (0ul) +#define EFM_LATENCY_1 (1ul) +#define EFM_LATENCY_2 (2ul) +#define EFM_LATENCY_3 (3ul) +#define EFM_LATENCY_4 (4ul) +#define EFM_LATENCY_5 (5ul) +#define EFM_LATENCY_6 (6ul) +#define EFM_LATENCY_7 (7ul) +#define EFM_LATENCY_8 (8ul) +#define EFM_LATENCY_9 (9ul) +#define EFM_LATENCY_10 (10ul) +#define EFM_LATENCY_11 (11ul) +#define EFM_LATENCY_12 (12ul) +#define EFM_LATENCY_13 (13ul) +#define EFM_LATENCY_14 (14ul) +#define EFM_LATENCY_15 (15ul) + +/* Flash flag */ +#define EFM_FLAG_WRPERR (0x00000001ul) +#define EFM_FLAG_PEPRTERR (0x00000002ul) +#define EFM_FLAG_PGSZERR (0x00000004ul) +#define EFM_FLAG_PGMISMTCH (0x00000008ul) +#define EFM_FLAG_EOP (0x00000010ul) +#define EFM_FLAG_COLERR (0x00000020ul) +#define EFM_FLAG_RDY (0x00000100ul) + +/* Flash operate mode */ +#define EFM_MODE_READONLY (0ul) +#define EFM_MODE_SINGLEPROGRAM (1ul) +#define EFM_MODE_SINGLEPROGRAMRB (2ul) +#define EFM_MODE_SEQUENCEPROGRAM (3ul) +#define EFM_MODE_SECTORERASE (4ul) +#define EFM_MODE_CHIPERASE (5ul) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void EFM_Unlock(void); +void EFM_Lock(void); + +void EFM_FlashCmd(en_functional_state_t enNewState); +void EFM_SetLatency(uint32_t u32Latency); +void EFM_InstructionCacheCmd(en_functional_state_t enNewState); +void EFM_DataCacheRstCmd(en_functional_state_t enNewState); +void EFM_SetReadMode(en_efm_read_md_t enReadMD); +void EFM_ErasePgmCmd(en_functional_state_t enNewState); +en_result_t EFM_SetErasePgmMode(uint32_t u32Mode); +void EFM_InterruptCmd(en_efm_int_sel_t enInt, en_functional_state_t enNewState); + +en_flag_status_t EFM_GetFlagStatus(uint32_t u32flag); +en_flag_status_t EFM_GetSwitchStatus(void); +void EFM_ClearFlag(uint32_t u32flag); +en_efm_flash_status_t EFM_GetStatus(void); +void EFM_SetBusState(en_efm_bus_sta_t enState); + +void EFM_SetWinProtectAddr(stc_efm_win_protect_addr_t stcAddr); + +en_result_t EFM_SingleProgram(uint32_t u32Addr, uint32_t u32Data); +en_result_t EFM_SingleProgramRB(uint32_t u32Addr, uint32_t u32Data); +en_result_t EFM_SequenceProgram(uint32_t u32Addr, uint32_t u32Len, void *pBuf); +en_result_t EFM_SectorErase(uint32_t u32Addr); +en_result_t EFM_MassErase(uint32_t u32Addr); + +en_result_t EFM_OtpLock(uint32_t u32Addr); +stc_efm_unique_id_t EFM_ReadUID(void); + + +//@} // EfmGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_EFM_ENABLE */ + +#endif /* __HC32F460_EFM_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/inc/hc32f460_emb.h b/driver/inc/hc32f460_emb.h new file mode 100644 index 0000000..0820870 --- /dev/null +++ b/driver/inc/hc32f460_emb.h @@ -0,0 +1,205 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_emb.h + ** + ** A detailed description is available at + ** @link EMBGroup EMB description @endlink + ** + ** - 2018-11-24 CDT First version for Device Driver Library of EMB. + ** + ******************************************************************************/ +#ifndef __HC32F460_EMB_H__ +#define __HC32F460_EMB_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_EMB_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + ******************************************************************************* + ** \defgroup EMBGroup Emergency Brake(EMB) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief EMB status enumeration + ******************************************************************************/ +typedef enum en_emb_status +{ + EMBFlagPortIn = 0u, ///< EMB port in brake flag + EMBFlagPWMSame = 1u, ///< EMB PWM same brake flag + EMBFlagCmp = 2u, ///< EMB CMP brake flag + EMBFlagOSCFail = 3u, ///< EMB oscillator fail brake flag + EMBPortInState = 4u, ///< EMB port in state + EMBPWMState = 5u, ///< EMB PWM same state +} en_emb_status_t; + +/** + ******************************************************************************* + ** \brief EMB status clear(recover) enumeration + ******************************************************************************/ +typedef enum en_emb_status_clr +{ + EMBPortInFlagClr = 0u, ///< EMB port in brake flag clear + EMBPWMSameFlagCLr = 1u, ///< EMB PWM same brake flag clear + EMBCmpFlagClr = 2u, ///< EMB CMP brake flag clear + EMBOSCFailFlagCLr = 3u, ///< EMB oscillator fail brake flag clear +} en_emb_status_clr_t; + +/** + ******************************************************************************* + ** \brief EMB irq enumeration + ******************************************************************************/ +typedef enum en_emb_irq_type +{ + PORTBrkIrq = 0u, ///< EMB port brake interrupt + PWMSmBrkIrq = 1u, ///< EMB PWM same brake interrupt + CMPBrkIrq = 2u, ///< EMB CMP brake interrupt + OSCFailBrkIrq = 3u, ///< EMB oscillator fail brake interrupt +} en_emb_irq_type_t; + +/** + ******************************************************************************* + ** \brief EMB port in filter enumeration + ******************************************************************************/ +typedef enum en_emb_port_filter +{ + EMBPortFltDiv0 = 0u, ///< EMB port in filter with PCLK clock + EMBPortFltDiv8 = 1u, ///< EMB port in filter with PCLK/8 clock + EMBPortFltDiv32 = 2u, ///< EMB port in filter with PCLK/32 clock + EMBPortFltDiv128 = 3u, ///< EMB port in filter with PCLK/128 clock +} en_emb_port_filter_t; + +/** + ******************************************************************************* + ** \brief EMB CR0 for timer6 config + ** \note + ******************************************************************************/ +typedef struct stc_emb_ctrl_timer6 +{ + bool bEnPortBrake; ///< Enable port brake + bool bEnCmp1Brake; ///< Enable CMP1 brake + bool bEnCmp2Brake; ///< Enable CMP2 brake + bool bEnCmp3Brake; ///< Enable CMP3 brake + bool bEnOSCFailBrake; ///< Enable OSC fail brake + bool bEnTimer61PWMSBrake; ///< Enable tiemr61 PWM same brake + bool bEnTimer62PWMSBrake; ///< Enable tiemr62 PWM same brake + bool bEnTimer63PWMSBrake; ///< Enable tiemr63 PWM same brake + en_emb_port_filter_t enPortInFltClkSel; ///< Port in filter clock selection + bool bEnPorInFlt; ///< Enable port in filter + bool bEnPortInLevelSel_Low; ///< Poit input active level 1: LowLevel 0:HighLevel +}stc_emb_ctrl_timer6_t; + +/** + ******************************************************************************* + ** \brief EMB CR1~3 for timer4x config + ** \note + ******************************************************************************/ +typedef struct stc_emb_ctrl_timer4 +{ + bool bEnPortBrake; ///< Enable port brake + bool bEnCmp1Brake; ///< Enable CMP1 brake + bool bEnCmp2Brake; ///< Enable CMP2 brake + bool bEnCmp3Brake; ///< Enable CMP3 brake + bool bEnOSCFailBrake; ///< Enable OS fail brake + bool bEnTimer4xWHLSammeBrake; ///< Enable tiemr4x PWM WH WL same brake + bool bEnTimer4xVHLSammeBrake; ///< Enable tiemr4x PWM VH VL same brake + bool bEnTimer4xUHLSammeBrake; ///< Enable tiemr4x PWM UH UL same brake + en_emb_port_filter_t enPortInFltClkSel; ///< Port in filter clock selection + bool bEnPorInFlt; ///< Enable port in filter + bool bEnPortInLevelSel_Low; ///< Poit input active level 1: LowLevel 0:HighLevel +}stc_emb_ctrl_timer4_t; + + +/** + ******************************************************************************* + ** \brief EMB PWM level detect timer6 config + ** \note + ******************************************************************************/ +typedef struct stc_emb_pwm_level_timer6 +{ + bool bEnTimer61HighLevelDect; ///< Enable tiemr61 active detected level 1:HighLevel 0:LowLevel + bool bEnTimer62HighLevelDect; ///< Enable tiemr62 active detected level 1:HighLevel 0:LowLevel + bool bEnTimer63HighLevelDect; ///< Enable tiemr63 active detected level 1:HighLevel 0:LowLevel +}stc_emb_pwm_level_timer6_t; + +/** + ******************************************************************************* + ** \brief EMB PWM level detect timer4x config + ** \note + ******************************************************************************/ +typedef struct stc_emb_pwm_level_timer4 +{ + bool bEnUHLPhaseHighLevelDect; ///< Enable tiemr4x UH UL active detected level 1:HighLevel 0:LowLevel + bool bEnVHLPhaseHighLevelDect; ///< Enable tiemr4x VH VL active detected level 1:HighLevel 0:LowLevel + bool bEnWHLphaseHighLevelDect; ///< Enable tiemr4x WH WL active detected level 1:HighLevel 0:LowLevel +}stc_emb_pwm_level_timer4_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* IRQ config */ +en_result_t EMB_ConfigIrq(M4_EMB_TypeDef *EMBx, + en_emb_irq_type_t enEMBIrq, + bool bEn); +/* Get status(flag) */ +bool EMB_GetStatus(M4_EMB_TypeDef *EMBx, en_emb_status_t enStatus); +/* Status(flag) clear (recover) */ +en_result_t EMB_ClrStatus(M4_EMB_TypeDef *EMBx, + en_emb_status_clr_t enStatusClr); +/* Control Register(CTL) config for timer6 */ +en_result_t EMB_Config_CR_Timer6(const stc_emb_ctrl_timer6_t* pstcEMBConfigCR); +/* Control Register(CTL) config for timer4 */ +en_result_t EMB_Config_CR_Timer4(M4_EMB_TypeDef *EMBx, + const stc_emb_ctrl_timer4_t* pstcEMBConfigCR); +/* PWM level detect (short detection) selection config for timer6 */ +en_result_t EMB_PWMLv_Timer6(const stc_emb_pwm_level_timer6_t* pstcEMBPWMlv); +/* PWM level detect (short detection) selection config for timer4 */ +en_result_t EMB_PWMLv_Timer4(M4_EMB_TypeDef *EMBx, + const stc_emb_pwm_level_timer4_t* pstcEMBPWMlv); +/* Software brake */ +en_result_t EMB_SwBrake(M4_EMB_TypeDef *EMBx, bool bEn); + +//@} // EMBGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_EMB_ENABLE */ + +#endif /* __HC32F460_EMB_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_event_port.h b/driver/inc/hc32f460_event_port.h new file mode 100644 index 0000000..8833829 --- /dev/null +++ b/driver/inc/hc32f460_event_port.h @@ -0,0 +1,176 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_event_port.h + ** + ** A detailed description is available at + ** @link EventPortGroup EventPort description @endlink + ** + ** - 2018-12-07 CDT First version for Device Driver Library of EventPort. + ** + ******************************************************************************/ + +#ifndef __HC32F460_EVENT_PORT_H__ +#define __HC32F460_EVENT_PORT_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_EVENT_PORT_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup EventPortGroup Event Port (EventPort) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Event Port Index enumeration + ** + ******************************************************************************/ +typedef enum en_event_port +{ + EventPort1 = 0, ///< Event port 1 + EventPort2 = 1, ///< Event port 2 + EventPort3 = 2, ///< Event port 3 + EventPort4 = 3, ///< Event port 4 +}en_event_port_t; + +/** + ******************************************************************************* + ** \brief Event Port Pin enumeration + ** + ******************************************************************************/ +typedef enum en_event_pin +{ + EventPin00 = 1u << 0, ///< Event port Pin 00 + EventPin01 = 1u << 1, ///< Event port Pin 01 + EventPin02 = 1u << 2, ///< Event port Pin 02 + EventPin03 = 1u << 3, ///< Event port Pin 03 + EventPin04 = 1u << 4, ///< Event port Pin 04 + EventPin05 = 1u << 5, ///< Event port Pin 05 + EventPin06 = 1u << 6, ///< Event port Pin 06 + EventPin07 = 1u << 7, ///< Event port Pin 07 + EventPin08 = 1u << 8, ///< Event port Pin 08 + EventPin09 = 1u << 9, ///< Event port Pin 09 + EventPin10 = 1u << 10, ///< Event port Pin 10 + EventPin11 = 1u << 11, ///< Event port Pin 11 + EventPin12 = 1u << 12, ///< Event port Pin 12 + EventPin13 = 1u << 13, ///< Event port Pin 13 + EventPin14 = 1u << 14, ///< Event port Pin 14 + EventPin15 = 1u << 15, ///< Event port Pin 15 + EventPinAll= 0xFFFF, ///< All event pins are selected +}en_event_pin_t; + +/** + ******************************************************************************* + ** \brief Event Port common trigger source select + ** + ******************************************************************************/ +typedef enum en_event_port_com_trigger +{ + EpComTrigger_1 = 0x1, ///< Select common trigger 1. + EpComTrigger_2 = 0x2, ///< Select common trigger 2. + EpComTrigger_1_2 = 0x3, ///< Select common trigger 1 and 2. +} en_event_port_com_trigger_t; + +/** + ******************************************************************************* + ** \brief Event Port direction enumeration + ** + ******************************************************************************/ +typedef enum en_event_port_dir +{ + EventPortIn = 0, ///< Event Port direction 'IN' + EventPortOut = 1, ///< Event Port direction 'OUT' +}en_event_port_dir_t; + +/** + ******************************************************************************* + ** \brief Enumeration to filter clock setting for Event port detect + ** + ** \note + ******************************************************************************/ +typedef enum en_ep_flt_clk +{ + Pclk1Div1 = 0u, ///< PCLK1 as EP filter clock source + Pclk1Div8 = 1u, ///< PCLK1 div8 as EP filter clock source + Pclk1Div32 = 2u, ///< PCLK1 div32 as EP filter clock source + Pclk1Div64 = 3u, ///< PCLK1 div64 as EP filter clock source +}en_ep_flt_clk_t; + +/** + ******************************************************************************* + ** \brief Event port init structure definition + ******************************************************************************/ +typedef struct stc_event_port_init +{ + en_event_port_dir_t enDirection; ///< Input/Output setting + en_functional_state_t enReset; ///< Corresponding pin reset after triggered + en_functional_state_t enSet; ///< Corresponding pin set after triggered + en_functional_state_t enRisingDetect; ///< Rising edge detect enable + en_functional_state_t enFallingDetect;///< Falling edge detect enable + en_functional_state_t enFilter; ///< Filter clock source select + en_ep_flt_clk_t enFilterClk; ///< Filter clock, ref@ en_ep_flt_clk_t for details +}stc_event_port_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +extern en_result_t EVENTPORT_Init(en_event_port_t enEventPort, \ + uint16_t u16EventPin, const stc_event_port_init_t *pstcEventPortInit); +extern en_result_t EVENTPORT_DeInit(void); +extern en_result_t EVENTPORT_SetTriggerSrc(en_event_port_t enEventPort, \ + en_event_src_t enTriggerSrc); +void EVENTPORT_ComTriggerCmd(en_event_port_t enEventPort, \ + en_event_port_com_trigger_t enComTrigger, \ + en_functional_state_t enState); +extern uint16_t EVENTPORT_GetData(en_event_port_t enEventPort); +extern en_flag_status_t EVENTPORT_GetBit(en_event_port_t enEventPort, \ + en_event_pin_t enEventPin); +extern en_result_t EVENTPORT_SetBits(en_event_port_t enEventPort, \ + en_event_pin_t u16EventPin); +extern en_result_t EVENTPORT_ResetBits(en_event_port_t enEventPort, \ + en_event_pin_t u16EventPin); + +//@} // EventPortGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_EVENT_PORT_ENABLE */ + +#endif /* __HC32F460_EVENT_PORT_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_exint_nmi_swi.h b/driver/inc/hc32f460_exint_nmi_swi.h new file mode 100644 index 0000000..eeb69fc --- /dev/null +++ b/driver/inc/hc32f460_exint_nmi_swi.h @@ -0,0 +1,257 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_exint_nmi_swi.h + ** + ** A detailed description is available at + ** @link ExintNmiSwiGroup Exint/Nmi/Swi description @endlink + ** + ** - 2018-10-17 CDT First version for Device Driver Library of exint, Nmi, SW interrupt. + ** + ******************************************************************************/ + +#ifndef __HC32F460_EXINT_NMI_SWI_H__ +#define __HC32F460_EXINT_NMI_SWI_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_EXINT_NMI_SWI_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup ExintNmiSwiGroup External Interrupts (External Interrupt), \ + ** NMI (Non-Maskable Interrupt), SWI (Software Interrupt) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Enumeration to filter clock setting for EXINT and NMI + ** + ** \note + ******************************************************************************/ +typedef enum en_ei_flt_clk +{ + Pclk3Div1 = 0u, ///< PCLK3 as EP filter clock source + Pclk3Div8 = 1u, ///< PCLK3 div8 as EP filter clock source + Pclk3Div32 = 2u, ///< PCLK3 div32 as EP filter clock source + Pclk3Div64 = 3u, ///< PCLK3 div64 as EP filter clock source +}en_ei_flt_clk_t; + +/** + ******************************************************************************* + ** \brief Enumeration to NMI detection + ** + ** \note + ******************************************************************************/ +typedef enum en_nmi_lvl +{ + NmiFallingEdge = 0u, ///< Falling edge detection + NmiRisingEdge = 1u, ///< Rising edge detection +}en_nmi_lvl_t; + +/** + ******************************************************************************* + ** \brief Enumeration to EXTI detection + ** + ** \note + ******************************************************************************/ +typedef enum en_exti_lvl +{ + ExIntFallingEdge = 0u, ///< Falling edge detection + ExIntRisingEdge = 1u, ///< Rising edge detection + ExIntBothEdge = 2u, ///< Falling or Rising edge detection + ExIntLowLevel = 3u, ///< "L" level detection +}en_exti_lvl_t; + +/** + ******************************************************************************* + ** \brief Enumeration to define an index for EXINT + ******************************************************************************/ +typedef enum en_exti_ch +{ + ExtiCh00 = 0u, + ExtiCh01 = 1u, + ExtiCh02 = 2u, + ExtiCh03 = 3u, + ExtiCh04 = 4u, + ExtiCh05 = 5u, + ExtiCh06 = 6u, + ExtiCh07 = 7u, + ExtiCh08 = 8u, + ExtiCh09 = 9u, + ExtiCh10 = 10u, + ExtiCh11 = 11u, + ExtiCh12 = 12u, + ExtiCh13 = 13u, + ExtiCh14 = 14u, + ExtiCh15 = 15u, +}en_exti_ch_t; + +/** + ******************************************************************************* + ** \brief Enumeration to define the SWI channel + ******************************************************************************/ +typedef enum en_swi_ch +{ + SwiCh00 = 1u << 0, + SwiCh01 = 1u << 1, + SwiCh02 = 1u << 2, + SwiCh03 = 1u << 3, + SwiCh04 = 1u << 4, + SwiCh05 = 1u << 5, + SwiCh06 = 1u << 6, + SwiCh07 = 1u << 7, + SwiCh08 = 1u << 8, + SwiCh09 = 1u << 9, + SwiCh10 = 1u << 10, + SwiCh11 = 1u << 11, + SwiCh12 = 1u << 12, + SwiCh13 = 1u << 13, + SwiCh14 = 1u << 14, + SwiCh15 = 1u << 15, + SwiCh16 = 1u << 16, + SwiCh17 = 1u << 17, + SwiCh18 = 1u << 18, + SwiCh19 = 1u << 19, + SwiCh20 = 1u << 20, + SwiCh21 = 1u << 21, + SwiCh22 = 1u << 22, + SwiCh23 = 1u << 23, + SwiCh24 = 1u << 24, + SwiCh25 = 1u << 25, + SwiCh26 = 1u << 26, + SwiCh27 = 1u << 27, + SwiCh28 = 1u << 28, + SwiCh29 = 1u << 29, + SwiCh30 = 1u << 30, + SwiCh31 = 1u << 31, +}en_swi_ch_t; + +/** + ******************************************************************************* + ** \brief External Interrupt configuration + ** + ** \note The EXINT configuration + ******************************************************************************/ +typedef struct stc_exint_config +{ + en_exti_ch_t enExitCh; ///< External Int CH.0~15 ref@ en_exti_ch_t + en_functional_state_t enFilterEn; ///< TRUE: Enable filter function + en_ei_flt_clk_t enFltClk; ///< Filter clock, ref@ en_ei_flt_clk_t for details + en_exti_lvl_t enExtiLvl; ///< Detection level, ref@ en_exti_lvl_t for details +}stc_exint_config_t; + +/** + ******************************************************************************* + ** \brief Enumeration to NMI Trigger source + ** + ** \note + ******************************************************************************/ +typedef enum en_nmi_src +{ + NmiSrcNmi = 1u << 0, ///< NMI pin + NmiSrcSwdt = 1u << 1, ///< Special watch dog timer + NmiSrcVdu1 = 1u << 2, ///< Voltage detect 1 + NmiSrcVdu2 = 1u << 3, ///< Voltage detect 2 + NmiSrcXtalStop = 1u << 5, ///< Xtal stop + NmiSrcSramPE = 1u << 8, ///< SRAM1/2/HS/Ret parity error + NmiSrcSramDE = 1u << 9, ///< SRAM3 ECC error + NmiSrcMpu = 1u << 10, ///< MPU error + NmiSrcWdt = 1u << 11, ///< Watch dog timer +}en_nmi_src_t; + +/** + ******************************************************************************* + ** \brief Enumeration to software interrupt or event + ** + ** \note + ******************************************************************************/ +typedef enum en_swi_type +{ + SwEvent = 0u, ///< software event + SwInt = 1u, ///< software interrupt +}en_swi_type_t; + + +/** + ******************************************************************************* + ** \brief NMI configuration + ** + ** \note The NMI configuration + ******************************************************************************/ +typedef struct stc_nmi_config +{ + en_functional_state_t enFilterEn; ///< TRUE: Enable filter function + en_ei_flt_clk_t enFilterClk; ///< Filter clock, ref@ en_flt_clk_t for details + en_nmi_lvl_t enNmiLvl; ///< Detection level, ref@ en_nmi_lvl_t for details + uint16_t u16NmiSrc; ///< NMI trigger source, ref@ en_nmi_src_t for details + func_ptr_t pfnNmiCallback; ///< Callback pointers +}stc_nmi_config_t; + +/** + ******************************************************************************* + ** \brief SWI configuration + ** + ** \note The SWI configuration + ******************************************************************************/ +typedef struct stc_swi_config +{ + en_swi_ch_t enSwiCh; ///< SWI channel + en_swi_type_t enSwiType; ///< Select software interrupt or event + func_ptr_t pfnSwiCallback; ///< Callback pointers +}stc_swi_config_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +extern en_result_t EXINT_Init(const stc_exint_config_t *pstcExtiConfig); +extern en_int_status_t EXINT_IrqFlgGet(en_exti_ch_t enExint); +extern en_result_t EXINT_IrqFlgClr(en_exti_ch_t enExint); +extern en_result_t NMI_Init(const stc_nmi_config_t *pstcNmiConfig); +extern en_result_t NMI_DeInit(void); +extern en_int_status_t NMI_IrqFlgGet(en_nmi_src_t enNmiSrc); +extern en_result_t NMI_IrqFlgClr(uint16_t u16NmiSrc); +extern en_result_t SWI_Enable(uint32_t u32SwiCh); +extern en_result_t SWI_Disable(uint32_t u32SwiCh); + +//@} // ExintNmiSwiGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_EXINT_NMI_SWI_ENABLE */ + +#endif /* __HC32F460_EXINT_NMI_SWI_H__ */ +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_gpio.h b/driver/inc/hc32f460_gpio.h new file mode 100644 index 0000000..b553de1 --- /dev/null +++ b/driver/inc/hc32f460_gpio.h @@ -0,0 +1,294 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_gpio.h + ** + ** A detailed description is available at + ** @link GpioGroup Gpio description @endlink + ** + ** - 2018-10-12 CDT First version for Device Driver Library of Gpio. + ** + ******************************************************************************/ + +#ifndef __HC32F460_GPIO_H__ +#define __HC32F460_GPIO_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_GPIO_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup GpioGroup General Purpose Input/Output(GPIO) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + /** + ******************************************************************************* + ** \brief GPIO Configuration Mode enumeration + ** + ******************************************************************************/ +typedef enum en_pin_mode +{ + Pin_Mode_In = 0, ///< GPIO Input mode + Pin_Mode_Out = 1, ///< GPIO Output mode + Pin_Mode_Ana = 2, ///< GPIO Analog mode +}en_pin_mode_t; + +/** + ******************************************************************************* + ** \brief GPIO Drive Capacity enumeration + ** + ******************************************************************************/ +typedef enum en_pin_drv +{ + Pin_Drv_L = 0, ///< Low Drive Capacity + Pin_Drv_M = 1, ///< Middle Drive Capacity + Pin_Drv_H = 2, ///< High Drive Capacity +}en_pin_drv_t; + +/** + ******************************************************************************* + ** \brief GPIO Output Type enumeration + ******************************************************************************/ +typedef enum en_pin_o_type +{ + Pin_OType_Cmos = 0, ///< CMOS + Pin_OType_Od = 1, ///< Open Drain +}en_pin_o_type_t; + + +typedef enum en_debug_port +{ + TCK_SWCLK = 1 << 0, ///< TCK or SWCLK + TMS_SWDIO = 1 << 1, ///< TMS or SWDIO + TDO_SWO = 1 << 2, ///< TOD or SWD + TDI = 1 << 3, ///< TDI + TRST = 1 << 4, ///< TRest + ALL_DBG_PIN = 0x1Fu ///< All above +}en_debug_port_t; +/** + ******************************************************************************* + ** \brief GPIO Port Index enumeration + ******************************************************************************/ +typedef enum en_port +{ + PortA = 0, ///< port group A + PortB = 1, ///< port group B + PortC = 2, ///< port group C + PortD = 3, ///< port group D + PortE = 4, ///< port group E + PortH = 5, ///< port group H +}en_port_t; + +/** + ******************************************************************************* + ** \brief GPIO Pin Index enumeration + ******************************************************************************/ +typedef enum en_pin +{ + Pin00 = (1 << 0), ///< Pin index 00 of each port group + Pin01 = (1 << 1), ///< Pin index 01 of each port group + Pin02 = (1 << 2), ///< Pin index 02 of each port group + Pin03 = (1 << 3), ///< Pin index 03 of each port group + Pin04 = (1 << 4), ///< Pin index 04 of each port group + Pin05 = (1 << 5), ///< Pin index 05 of each port group + Pin06 = (1 << 6), ///< Pin index 06 of each port group + Pin07 = (1 << 7), ///< Pin index 07 of each port group + Pin08 = (1 << 8), ///< Pin index 08 of each port group + Pin09 = (1 << 9), ///< Pin index 09 of each port group + Pin10 = (1 << 10), ///< Pin index 10 of each port group + Pin11 = (1 << 11), ///< Pin index 11 of each port group + Pin12 = (1 << 12), ///< Pin index 12 of each port group + Pin13 = (1 << 13), ///< Pin index 13 of each port group + Pin14 = (1 << 14), ///< Pin index 14 of each port group + Pin15 = (1 << 15), ///< Pin index 15 of each port group + PinAll= 0xFFFF, ///< All pins selected +}en_pin_t; + +/** + ******************************************************************************* + ** \brief GPIO Pin read wait cycle enumeration + ******************************************************************************/ +typedef enum en_read_wait +{ + WaitCycle0 = 0, ///< no wait cycle, operation freq. lower than 42MHz + WaitCycle1 = 1, ///< one wait cycle, operation freq. @[42~84)MHz + WaitCycle2 = 2, ///< two wait cycles, operation freq. @[84~126)MHz + WaitCycle3 = 3, ///< three wait cycles, operation freq. @[126~200)MHz +}en_read_wait_t; + +/** + ******************************************************************************* + ** \brief GPIO Function enumeration + ******************************************************************************/ +typedef enum en_port_func +{ + Func_Gpio = 0u, ///< function set to gpio + Func_Fcmref = 1u, ///< function set to fcm reference + Func_Rtcout = 1u, ///< function set to rtc output + Func_Vcout = 1u, ///< function set to vc output + Func_Adtrg = 1u, ///< function set to adc trigger + Func_Mclkout = 1u, ///< function set to mclk output + Func_Tim4 = 2u, ///< function set to timer4 + Func_Tim6 = 3u, ///< function set to timer6 + Func_Tima0 = 4u, ///< function set to timerA + Func_Tima1 = 5u, ///< function set to timerA + Func_Tima2 = 6u, ///< function set to timerA + Func_Emb = 6u, ///< function set to emb + Func_Usart_Ck = 7u, ///< function set to usart clk + Func_Spi_Nss = 7u, ///< function set to spi nss + Func_Qspi = 7u, ///< function set to qspi + Func_Key = 8u, ///< function set to key + Func_Sdio = 9u, ///< function set to sdio + Func_I2s = 10u, ///< function set to i2s + Func_UsbF = 10u, ///< function set to usb full speed + Func_Evnpt = 14u, ///< function set to event port + Func_Eventout = 15u, ///< function set to event out + Func_Usart1_Tx = 32u, ///< function set to usart tx of ch.1 + Func_Usart3_Tx = 32u, ///< function set to usart tx of ch.3 + Func_Usart1_Rx = 33u, ///< function set to usart rx of ch.1 + Func_Usart3_Rx = 33u, ///< function set to usart rx of ch.3 + Func_Usart1_Rts = 34u, ///< function set to usart rts of ch.1 + Func_Usart3_Rts = 34u, ///< function set to usart rts of ch.3 + Func_Usart1_Cts = 35u, ///< function set to usart cts of ch.1 + Func_Usart3_Cts = 35u, ///< function set to usart cts of ch.3 + Func_Usart2_Tx = 36u, ///< function set to usart tx of ch.2 + Func_Usart4_Tx = 36u, ///< function set to usart tx of ch.4 + Func_Usart2_Rx = 37u, ///< function set to usart rx of ch.2 + Func_Usart4_Rx = 37u, ///< function set to usart rx of ch.4 + Func_Usart2_Rts = 38u, ///< function set to usart rts of ch.2 + Func_Usart4_Rts = 38u, ///< function set to usart rts of ch.4 + Func_Usart2_Cts = 39u, ///< function set to usart cts of ch.2 + Func_Usart4_Cts = 39u, ///< function set to usart cts of ch.4 + Func_Spi1_Mosi = 40u, ///< function set to spi mosi of ch.1 + Func_Spi3_Mosi = 40u, ///< function set to spi mosi of ch.3 + Func_Spi1_Miso = 41u, ///< function set to spi miso of ch.1 + Func_Spi3_Miso = 41u, ///< function set to spi miso of ch.3 + Func_Spi1_Nss0 = 42u, ///< function set to spi nss0 of ch.1 + Func_Spi3_Nss0 = 42u, ///< function set to spi nss0 of ch.3 + Func_Spi1_Sck = 43u, ///< function set to spi sck of ch.1 + Func_Spi3_Sck = 43u, ///< function set to spi sck of ch.3 + Func_Spi2_Mosi = 44u, ///< function set to spi mosi of ch.2 + Func_Spi4_Mosi = 44u, ///< function set to spi mosi of ch.2 + Func_Spi2_Miso = 45u, ///< function set to spi miso of ch.4 + Func_Spi4_Miso = 45u, ///< function set to spi miso of ch.4 + Func_Spi2_Nss0 = 46u, ///< function set to spi nss0 of ch.2 + Func_Spi4_Nss0 = 46u, ///< function set to spi nss0 of ch.4 + Func_Spi2_Sck = 47u, ///< function set to spi sck of ch.2 + Func_Spi4_Sck = 47u, ///< function set to spi sck of ch.4 + Func_I2c1_Sda = 48u, ///< function set to i2c sda of ch.1 + Func_I2c3_Sda = 48u, ///< function set to i2c sda of ch.3 + Func_I2c1_Scl = 49u, ///< function set to i2c scl of ch.1 + Func_I2c3_Scl = 49u, ///< function set to i2c scl of ch.3 + Func_I2c2_Sda = 50u, ///< function set to i2c sda of ch.2 + Func_Can1_Tx = 50u, ///< function set to can tx of ch.1 + Func_I2c2_Scl = 51u, ///< function set to i2c scl of ch.2 + Func_Can1_Rx = 51u, ///< function set to can rx of ch.1 + Func_I2s1_Sd = 52u, ///< function set to i2s sd of ch.1 + Func_I2s3_Sd = 52u, ///< function set to i2s sd of ch.3 + Func_I2s1_Sdin = 53u, ///< function set to i2s sdin of ch.1 + Func_I2s3_Sdin = 53u, ///< function set to i2s sdin of ch.3 + Func_I2s1_Ws = 54u, ///< function set to i2s ws of ch.1 + Func_I2s3_Ws = 54u, ///< function set to i2s ws of ch.3 + Func_I2s1_Ck = 55u, ///< function set to i2s ck of ch.1 + Func_I2s3_Ck = 55u, ///< function set to i2s ck of ch.3 + Func_I2s2_Sd = 56u, ///< function set to i2s sd of ch.2 + Func_I2s4_Sd = 56u, ///< function set to i2s sd of ch.4 + Func_I2s2_Sdin = 57u, ///< function set to i2s sdin of ch.2 + Func_I2s4_Sdin = 57u, ///< function set to i2s sdin of ch.4 + Func_I2s2_Ws = 58u, ///< function set to i2s ws of ch.2 + Func_I2s4_Ws = 58u, ///< function set to i2s ws of ch.4 + Func_I2s2_Ck = 59u, ///< function set to i2s ck of ch.2 + Func_I2s4_Ck = 59u, ///< function set to i2s ck of ch.4 +}en_port_func_t; + +/** + ******************************************************************************* + ** \brief GPIO init structure definition + ******************************************************************************/ +typedef struct stc_port_init +{ + en_pin_mode_t enPinMode; ///< Set pin mode @ref en_pin_mode_t + en_functional_state_t enLatch; ///< Pin output latch enable + en_functional_state_t enExInt; ///< External int enable + en_functional_state_t enInvert; ///< Pin input/output invert enable + en_functional_state_t enPullUp; ///< Internal pull-up resistor enable + en_pin_drv_t enPinDrv; ///< Drive capacity setting @ref en_pin_drv_t + en_pin_o_type_t enPinOType; ///< Output mode setting @ref en_pin_o_type_t + en_functional_state_t enPinSubFunc; ///< Pin sub-function enable +}stc_port_init_t; + +/** + ******************************************************************************* + ** \brief GPIO public setting structure definition + ******************************************************************************/ +typedef struct stc_port_pub_set +{ + en_port_func_t enSubFuncSel; ///< Sub-function setting @ref en_port_func_t + en_read_wait_t enReadWait; ///< Read wait cycle setting @ref en_read_wait_t +}stc_port_pub_set_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +extern en_result_t PORT_Init(en_port_t enPort, uint16_t u16Pin, \ + const stc_port_init_t *pstcPortInit); +extern en_result_t PORT_DeInit(void); +extern void PORT_Unlock(void); +extern void PORT_Lock(void); +extern en_result_t PORT_DebugPortSetting(uint8_t u8DebugPort, en_functional_state_t enFunc); +extern en_result_t PORT_PubSetting(const stc_port_pub_set_t *pstcPortPubSet); +extern uint16_t PORT_GetData(en_port_t enPort); +extern en_flag_status_t PORT_GetBit(en_port_t enPort, en_pin_t enPin); +extern en_result_t PORT_SetPortData(en_port_t enPort, uint16_t u16Pin); +extern en_result_t PORT_ResetPortData(en_port_t enPort, uint16_t u16Pin); +extern en_result_t PORT_OE(en_port_t enPort, uint16_t u16Pin, en_functional_state_t enNewState); +extern en_result_t PORT_SetBits(en_port_t enPort, uint16_t u16Pin); +extern en_result_t PORT_ResetBits(en_port_t enPort, uint16_t u16Pin); +extern en_result_t PORT_Toggle(en_port_t enPort, uint16_t u16Pin); +extern en_result_t PORT_SetFunc(en_port_t enPort, uint16_t u16Pin, \ + en_port_func_t enFuncSel, en_functional_state_t enSubFunc); +extern en_result_t PORT_SetSubFunc(en_port_func_t enFuncSel); + +//@} // GpioGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_GPIO_ENABLE */ + +#endif /* __HC32F460_GPIO_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_hash.h b/driver/inc/hc32f460_hash.h new file mode 100644 index 0000000..8ee1ce4 --- /dev/null +++ b/driver/inc/hc32f460_hash.h @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_hash.h + ** + ** A detailed description is available at + ** @link HashGroup Hash description @endlink + ** + ** - 2018-10-18 CDT First version for Device Driver Library of Hash. + ** + ******************************************************************************/ +#ifndef __HC32F460_HASH_H__ +#define __HC32F460_HASH_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_HASH_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup HashGroup Hash(HASH) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void HASH_Init(void); +void HASH_DeInit(void); +en_result_t HASH_Start(const uint8_t *pu8SrcData, + uint32_t u32SrcDataSize, + uint8_t *pu8MsgDigest, + uint32_t u32Timeout); + +//@} // HashGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_HASH_ENABLE */ + +#endif /* __HC32F460_HASH_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_i2c.h b/driver/inc/hc32f460_i2c.h new file mode 100644 index 0000000..dc8ea44 --- /dev/null +++ b/driver/inc/hc32f460_i2c.h @@ -0,0 +1,270 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_i2c.h + ** + ** A detailed description is available at + ** @link I2cGroup Inter-Integrated Circuit(I2C) description @endlink + ** + ** - 2018-10-16 CDT First version for Device Driver Library of I2C. + ** + ******************************************************************************/ + +#ifndef __HC32F460_I2C_H__ +#define __HC32F460_I2C_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_I2C_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup I2cGroup Inter-Integrated Circuit (I2C) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief I2c configuration structure + ** + ******************************************************************************/ +typedef struct stc_i2c_init +{ + uint32_t u32ClockDiv; ///< I2C clock division for i2c source clock + uint32_t u32Baudrate; ///< I2C baudrate config + uint32_t u32SclTime; ///< The SCL rising and falling time, count of T(i2c source clock after frequency divider) +}stc_i2c_init_t; + +/** + ******************************************************************************* + ** \brief I2c SMBUS configuration structure + ** + ******************************************************************************/ +typedef struct stc_i2c_smbus_init +{ + en_functional_state_t enHostAdrMatchFunc; ///< SMBUS host address matching function + en_functional_state_t enDefaultAdrMatchFunc; ///< SMBUS default address matching function + en_functional_state_t enAlarmAdrMatchFunc; ///< SMBUS Alarm address matching function +}stc_i2c_smbus_init_t; + +/** + ******************************************************************************* + ** \brief I2c digital filter mode enumeration + ** + ******************************************************************************/ +typedef enum en_i2c_digital_filter_mode +{ + Filter1BaseCycle = 0u, ///< I2C digital filter ability 1 base cycle + Filter2BaseCycle = 1u, ///< I2C digital filter ability 2 base cycle + Filter3BaseCycle = 2u, ///< I2C digital filter ability 3 base cycle + Filter4BaseCycle = 3u, ///< I2C digital filter ability 4 base cycle +}en_i2c_digital_filter_mode_t; + +/** + ******************************************************************************* + ** \brief I2c address bit enumeration + ** + ******************************************************************************/ +typedef enum en_address_bit +{ + Adr7bit = 0u, ///< I2C address length is 7 bits + Adr10bit = 1u, ///< I2C address length is 10 bits +}en_address_bit_t; + +/** + ******************************************************************************* + ** \brief I2c transfer direction enumeration + ** + ******************************************************************************/ +typedef enum en_trans_direction +{ + I2CDirTrans = 0u, + I2CDirReceive = 1u, +}en_trans_direction_t; + +/** + ******************************************************************************* + ** \brief I2c clock timeout switch enumeration + ** + ******************************************************************************/ +typedef enum en_clock_timeout_switch +{ + TimeoutFunOff = 0u, ///< I2C SCL pin time out function off + LowTimerOutOn = 3u, ///< I2C SCL pin high level time out function on + HighTimeOutOn = 5u, ///< I2C SCL pin low level time out function on + BothTimeOutOn = 7u, ///< I2C SCL pin both(low and high) level time out function on +}en_clock_timeout_switch_t; + +/** + ******************************************************************************* + ** \brief I2c clock timeout initialize structure + ** + ******************************************************************************/ +typedef struct stc_clock_timeout_init +{ + en_clock_timeout_switch_t enClkTimeOutSwitch; ///< I2C clock timeout function switch + uint16_t u16TimeOutHigh; ///< I2C clock timeout period for High level + uint16_t u16TimeOutLow; ///< I2C clock timeout period for Low level +}stc_clock_timeout_init_t; + +/** + ******************************************************************************* + ** \brief I2c ACK config enumeration + ** + ******************************************************************************/ +typedef enum en_i2c_ack_config +{ + I2c_ACK = 0u, + I2c_NACK = 1u, +}en_i2c_ack_config_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* define interrupt enable bit for I2C_CR2 register */ +#define I2C_CR2_STARTIE (0x00000001ul) +#define I2C_CR2_SLADDR0EN (0x00000002ul) +#define I2C_CR2_SLADDR1EN (0x00000004ul) +#define I2C_CR2_TENDIE (0x00000008ul) +#define I2C_CR2_STOPIE (0x00000010ul) +#define I2C_CR2_RFULLIE (0x00000040ul) +#define I2C_CR2_TEMPTYIE (0x00000080ul) +#define I2C_CR2_ARLOIE (0x00000200ul) +#define I2C_CR2_NACKIE (0x00001000ul) +#define I2C_CR2_TMOURIE (0x00004000ul) +#define I2C_CR2_GENCALLIE (0x00100000ul) +#define I2C_CR2_SMBDEFAULTIE (0x00200000ul) +#define I2C_CR2_SMBHOSTIE (0x00400000ul) +#define I2C_CR2_SMBALRTIE (0x00800000ul) + +/* define status bit for I2C_SR register */ +#define I2C_SR_STARTF (0x00000001ul) +#define I2C_SR_SLADDR0F (0x00000002ul) +#define I2C_SR_SLADDR1F (0x00000004ul) +#define I2C_SR_TENDF (0x00000008ul) +#define I2C_SR_STOPF (0x00000010ul) +#define I2C_SR_RFULLF (0x00000040ul) +#define I2C_SR_TEMPTYF (0x00000080ul) +#define I2C_SR_ARLOF (0x00000200ul) +#define I2C_SR_ACKRF (0x00000400ul) +#define I2C_SR_NACKF (0x00001000ul) +#define I2C_SR_TMOUTF (0x00004000ul) +#define I2C_SR_MSL (0x00010000ul) +#define I2C_SR_BUSY (0x00020000ul) +#define I2C_SR_TRA (0x00040000ul) +#define I2C_SR_GENCALLF (0x00100000ul) +#define I2C_SR_SMBDEFAULTF (0x00200000ul) +#define I2C_SR_SMBHOSTF (0x00400000ul) +#define I2C_SR_SMBALRTF (0x00800000ul) + +/* define status clear bit for I2C_CLR register*/ +#define I2C_CLR_STARTFCLR (0x00000001ul) +#define I2C_CLR_SLADDR0FCLR (0x00000002ul) +#define I2C_CLR_SLADDR1FCLR (0x00000004ul) +#define I2C_CLR_TENDFCLR (0x00000008ul) +#define I2C_CLR_STOPFCLR (0x00000010ul) +#define I2C_CLR_RFULLFCLR (0x00000040ul) +#define I2C_CLR_TEMPTYFCLR (0x00000080ul) +#define I2C_CLR_ARLOFCLR (0x00000200ul) +#define I2C_CLR_NACKFCLR (0x00001000ul) +#define I2C_CLR_TMOUTFCLR (0x00004000ul) +#define I2C_CLR_GENCALLFCLR (0x00100000ul) +#define I2C_CLR_SMBDEFAULTFCLR (0x00200000ul) +#define I2C_CLR_SMBHOSTFCLR (0x00400000ul) +#define I2C_CLR_SMBALRTFCLR (0x00800000ul) +#define I2C_CLR_MASK (0x00F056DFul) + +/* I2C_Clock_Division I2C clock division */ +#define I2C_CLK_DIV1 (0ul) /* I2c source clock/1 */ +#define I2C_CLK_DIV2 (1ul) /* I2c source clock/2 */ +#define I2C_CLK_DIV4 (2ul) /* I2c source clock/4 */ +#define I2C_CLK_DIV8 (3ul) /* I2c source clock/8 */ +#define I2C_CLK_DIV16 (4ul) /* I2c source clock/16 */ +#define I2C_CLK_DIV32 (5ul) /* I2c source clock/32 */ +#define I2C_CLK_DIV64 (6ul) /* I2c source clock/64 */ +#define I2C_CLK_DIV128 (7ul) /* I2c source clock/128 */ +/** + * @} + */ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t I2C_BaudrateConfig(M4_I2C_TypeDef* pstcI2Cx, const stc_i2c_init_t* pstcI2cInit, float32_t *pf32Error); +en_result_t I2C_DeInit(M4_I2C_TypeDef* pstcI2Cx); +en_result_t I2C_Init(M4_I2C_TypeDef* pstcI2Cx, const stc_i2c_init_t* pstcI2cInit, float32_t *pf32Error); +void I2C_Cmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +en_result_t I2C_SmbusConfig(M4_I2C_TypeDef* pstcI2Cx, const stc_i2c_smbus_init_t* pstcI2C_SmbusInitStruct); +void I2C_SmBusCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_SoftwareResetCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); + +//////////////////////////////////////////////////////////////////////////////////////// +void I2C_DigitalFilterConfig(M4_I2C_TypeDef* pstcI2Cx, en_i2c_digital_filter_mode_t enDigiFilterMode); +void I2C_DigitalFilterCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_AnalogFilterCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_GeneralCallCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_SlaveAdr0Config(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState, en_address_bit_t enAdrMode, uint32_t u32Adr); +void I2C_SlaveAdr1Config(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState, en_address_bit_t enAdrMode, uint32_t u32Adr); +en_result_t I2C_ClkTimeOutConfig(M4_I2C_TypeDef* pstcI2Cx, const stc_clock_timeout_init_t* pstcTimoutInit); +void I2C_IntCmd(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32IntEn, en_functional_state_t enNewState); +void I2C_FastAckCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_BusWaitCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); + +/////////////////////////////////////////////////////////////////////////////////////// +void I2C_GenerateStart(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_GenerateReStart(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_GenerateStop(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState); +void I2C_WriteData(M4_I2C_TypeDef* pstcI2Cx, uint8_t u8Data); +uint8_t I2C_ReadData(M4_I2C_TypeDef* pstcI2Cx); +void I2C_AckConfig(M4_I2C_TypeDef* pstcI2Cx, en_i2c_ack_config_t u32AckConfig); +en_flag_status_t I2C_GetStatus(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32StatusBit); +void I2C_ClearStatus(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32StatusBit); + +/* High level functions for reference ********************************/ +en_result_t I2C_Start(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32Timeout); +en_result_t I2C_Restart(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32Timeout); +en_result_t I2C_TransAddr(M4_I2C_TypeDef* pstcI2Cx, uint8_t u8Addr, en_trans_direction_t enDir, uint32_t u32Timeout); +en_result_t I2C_Trans10BitAddr(M4_I2C_TypeDef* pstcI2Cx, uint16_t u16Addr, en_trans_direction_t enDir, uint32_t u32Timeout); +en_result_t I2C_TransData(M4_I2C_TypeDef* pstcI2Cx, uint8_t const au8TxData[], uint32_t u32Size, uint32_t u32Timeout); +en_result_t I2C_ReceiveData(M4_I2C_TypeDef* pstcI2Cx, uint8_t au8RxData[], uint32_t u32Size, uint32_t u32Timeout); +en_result_t I2C_Stop(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32Timeout); +en_result_t I2C_WaitStatus(const M4_I2C_TypeDef *pstcI2Cx, uint32_t u32Flag, en_flag_status_t enStatus, uint32_t u32Timeout); +en_result_t I2C_MasterDataReceiveAndStop(M4_I2C_TypeDef* pstcI2Cx, uint8_t au8RxData[], uint32_t u32Size, uint32_t u32Timeout); + +//@} // I2cGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_I2C_ENABLE */ + +#endif /* __HC32F460_I2C_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_i2s.h b/driver/inc/hc32f460_i2s.h new file mode 100644 index 0000000..210cf66 --- /dev/null +++ b/driver/inc/hc32f460_i2s.h @@ -0,0 +1,206 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_i2s.h + ** + ** A detailed description is available at + ** @link I2sGroup Inter-IC Sound Bus description @endlink + ** + ** - 2018-10-28 CDT First version for Device Driver Library of I2S. + ** + ******************************************************************************/ + +#ifndef __HC32F460_I2S_H__ +#define __HC32F460_I2S_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_I2S_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup I2sGroup Inter-IC Sound(I2S) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief I2S function + ******************************************************************************/ +typedef enum en_i2s_func +{ + TxEn = 0u, ///< Transfer enable function + TxIntEn = 1u, ///< Transfer interrupt enable function + RxEn = 2u, ///< receive enable function + RxIntEn = 3u, ///< receive interrupt enable function + ErrIntEn = 4u, ///< error interrupt enable function +}en_i2s_func_t; + + +/** + ******************************************************************************* + ** \brief I2S status flag + ******************************************************************************/ +typedef enum en_i2s_std +{ + TxBufAlarmFlag = 0u, + RxBufAlarmFlag = 1u, + TxBufEmptFlag = 2u, + TxBufFullFlag = 3u, + RxBufEmptFlag = 4u, + RxBufFullFlag = 5u, +}en_i2s_std_t; + +/** + ******************************************************************************* + ** \brief I2S clr flag + ******************************************************************************/ +typedef enum en_i2s_err_flag +{ + ClrTxErrFlag = 0u, + ClrRxErrFlag = 1u, +}en_i2s_err_flag_t; +/** + ******************************************************************************* + ** \brief I2S mode + ******************************************************************************/ +typedef enum en_i2s_mode +{ + I2sMaster = 0u, ///< I2S Master mode + I2sSlave = 1u, ///< I2S Slave mode +}en_i2s_mode_t; + +/** + ******************************************************************************* + ** \brief I2S full duplex mode + ******************************************************************************/ +typedef enum en_i2s_full_duplex_mode +{ + I2s_HalfDuplex = 0u, ///< I2S half duplex + I2s_FullDuplex = 1u, ///< I2S full duplex +}en_i2s_full_duplex_mode_t; + +/** + ******************************************************************************* + ** \brief I2S standard + ******************************************************************************/ +typedef enum en_i2s_standard +{ + Std_Philips = 0u, ///< I2S Philips standard + Std_MSBJust = 1u, ///< I2S MSB justified standart + Std_LSBJust = 2u, ///< I2S LSB justified standart + Std_PCM = 3u, ///< I2S PCM standart +}en_i2s_standard_t; + +/** + ******************************************************************************* + ** \brief I2S channel data length + ******************************************************************************/ +typedef enum en_i2s_ch_len +{ + I2s_ChLen_16Bit = 0u, + I2s_ChLen_32Bit = 1u, +}en_i2s_ch_len_t; + +/** + ******************************************************************************* + ** \brief I2S data length + ******************************************************************************/ +typedef enum en_i2s_data_len +{ + I2s_DataLen_16Bit = 0u, + I2s_DataLen_24Bit = 1u, + I2s_DataLen_32Bit = 2u, +}en_i2s_data_len_t; + +/** + ******************************************************************************* + ** \brief I2S configuration structure + ******************************************************************************/ +typedef struct stc_i2s_config +{ + en_i2s_mode_t enMode; ///< I2S mode + en_i2s_full_duplex_mode_t enFullDuplexMode; ///< I2S full duplex mode + uint32_t u32I2sInterClkFreq; ///< I2S internal clock frequency + en_i2s_standard_t enStandrad; ///< I2S standard + en_i2s_data_len_t enDataBits; ///< I2S data format, data bits + en_i2s_ch_len_t enChanelLen; ///< I2S channel length + en_functional_state_t enMcoOutEn; ///< I2S MCK output config + en_functional_state_t enExckEn; ///< I2S EXCK function config + uint32_t u32AudioFreq; ///< I2S audio frequecy +}stc_i2s_config_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* define audio frequency */ +#define I2S_AudioFreq_192k (192000ul) +#define I2S_AudioFreq_96k (96000ul) +#define I2S_AudioFreq_48k (48000ul) +#define I2S_AudioFreq_44k (44100ul) +#define I2S_AudioFreq_32k (32000ul) +#define I2S_AudioFreq_22k (22050ul) +#define I2S_AudioFreq_16k (16000ul) +#define I2S_AudioFreq_11k (11025ul) +#define I2S_AudioFreq_8k (8000ul) +#define I2S_AudioFreq_Default (2ul) + +/* if use external clock open this define */ +#define I2S_EXTERNAL_CLOCK_VAL (12288000ul) + +/* 0,1 or 2 config for tx or tx buffer interrupt warning level */ +#define RXBUF_IRQ_WL (1ul) +#define TXBUF_IRQ_WL (1ul) + +/* 0: Short frame synchronization; 1: Long frame synchronization */ +#define PCM_SYNC_FRAME (0ul) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t I2s_Init(M4_I2S_TypeDef* pstcI2sReg, const stc_i2s_config_t* pstcI2sCfg); +void I2S_SendData(M4_I2S_TypeDef* pstcI2sReg, uint32_t u32Data); +uint32_t I2S_RevData(const M4_I2S_TypeDef* pstcI2sReg); +void I2S_FuncCmd(M4_I2S_TypeDef* pstcI2sReg, en_i2s_func_t enFunc, en_functional_state_t enNewState); +en_flag_status_t I2S_GetStatus(M4_I2S_TypeDef* pstcI2sReg, en_i2s_std_t enStd); +en_flag_status_t I2S_GetErrFlag(M4_I2S_TypeDef* pstcI2sReg, en_i2s_err_flag_t enErrFlag); +void I2S_ClrErrFlag(M4_I2S_TypeDef* pstcI2sReg, en_i2s_err_flag_t enErrFlag); +en_result_t I2s_DeInit(M4_I2S_TypeDef* pstcI2sReg); + +//@} // I2sGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_I2S_ENABLE */ + +#endif /* __HC32F460_I2S_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_icg.h b/driver/inc/hc32f460_icg.h new file mode 100644 index 0000000..433b7bf --- /dev/null +++ b/driver/inc/hc32f460_icg.h @@ -0,0 +1,406 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_icg.h + ** + ** A detailed description is available at + ** @link IcgGroup Initialize configure description @endlink + ** + ** - 2018-10-15 CDT First version for Device Driver Library of ICG. + ** + ******************************************************************************/ +#ifndef __HC32F460_ICG_H__ +#define __HC32F460_ICG_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_ICG_ENABLE == DDL_ON) + +#define WATCH_DOG 1 + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup IcgGroup Initialize Configure(ICG) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief SWDT running state after reset + ******************************************************************************/ +#define SWDT_AUTO_START_AFTER_RESET ((uint16_t)0x0000) ///< SWDT Auto Start after reset +#define SWDT_STOP_AFTER_RESET ((uint16_t)0x0001) ///< SWDT stop after reset + +/** + ******************************************************************************* + ** \brief SWDT count underflow or refresh error trigger event type + ******************************************************************************/ +#define SWDT_INTERRUPT_REQUEST ((uint16_t)0x0000) ///< WDT trigger interrupt request +#define SWDT_RESET_REQUEST ((uint16_t)0x0002) ///< WDT trigger reset request + +/** + ******************************************************************************* + ** \brief SWDT count underflow cycle + ******************************************************************************/ +#define SWDT_COUNT_UNDERFLOW_CYCLE_256 ((uint16_t)0x0000) ///< 256 clock cycle +#define SWDT_COUNT_UNDERFLOW_CYCLE_4096 ((uint16_t)0x0004) ///< 4096 clock cycle +#define SWDT_COUNT_UNDERFLOW_CYCLE_16384 ((uint16_t)0x0008) ///< 16384 clock cycle +#define SWDT_COUNT_UNDERFLOW_CYCLE_65536 ((uint16_t)0x000C) ///< 65536 clock cycle + +/** + ******************************************************************************* + ** \brief SWDT count clock division + ******************************************************************************/ +#define SWDT_COUNT_SWDTCLK_DIV1 ((uint16_t)0x0000) ///< SWDTCLK +#define SWDT_COUNT_SWDTCLK_DIV16 ((uint16_t)0x0040) ///< SWDTCLK/16 +#define SWDT_COUNT_SWDTCLK_DIV32 ((uint16_t)0x0050) ///< SWDTCLK/32 +#define SWDT_COUNT_SWDTCLK_DIV64 ((uint16_t)0x0060) ///< SWDTCLK/64 +#define SWDT_COUNT_SWDTCLK_DIV128 ((uint16_t)0x0070) ///< SWDTCLK/128 +#define SWDT_COUNT_SWDTCLK_DIV256 ((uint16_t)0x0080) ///< SWDTCLK/256 +#define SWDT_COUNT_SWDTCLK_DIV2048 ((uint16_t)0x00B0) ///< SWDTCLK/2048 + +/** + ******************************************************************************* + ** \brief SWDT allow refresh percent range + ******************************************************************************/ +#define SWDT_100PCT ((uint16_t)0x0000) ///< 100% +#define SWDT_0To25PCT ((uint16_t)0x0100) ///< 0%~25% +#define SWDT_25To50PCT ((uint16_t)0x0200) ///< 25%~50% +#define SWDT_0To50PCT ((uint16_t)0x0300) ///< 0%~50% +#define SWDT_50To75PCT ((uint16_t)0x0400) ///< 50%~75% +#define SWDT_0To25PCT_50To75PCT ((uint16_t)0x0500) ///< 0%~25% & 50%~75% +#define SWDT_25To75PCT ((uint16_t)0x0600) ///< 25%~75% +#define SWDT_0To75PCT ((uint16_t)0x0700) ///< 0%~75% +#define SWDT_75To100PCT ((uint16_t)0x0800) ///< 75%~100% +#define SWDT_0To25PCT_75To100PCT ((uint16_t)0x0900) ///< 0%~25% & 75%~100% +#define SWDT_25To50PCT_75To100PCT ((uint16_t)0x0A00) ///< 25%~50% & 75%~100% +#define SWDT_0To50PCT_75To100PCT ((uint16_t)0x0B00) ///< 0%~50% & 75%~100% +#define SWDT_50To100PCT ((uint16_t)0x0C00) ///< 50%~100% +#define SWDT_0To25PCT_50To100PCT ((uint16_t)0x0D00) ///< 0%~25% & 50%~100% +#define SWDT_25To100PCT ((uint16_t)0x0E00) ///< 25%~100% +#define SWDT_0To100PCT ((uint16_t)0x0F00) ///< 0%~100% + +/** + ******************************************************************************* + ** \brief SWDT count control in the sleep/stop mode + ******************************************************************************/ +#define SWDT_SPECIAL_MODE_COUNT_CONTINUE ((uint16_t)0x0000) ///< SWDT count continue in the sleep/stop mode +#define SWDT_SPECIAL_MODE_COUNT_STOP ((uint16_t)0x1000) ///< SWDT count stop in the sleep/stop mode + +/** + ******************************************************************************* + ** \brief WDT running state after reset + ******************************************************************************/ +#define WDT_AUTO_START_AFTER_RESET ((uint16_t)0x0000) ///< WDT Auto Start after reset +#define WDT_STOP_AFTER_RESET ((uint16_t)0x0001) ///< WDT stop after reset + +/** + ******************************************************************************* + ** \brief WDT count underflow or refresh error trigger event type + ******************************************************************************/ +#define WDT_INTERRUPT_REQUEST ((uint16_t)0x0000) ///< WDT trigger interrupt request +#define WDT_RESET_REQUEST ((uint16_t)0x0002) ///< WDT trigger reset request + +/** + ******************************************************************************* + ** \brief WDT count underflow cycle + ******************************************************************************/ +#define WDT_COUNT_UNDERFLOW_CYCLE_256 ((uint16_t)0x0000) ///< 256 clock cycle +#define WDT_COUNT_UNDERFLOW_CYCLE_4096 ((uint16_t)0x0004) ///< 4096 clock cycle +#define WDT_COUNT_UNDERFLOW_CYCLE_16384 ((uint16_t)0x0008) ///< 16384 clock cycle +#define WDT_COUNT_UNDERFLOW_CYCLE_65536 ((uint16_t)0x000C) ///< 65536 clock cycle + +/** + ******************************************************************************* + ** \brief WDT count clock division + ******************************************************************************/ +#define WDT_COUNT_PCLK3_DIV4 ((uint16_t)0x0020) ///< PCLK3/4 +#define WDT_COUNT_PCLK3_DIV64 ((uint16_t)0x0060) ///< PCLK3/64 +#define WDT_COUNT_PCLK3_DIV128 ((uint16_t)0x0070) ///< PCLK3/128 +#define WDT_COUNT_PCLK3_DIV256 ((uint16_t)0x0080) ///< PCLK3/256 +#define WDT_COUNT_PCLK3_DIV512 ((uint16_t)0x0090) ///< PCLK3/512 +#define WDT_COUNT_PCLK3_DIV1024 ((uint16_t)0x00A0) ///< PCLK3/1024 +#define WDT_COUNT_PCLK3_DIV2048 ((uint16_t)0x00B0) ///< PCLK3/2048 +#define WDT_COUNT_PCLK3_DIV8192 ((uint16_t)0x00D0) ///< PCLK3/8192 + +/** + ******************************************************************************* + ** \brief WDT allow refresh percent range + ******************************************************************************/ +#define WDT_100PCT ((uint16_t)0x0000) ///< 100% +#define WDT_0To25PCT ((uint16_t)0x0100) ///< 0%~25% +#define WDT_25To50PCT ((uint16_t)0x0200) ///< 25%~50% +#define WDT_0To50PCT ((uint16_t)0x0300) ///< 0%~50% +#define WDT_50To75PCT ((uint16_t)0x0400) ///< 50%~75% +#define WDT_0To25PCT_50To75PCT ((uint16_t)0x0500) ///< 0%~25% & 50%~75% +#define WDT_25To75PCT ((uint16_t)0x0600) ///< 25%~75% +#define WDT_0To75PCT ((uint16_t)0x0700) ///< 0%~75% +#define WDT_75To100PCT ((uint16_t)0x0800) ///< 75%~100% +#define WDT_0To25PCT_75To100PCT ((uint16_t)0x0900) ///< 0%~25% & 75%~100% +#define WDT_25To50PCT_75To100PCT ((uint16_t)0x0A00) ///< 25%~50% & 75%~100% +#define WDT_0To50PCT_75To100PCT ((uint16_t)0x0B00) ///< 0%~50% & 75%~100% +#define WDT_50To100PCT ((uint16_t)0x0C00) ///< 50%~100% +#define WDT_0To25PCT_50To100PCT ((uint16_t)0x0D00) ///< 0%~25% & 50%~100% +#define WDT_25To100PCT ((uint16_t)0x0E00) ///< 25%~100% +#define WDT_0To100PCT ((uint16_t)0x0F00) ///< 0%~100% + +/** + ******************************************************************************* + ** \brief WDT count control in the sleep mode + ******************************************************************************/ +#define WDT_SPECIAL_MODE_COUNT_CONTINUE ((uint16_t)0x0000) ///< WDT count continue in the sleep mode +#define WDT_SPECIAL_MODE_COUNT_STOP ((uint16_t)0x1000) ///< WDT count stop in the sleep mode + +/** + ******************************************************************************* + ** \brief HRC frequency select + ******************************************************************************/ +#define HRC_FREQUENCY_20MHZ ((uint16_t)0x0000) ///< HRC frequency 20MHZ +#define HRC_FREQUENCY_16MHZ ((uint16_t)0x0001) ///< HRC frequency 16MHZ + +/** + ******************************************************************************* + ** \brief HRC oscillation state control + ******************************************************************************/ +#define HRC_OSCILLATION_START ((uint16_t)0x0000) ///< HRC oscillation start +#define HRC_OSCILLATION_STOP ((uint16_t)0x0100) ///< HRC oscillation stop + +/** + ******************************************************************************* + ** \brief VDU0 threshold voltage select + ******************************************************************************/ +#define VDU0_VOLTAGE_THRESHOLD_1P5 ((uint8_t)0x00) ///< VDU0 voltage threshold 1.9V +#define VDU0_VOLTAGE_THRESHOLD_2P0 ((uint8_t)0x01) ///< VDU0 voltage threshold 2.0V +#define VDU0_VOLTAGE_THRESHOLD_2P1 ((uint8_t)0x02) ///< VDU0 voltage threshold 2.1V +#define VDU0_VOLTAGE_THRESHOLD_2P3 ((uint8_t)0x03) ///< VDU0 voltage threshold 2.3V + +/** + ******************************************************************************* + ** \brief VDU0 running state after reset + ******************************************************************************/ +#define VDU0_START_AFTER_RESET ((uint8_t)0x00) ///< VDU0 start after reset +#define VDU0_STOP_AFTER_RESET ((uint8_t)0x04) ///< VDU0 stop after reset + +/** + ******************************************************************************* + ** \brief NMI pin filter sample clock division + ******************************************************************************/ +#define NMI_PIN_FILTER_PCLK3_DIV1 ((uint8_t)0x00) ///< PCLK3 +#define NMI_PIN_FILTER_PCLK3_DIV8 ((uint8_t)0x04) ///< PCLK3/8 +#define NMI_PIN_FILTER_PCLK3_DIV32 ((uint8_t)0x08) ///< PCLK3/32 +#define NMI_PIN_FILTER_PCLK3_DIV64 ((uint8_t)0x0C) ///< PCLK3/64 + +/** + ******************************************************************************* + ** \brief NMI pin trigger edge type + ******************************************************************************/ +#define NMI_PIN_TRIGGER_EDGE_FALLING ((uint8_t)0x00) ///< Falling edge trigger +#define NMI_PIN_TRIGGER_EDGE_RISING ((uint8_t)0x10) ///< Rising edge trigger + +/** + ******************************************************************************* + ** \brief Enable or disable NMI pin interrupt request + ******************************************************************************/ +#define NMI_PIN_IRQ_DISABLE ((uint8_t)0x00) ///< Disable NMI pin interrupt request +#define NMI_PIN_IRQ_ENABLE ((uint8_t)0x20) ///< Enable NMI pin interrupt request + +/** + ******************************************************************************* + ** \brief Enable or disable NMI digital filter function + ******************************************************************************/ +#define NMI_DIGITAL_FILTER_DISABLE ((uint8_t)0x00) ///< Disable NMI digital filter +#define NMI_DIGITAL_FILTER_ENABLE ((uint8_t)0x40) ///< Enable NMI digital filter + +/** + ******************************************************************************* + ** \brief Enable or disable NMI pin ICG function + ******************************************************************************/ +#define NMI_PIN_ICG_FUNCTION_DISABLE ((uint8_t)0x80) ///< Disable NMI pin ICG function +#define NMI_PIN_ICG_FUNCTION_ENABLE ((uint8_t)0x00) ///< Enable NMI pin ICG function + +/** + ******************************************************************************* + ** \brief ICG start configure function on/off + ******************************************************************************/ +#ifndef ICG_FUNCTION_ON +#define ICG_FUNCTION_ON (1u) +#endif + +#ifndef ICG_FUNCTION_OFF +#define ICG_FUNCTION_OFF (0u) +#endif + +/** + ******************************************************************************* + ** \brief SWDT hardware start configuration + ******************************************************************************/ +/*!< Enable or disable SWDT hardware start */ +#if (WATCH_DOG == 1) +#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_ON) +#else +#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_OFF) +#endif + +/*!< SWDT register config */ +#define ICG0_SWDT_AUTS (SWDT_AUTO_START_AFTER_RESET) +#define ICG0_SWDT_ITS (SWDT_RESET_REQUEST) +#define ICG0_SWDT_PERI (SWDT_COUNT_UNDERFLOW_CYCLE_65536) // λʱ 0.8 +#define ICG0_SWDT_CKS (SWDT_COUNT_SWDTCLK_DIV16) +#define ICG0_SWDT_WDPT (SWDT_0To100PCT) +#define ICG0_SWDT_SLTPOFF (SWDT_SPECIAL_MODE_COUNT_CONTINUE) + +/*!< SWDT register config value */ +#if ICG0_SWDT_HARDWARE_START == ICG_FUNCTION_ON +#define ICG0_SWDT_REG_CONFIG (ICG0_SWDT_AUTS | ICG0_SWDT_ITS | ICG0_SWDT_PERI | \ + ICG0_SWDT_CKS | ICG0_SWDT_WDPT | ICG0_SWDT_SLTPOFF) +#else +#define ICG0_SWDT_REG_CONFIG ((uint16_t)0xFFFF) +#endif + +/** + ******************************************************************************* + ** \brief WDT hardware start configuration + ******************************************************************************/ +/*!< Enable or disable WDT hardware start */ +#define ICG0_WDT_HARDWARE_START (ICG_FUNCTION_OFF) + +/*!< WDT register config */ +#define ICG0_WDT_AUTS (WDT_STOP_AFTER_RESET) +#define ICG0_WDT_ITS (WDT_RESET_REQUEST) +#define ICG0_WDT_PERI (WDT_COUNT_UNDERFLOW_CYCLE_16384) +#define ICG0_WDT_CKS (WDT_COUNT_PCLK3_DIV8192) +#define ICG0_WDT_WDPT (WDT_0To100PCT) +#define ICG0_WDT_SLPOFF (WDT_SPECIAL_MODE_COUNT_STOP) + +/*!< WDT register config value */ +#if ICG0_WDT_HARDWARE_START == ICG_FUNCTION_ON +#define ICG0_WDT_REG_CONFIG (ICG0_WDT_AUTS | ICG0_WDT_ITS | ICG0_WDT_PERI | \ + ICG0_WDT_CKS | ICG0_WDT_WDPT | ICG0_WDT_SLPOFF) +#else +#define ICG0_WDT_REG_CONFIG ((uint16_t)0xFFFF) +#endif + +/** + ******************************************************************************* + ** \brief HRC hardware start configuration + ******************************************************************************/ +/*!< Enable or disable HRC hardware start */ +#define ICG1_HRC_HARDWARE_START (ICG_FUNCTION_ON) + +/*!< HRC register config */ +#define ICG1_HRC_FREQSEL (HRC_FREQUENCY_16MHZ) +#define ICG1_HRC_STOP (HRC_OSCILLATION_START) + +/*!< HRC register config value */ +#if ICG1_HRC_HARDWARE_START == ICG_FUNCTION_ON +#define ICG1_HRC_REG_CONFIG (ICG1_HRC_FREQSEL | ICG1_HRC_STOP) +#else +#define ICG1_HRC_REG_CONFIG ((uint16_t)0xFFFF) +#endif + +/** + ******************************************************************************* + ** \brief VDU0 hardware start configuration + ******************************************************************************/ +/*!< Enable or disable VDU0 hardware start */ +#define ICG1_VDU0_HARDWARE_START (ICG_FUNCTION_OFF) + +/*!< VDU0 register config */ +#define ICG1_VDU0_BOR_LEV (VDU0_VOLTAGE_THRESHOLD_2P3) +#define ICG1_VDU0_BORDIS (VDU0_STOP_AFTER_RESET) + +/*!< VDU0 register config value */ +#if ICG1_VDU0_HARDWARE_START == ICG_FUNCTION_ON +#define ICG1_VDU0_REG_CONFIG (ICG1_VDU0_BOR_LEV | ICG1_VDU0_BORDIS) +#else +#define ICG1_VDU0_REG_CONFIG ((uint8_t)0xFF) +#endif + +/** + ******************************************************************************* + ** \brief NMI hardware start configuration + ******************************************************************************/ +/*!< Enable or disable NMI hardware start */ +#define ICG1_NMI_HARDWARE_START (ICG_FUNCTION_OFF) + +/*!< NMI register config */ +#define ICG1_NMI_SMPCLK (NMI_PIN_FILTER_PCLK3_DIV1) +#define ICG1_NMI_TRG (NMI_PIN_TRIGGER_EDGE_RISING) +#define ICG1_NMI_IMR (NMI_PIN_IRQ_DISABLE) +#define ICG1_NMI_NFEN (NMI_DIGITAL_FILTER_DISABLE) +#define ICG1_NMI_ICGENA (NMI_PIN_ICG_FUNCTION_DISABLE) + +/*!< NMI register config value */ +#if ICG1_NMI_HARDWARE_START == ICG_FUNCTION_ON +#define ICG1_NMI_REG_CONFIG (ICG1_NMI_SMPCLK | ICG1_NMI_TRG | \ + ICG1_NMI_IMR | ICG1_NMI_NFEN | ICG1_NMI_ICGENA) +#else +#define ICG1_NMI_REG_CONFIG ((uint8_t)0xFF) +#endif + +/** + ******************************************************************************* + ** \brief ICG registers configuration + ******************************************************************************/ +/*!< ICG0 register value */ +#define ICG0_REGISTER_CONSTANT (((uint32_t)ICG0_WDT_REG_CONFIG << 16) | \ + ((uint32_t)ICG0_SWDT_REG_CONFIG) | \ + ((uint32_t)0xE000E000ul)) +/*!< ICG1 register value */ +#define ICG1_REGISTER_CONSTANT (((uint32_t)ICG1_NMI_REG_CONFIG << 24) | \ + ((uint32_t)ICG1_VDU0_REG_CONFIG << 16) | \ + ((uint32_t)ICG1_HRC_REG_CONFIG) | \ + ((uint32_t)0x03F8FEFEul)) +/*!< ICG2~7 register reserved value */ +#define ICG2_REGISTER_CONSTANT ((uint32_t)0xFFFFFFFFul) +#define ICG3_REGISTER_CONSTANT ((uint32_t)0xFFFFFFFFul) +#define ICG4_REGISTER_CONSTANT ((uint32_t)0xFFFFFFFFul) +#define ICG5_REGISTER_CONSTANT ((uint32_t)0xFFFFFFFFul) +#define ICG6_REGISTER_CONSTANT ((uint32_t)0xFFFFFFFFul) +#define ICG7_REGISTER_CONSTANT ((uint32_t)0xFFFFFFFFul) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ + +//@} // IcgGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_ICG_ENABLE */ + +#endif /* __HC32F460_ICG_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_interrupts.h b/driver/inc/hc32f460_interrupts.h new file mode 100644 index 0000000..d63da9e --- /dev/null +++ b/driver/inc/hc32f460_interrupts.h @@ -0,0 +1,542 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_interrupts.h + ** + ** A detailed description is available at + ** @link InterruptGroup Interrupt description @endlink + ** + ** - 2018-10-12 CDT First version for Device Driver Library of interrupt. + ** + ******************************************************************************/ +#ifndef __HC32F460_INTERRUPTS_H___ +#define __HC32F460_INTERRUPTS_H___ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_INTERRUPTS_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup InterruptGroup Interrupt + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief IRQ registration structure definition + ******************************************************************************/ +typedef struct stc_irq_regi_conf +{ + en_int_src_t enIntSrc; + IRQn_Type enIRQn; + func_ptr_t pfnCallback; +}stc_irq_regi_conf_t; + +/** + ******************************************************************************* + ** \brief stop mode interrupt wakeup source enumeration + ******************************************************************************/ +typedef enum en_int_wkup_src +{ + Extint0WU = 1u << 0, + Extint1WU = 1u << 1, + Extint2WU = 1u << 2, + Extint3WU = 1u << 3, + Extint4WU = 1u << 4, + Extint5WU = 1u << 5, + Extint6WU = 1u << 6, + Extint7WU = 1u << 7, + Extint8WU = 1u << 8, + Extint9WU = 1u << 9, + Extint10WU = 1u << 10, + Extint11WU = 1u << 11, + Extint12WU = 1u << 12, + Extint13WU = 1u << 13, + Extint14WU = 1u << 14, + Extint15WU = 1u << 15, + SwdtWU = 1u << 16, + Vdu1WU = 1u << 17, + Vdu2WU = 1u << 18, + CmpWU = 1u << 19, + WakeupTimerWU = 1u << 20, + RtcAlarmWU = 1u << 21, + RtcPeriodWU = 1u << 22, + Timer0WU = 1u << 23, + Usart1RxWU = 1u << 25, +}en_int_wkup_src_t; + +/** + ******************************************************************************* + ** \brief event enumeration + ******************************************************************************/ +typedef enum en_evt +{ + Event0 = 1u << 0, + Event1 = 1u << 1, + Event2 = 1u << 2, + Event3 = 1u << 3, + Event4 = 1u << 4, + Event5 = 1u << 5, + Event6 = 1u << 6, + Event7 = 1u << 7, + Event8 = 1u << 8, + Event9 = 1u << 9, + Event10 = 1u << 10, + Event11 = 1u << 11, + Event12 = 1u << 12, + Event13 = 1u << 13, + Event14 = 1u << 14, + Event15 = 1u << 15, + Event16 = 1u << 16, + Event17 = 1u << 17, + Event18 = 1u << 18, + Event19 = 1u << 19, + Event20 = 1u << 20, + Event21 = 1u << 21, + Event22 = 1u << 22, + Event23 = 1u << 23, + Event24 = 1u << 24, + Event25 = 1u << 25, + Event26 = 1u << 26, + Event27 = 1u << 27, + Event28 = 1u << 28, + Event29 = 1u << 29, + Event30 = 1u << 30, + Event31 = 1u << 31, +}en_evt_t; + +/** + ******************************************************************************* + ** \brief interrupt enumeration + ******************************************************************************/ +typedef enum en_int +{ + Int0 = 1u << 0, + Int1 = 1u << 1, + Int2 = 1u << 2, + Int3 = 1u << 3, + Int4 = 1u << 4, + Int5 = 1u << 5, + Int6 = 1u << 6, + Int7 = 1u << 7, + Int8 = 1u << 8, + Int9 = 1u << 9, + Int10 = 1u << 10, + Int11 = 1u << 11, + Int12 = 1u << 12, + Int13 = 1u << 13, + Int14 = 1u << 14, + Int15 = 1u << 15, + Int16 = 1u << 16, + Int17 = 1u << 17, + Int18 = 1u << 18, + Int19 = 1u << 19, + Int20 = 1u << 20, + Int21 = 1u << 21, + Int22 = 1u << 22, + Int23 = 1u << 23, + Int24 = 1u << 24, + Int25 = 1u << 25, + Int26 = 1u << 26, + Int27 = 1u << 27, + Int28 = 1u << 28, + Int29 = 1u << 29, + Int30 = 1u << 30, + Int31 = 1u << 31, +}en_int_t; + + +/*! Bit mask definition*/ +#define BIT_MASK_00 (1ul << 0) +#define BIT_MASK_01 (1ul << 1) +#define BIT_MASK_02 (1ul << 2) +#define BIT_MASK_03 (1ul << 3) +#define BIT_MASK_04 (1ul << 4) +#define BIT_MASK_05 (1ul << 5) +#define BIT_MASK_06 (1ul << 6) +#define BIT_MASK_07 (1ul << 7) +#define BIT_MASK_08 (1ul << 8) +#define BIT_MASK_09 (1ul << 9) +#define BIT_MASK_10 (1ul << 10) +#define BIT_MASK_11 (1ul << 11) +#define BIT_MASK_12 (1ul << 12) +#define BIT_MASK_13 (1ul << 13) +#define BIT_MASK_14 (1ul << 14) +#define BIT_MASK_15 (1ul << 15) +#define BIT_MASK_16 (1ul << 16) +#define BIT_MASK_17 (1ul << 17) +#define BIT_MASK_18 (1ul << 18) +#define BIT_MASK_19 (1ul << 19) +#define BIT_MASK_20 (1ul << 20) +#define BIT_MASK_21 (1ul << 21) +#define BIT_MASK_22 (1ul << 22) +#define BIT_MASK_23 (1ul << 23) +#define BIT_MASK_24 (1ul << 24) +#define BIT_MASK_25 (1ul << 25) +#define BIT_MASK_26 (1ul << 26) +#define BIT_MASK_27 (1ul << 27) +#define BIT_MASK_28 (1ul << 28) +#define BIT_MASK_29 (1ul << 29) +#define BIT_MASK_30 (1ul << 30) +#define BIT_MASK_31 (1ul << 31) + +/*! Default Priority for IRQ, Possible values are 0 (high priority) to 15 (low priority) */ +#define DDL_IRQ_PRIORITY_DEFAULT 15u + +/*! Interrupt priority level 00 ~ 15*/ +#define DDL_IRQ_PRIORITY_00 (0u) +#define DDL_IRQ_PRIORITY_01 (1u) +#define DDL_IRQ_PRIORITY_02 (2u) +#define DDL_IRQ_PRIORITY_03 (3u) +#define DDL_IRQ_PRIORITY_04 (4u) +#define DDL_IRQ_PRIORITY_05 (5u) +#define DDL_IRQ_PRIORITY_06 (6u) +#define DDL_IRQ_PRIORITY_07 (7u) +#define DDL_IRQ_PRIORITY_08 (8u) +#define DDL_IRQ_PRIORITY_09 (9u) +#define DDL_IRQ_PRIORITY_10 (10u) +#define DDL_IRQ_PRIORITY_11 (11u) +#define DDL_IRQ_PRIORITY_12 (12u) +#define DDL_IRQ_PRIORITY_13 (13u) +#define DDL_IRQ_PRIORITY_14 (14u) +#define DDL_IRQ_PRIORITY_15 (15u) + +/** + ******************************************************************************* + ** \brief AOS software trigger function + ** + ******************************************************************************/ +__STATIC_INLINE void AOS_SW_Trigger(void) +{ + bM4_AOS_INT_SFTTRG_STRG = 1u; +} + +/** + ******************************************************************************* + ** \brief AOS common trigger source 1 config. + ** + ******************************************************************************/ +__STATIC_INLINE void AOS_COM_Trigger1(en_event_src_t enTrig) +{ + M4_AOS->COMTRG1 = enTrig; +} + +/** + ******************************************************************************* + ** \brief AOS common trigger source 2 config. + ** + ******************************************************************************/ +__STATIC_INLINE void AOS_COM_Trigger2(en_event_src_t enTrig) +{ + M4_AOS->COMTRG2 = enTrig; +} + + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ +extern en_result_t enIrqRegistration(const stc_irq_regi_conf_t *pstcIrqRegiConf); +extern en_result_t enIrqResign(IRQn_Type enIRQn); +extern en_result_t enShareIrqEnable(en_int_src_t enIntSrc); +extern en_result_t enShareIrqDisable(en_int_src_t enIntSrc); +extern en_result_t enIntWakeupEnable(uint32_t u32WakeupSrc); +extern en_result_t enIntWakeupDisable(uint32_t u32WakeupSrc); +extern en_result_t enEventEnable(uint32_t u32Event); +extern en_result_t enEventDisable(uint32_t u32Event); +extern en_result_t enIntEnable(uint32_t u32Int); +extern en_result_t enIntDisable(uint32_t u32Int); + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +__WEAKDEF void NMI_IrqHandler(void); +__WEAKDEF void HardFault_IrqHandler(void); +__WEAKDEF void MemManage_IrqHandler(void); +__WEAKDEF void BusFault_IrqHandler(void); +__WEAKDEF void UsageFault_IrqHandler(void); +__WEAKDEF void SVC_IrqHandler(void); +__WEAKDEF void DebugMon_IrqHandler(void); +__WEAKDEF void PendSV_IrqHandler(void); +__WEAKDEF void SysTick_IrqHandler(void); + +__WEAKDEF void Extint00_IrqHandler(void); +__WEAKDEF void Extint01_IrqHandler(void); +__WEAKDEF void Extint02_IrqHandler(void); +__WEAKDEF void Extint03_IrqHandler(void); +__WEAKDEF void Extint04_IrqHandler(void); +__WEAKDEF void Extint05_IrqHandler(void); +__WEAKDEF void Extint06_IrqHandler(void); +__WEAKDEF void Extint07_IrqHandler(void); +__WEAKDEF void Extint08_IrqHandler(void); +__WEAKDEF void Extint09_IrqHandler(void); +__WEAKDEF void Extint10_IrqHandler(void); +__WEAKDEF void Extint11_IrqHandler(void); +__WEAKDEF void Extint12_IrqHandler(void); +__WEAKDEF void Extint13_IrqHandler(void); +__WEAKDEF void Extint14_IrqHandler(void); +__WEAKDEF void Extint15_IrqHandler(void); + +__WEAKDEF void Dma1Tc0_IrqHandler(void); +__WEAKDEF void Dma1Tc1_IrqHandler(void); +__WEAKDEF void Dma1Tc2_IrqHandler(void); +__WEAKDEF void Dma1Tc3_IrqHandler(void); +__WEAKDEF void Dma2Tc0_IrqHandler(void); +__WEAKDEF void Dma2Tc1_IrqHandler(void); +__WEAKDEF void Dma2Tc2_IrqHandler(void); +__WEAKDEF void Dma2Tc3_IrqHandler(void); +__WEAKDEF void Dma1Btc0_IrqHandler(void); +__WEAKDEF void Dma1Btc1_IrqHandler(void); +__WEAKDEF void Dma1Btc2_IrqHandler(void); +__WEAKDEF void Dma1Btc3_IrqHandler(void); +__WEAKDEF void Dma2Btc0_IrqHandler(void); +__WEAKDEF void Dma2Btc1_IrqHandler(void); +__WEAKDEF void Dma2Btc2_IrqHandler(void); +__WEAKDEF void Dma2Btc3_IrqHandler(void); +__WEAKDEF void Dma1Err0_IrqHandler(void); +__WEAKDEF void Dma1Err1_IrqHandler(void); +__WEAKDEF void Dma1Err2_IrqHandler(void); +__WEAKDEF void Dma1Err3_IrqHandler(void); +__WEAKDEF void Dma2Err0_IrqHandler(void); +__WEAKDEF void Dma2Err1_IrqHandler(void); +__WEAKDEF void Dma2Err2_IrqHandler(void); +__WEAKDEF void Dma2Err3_IrqHandler(void); + +__WEAKDEF void EfmPgmEraseErr_IrqHandler(void); +__WEAKDEF void EfmColErr_IrqHandler(void); +__WEAKDEF void EfmOpEnd_IrqHandler(void); +__WEAKDEF void QspiInt_IrqHandler(void); +__WEAKDEF void Dcu1_IrqHandler(void); +__WEAKDEF void Dcu2_IrqHandler(void); +__WEAKDEF void Dcu3_IrqHandler(void); +__WEAKDEF void Dcu4_IrqHandler(void); + +__WEAKDEF void Timer01GCMA_IrqHandler(void); +__WEAKDEF void Timer01GCMB_IrqHandler(void); +__WEAKDEF void Timer02GCMA_IrqHandler(void); +__WEAKDEF void Timer02GCMB_IrqHandler(void); + +__WEAKDEF void MainOscStop_IrqHandler(void); +__WEAKDEF void WakeupTimer_IrqHandler(void); +__WEAKDEF void Swdt_IrqHandler(void); + +__WEAKDEF void Timer61GCMA_IrqHandler(void); +__WEAKDEF void Timer61GCMB_IrqHandler(void); +__WEAKDEF void Timer61GCMC_IrqHandler(void); +__WEAKDEF void Timer61GCMD_IrqHandler(void); +__WEAKDEF void Timer61GCME_IrqHandler(void); +__WEAKDEF void Timer61GCMF_IrqHandler(void); +__WEAKDEF void Timer61GOV_IrqHandler(void); +__WEAKDEF void Timer61GUD_IrqHandler(void); +__WEAKDEF void Timer61GDT_IrqHandler(void); +__WEAKDEF void Timer61SCMA_IrqHandler(void); +__WEAKDEF void Timer61SCMB_IrqHandler(void); + +__WEAKDEF void Timer62GCMA_IrqHandler(void); +__WEAKDEF void Timer62GCMB_IrqHandler(void); +__WEAKDEF void Timer62GCMC_IrqHandler(void); +__WEAKDEF void Timer62GCMD_IrqHandler(void); +__WEAKDEF void Timer62GCME_IrqHandler(void); +__WEAKDEF void Timer62GCMF_IrqHandler(void); +__WEAKDEF void Timer62GOV_IrqHandler(void); +__WEAKDEF void Timer62GUD_IrqHandler(void); +__WEAKDEF void Timer62GDT_IrqHandler(void); +__WEAKDEF void Timer62SCMA_IrqHandler(void); +__WEAKDEF void Timer62SCMB_IrqHandler(void); + +__WEAKDEF void Timer63GCMA_IrqHandler(void); +__WEAKDEF void Timer63GCMB_IrqHandler(void); +__WEAKDEF void Timer63GCMC_IrqHandler(void); +__WEAKDEF void Timer63GCMD_IrqHandler(void); +__WEAKDEF void Timer63GCME_IrqHandler(void); +__WEAKDEF void Timer63GCMF_IrqHandler(void); +__WEAKDEF void Timer63GOV_IrqHandler(void); +__WEAKDEF void Timer63GUD_IrqHandler(void); +__WEAKDEF void Timer63GDT_IrqHandler(void); +__WEAKDEF void Timer63SCMA_IrqHandler(void); +__WEAKDEF void Timer63SCMB_IrqHandler(void); + +__WEAKDEF void TimerA1OV_IrqHandler(void); +__WEAKDEF void TimerA1UD_IrqHandler(void); +__WEAKDEF void TimerA1CMP_IrqHandler(void); +__WEAKDEF void TimerA2OV_IrqHandler(void); +__WEAKDEF void TimerA2UD_IrqHandler(void); +__WEAKDEF void TimerA2CMP_IrqHandler(void); +__WEAKDEF void TimerA3OV_IrqHandler(void); +__WEAKDEF void TimerA3UD_IrqHandler(void); +__WEAKDEF void TimerA3CMP_IrqHandler(void); +__WEAKDEF void TimerA4OV_IrqHandler(void); +__WEAKDEF void TimerA4UD_IrqHandler(void); +__WEAKDEF void TimerA4CMP_IrqHandler(void); +__WEAKDEF void TimerA5OV_IrqHandler(void); +__WEAKDEF void TimerA5UD_IrqHandler(void); +__WEAKDEF void TimerA5CMP_IrqHandler(void); +__WEAKDEF void TimerA6OV_IrqHandler(void); +__WEAKDEF void TimerA6UD_IrqHandler(void); +__WEAKDEF void TimerA6CMP_IrqHandler(void); + +__WEAKDEF void UsbGlobal_IrqHandler(void); + +__WEAKDEF void Usart1RxErr_IrqHandler(void); +__WEAKDEF void Usart1RxEnd_IrqHandler(void); +__WEAKDEF void Usart1TxEmpty_IrqHandler(void); +__WEAKDEF void Usart1TxEnd_IrqHandler(void); +__WEAKDEF void Usart1RxTO_IrqHandler(void); +__WEAKDEF void Usart2RxErr_IrqHandler(void); +__WEAKDEF void Usart2RxEnd_IrqHandler(void); +__WEAKDEF void Usart2TxEmpty_IrqHandler(void); +__WEAKDEF void Usart2TxEnd_IrqHandler(void); +__WEAKDEF void Usart2RxTO_IrqHandler(void); +__WEAKDEF void Usart3RxErr_IrqHandler(void); +__WEAKDEF void Usart3RxEnd_IrqHandler(void); +__WEAKDEF void Usart3TxEmpty_IrqHandler(void); +__WEAKDEF void Usart3TxEnd_IrqHandler(void); +__WEAKDEF void Usart3RxTO_IrqHandler(void); +__WEAKDEF void Usart4RxErr_IrqHandler(void); +__WEAKDEF void Usart4RxEnd_IrqHandler(void); +__WEAKDEF void Usart4TxEmpty_IrqHandler(void); +__WEAKDEF void Usart4TxEnd_IrqHandler(void); +__WEAKDEF void Usart4RxTO_IrqHandler(void); + +__WEAKDEF void Spi1RxEnd_IrqHandler(void); +__WEAKDEF void Spi1TxEmpty_IrqHandler(void); +__WEAKDEF void Spi1Err_IrqHandler(void); +__WEAKDEF void Spi1Idle_IrqHandler(void); +__WEAKDEF void Spi2RxEnd_IrqHandler(void); +__WEAKDEF void Spi2TxEmpty_IrqHandler(void); +__WEAKDEF void Spi2Err_IrqHandler(void); +__WEAKDEF void Spi2Idle_IrqHandler(void); +__WEAKDEF void Spi3RxEnd_IrqHandler(void); +__WEAKDEF void Spi3TxEmpty_IrqHandler(void); +__WEAKDEF void Spi3Err_IrqHandler(void); +__WEAKDEF void Spi3Idle_IrqHandler(void); +__WEAKDEF void Spi4RxEnd_IrqHandler(void); +__WEAKDEF void Spi4TxEmpty_IrqHandler(void); +__WEAKDEF void Spi4Err_IrqHandler(void); +__WEAKDEF void Spi4Idle_IrqHandler(void); + +__WEAKDEF void Timer41GCMUH_IrqHandler(void); +__WEAKDEF void Timer41GCMUL_IrqHandler(void); +__WEAKDEF void Timer41GCMVH_IrqHandler(void); +__WEAKDEF void Timer41GCMVL_IrqHandler(void); +__WEAKDEF void Timer41GCMWH_IrqHandler(void); +__WEAKDEF void Timer41GCMWL_IrqHandler(void); +__WEAKDEF void Timer41GOV_IrqHandler(void); +__WEAKDEF void Timer41GUD_IrqHandler(void); +__WEAKDEF void Timer41ReloadU_IrqHandler(void); +__WEAKDEF void Timer41ReloadV_IrqHandler(void); +__WEAKDEF void Timer41ReloadW_IrqHandler(void); +__WEAKDEF void Timer42GCMUH_IrqHandler(void); +__WEAKDEF void Timer42GCMUL_IrqHandler(void); +__WEAKDEF void Timer42GCMVH_IrqHandler(void); +__WEAKDEF void Timer42GCMVL_IrqHandler(void); +__WEAKDEF void Timer42GCMWH_IrqHandler(void); +__WEAKDEF void Timer42GCMWL_IrqHandler(void); +__WEAKDEF void Timer42GOV_IrqHandler(void); +__WEAKDEF void Timer42GUD_IrqHandler(void); +__WEAKDEF void Timer42ReloadU_IrqHandler(void); +__WEAKDEF void Timer42ReloadV_IrqHandler(void); +__WEAKDEF void Timer42ReloadW_IrqHandler(void); +__WEAKDEF void Timer43GCMUH_IrqHandler(void); +__WEAKDEF void Timer43GCMUL_IrqHandler(void); +__WEAKDEF void Timer43GCMVH_IrqHandler(void); +__WEAKDEF void Timer43GCMVL_IrqHandler(void); +__WEAKDEF void Timer43GCMWH_IrqHandler(void); +__WEAKDEF void Timer43GCMWL_IrqHandler(void); +__WEAKDEF void Timer43GOV_IrqHandler(void); +__WEAKDEF void Timer43GUD_IrqHandler(void); +__WEAKDEF void Timer43ReloadU_IrqHandler(void); +__WEAKDEF void Timer43ReloadV_IrqHandler(void); +__WEAKDEF void Timer43ReloadW_IrqHandler(void); + +__WEAKDEF void Emb1_IrqHandler(void); +__WEAKDEF void Emb2_IrqHandler(void); +__WEAKDEF void Emb3_IrqHandler(void); +__WEAKDEF void Emb4_IrqHandler(void); + +__WEAKDEF void I2s1Tx_IrqHandler(void); +__WEAKDEF void I2s1Rx_IrqHandler(void); +__WEAKDEF void I2s1Err_IrqHandler(void); +__WEAKDEF void I2s2Tx_IrqHandler(void); +__WEAKDEF void I2s2Rx_IrqHandler(void); +__WEAKDEF void I2s2Err_IrqHandler(void); +__WEAKDEF void I2s3Tx_IrqHandler(void); +__WEAKDEF void I2s3Rx_IrqHandler(void); +__WEAKDEF void I2s3Err_IrqHandler(void); +__WEAKDEF void I2s4Tx_IrqHandler(void); +__WEAKDEF void I2s4Rx_IrqHandler(void); +__WEAKDEF void I2s4Err_IrqHandler(void); + +__WEAKDEF void I2c1RxEnd_IrqHandler(void); +__WEAKDEF void I2c1TxEnd_IrqHandler(void); +__WEAKDEF void I2c1TxEmpty_IrqHandler(void); +__WEAKDEF void I2c1Err_IrqHandler(void); +__WEAKDEF void I2c2RxEnd_IrqHandler(void); +__WEAKDEF void I2c2TxEnd_IrqHandler(void); +__WEAKDEF void I2c2TxEmpty_IrqHandler(void); +__WEAKDEF void I2c2Err_IrqHandler(void); +__WEAKDEF void I2c3RxEnd_IrqHandler(void); +__WEAKDEF void I2c3TxEnd_IrqHandler(void); +__WEAKDEF void I2c3TxEmpty_IrqHandler(void); +__WEAKDEF void I2c3Err_IrqHandler(void); + +__WEAKDEF void Pvd1_IrqHandler(void); +__WEAKDEF void Pvd2_IrqHandler(void); + +__WEAKDEF void FcmErr_IrqHandler(void); +__WEAKDEF void FcmEnd_IrqHandler(void); +__WEAKDEF void FcmOV_IrqHandler(void); + +__WEAKDEF void Wdt_IrqHandler(void); + +__WEAKDEF void ADC1A_IrqHandler(void); +__WEAKDEF void ADC1B_IrqHandler(void); +__WEAKDEF void ADC1ChCmp_IrqHandler(void); +__WEAKDEF void ADC1SeqCmp_IrqHandler(void); +__WEAKDEF void ADC2A_IrqHandler(void); +__WEAKDEF void ADC2B_IrqHandler(void); +__WEAKDEF void ADC2ChCmp_IrqHandler(void); +__WEAKDEF void ADC2SeqCmp_IrqHandler(void); + +__WEAKDEF void Sdio1_IrqHandler(void); +__WEAKDEF void Sdio2_IrqHandler(void); + +__WEAKDEF void Can_IrqHandler(void); + +//@} // InterruptGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_INTERRUPTS_ENABLE */ + +#endif /* __HC32F460_INTERRUPTS_H___ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_keyscan.h b/driver/inc/hc32f460_keyscan.h new file mode 100644 index 0000000..a82474b --- /dev/null +++ b/driver/inc/hc32f460_keyscan.h @@ -0,0 +1,191 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_keyscan.h + ** + ** A detailed description is available at + ** @link KeyscanGroup Keyscan description @endlink + ** + ** - 2018-10-17 CDT First version for Device Driver Library of keyscan. + ** + ******************************************************************************/ + +#ifndef __HC32F460_KEYSCAN_H__ +#define __HC32F460_KEYSCAN_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_KEYSCAN_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + * \defgroup KeyscanGroup Matrix Key Scan Module (KeyScan) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Enumeration to hi-z state cycles of each keyout + ** + ** \note + ******************************************************************************/ +typedef enum en_hiz_cycle +{ + Hiz4 = 0u, + Hiz8 = 1u, + Hiz16 = 2u, + Hiz32 = 3u, + Hiz64 = 4u, + Hiz256 = 5u, + Hiz512 = 6u, + Hiz1K = 7u, +}en_hiz_cycle_t; + +/** + ******************************************************************************* + ** \brief Enumeration to low state cycles of each keyout + ** + ** \note + ******************************************************************************/ +typedef enum en_low_cycle +{ + Low8 = 3u, + Low16 = 4u, + Low32 = 5u, + Low64 = 6u, + Low128 = 7u, + Low256 = 8u, + Low512 = 9u, + Low1K = 10u, + Low2K = 11u, + Low4K = 12u, + Low8K = 13u, + Low16K = 14u, + Low32K = 15u, + Low64K = 16u, + Low128K = 17u, + Low256K = 18u, + Low512K = 19u, + Low1M = 20u, + Low2M = 21u, + Low4M = 22u, + Low8M = 23u, + Low16M = 24u, +}en_low_cycle_t; + +/** + ******************************************************************************* + ** \brief Enumeration to key scan clock + ** + ** \note + ******************************************************************************/ +typedef enum en_keyscan_clk +{ + KeyscanHclk = 0u, ///< use HCLK as scan clock + KeyscanLrc = 1u, ///< use internal Low RC as scan clock + KeyscanXtal32 = 2u, ///< use external XTAL32 as scan clock +}en_keyscan_clk_t; + +/** + ******************************************************************************* + ** \brief Enumeration to KEYOUT combination + ******************************************************************************/ +typedef enum en_keyout_sel +{ + Keyout0To1 = 1u, ///< KEYOUT 0 to 1 are selected + Keyout0To2 = 2u, ///< KEYOUT 0 to 2 are selected + Keyout0To3 = 3u, ///< KEYOUT 0 to 3 are selected + Keyout0To4 = 4u, ///< KEYOUT 0 to 4 are selected + Keyout0To5 = 5u, ///< KEYOUT 0 to 5 are selected + Keyout0To6 = 6u, ///< KEYOUT 0 to 6 are selected + Keyout0To7 = 7u, ///< KEYOUT 0 to 7 are selected +}en_keyout_sel_t; + +/** + ******************************************************************************* + ** \brief Enumeration to KEYIN combination + ******************************************************************************/ +typedef enum en_keyin_sel +{ + Keyin00 = 1u << 0, ///< KEYIN 0 is selected + Keyin01 = 1u << 1, ///< KEYIN 1 is selected + Keyin02 = 1u << 2, ///< KEYIN 2 is selected + Keyin03 = 1u << 3, ///< KEYIN 3 is selected + Keyin04 = 1u << 4, ///< KEYIN 4 is selected + Keyin05 = 1u << 5, ///< KEYIN 5 is selected + Keyin06 = 1u << 6, ///< KEYIN 6 is selected + Keyin07 = 1u << 7, ///< KEYIN 7 is selected + Keyin08 = 1u << 8, ///< KEYIN 8 is selected + Keyin09 = 1u << 9, ///< KEYIN 9 is selected + Keyin10 = 1u << 10, ///< KEYIN 10 is selected + Keyin11 = 1u << 11, ///< KEYIN 11 is selected + Keyin12 = 1u << 12, ///< KEYIN 12 is selected + Keyin13 = 1u << 13, ///< KEYIN 13 is selected + Keyin14 = 1u << 14, ///< KEYIN 14 is selected + Keyin15 = 1u << 15, ///< KEYIN 15 is selected +}en_keyin_sel_t; + +/** + ******************************************************************************* + ** \brief Keyscan configuration + ** + ** \note The Keyscan configuration structure + ******************************************************************************/ +typedef struct stc_keyscan_config +{ + en_hiz_cycle_t enHizCycle; ///< KEYOUT Hiz state cycles, ref @ en_hiz_cycle_t for details + en_low_cycle_t enLowCycle; ///< KEYOUT Low state cycles, ref @ en_low_cycle_t for details + en_keyscan_clk_t enKeyscanClk; ///< Key scan clock, ref @ en_keyscan_clk_t for details + en_keyout_sel_t enKeyoutSel; ///< KEYOUT selection, ref @ en_keyout_sel_t for details + uint16_t u16KeyinSel; ///< KEYIN selection, ref @ en_keyin_sel_t for details +}stc_keyscan_config_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +extern en_result_t KEYSCAN_Init(const stc_keyscan_config_t *pstcKeyscanConfig); +extern en_result_t KEYSCAN_DeInit(void); +extern en_result_t KEYSCAN_Start(void); +extern en_result_t KEYSCAN_Stop(void); +extern uint8_t KEYSCAN_GetColIdx(void); + +//@} // KeyscanGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_KEYSCAN_ENABLE */ + +#endif /* __HC32F460_KEYSCAN_H__ */ +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_mpu.h b/driver/inc/hc32f460_mpu.h new file mode 100644 index 0000000..b46e6ce --- /dev/null +++ b/driver/inc/hc32f460_mpu.h @@ -0,0 +1,293 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_mpu.h + ** + ** A detailed description is available at + ** @link MpuGroup MPU description @endlink + ** + ** - 2018-10-20 CDT First version for Device Driver Library of MPU. + ** + ******************************************************************************/ +#ifndef __HC32F460_MPU_H__ +#define __HC32F460_MPU_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_MPU_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup MpuGroup Memory Protection Unit(MPU) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief MPU region number enumeration + ** + ******************************************************************************/ +typedef enum en_mpu_region_num +{ + MpuRegionNum0 = 0u, ///< MPU region number 0 + MpuRegionNum1 = 1u, ///< MPU region number 1 + MpuRegionNum2 = 2u, ///< MPU region number 2 + MpuRegionNum3 = 3u, ///< MPU region number 3 + MpuRegionNum4 = 4u, ///< MPU region number 4 + MpuRegionNum5 = 5u, ///< MPU region number 5 + MpuRegionNum6 = 6u, ///< MPU region number 6 + MpuRegionNum7 = 7u, ///< MPU region number 7 + MpuRegionNum8 = 8u, ///< MPU region number 8 + MpuRegionNum9 = 9u, ///< MPU region number 9 + MpuRegionNum10 = 10u, ///< MPU region number 10 + MpuRegionNum11 = 11u, ///< MPU region number 11 + MpuRegionNum12 = 12u, ///< MPU region number 12 + MpuRegionNum13 = 13u, ///< MPU region number 13 + MpuRegionNum14 = 14u, ///< MPU region number 14 + MpuRegionNum15 = 15u, ///< MPU region number 15 +} en_mpu_region_num_t; + +/** + ******************************************************************************* + ** \brief MPU region size enumeration + ** + ******************************************************************************/ +typedef enum en_mpu_region_size +{ + MpuRegionSize32Byte = 4u, ///< 32 Byte + MpuRegionSize64Byte = 5u, ///< 64 Byte + MpuRegionSize128Byte = 6u, ///< 126 Byte + MpuRegionSize256Byte = 7u, ///< 256 Byte + MpuRegionSize512Byte = 8u, ///< 512 Byte + MpuRegionSize1KByte = 9u, ///< 1K Byte + MpuRegionSize2KByte = 10u, ///< 2K Byte + MpuRegionSize4KByte = 11u, ///< 4K Byte + MpuRegionSize8KByte = 12u, ///< 8K Byte + MpuRegionSize16KByte = 13u, ///< 16K Byte + MpuRegionSize32KByte = 14u, ///< 32K Byte + MpuRegionSize64KByte = 15u, ///< 64K Byte + MpuRegionSize128KByte = 16u, ///< 128K Byte + MpuRegionSize256KByte = 17u, ///< 256K Byte + MpuRegionSize512KByte = 18u, ///< 512K Byte + MpuRegionSize1MByte = 19u, ///< 1M Byte + MpuRegionSize2MByte = 20u, ///< 2M Byte + MpuRegionSize4MByte = 21u, ///< 4M Byte + MpuRegionSize8MByte = 22u, ///< 8M Byte + MpuRegionSize16MByte = 23u, ///< 16M Byte + MpuRegionSize32MByte = 24u, ///< 32M Byte + MpuRegionSize64MByte = 25u, ///< 64M Byte + MpuRegionSize128MByte = 26u, ///< 128M Byte + MpuRegionSize256MByte = 27u, ///< 256M Byte + MpuRegionSize512MByte = 28u, ///< 512M Byte + MpuRegionSize1GByte = 29u, ///< 1G Byte + MpuRegionSize2GByte = 30u, ///< 2G Byte + MpuRegionSize4GByte = 31u, ///< 4G Byte +} en_mpu_region_size_t; + +/** + ******************************************************************************* + ** \brief MPU region enumeration + ** + ******************************************************************************/ +typedef enum en_mpu_region_type +{ + SMPU1Region = 0u, ///< System DMA_1 MPU + SMPU2Region = 1u, ///< System DMA_2 MPU + FMPURegion = 2u, ///< System USBFS_DMA MPU +} en_mpu_region_type_t; + +/** + ******************************************************************************* + ** \brief MPU action selection enumeration + ** + ******************************************************************************/ +typedef enum en_mpu_action_sel +{ + MpuNoneAction = 0u, ///< MPU don't action. + MpuTrigBusError = 1u, ///< MPU trigger bus error + MpuTrigNmi = 2u, ///< MPU trigger bus NMI interrupt + MpuTrigReset = 3u, ///< MPU trigger reset +} en_mpu_action_sel_t; + +/** + ******************************************************************************* + ** \brief MPU IP protection mode enumeration + ** + ******************************************************************************/ +typedef enum en_mpu_ip_prot_mode +{ + AesReadProt = (1ul << 0), ///< AES read protection + AesWriteProt = (1ul << 1), ///< AES write protection + HashReadProt = (1ul << 2), ///< HASH read protection + HashWriteProt = (1ul << 3), ///< HASH write protection + TrngReadProt = (1ul << 4), ///< TRNG read protection + TrngWriteProt = (1ul << 5), ///< TRNG write protection + CrcReadProt = (1ul << 6), ///< CRC read protection + CrcWriteProt = (1ul << 7), ///< CRC write protection + FmcReadProt = (1ul << 8), ///< FMC read protection + FmcWriteProt = (1ul << 9), ///< FMC write protection + WdtReadProt = (1ul << 12), ///< WDT read protection + WdtWriteProt = (1ul << 13), ///< WDT write protection + SwdtReadProt = (1ul << 14), ///< WDT read protection + SwdtWriteProt = (1ul << 15), ///< WDT write protection + BksramReadProt = (1ul << 16), ///< BKSRAM read protection + BksramWriteProt = (1ul << 17), ///< BKSRAM write protection + RtcReadProt = (1ul << 18), ///< RTC read protection + RtcWriteProt = (1ul << 19), ///< RTC write protection + DmpuReadProt = (1ul << 20), ///< DMPU read protection + DmpuWriteProt = (1ul << 21), ///< DMPU write protection + SramcReadProt = (1ul << 22), ///< SRAMC read protection + SramcWriteProt = (1ul << 23), ///< SRAMC write protection + IntcReadProt = (1ul << 24), ///< INTC read protection + IntcWriteProt = (1ul << 25), ///< INTC write protection + SyscReadProt = (1ul << 26), ///< SYSC read protection + SyscWriteProt = (1ul << 27), ///< SYSC write protection + MstpReadProt = (1ul << 28), ///< MSTP read protection + MstpWriteProt = (1ul << 29), ///< MSTP write protection + BusErrProt = (1ul << 31), ///< BUSERR write protection +} en_mpu_ip_prot_mode_t; + +/** + ******************************************************************************* + ** \brief MPU protection region permission + ** + ******************************************************************************/ +typedef struct stc_mpu_prot_region_permission +{ + en_mpu_action_sel_t enAction; ///< Specifies MPU action + + en_functional_state_t enRegionEnable; ///< Disable: Disable region protection; Enable:Enable region protection + + en_functional_state_t enWriteEnable; ///< Disable: Prohibited to write; Enable:permitted to write + + en_functional_state_t enReadEnable; ///< Disable: Prohibited to read; Enable:permitted to read + +} stc_mpu_prot_region_permission_t; + +/** + ******************************************************************************* + ** \brief MPU background region permission + ** + ******************************************************************************/ +typedef struct stc_mpu_bkgd_region_permission +{ + en_functional_state_t enWriteEnable; ///< Disable: Prohibited to write; Enable:permitted to write + + en_functional_state_t enReadEnable; ///< Disable: Prohibited to read; Enable:permitted to read +} stc_mpu_bkgd_region_permission_t_t; + +/** + ******************************************************************************* + ** \brief MPU background region initialization configuration + ** + ******************************************************************************/ +typedef struct stc_mpu_bkgd_region_init +{ + stc_mpu_bkgd_region_permission_t_t stcSMPU1BkgdPermission; ///< Specifies SMPU1 background permission and this stuctrue detail refer of @ref stc_mpu_bkgd_region_permission_t_t + + stc_mpu_bkgd_region_permission_t_t stcSMPU2BkgdPermission; ///< Specifies SMPU2 background permission and this stuctrue detail refer @ref stc_mpu_bkgd_region_permission_t_t + + stc_mpu_bkgd_region_permission_t_t stcFMPUBkgdPermission; ///< Specifies FMPU background permission and this stuctrue detail refer @ref stc_mpu_bkgd_region_permission_t_t +} stc_mpu_bkgd_region_init_t; + +/** + ******************************************************************************* + ** \brief MPU protect region initialization configuration + ** + ******************************************************************************/ +typedef struct stc_mpu_prot_region_init +{ + uint32_t u32RegionBaseAddress; ///< Specifies region base address + + en_mpu_region_size_t enRegionSize; ///< Specifies region size and This parameter can be a value of @ref en_mpu_region_size_t + + stc_mpu_prot_region_permission_t stcSMPU1Permission; ///< Specifies DMA1 MPU region permission and this structure detail refer @ref stc_mpu_prot_region_permission_t + + stc_mpu_prot_region_permission_t stcSMPU2Permission; ///< Specifies DMA2 MPU region permission and this structure detail refer @ref stc_mpu_prot_region_permission_t + + stc_mpu_prot_region_permission_t stcFMPUPermission; ///< Specifies USBFS-DMA MPU region permission and this structure detail refer @ref stc_mpu_prot_region_permission_t +} stc_mpu_prot_region_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t MPU_ProtRegionInit(en_mpu_region_num_t enRegionNum, + const stc_mpu_prot_region_init_t *pstcInitCfg); +en_result_t MPU_BkgdRegionInit(const stc_mpu_bkgd_region_init_t *pstcInitCfg); +en_result_t MPU_SetRegionSize(en_mpu_region_num_t enRegionNum, + en_mpu_region_size_t enRegionSize); +en_mpu_region_size_t MPU_GetRegionSize(en_mpu_region_num_t enRegionNum); +en_result_t MPU_SetRegionBaseAddress(en_mpu_region_num_t enRegionNum, + uint32_t u32RegionBaseAddr); +uint32_t MPU_GetRegionBaseAddress(en_mpu_region_num_t enRegionNum); +en_result_t MPU_SetNoPermissionAcessAction(en_mpu_region_type_t enMpuRegionType, + en_mpu_action_sel_t enActionSel); +en_mpu_action_sel_t MPU_GetNoPermissionAcessAction(en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_ProtRegionCmd(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState); +en_result_t MPU_RegionTypeCmd(en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState); +en_flag_status_t MPU_GetStatus(en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_ClearStatus(en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_SetProtRegionReadPermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState); +en_functional_state_t MPU_GetProtRegionReadPermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_SetProtRegionWritePermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState); +en_functional_state_t MPU_GetProtRegionWritePermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_SetBkgdRegionReadPermission(en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState); +en_functional_state_t MPU_GetBkgdRegionReadPermission(en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_SetBkgdRegionWritePermission(en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState); +en_functional_state_t MPU_GetBkgdRegionWritePermission(en_mpu_region_type_t enMpuRegionType); +en_result_t MPU_WriteProtCmd(en_functional_state_t enState); +en_result_t MPU_IpProtCmd(uint32_t u32ProtMode, + en_functional_state_t enState); + +//@} // MpuGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_MPU_ENABLE */ + +#endif /* __HC32F460_MPU_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_ots.h b/driver/inc/hc32f460_ots.h new file mode 100644 index 0000000..53a00ff --- /dev/null +++ b/driver/inc/hc32f460_ots.h @@ -0,0 +1,139 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_ots.h + ** + ** A detailed description is available at + ** @link OtsGroup Ots description @endlink + ** + ** - 2018-10-26 CDT First version for Device Driver Library of Ots. + ** + ******************************************************************************/ +#ifndef __HC32F460_OTS_H__ +#define __HC32F460_OTS_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_OTS_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup OtsGroup On-chip Temperature Sensor(OTS) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/* Automatically turn off the analog temperature sensor after the temperature + measurement is over. */ +typedef enum en_ots_auto_off +{ + OtsAutoOff_Disable = 0x0, ///< Disable automatically turn off OTS. + OtsAutoOff_Enable = 0x1, ///< Enable automatically turn off OTS. +} en_ots_auto_off_t; + +/* Temperature measurement end interrupt request. */ +typedef enum en_ots_ie +{ + OtsInt_Disable = 0x0, ///< Disable OTS interrupt. + OtsInt_Enable = 0x1, ///< Enable OTS interrupt. +} en_ots_ie_t; + +/* OTS clock selection. */ +typedef enum en_ots_clk_sel +{ + OtsClkSel_Xtal = 0x0, ///< Select XTAL as OTS clock. + OtsClkSel_Hrc = 0x1, ///< Select HRC as OTS clock. +} en_ots_clk_sel_t; + +/* OTS OTS initialization structure definition. */ +typedef struct stc_ots_init +{ + en_ots_auto_off_t enAutoOff; ///< @ref en_ots_auto_off_t. + en_ots_clk_sel_t enClkSel; ///< @ref en_ots_clk_sel_t. + float32_t f32SlopeK; ///< K: Temperature slope (calculated by calibration experiment). */ + float32_t f32OffsetM; ///< M: Temperature offset (calculated by calibration experiment). */ +} stc_ots_init_t; + +/* OTS common trigger source select */ +typedef enum en_ots_com_trigger +{ + OtsComTrigger_1 = 0x1, ///< Select common trigger 1. + OtsComTrigger_2 = 0x2, ///< Select common trigger 2. + OtsComTrigger_1_2 = 0x3, ///< Select common trigger 1 and 2. +} en_ots_com_trigger_t; + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ + +/** + * @brief Start OTS. + * @param None + * @retval None + */ +__STATIC_INLINE void OTS_Start(void) +{ + bM4_OTS_CTL_OTSST = (uint32_t)1u; +} + +/** + * @brief Stop OTS. + * @param None + * @retval None + */ +__STATIC_INLINE void OTS_Stop(void) +{ + bM4_OTS_CTL_OTSST = (uint32_t)0u; +} + +en_result_t OTS_Init(const stc_ots_init_t *pstcInit); +void OTS_DeInit(void); + +en_result_t OTS_Polling(float32_t *pf32Temp, uint32_t u32Timeout); + +void OTS_IntCmd(en_functional_state_t enNewState); +void OTS_SetTriggerSrc(en_event_src_t enEvent); +void OTS_ComTriggerCmd(en_ots_com_trigger_t enComTrigger, en_functional_state_t enState); + +en_result_t OTS_ScalingExperiment(uint16_t *pu16Dr1, uint16_t *pu16Dr2, \ + uint16_t *pu16Ecr, float32_t *pf32A, \ + uint32_t u32Timeout); + +float OTS_CalculateTemp(void); + +//@} // OtsGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_OTS_ENABLE */ + +#endif /* __HC32F460_OTS_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_pwc.h b/driver/inc/hc32f460_pwc.h new file mode 100644 index 0000000..f170784 --- /dev/null +++ b/driver/inc/hc32f460_pwc.h @@ -0,0 +1,567 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_pwc.h + ** + ** A detailed description is available at + ** @link PwcGroup PWC description @endlink + ** + ** - 2018-10-28 CDT First version for Device Driver Library of PWC. + ** + ******************************************************************************/ +#ifndef __HC32F460_PWC_H__ +#define __HC32F460_PWC_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_PWC_ENABLE == DDL_ON) + + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup PwcGroup Power Control(PWC) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief The power down mode. + ** + ******************************************************************************/ +typedef enum en_pwc_powerdown_md +{ + PowerDownMd1 = 0u, ///< Power down mode 1. + PowerDownMd2 = 1u, ///< Power down mode 2. + PowerDownMd3 = 2u, ///< Power down mode 3. + PowerDownMd4 = 3u, ///< Power down mode 4. +}en_pwc_powerdown_md_t; + +/** + ******************************************************************************* + ** \brief The IO retain status under power down mode. + ** + ******************************************************************************/ +typedef enum en_pwc_iortn +{ + IoPwrDownRetain = 0u, ///< Io keep under power down mode. + IoPwrRstRetain = 1u, ///< Io keep after power reset. + IoHighImp = 2u, ///< IO high impedance either power down or power reset. +}en_pwc_iortn_t; + +/** + ******************************************************************************* + ** \brief The driver ability while different speed mode enter stop mode. + ** + ******************************************************************************/ +typedef enum en_pwc_stopdas +{ + StopHighspeed = 0u, ///< The driver ability while high speed mode enter stop mode. + StopUlowspeed = 3u, ///< The driver ability while ultra_low speed mode enter stop mode. +}en_pwc_stopdas_t; + +/** + ******************************************************************************* + ** \brief The dynamic power driver voltage select. + ** + ******************************************************************************/ +typedef enum en_pwc_rundrvs +{ + RunUHighspeed = 0u, ///< The ultra_high speed. + RunUlowspeed = 2u, ///< The ultra_low speed. + RunHighspeed = 3u, ///< The high speed. +}en_pwc_rundrvs_t; + +/** + ******************************************************************************* + ** \brief The dynamic power driver ability scaling. + ** + ******************************************************************************/ +typedef enum en_pwc_drvability_sca +{ + Ulowspeed = 8u, ///< The ultra_low speed. + HighSpeed = 15u, ///< The high speed. +}en_pwc_drvability_sca_t; + +/** + ******************************************************************************* + ** \brief The power down wake up time select. + ** + ******************************************************************************/ +typedef enum en_pwc_waketime_sel +{ + Vcap01 = 0u, ///< Wake up while vcap capacitance 2*0.1uf. + Vcap0047 = 1u, ///< Wake up while vcap capacitance 2*0.047uf. +}en_pwc_waketime_sel_t; + +/** + ******************************************************************************* + ** \brief The wait or not wait flash stable while stop mode awake. + ** + ******************************************************************************/ +typedef enum en_pwc_stop_flash_sel +{ + Wait = 0u, ///< wait flash stable. + NotWait = 1u, ///< Not Wait flash stable. +}en_pwc_stop_flash_sel_t; + +/** + ******************************************************************************* + ** \brief The clk value while stop mode awake. + ** + ******************************************************************************/ +typedef enum en_pwc_stop_clk_sel +{ + ClkFix = 0u, ///< clock fix. + ClkMrc = 1u, ///< clock source is MRC, only ram code. +}en_pwc_stop_clk_sel_t; + +/** + ******************************************************************************* + ** \brief The power down wake up event edge select. + ** + ******************************************************************************/ +typedef enum en_pwc_edge_sel +{ + EdgeFalling = 0u, ///< Falling edge. + EdgeRising = 1u, ///< Rising edge. +}en_pwc_edge_sel_t; + +/** + ******************************************************************************* + ** \brief The voltage detect edge select. + ** + ******************************************************************************/ +typedef enum en_pwc_pvdedge_sel +{ + OverVcc = 0u, ///< PVD > VCC. + BelowVcc = 1u, ///< PVD < VCC. +}en_pwc_pvdedge_sel_t; + +/** + ******************************************************************************* + ** \brief The flag of wake_up timer compare result. + ** + ******************************************************************************/ +typedef enum en_pwc_wkover_flag +{ + UnEqual = 0u, ///< Timer value unequal with the wake_up compare value whitch set. + Equal = 1u, ///< Timer value equal with the wake_up compare value whitch set.. +}en_pwc_wkover_flag_t; + +/** + ******************************************************************************* + ** \brief The RAM operating mode. + ** + ******************************************************************************/ +typedef enum en_pwc_ram_op_md +{ + HighSpeedMd = 0x8043, ///< Work at high speed. + UlowSpeedMd = 0x9062, ///< Work at ultra low speed. +}en_pwc_ram_op_md_t; + +/** + ******************************************************************************* + ** \brief The wake up clock select. + ** + ******************************************************************************/ +typedef enum en_pwc_wkclk_sel +{ + Wk64hz = 0u, ///< 64Hz. + WkXtal32 = 1u, ///< Xtal32. + WkLrc = 2u, ///< Lrc. +}en_pwc_wkclk_sel_t; + +/** + ******************************************************************************* + ** \brief The pvd digital filtering sampling clock select. + ** + ******************************************************************************/ +typedef enum en_pwc_pvdfiltclk_sel +{ + PvdLrc025 = 0u, ///< 0.25 LRC cycle. + PvdLrc05 = 1u, ///< 0.5 LRC cycle. + PvdLrc1 = 2u, ///< LRC 1 div. + PvdLrc2 = 3u, ///< LRC 2 div. +}en_pwc_pvdfiltclk_sel_t; + +/** + ******************************************************************************* + ** \brief The pvd2 level select. + ** + ******************************************************************************/ +typedef enum en_pwc_pvd2level_sel +{ + Pvd2Level0 = 0u, ///< 2.1V.while high_speed & ultra_low speed mode, 2.20V.while ultra_high speed mode. + Pvd2Level1 = 1u, ///< 2.3V.while high_speed & ultra_low speed mode, 2.40V.while ultra_high speed mode. + Pvd2Level2 = 2u, ///< 2.5V.while high_speed & ultra_low speed mode, 2.67V.while ultra_high speed mode. + Pvd2Level3 = 3u, ///< 2.6V.while high_speed & ultra_low speed mode, 2.77V.while ultra_high speed mode. + Pvd2Level4 = 4u, ///< 2.7V.while high_speed & ultra_low speed mode, 2.88V.while ultra_high speed mode. + Pvd2Level5 = 5u, ///< 2.8V.while high_speed & ultra_low speed mode, 2.98V.while ultra_high speed mode. + Pvd2Level6 = 6u, ///< 2.9V.while high_speed & ultra_low speed mode, 3.08V.while ultra_high speed mode. + Pvd2Level7 = 7u, ///< 1.1V.while high_speed & ultra_low speed mode, 1.15V.while ultra_high speed mode. +}en_pwc_pvd2level_sel_t; + +/** + ******************************************************************************* + ** \brief The pvd1 level select. + ** + ******************************************************************************/ +typedef enum en_pwc_pvd1level_sel +{ + Pvd1Level0 = 0u, ///< 2.0V.while high_speed & ultra_low speed mode, 2.09V.while ultra_high speed mode. + Pvd1Level1 = 1u, ///< 2.1V.while high_speed & ultra_low speed mode, 2.20V.while ultra_high speed mode. + Pvd1Level2 = 2u, ///< 2.3V.while high_speed & ultra_low speed mode, 2.40V.while ultra_high speed mode. + Pvd1Level3 = 3u, ///< 2.5V.while high_speed & ultra_low speed mode, 2.67V.while ultra_high speed mode. + Pvd1Level4 = 4u, ///< 2.6V.while high_speed & ultra_low speed mode, 2.77V.while ultra_high speed mode. + Pvd1Level5 = 5u, ///< 2.7V.while high_speed & ultra_low speed mode, 2.88V.while ultra_high speed mode. + Pvd1Level6 = 6u, ///< 2.8V.while high_speed & ultra_low speed mode, 2.98V.while ultra_high speed mode. + Pvd1Level7 = 7u, ///< 2.9V.while high_speed & ultra_low speed mode, 3.08V.while ultra_high speed mode. +}en_pwc_pvd1level_sel_t; + +/** + ******************************************************************************* + ** \brief The pvd interrupt select. + ** + ******************************************************************************/ + typedef enum en_pwc_pvd_int_sel +{ + NonMskInt = 0u, ///< Non-maskable Interrupt. + MskInt = 1u, ///< Maskable Interrupt. +}en_pwc_pvd_int_sel_t; + +/** + ******************************************************************************* + ** \brief The handle of pvd mode. + ** + ******************************************************************************/ + typedef enum en_pwc_pvd_md +{ + PvdInt = 0u, ///< The handle of pvd is interrupt. + PvdReset = 1u, ///< The handle of pvd is reset. +}en_pwc_pvd_md_t; + +/** + ******************************************************************************* + ** \brief The unit of pvd detect. + ** + ******************************************************************************/ + typedef enum en_pwc_pvd +{ + PvdU1 = 0u, ///< The uint1 of pvd detect. + PvdU2 = 1u, ///< The unit2 of pvd detect. +}en_pwc_pvd_t; + +/** + ******************************************************************************* + ** \brief The power mode configuration. + ** + ******************************************************************************/ +typedef struct stc_pwc_pwr_mode_cfg +{ + en_pwc_powerdown_md_t enPwrDownMd; ///< Power down mode. + en_functional_state_t enRLdo; ///< Enable or disable RLDO. + en_functional_state_t enRetSram; ///< Enable or disable Ret_Sram. + en_pwc_iortn_t enIoRetain; ///< IO retain. + en_pwc_waketime_sel_t enPwrDWkupTm; ///< The power down wake up time select. +}stc_pwc_pwr_mode_cfg_t; + +/** + ******************************************************************************* + ** \brief The stop mode configuration. + ** + ******************************************************************************/ +typedef struct stc_pwc_stop_mode_cfg +{ + en_pwc_stopdas_t enStpDrvAbi; ///< Driver ability while enter stop mode. + en_pwc_stop_flash_sel_t enStopFlash; ///< Flash mode while stop mode awake. + en_pwc_stop_clk_sel_t enStopClk; ///< Clock value while stop mode awake. + en_functional_state_t enPll; ///< Whether the PLL enable or disable while enter stop mode. +}stc_pwc_stop_mode_cfg_t; + +/** + ******************************************************************************* + ** \brief The power down wake_up timer control. + ** + ******************************************************************************/ +typedef struct stc_pwc_wktm_ctl +{ + uint16_t u16WktmCmp; ///< The wake_up timer compare value. + en_pwc_wkover_flag_t enWkOverFlag; ///< The flag of compare result. + en_pwc_wkclk_sel_t enWkclk; ///< The clock of wake_up timer. + en_functional_state_t enWktmEn; ///< Enable or disable wake_up timer. +}stc_pwc_wktm_ctl_t; + +/** + ******************************************************************************* + ** \brief The pvd control. + ** + ******************************************************************************/ +typedef struct stc_pwc_pvd_ctl +{ + en_functional_state_t enPvdIREn; ///< Enable or disable pvd interrupt(reset). + en_pwc_pvd_md_t enPvdMode; ///< The handle of pvd is interrupt or reset. + en_functional_state_t enPvdCmpOutEn; ///< Enable or disable pvd output compare result . +}stc_pwc_pvd_ctl_t; + +/** + ******************************************************************************* + ** \brief The power down wake_up event configuration. + ** + ******************************************************************************/ +typedef struct stc_pwc_pvd_cfg +{ + stc_pwc_pvd_ctl_t stcPvd1Ctl; ///< Pvd1 control configuration. + stc_pwc_pvd_ctl_t stcPvd2Ctl; ///< Pvd2 control configuration. + en_functional_state_t enPvd1FilterEn; ///< Pvd1 filtering enable or disable. + en_functional_state_t enPvd2FilterEn; ///< Pvd2 filtering enable or disable. + en_pwc_pvdfiltclk_sel_t enPvd1Filtclk; ///< Pvd1 filtering sampling clock. + en_pwc_pvdfiltclk_sel_t enPvd2Filtclk; ///< Pvd2 filtering sampling clock. + en_pwc_pvd1level_sel_t enPvd1Level; ///< Pvd1 voltage. + en_pwc_pvd2level_sel_t enPvd2Level; ///< Pvd2 voltage. + en_pwc_pvd_int_sel_t enPvd1Int; ///< Pvd1 interrupt. + en_pwc_pvd_int_sel_t enPvd2Int; ///< Pvd2 interrupt. +}stc_pwc_pvd_cfg_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define PWC_PDWKEN0_WKUP00 ((uint8_t)0x01) +#define PWC_PDWKEN0_WKUP01 ((uint8_t)0x02) +#define PWC_PDWKEN0_WKUP02 ((uint8_t)0x04) +#define PWC_PDWKEN0_WKUP03 ((uint8_t)0x08) +#define PWC_PDWKEN0_WKUP10 ((uint8_t)0x10) +#define PWC_PDWKEN0_WKUP11 ((uint8_t)0x20) +#define PWC_PDWKEN0_WKUP12 ((uint8_t)0x40) +#define PWC_PDWKEN0_WKUP13 ((uint8_t)0x80) + +#define PWC_PDWKEN1_WKUP20 ((uint8_t)0x01) +#define PWC_PDWKEN1_WKUP21 ((uint8_t)0x02) +#define PWC_PDWKEN1_WKUP22 ((uint8_t)0x04) +#define PWC_PDWKEN1_WKUP23 ((uint8_t)0x08) +#define PWC_PDWKEN1_WKUP30 ((uint8_t)0x10) +#define PWC_PDWKEN1_WKUP31 ((uint8_t)0x20) +#define PWC_PDWKEN1_WKUP32 ((uint8_t)0x40) +#define PWC_PDWKEN1_WKUP33 ((uint8_t)0x80) + +#define PWC_PDWKEN2_PVD1 ((uint8_t)0x01) +#define PWC_PDWKEN2_PVD2 ((uint8_t)0x02) +#define PWC_PDWKEN2_NMI ((uint8_t)0x04) +#define PWC_PDWKEN2_RTCPRD ((uint8_t)0x10) +#define PWC_PDWKEN2_RTCAL ((uint8_t)0x20) +#define PWC_PDWKEN2_WKTM ((uint8_t)0x80) + +#define PWC_PDWKUP_EDGE_WKP0 ((uint8_t)0x01) +#define PWC_PDWKUP_EDGE_WKP1 ((uint8_t)0x02) +#define PWC_PDWKUP_EDGE_WKP2 ((uint8_t)0x04) +#define PWC_PDWKUP_EDGE_WKP3 ((uint8_t)0x08) +#define PWC_PDWKUP_EDGE_PVD1 ((uint8_t)0x10) +#define PWC_PDWKUP_EDGE_PVD2 ((uint8_t)0x20) +#define PWC_PDWKUP_EDGE_NMI ((uint8_t)0x40) + +#define PWC_RAMPWRDOWN_SRAM1 ((uint32_t)0x00000001) +#define PWC_RAMPWRDOWN_SRAM2 ((uint32_t)0x00000002) +#define PWC_RAMPWRDOWN_SRAM3 ((uint32_t)0x00000004) +#define PWC_RAMPWRDOWN_SRAMH ((uint32_t)0x00000008) +#define PWC_RAMPWRDOWN_USBFS ((uint32_t)0x00000010) +#define PWC_RAMPWRDOWN_SDIOC0 ((uint32_t)0x00000020) +#define PWC_RAMPWRDOWN_SDIOC1 ((uint32_t)0x00000040) +#define PWC_RAMPWRDOWN_CAN ((uint32_t)0x00000080) +#define PWC_RAMPWRDOWN_CACHE ((uint32_t)0x00000100) +#define PWC_RAMPWRDOWN_FULL ((uint32_t)0x000001FF) + +#define PWC_STOPWKUPEN_EIRQ0 ((uint32_t)0x00000001) +#define PWC_STOPWKUPEN_EIRQ1 ((uint32_t)0x00000002) +#define PWC_STOPWKUPEN_EIRQ2 ((uint32_t)0x00000004) +#define PWC_STOPWKUPEN_EIRQ3 ((uint32_t)0x00000008) +#define PWC_STOPWKUPEN_EIRQ4 ((uint32_t)0x00000010) +#define PWC_STOPWKUPEN_EIRQ5 ((uint32_t)0x00000020) +#define PWC_STOPWKUPEN_EIRQ6 ((uint32_t)0x00000040) +#define PWC_STOPWKUPEN_EIRQ7 ((uint32_t)0x00000080) +#define PWC_STOPWKUPEN_EIRQ8 ((uint32_t)0x00000100) +#define PWC_STOPWKUPEN_EIRQ9 ((uint32_t)0x00000200) +#define PWC_STOPWKUPEN_EIRQ10 ((uint32_t)0x00000400) +#define PWC_STOPWKUPEN_EIRQ11 ((uint32_t)0x00000800) +#define PWC_STOPWKUPEN_EIRQ12 ((uint32_t)0x00001000) +#define PWC_STOPWKUPEN_EIRQ13 ((uint32_t)0x00002000) +#define PWC_STOPWKUPEN_EIRQ14 ((uint32_t)0x00004000) +#define PWC_STOPWKUPEN_EIRQ15 ((uint32_t)0x00008000) +#define PWC_STOPWKUPEN_SWDT ((uint32_t)0x00010000) +#define PWC_STOPWKUPEN_VDU1 ((uint32_t)0x00020000) +#define PWC_STOPWKUPEN_VDU2 ((uint32_t)0x00040000) +#define PWC_STOPWKUPEN_CMPI0 ((uint32_t)0x00080000) +#define PWC_STOPWKUPEN_WKTM ((uint32_t)0x00100000) +#define PWC_STOPWKUPEN_RTCAL ((uint32_t)0x00200000) +#define PWC_STOPWKUPEN_RTCPRD ((uint32_t)0x00400000) +#define PWC_STOPWKUPEN_TMR0 ((uint32_t)0x00800000) +#define PWC_STOPWKUPEN_USARTRXD ((uint32_t)0x02000000) + +#define PWC_PTWK0_WKUPFLAG ((uint8_t)0x01) +#define PWC_PTWK1_WKUPFLAG ((uint8_t)0x02) +#define PWC_PTWK2_WKUPFLAG ((uint8_t)0x04) +#define PWC_PTWK3_WKUPFLAG ((uint8_t)0x08) +#define PWC_PVD1_WKUPFLAG ((uint8_t)0x10) +#define PWC_PVD2_WKUPFLAG ((uint8_t)0x20) +#define PWC_NMI_WKUPFLAG ((uint8_t)0x40) + +#define PWC_RTCPRD_WKUPFALG ((uint8_t)0x10) +#define PWC_RTCAL_WKUPFLAG ((uint8_t)0x20) +#define PWC_WKTM_WKUPFLAG ((uint8_t)0x80) + +#define PWC_WKTMCMP_MSK ((uint16_t)0x0FFF) + +#define PWC_FCG0_PERIPH_SRAMH ((uint32_t)0x00000001) +#define PWC_FCG0_PERIPH_SRAM12 ((uint32_t)0x00000010) +#define PWC_FCG0_PERIPH_SRAM3 ((uint32_t)0x00000100) +#define PWC_FCG0_PERIPH_SRAMRET ((uint32_t)0x00000400) +#define PWC_FCG0_PERIPH_DMA1 ((uint32_t)0x00004000) +#define PWC_FCG0_PERIPH_DMA2 ((uint32_t)0x00008000) +#define PWC_FCG0_PERIPH_FCM ((uint32_t)0x00010000) +#define PWC_FCG0_PERIPH_AOS ((uint32_t)0x00020000) +#define PWC_FCG0_PERIPH_AES ((uint32_t)0x00100000) +#define PWC_FCG0_PERIPH_HASH ((uint32_t)0x00200000) +#define PWC_FCG0_PERIPH_TRNG ((uint32_t)0x00400000) +#define PWC_FCG0_PERIPH_CRC ((uint32_t)0x00800000) +#define PWC_FCG0_PERIPH_DCU1 ((uint32_t)0x01000000) +#define PWC_FCG0_PERIPH_DCU2 ((uint32_t)0x02000000) +#define PWC_FCG0_PERIPH_DCU3 ((uint32_t)0x04000000) +#define PWC_FCG0_PERIPH_DCU4 ((uint32_t)0x08000000) +#define PWC_FCG0_PERIPH_KEY ((uint32_t)0x80000000) + + +#define PWC_FCG1_PERIPH_CAN ((uint32_t)0x00000001) +#define PWC_FCG1_PERIPH_QSPI ((uint32_t)0x00000008) +#define PWC_FCG1_PERIPH_I2C1 ((uint32_t)0x00000010) +#define PWC_FCG1_PERIPH_I2C2 ((uint32_t)0x00000020) +#define PWC_FCG1_PERIPH_I2C3 ((uint32_t)0x00000040) +#define PWC_FCG1_PERIPH_USBFS ((uint32_t)0x00000100) +#define PWC_FCG1_PERIPH_SDIOC1 ((uint32_t)0x00000400) +#define PWC_FCG1_PERIPH_SDIOC2 ((uint32_t)0x00000800) +#define PWC_FCG1_PERIPH_I2S1 ((uint32_t)0x00001000) +#define PWC_FCG1_PERIPH_I2S2 ((uint32_t)0x00002000) +#define PWC_FCG1_PERIPH_I2S3 ((uint32_t)0x00004000) +#define PWC_FCG1_PERIPH_I2S4 ((uint32_t)0x00008000) +#define PWC_FCG1_PERIPH_SPI1 ((uint32_t)0x00010000) +#define PWC_FCG1_PERIPH_SPI2 ((uint32_t)0x00020000) +#define PWC_FCG1_PERIPH_SPI3 ((uint32_t)0x00040000) +#define PWC_FCG1_PERIPH_SPI4 ((uint32_t)0x00080000) +#define PWC_FCG1_PERIPH_USART1 ((uint32_t)0x01000000) +#define PWC_FCG1_PERIPH_USART2 ((uint32_t)0x02000000) +#define PWC_FCG1_PERIPH_USART3 ((uint32_t)0x04000000) +#define PWC_FCG1_PERIPH_USART4 ((uint32_t)0x08000000) + +#define PWC_FCG2_PERIPH_TIM01 ((uint32_t)0x00000001) +#define PWC_FCG2_PERIPH_TIM02 ((uint32_t)0x00000002) +#define PWC_FCG2_PERIPH_TIMA1 ((uint32_t)0x00000004) +#define PWC_FCG2_PERIPH_TIMA2 ((uint32_t)0x00000008) +#define PWC_FCG2_PERIPH_TIMA3 ((uint32_t)0x00000010) +#define PWC_FCG2_PERIPH_TIMA4 ((uint32_t)0x00000020) +#define PWC_FCG2_PERIPH_TIMA5 ((uint32_t)0x00000040) +#define PWC_FCG2_PERIPH_TIMA6 ((uint32_t)0x00000080) +#define PWC_FCG2_PERIPH_TIM41 ((uint32_t)0x00000100) +#define PWC_FCG2_PERIPH_TIM42 ((uint32_t)0x00000200) +#define PWC_FCG2_PERIPH_TIM43 ((uint32_t)0x00000400) +#define PWC_FCG2_PERIPH_EMB ((uint32_t)0x00008000) +#define PWC_FCG2_PERIPH_TIM61 ((uint32_t)0x00010000) +#define PWC_FCG2_PERIPH_TIM62 ((uint32_t)0x00020000) +#define PWC_FCG2_PERIPH_TIM63 ((uint32_t)0x00040000) + +#define PWC_FCG3_PERIPH_ADC1 ((uint32_t)0x00000001) +#define PWC_FCG3_PERIPH_ADC2 ((uint32_t)0x00000002) +#define PWC_FCG3_PERIPH_CMP ((uint32_t)0x00000100) +#define PWC_FCG3_PERIPH_OTS ((uint32_t)0x00001000) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void PWC_PowerModeCfg(const stc_pwc_pwr_mode_cfg_t* pstcPwrMdCfg); +void PWC_EnterPowerDownMd(void); + +void PWC_PdWakeup0Cmd(uint32_t u32Wkup0Event, en_functional_state_t enNewState); +void PWC_PdWakeup1Cmd(uint32_t u32Wkup1Event, en_functional_state_t enNewState); +void PWC_PdWakeup2Cmd(uint32_t u32Wkup2Event, en_functional_state_t enNewState); +void PWC_PdWakeupEvtEdgeCfg(uint8_t u8WkupEvent, en_pwc_edge_sel_t enEdge); + +en_flag_status_t PWC_GetWakeup0Flag(uint8_t u8WkupFlag); +en_flag_status_t PWC_GetWakeup1Flag(uint8_t u8WkupFlag); +void PWC_ClearWakeup0Flag(uint8_t u8WkupFlag); +void PWC_ClearWakeup1Flag(uint8_t u8WkupFlag); +void PWC_PwrMonitorCmd(en_functional_state_t enNewState); + +void PWC_Fcg0PeriphClockCmd(uint32_t u32Fcg0Periph, en_functional_state_t enNewState); +void PWC_Fcg1PeriphClockCmd(uint32_t u32Fcg1Periph, en_functional_state_t enNewState); +void PWC_Fcg2PeriphClockCmd(uint32_t u32Fcg2Periph, en_functional_state_t enNewState); +void PWC_Fcg3PeriphClockCmd(uint32_t u32Fcg3Periph, en_functional_state_t enNewState); + +en_result_t PWC_StopModeCfg(const stc_pwc_stop_mode_cfg_t* pstcStpMdCfg); +void PWC_StopWkupCmd(uint32_t u32Wkup0Event, en_functional_state_t enNewState); + +void PWC_EnterStopMd(void); +void PWC_EnterSleepMd(void); + +void PWC_Xtal32CsCmd(en_functional_state_t enNewState); +void PWC_HrcPwrCmd(en_functional_state_t enNewState); +void PWC_PllPwrCmd(en_functional_state_t enNewState); +void PWC_RamPwrdownCmd(uint32_t u32RamCtlBit, en_functional_state_t enNewState); +void PWC_RamOpMdConfig(en_pwc_ram_op_md_t enRamOpMd); + +void PWC_WktmControl(const stc_pwc_wktm_ctl_t* pstcWktmCtl); + +void PWC_PvdCfg(const stc_pwc_pvd_cfg_t* pstcPvdCfg); +void PWC_Pvd1Cmd(en_functional_state_t enNewState); +void PWC_Pvd2Cmd(en_functional_state_t enNewState); +void PWC_ExVccCmd(en_functional_state_t enNewState); +void PWC_ClearPvdFlag(en_pwc_pvd_t enPvd); +en_flag_status_t PWC_GetPvdFlag(en_pwc_pvd_t enPvd); +en_flag_status_t PWC_GetPvdStatus(en_pwc_pvd_t enPvd); + +void PWC_enNvicBackup(void); +void PWC_enNvicRecover(void); +void PWC_ClkBackup(void); +void PWC_ClkRecover(void); +void PWC_IrqClkBackup(void); +void PWC_IrqClkRecover(void); + +en_result_t PWC_HS2LS(void); +en_result_t PWC_LS2HS(void); +en_result_t PWC_HS2HP(void); +en_result_t PWC_HP2HS(void); +en_result_t PWC_LS2HP(void); +en_result_t PWC_HP2LS(void); + +//@} // PwcGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_PWC_ENABLE */ + +#endif /* __HC32F460_PWC_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_qspi.h b/driver/inc/hc32f460_qspi.h new file mode 100644 index 0000000..6bcbf6d --- /dev/null +++ b/driver/inc/hc32f460_qspi.h @@ -0,0 +1,402 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_qspi.h + ** + ** A detailed description is available at + ** @link QspiGroup Queued SPI description @endlink + ** + ** - 2018-11-20 CDT First version for Device Driver Library of Qspi. + ** + ******************************************************************************/ +#ifndef __HC32F460_QSPI_H__ +#define __HC32F460_QSPI_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_QSPI_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup QspiGroup Queued SPI(QSPI) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief QSPI spi protocol enumeration + ******************************************************************************/ +typedef enum en_qspi_spi_protocol +{ + QspiProtocolExtendSpi = 0u, ///< Extend spi protocol + QspiProtocolTwoWiresSpi = 1u, ///< Two wires spi protocol + QspiProtocolFourWiresSpi = 2u, ///< Four wires spi protocol +} en_qspi_spi_protocol_t; + +/** + ******************************************************************************* + ** \brief QSPI spi Mode enumeration + ******************************************************************************/ +typedef enum en_qspi_spi_mode +{ + QspiSpiMode0 = 0u, ///< Spi mode 0(QSCK normalcy is Low level) + QspiSpiMode3 = 1u, ///< Spi mode 3(QSCK normalcy is High level) +} en_qspi_spi_mode_t; + +/** + ******************************************************************************* + ** \brief QSPI bus communication mode enumeration + ******************************************************************************/ +typedef enum en_qspi_bus_mode +{ + QspiBusModeRomAccess = 0u, ///< Rom access mode + QspiBusModeDirectAccess = 1u, ///< Direct communication mode +} en_qspi_bus_mode_t; + +/** + ******************************************************************************* + ** \brief QSPI prefetch data stop config enumeration + ******************************************************************************/ +typedef enum en_qspi_prefetch_config +{ + QspiPrefetchStopComplete = 0u, ///< Stop after prefetch data complete + QspiPrefetchStopImmediately = 1u, ///< Immediately stop prefetch +} en_qspi_prefetch_config_t; + +/** + ******************************************************************************* + ** \brief QSPI read mode enumeration + ******************************************************************************/ +typedef enum en_qspi_read_mode +{ + QspiReadModeStandard = 0u, ///< Standard read + QspiReadModeFast = 1u, ///< Fast read + QspiReadModeTwoWiresOutput = 2u, ///< Two wires output fast read + QspiReadModeTwoWiresIO = 3u, ///< Two wires input/output fast read + QspiReadModeFourWiresOutput = 4u, ///< Four wires output fast read + QspiReadModeFourWiresIO = 5u, ///< Four wires input/output fast read + QspiReadModeCustomStandard = 6u, ///< Custom standard read + QspiReadModeCustomFast = 7u, ///< Custom fast read +} en_qspi_read_mode_t; + +/** + ******************************************************************************* + ** \brief QSPI QSSN valid extend time enumeration + ******************************************************************************/ +typedef enum en_qspi_qssn_valid_extend_time +{ + QspiQssnValidExtendNot = 0u, ///< Don't extend QSSN valid time + QspiQssnValidExtendSck32 = 1u, ///< QSSN valid time extend 32 QSCK cycles + QspiQssnValidExtendSck128 = 2u, ///< QSSN valid time extend 138 QSCK cycles + QspiQssnValidExtendSckEver = 3u, ///< QSSN valid time extend to ever +} en_qspi_qssn_valid_extend_time_t; + +/** + ******************************************************************************* + ** \brief QSPI QSCK duty cycle correction enumeration + ******************************************************************************/ +typedef enum en_qspi_qsck_duty_correction +{ + QspiQsckDutyCorrNot = 0u, ///< Don't correction duty cycle + QspiQsckDutyCorrHalfHclk = 1u, ///< QSCK's rising edge delay 0.5 HCLK cycle when Qsck select HCLK is odd +} en_qspi_qsck_duty_correction_t; + +/** + ******************************************************************************* + ** \brief QSPI WP Pin output level enumeration + ******************************************************************************/ +typedef enum en_qspi_wp_pin_level +{ + QspiWpPinOutputLow = 0u, ///< WP pin(QIO2) output low level + QspiWpPinOutputHigh = 1u, ///< WP pin(QIO2) output high level +} en_qspi_wp_pin_level_t; + +/** + ******************************************************************************* + ** \brief QSPI QSSN setup delay time enumeration + ******************************************************************************/ +typedef enum en_qspi_qssn_setup_delay +{ + QspiQssnSetupDelayHalfQsck = 0u, ///< QSSN setup delay 0.5 QSCK output than QSCK first rising edge + QspiQssnSetupDelay1Dot5Qsck = 1u, ///< QSSN setup delay 1.5 QSCK output than QSCK first rising edge +} en_qspi_qssn_setup_delay_t; + +/** + ******************************************************************************* + ** \brief QSPI QSSN hold delay time enumeration + ******************************************************************************/ +typedef enum en_qspi_qssn_hold_delay +{ + QspiQssnHoldDelayHalfQsck = 0u, ///< QSSN hold delay 0.5 QSCK release than QSCK last rising edge + QspiQssnHoldDelay1Dot5Qsck = 1u, ///< QSSN hold delay 1.5 QSCK release than QSCK last rising edge +} en_qspi_qssn_hold_delay_t; + +/** + ******************************************************************************* + ** \brief QSPI address width enumeration + ******************************************************************************/ +typedef enum en_qspi_addr_width +{ + QspiAddressByteOne = 0u, ///< One byte address + QspiAddressByteTwo = 1u, ///< Two byte address + QspiAddressByteThree = 2u, ///< Three byte address + QspiAddressByteFour = 3u, ///< Four byte address +} en_qspi_addr_width_t; + +/** + ******************************************************************************* + ** \brief QSPI flag type enumeration + ******************************************************************************/ +typedef enum en_qspi_flag_type +{ + QspiFlagBusBusy = 0u, ///< QSPI bus work status flag in direct communication mode + QspiFlagXipMode = 1u, ///< XIP mode status signal + QspiFlagRomAccessError = 2u, ///< Trigger rom access error flag in direct communication mode + QspiFlagPrefetchBufferFull = 3u, ///< Prefetch buffer area status signal + QspiFlagPrefetchStop = 4u, ///< Prefetch action status signal +} en_qspi_flag_type_t; + +/** + ******************************************************************************* + ** \brief QSPI clock division enumeration + ******************************************************************************/ +typedef enum en_qspi_clk_div +{ + QspiHclkDiv2 = 0u, ///< Clock source: HCLK/2 + QspiHclkDiv3 = 2u, ///< Clock source: HCLK/3 + QspiHclkDiv4 = 3u, ///< Clock source: HCLK/4 + QspiHclkDiv5 = 4u, ///< Clock source: HCLK/5 + QspiHclkDiv6 = 5u, ///< Clock source: HCLK/6 + QspiHclkDiv7 = 6u, ///< Clock source: HCLK/7 + QspiHclkDiv8 = 7u, ///< Clock source: HCLK/8 + QspiHclkDiv9 = 8u, ///< Clock source: HCLK/9 + QspiHclkDiv10 = 9u, ///< Clock source: HCLK/10 + QspiHclkDiv11 = 10u, ///< Clock source: HCLK/11 + QspiHclkDiv12 = 11u, ///< Clock source: HCLK/12 + QspiHclkDiv13 = 12u, ///< Clock source: HCLK/13 + QspiHclkDiv14 = 13u, ///< Clock source: HCLK/14 + QspiHclkDiv15 = 14u, ///< Clock source: HCLK/15 + QspiHclkDiv16 = 15u, ///< Clock source: HCLK/16 + QspiHclkDiv17 = 16u, ///< Clock source: HCLK/17 + QspiHclkDiv18 = 17u, ///< Clock source: HCLK/18 + QspiHclkDiv19 = 18u, ///< Clock source: HCLK/19 + QspiHclkDiv20 = 19u, ///< Clock source: HCLK/20 + QspiHclkDiv21 = 20u, ///< Clock source: HCLK/21 + QspiHclkDiv22 = 21u, ///< Clock source: HCLK/22 + QspiHclkDiv23 = 22u, ///< Clock source: HCLK/23 + QspiHclkDiv24 = 23u, ///< Clock source: HCLK/24 + QspiHclkDiv25 = 24u, ///< Clock source: HCLK/25 + QspiHclkDiv26 = 25u, ///< Clock source: HCLK/26 + QspiHclkDiv27 = 26u, ///< Clock source: HCLK/27 + QspiHclkDiv28 = 27u, ///< Clock source: HCLK/28 + QspiHclkDiv29 = 28u, ///< Clock source: HCLK/29 + QspiHclkDiv30 = 29u, ///< Clock source: HCLK/30 + QspiHclkDiv31 = 30u, ///< Clock source: HCLK/31 + QspiHclkDiv32 = 31u, ///< Clock source: HCLK/32 + QspiHclkDiv33 = 32u, ///< Clock source: HCLK/33 + QspiHclkDiv34 = 33u, ///< Clock source: HCLK/34 + QspiHclkDiv35 = 34u, ///< Clock source: HCLK/35 + QspiHclkDiv36 = 35u, ///< Clock source: HCLK/36 + QspiHclkDiv37 = 36u, ///< Clock source: HCLK/37 + QspiHclkDiv38 = 37u, ///< Clock source: HCLK/38 + QspiHclkDiv39 = 38u, ///< Clock source: HCLK/39 + QspiHclkDiv40 = 39u, ///< Clock source: HCLK/40 + QspiHclkDiv41 = 40u, ///< Clock source: HCLK/41 + QspiHclkDiv42 = 41u, ///< Clock source: HCLK/42 + QspiHclkDiv43 = 42u, ///< Clock source: HCLK/43 + QspiHclkDiv44 = 43u, ///< Clock source: HCLK/44 + QspiHclkDiv45 = 44u, ///< Clock source: HCLK/45 + QspiHclkDiv46 = 45u, ///< Clock source: HCLK/46 + QspiHclkDiv47 = 46u, ///< Clock source: HCLK/47 + QspiHclkDiv48 = 47u, ///< Clock source: HCLK/48 + QspiHclkDiv49 = 48u, ///< Clock source: HCLK/49 + QspiHclkDiv50 = 49u, ///< Clock source: HCLK/50 + QspiHclkDiv51 = 50u, ///< Clock source: HCLK/51 + QspiHclkDiv52 = 51u, ///< Clock source: HCLK/52 + QspiHclkDiv53 = 52u, ///< Clock source: HCLK/53 + QspiHclkDiv54 = 53u, ///< Clock source: HCLK/54 + QspiHclkDiv55 = 54u, ///< Clock source: HCLK/55 + QspiHclkDiv56 = 55u, ///< Clock source: HCLK/56 + QspiHclkDiv57 = 56u, ///< Clock source: HCLK/57 + QspiHclkDiv58 = 57u, ///< Clock source: HCLK/58 + QspiHclkDiv59 = 58u, ///< Clock source: HCLK/59 + QspiHclkDiv60 = 59u, ///< Clock source: HCLK/60 + QspiHclkDiv61 = 60u, ///< Clock source: HCLK/61 + QspiHclkDiv62 = 61u, ///< Clock source: HCLK/62 + QspiHclkDiv63 = 62u, ///< Clock source: HCLK/63 + QspiHclkDiv64 = 63u, ///< Clock source: HCLK/64 +} en_qspi_clk_div_t; + +/** + ******************************************************************************* + ** \brief QSPI QSSN minimum interval time enumeration + ******************************************************************************/ +typedef enum en_qspi_qssn_interval_time +{ + QspiQssnIntervalQsck1 = 0u, ///< QSSN signal min interval time 1 QSCK + QspiQssnIntervalQsck2 = 1u, ///< QSSN signal min interval time 2 QSCK + QspiQssnIntervalQsck3 = 2u, ///< QSSN signal min interval time 3 QSCK + QspiQssnIntervalQsck4 = 3u, ///< QSSN signal min interval time 4 QSCK + QspiQssnIntervalQsck5 = 4u, ///< QSSN signal min interval time 5 QSCK + QspiQssnIntervalQsck6 = 5u, ///< QSSN signal min interval time 6 QSCK + QspiQssnIntervalQsck7 = 6u, ///< QSSN signal min interval time 7 QSCK + QspiQssnIntervalQsck8 = 7u, ///< QSSN signal min interval time 8 QSCK + QspiQssnIntervalQsck9 = 8u, ///< QSSN signal min interval time 9 QSCK + QspiQssnIntervalQsck10 = 9u, ///< QSSN signal min interval time 10 QSCK + QspiQssnIntervalQsck11 = 10u, ///< QSSN signal min interval time 11 QSCK + QspiQssnIntervalQsck12 = 11u, ///< QSSN signal min interval time 12 QSCK + QspiQssnIntervalQsck13 = 12u, ///< QSSN signal min interval time 13 QSCK + QspiQssnIntervalQsck14 = 13u, ///< QSSN signal min interval time 14 QSCK + QspiQssnIntervalQsck15 = 14u, ///< QSSN signal min interval time 15 QSCK + QspiQssnIntervalQsck16 = 15u, ///< QSSN signal min interval time 16 QSCK +} en_qspi_qssn_interval_time_t; + +/** + ******************************************************************************* + ** \brief QSPI virtual period enumeration + ******************************************************************************/ +typedef enum en_qspi_virtual_period +{ + QspiVirtualPeriodQsck3 = 0u, ///< Virtual period select 3 QSCK + QspiVirtualPeriodQsck4 = 1u, ///< Virtual period select 4 QSCK + QspiVirtualPeriodQsck5 = 2u, ///< Virtual period select 5 QSCK + QspiVirtualPeriodQsck6 = 3u, ///< Virtual period select 6 QSCK + QspiVirtualPeriodQsck7 = 4u, ///< Virtual period select 7 QSCK + QspiVirtualPeriodQsck8 = 5u, ///< Virtual period select 8 QSCK + QspiVirtualPeriodQsck9 = 6u, ///< Virtual period select 9 QSCK + QspiVirtualPeriodQsck10 = 7u, ///< Virtual period select 10 QSCK + QspiVirtualPeriodQsck11 = 8u, ///< Virtual period select 11 QSCK + QspiVirtualPeriodQsck12 = 9u, ///< Virtual period select 12 QSCK + QspiVirtualPeriodQsck13 = 10u, ///< Virtual period select 13 QSCK + QspiVirtualPeriodQsck14 = 11u, ///< Virtual period select 14 QSCK + QspiVirtualPeriodQsck15 = 12u, ///< Virtual period select 15 QSCK + QspiVirtualPeriodQsck16 = 13u, ///< Virtual period select 16 QSCK + QspiVirtualPeriodQsck17 = 14u, ///< Virtual period select 17 QSCK + QspiVirtualPeriodQsck18 = 15u, ///< Virtual period select 18 QSCK +} en_qspi_virtual_period_t; + +/** + ******************************************************************************* + ** \brief QSPI communication protocol structure definition + ******************************************************************************/ +typedef struct stc_qspi_comm_protocol +{ + en_qspi_spi_protocol_t enReceProtocol; ///< Receive data stage SPI protocol + en_qspi_spi_protocol_t enTransAddrProtocol; ///< Transmit address stage SPI protocol + en_qspi_spi_protocol_t enTransInstrProtocol; ///< Transmit instruction stage SPI protocol + en_qspi_read_mode_t enReadMode; ///< Serial interface read mode +} stc_qspi_comm_protocol_t; + +/** + ******************************************************************************* + ** \brief QSPI init structure definition + ******************************************************************************/ +typedef struct stc_qspi_init +{ + en_qspi_clk_div_t enClkDiv; ///< Clock division + en_qspi_spi_mode_t enSpiMode; ///< Specifies SPI mode + en_qspi_bus_mode_t enBusCommMode; ///< Bus communication mode + en_qspi_prefetch_config_t enPrefetchMode; ///< Config prefetch stop location + en_functional_state_t enPrefetchFuncEn; ///< Disable: disable prefetch function, Enable: enable prefetch function + stc_qspi_comm_protocol_t stcCommProtocol; ///< Qspi communication protocol config + en_qspi_qssn_valid_extend_time_t enQssnValidExtendTime; ///< QSSN valid extend time function select after QSPI access bus + en_qspi_qssn_interval_time_t enQssnIntervalTime; ///< QSSN minimum interval time + en_qspi_qsck_duty_correction_t enQsckDutyCorr; ///< QSCK output duty cycles correction + en_qspi_virtual_period_t enVirtualPeriod; ///< Virtual period config + en_qspi_wp_pin_level_t enWpPinLevel; ///< WP pin(QIO2) level select + en_qspi_qssn_setup_delay_t enQssnSetupDelayTime; ///< QSSN setup delay time choose + en_qspi_qssn_hold_delay_t enQssnHoldDelayTime; ///< QSSN hold delay time choose + en_functional_state_t enFourByteAddrReadEn; ///< Read instruction code select when set address width is four bytes + en_qspi_addr_width_t enAddrWidth; ///< Serial interface address width choose + uint8_t u8RomAccessInstr; ///< Rom access mode instruction +} stc_qspi_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< 4-byte instruction mode using instruction set */ +#define QSPI_4BINSTR_STANDARD_READ 0x13u +#define QSPI_4BINSTR_FAST_READ 0x0Cu +#define QSPI_4BINSTR_TWO_WIRES_OUTPUT_READ 0x3Cu +#define QSPI_4BINSTR_TWO_WIRES_IO_READ 0xBCu +#define QSPI_4BINSTR_FOUR_WIRES_OUTPUT_READ 0x6Cu +#define QSPI_4BINSTR_FOUR_WIRES_IO_READ 0xECu +#define QSPI_4BINSTR_EXIT_4BINSTR_MODE 0xB7u + +/*!< 3-byte instruction mode using instruction set */ +#define QSPI_3BINSTR_STANDARD_READ 0x03u +#define QSPI_3BINSTR_FAST_READ 0x0Bu +#define QSPI_3BINSTR_TWO_WIRES_OUTPUT_READ 0x3Bu +#define QSPI_3BINSTR_TWO_WIRES_IO_READ 0xBBu +#define QSPI_3BINSTR_FOUR_WIRES_OUTPUT_READ 0x6Bu +#define QSPI_3BINSTR_FOUR_WIRES_IO_READ 0xEBu +#define QSPI_3BINSTR_ENTER_4BINSTR_MODE 0xE9u + +/*!< General instruction set */ +#define QSPI_WRITE_MODE_ENABLE 0x06u + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* Base functions */ +en_result_t QSPI_DeInit(void); +en_result_t QSPI_Init(const stc_qspi_init_t *pstcQspiInitCfg); +en_result_t QSPI_SetAddrWidth(en_qspi_addr_width_t enAddrWidth); +en_result_t QSPI_SetExtendAddress(uint8_t u8Addr); +en_result_t QSPI_CommProtocolConfig(const stc_qspi_comm_protocol_t *pstcCommProtocol); +en_result_t QSPI_PrefetchCmd(en_functional_state_t enNewSta); +en_result_t QSPI_SetClockDiv(en_qspi_clk_div_t enClkDiv); +en_result_t QSPI_SetWPPinLevel(en_qspi_wp_pin_level_t enWpLevel); + +/* Rom access mode functions */ +en_result_t QSPI_SetRomAccessInstruct(uint8_t u8Instr); +en_result_t QSPI_XipModeCmd(uint8_t u8Instr, en_functional_state_t enNewSta); + +/* Direct communication mode functions */ +en_result_t QSPI_WriteDirectCommValue(uint8_t u8Val); +uint8_t QSPI_ReadDirectCommValue(void); +en_result_t QSPI_EnterDirectCommMode(void); +en_result_t QSPI_ExitDirectCommMode(void); + +/* Flags and get buffer functions */ +uint8_t QSPI_GetPrefetchBufferNum(void); +en_flag_status_t QSPI_GetFlag(en_qspi_flag_type_t enFlag); +en_result_t QSPI_ClearFlag(en_qspi_flag_type_t enFlag); + +//@} // QspiGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_QSPI_ENABLE */ + +#endif /* __HC32F460_QSPI_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_rmu.h b/driver/inc/hc32f460_rmu.h new file mode 100644 index 0000000..1217490 --- /dev/null +++ b/driver/inc/hc32f460_rmu.h @@ -0,0 +1,96 @@ +/***************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_rmu.h + ** + ** A detailed description is available at + ** @link RmuGroup RMU description @endlink + ** + ** - 2018-10-28 CDT First version for Device Driver Library of RMU + ** + ******************************************************************************/ +#ifndef __HC32F460_RMU_H__ +#define __HC32F460_RMU_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_RMU_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup RmuGroup Reset Management Unit(RMU) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief system reset cause flag + ** + ******************************************************************************/ +typedef struct stc_rmu_rstcause +{ + en_flag_status_t enMultiRst; ///< Multiply reset cause + en_flag_status_t enXtalErr; ///< Xtal error reset + en_flag_status_t enClkFreqErr; ///< Clk freqence error reset + en_flag_status_t enRamEcc; ///< Ram ECC reset + en_flag_status_t enRamParityErr; ///< Ram parity error reset + en_flag_status_t enMpuErr; ///< Mpu error reset + en_flag_status_t enSoftware; ///< Software reset + en_flag_status_t enPowerDown; ///< Power down reset + en_flag_status_t enSwdt; ///< Special watchdog timer reset + en_flag_status_t enWdt; ///< Watchdog timer reset + en_flag_status_t enPvd2; ///< Program voltage Dectection 2 reset + en_flag_status_t enPvd1; ///< Program voltage Dectection 1 reset + en_flag_status_t enBrownOut; ///< Brown out reset + en_flag_status_t enRstPin; ///< Reset pin reset + en_flag_status_t enPowerOn; ///< Power on reset +}stc_rmu_rstcause_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t RMU_GetResetCause(stc_rmu_rstcause_t *pstcData); +en_result_t RMU_ClrResetFlag(void); + +//@} // RmuGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_RMU_ENABLE */ + +#endif /* __HC32F460_RMU_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/inc/hc32f460_rtc.h b/driver/inc/hc32f460_rtc.h new file mode 100644 index 0000000..31544f0 --- /dev/null +++ b/driver/inc/hc32f460_rtc.h @@ -0,0 +1,274 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_rtc.h + ** + ** A detailed description is available at + ** @link RtcGroup Real-Time Clock description @endlink + ** + ** - 2018-11-22 CDT First version for Device Driver Library of RTC. + ** + ******************************************************************************/ +#ifndef __HC32F460_RTC_H__ +#define __HC32F460_RTC_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_RTC_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup RtcGroup Real-Time Clock(RTC) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief RTC period interrupt type enumeration + ******************************************************************************/ +typedef enum en_rtc_period_int_type +{ + RtcPeriodIntInvalid = 0u, ///< Period interrupt invalid + RtcPeriodIntHalfSec = 1u, ///< 0.5 second period interrupt + RtcPeriodIntOneSec = 2u, ///< 1 second period interrupt + RtcPeriodIntOneMin = 3u, ///< 1 minute period interrupt + RtcPeriodIntOneHour = 4u, ///< 1 hour period interrupt + RtcPeriodIntOneDay = 5u, ///< 1 day period interrupt + RtcPeriodIntOneMon = 6u ///< 1 month period interrupt +} en_rtc_period_int_type_t; + +/** + ******************************************************************************* + ** \brief RTC time format enumeration + ******************************************************************************/ +typedef enum en_rtc_time_format +{ + RtcTimeFormat12Hour = 0u, ///< 12 hours mode + RtcTimeFormat24Hour = 1u, ///< 24 hours mode +} en_rtc_time_format_t; + +/** + ******************************************************************************* + ** \brief RTC 1Hz output compensation way enumeration + ******************************************************************************/ +typedef enum en_rtc_output_compen +{ + RtcOutputCompenDistributed = 0u, ///< Distributed compensation 1hz output + RtcOutputCompenUniform = 1u, ///< Uniform Compensation 1hz output +} en_rtc_output_compen_t; + +/** + ******************************************************************************* + ** \brief RTC work mode enumeration + ******************************************************************************/ +typedef enum en_rtc_work_mode +{ + RtcModeNormalCount = 0u, ///< Normal count mode + RtcModeReadOrWrite = 1u, ///< Read or write mode +} en_rtc_work_mode_t; + +/** + ******************************************************************************* + ** \brief RTC count clock source enumeration + ******************************************************************************/ +typedef enum en_rtc_clk_source +{ + RtcClkXtal32 = 0u, ///< XTAL32 as clock source + RtcClkLrc = 1u, ///< LRC as clock source +} en_rtc_clk_source_t; + +/** + ******************************************************************************* + ** \brief RTC data format enumeration + ******************************************************************************/ +typedef enum en_rtc_data_format +{ + RtcDataFormatDec = 0u, ///< Decimal format + RtcDataFormatBcd = 1u, ///< BCD format +} en_rtc_data_format_t; + +/** + ******************************************************************************* + ** \brief RTC 12 hour AM/PM enumeration + ******************************************************************************/ +typedef enum en_rtc_hour12_ampm +{ + RtcHour12Am = 0u, ///< Ante meridiem + RtcHour12Pm = 1u, ///< Post meridiem +} en_rtc_hour12_ampm_t; + +/** + ******************************************************************************* + ** \brief RTC month enumeration + ******************************************************************************/ +typedef enum en_rtc_month +{ + RtcMonthJanuary = 1u, ///< January + RtcMonthFebruary = 2u, ///< February + RtcMonthMarch = 3u, ///< March + RtcMonthApril = 4u, ///< April + RtcMonthMay = 5u, ///< May + RtcMonthJune = 6u, ///< June + RtcMonthJuly = 7u, ///< July + RtcMonthAugust = 8u, ///< August + RtcMonthSeptember = 9u, ///< September + RtcMonthOctober = 10u, ///< October + RtcMonthNovember = 11u, ///< November + RtcMonthDecember = 12u, ///< December +} en_rtc_month_t; + +/** + ******************************************************************************* + ** \brief RTC weekday enumeration + ******************************************************************************/ +typedef enum en_rtc_weekday +{ + RtcWeekdaySunday = 0u, ///< Sunday + RtcWeekdayMonday = 1u, ///< Monday + RtcWeekdayTuesday = 2u, ///< Tuesday + RtcWeekdayWednesday = 3u, ///< Wednesday + RtcWeekdayThursday = 4u, ///< Thursday + RtcWeekdayFriday = 5u, ///< Friday + RtcWeekdaySaturday = 6u ///< Saturday +} en_rtc_weekday_t; + +/** + ******************************************************************************* + ** \brief RTC alarm weekday enumeration + ******************************************************************************/ +typedef enum en_rtc_alarm_weekday +{ + RtcAlarmWeekdaySunday = 0x01u, ///< Sunday + RtcAlarmWeekdayMonday = 0x02u, ///< Monday + RtcAlarmWeekdayTuesday = 0x04u, ///< Tuesday + RtcAlarmWeekdayWednesday = 0x08u, ///< Wednesday + RtcAlarmWeekdayThursday = 0x10u, ///< Thursday + RtcAlarmWeekdayFriday = 0x20u, ///< Friday + RtcAlarmWeekdaySaturday = 0x40u, ///< Saturday +} en_rtc_alarm_weekday_t; + +/** + ******************************************************************************* + ** \brief RTC interrupt request type enumeration + ******************************************************************************/ +typedef enum en_rtc_irq_type_ +{ + RtcIrqPeriod = 0u, ///< Period count interrupt request + RtcIrqAlarm = 1u, ///< Alarm interrupt request +} en_rtc_irq_type_t; + +/** + ******************************************************************************* + ** \brief RTC date and time structure definition + ******************************************************************************/ +typedef struct stc_rtc_date_time +{ + uint8_t u8Year; ///< Year (range 0-99) + uint8_t u8Month; ///< Month (range 1-12) + uint8_t u8Day; ///< Day (range 1-31) + uint8_t u8Hour; ///< Hours (range 1-12 when 12 hour format; range 0-23 when 24 hour format) + uint8_t u8Minute; ///< Minutes (range 0-59) + uint8_t u8Second; ///< Seconds (range 0-59) + uint8_t u8Weekday; ///< Weekday (range 0-6) + en_rtc_hour12_ampm_t enAmPm; ///< The value is valid when 12-hour format +} stc_rtc_date_time_t; + +/** + ******************************************************************************* + ** \brief RTC alarm time structure definition + ******************************************************************************/ +typedef struct stc_rtc_alarm_time +{ + uint8_t u8Minute; ///< Minutes (range 0-59) + uint8_t u8Hour; ///< Hours (range 1-12 when 12 hour format; range 0-23 when 24 hour format) + uint8_t u8Weekday; ///< Weekday (range RtcAlarmWeekdaySunday to RtcAlarmWeekdaySaturday) + en_rtc_hour12_ampm_t enAmPm; ///< The value is valid when 12-hour format +} stc_rtc_alarm_time_t; + +/** + ******************************************************************************* + ** \brief RTC init structure definition + ******************************************************************************/ +typedef struct stc_rtc_init +{ + en_rtc_clk_source_t enClkSource; ///< Clock source + en_rtc_period_int_type_t enPeriodInt; ///< Period interrupt condition + en_rtc_time_format_t enTimeFormat; ///< RTC time format + en_rtc_output_compen_t enCompenWay; ///< 1HZ output compensation way + uint16_t u16CompenVal; ///< Clock error compensation value + en_functional_state_t enCompenEn; ///< Enable/Disable clock error compensation +} stc_rtc_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* Base functions */ +en_result_t RTC_DeInit(void); +en_result_t RTC_Init(const stc_rtc_init_t *pstcRtcInit); +en_result_t RTC_Cmd(en_functional_state_t enNewSta); +en_result_t RTC_EnterRwMode(void); +en_result_t RTC_ExitRwMode(void); + +/* Extend functions */ +en_result_t RTC_PeriodIntConfig(en_rtc_period_int_type_t enIntType); +en_result_t RTC_LowPowerSwitch(void); +en_result_t RTC_SetClkCompenValue(uint16_t u16CompenVal); +en_result_t RTC_ClkCompenCmd(en_functional_state_t enNewSta); +en_result_t RTC_OneHzOutputCmd(en_functional_state_t enNewSta); + +/* Date and time functions */ +en_result_t RTC_SetDateTime(en_rtc_data_format_t enFormat, const stc_rtc_date_time_t *pstcRtcDateTime, + en_functional_state_t enUpdateDateEn, en_functional_state_t enUpdateTimeEn); +en_result_t RTC_GetDateTime(en_rtc_data_format_t enFormat, stc_rtc_date_time_t *pstcRtcDateTime); + +/* Alarm functions */ +en_result_t RTC_SetAlarmTime(en_rtc_data_format_t enFormat, const stc_rtc_alarm_time_t *pstcRtcAlarmTime); +en_result_t RTC_GetAlarmTime(en_rtc_data_format_t enFormat, stc_rtc_alarm_time_t *pstcRtcAlarmTime); +en_result_t RTC_AlarmCmd(en_functional_state_t enNewSta); + +/* Interrupt and flags management functions ******************************************/ +en_result_t RTC_IrqCmd(en_rtc_irq_type_t enIrq, en_functional_state_t enNewSta); +en_flag_status_t RTC_GetAlarmFlag(void); +en_result_t RTC_ClearAlarmFlag(void); + +//@} // RtcGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_RTC_ENABLE */ + +#endif /* __HC32F460_RTC_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_sdioc.h b/driver/inc/hc32f460_sdioc.h new file mode 100644 index 0000000..2fd546a --- /dev/null +++ b/driver/inc/hc32f460_sdioc.h @@ -0,0 +1,559 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_sdioc.h + ** + ** A detailed description is available at + ** @link SdiocGroup SDIOC description @endlink + ** + ** - 2018-11-11 CDT First version for Device Driver Library of SDIOC. + ** + ******************************************************************************/ +#ifndef __HC32F460_SDIOC_H__ +#define __HC32F460_SDIOC_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_SDIOC_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup SdiocGroup Secure Digital Input and Output Controller(SDIOC) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief SDIOC mode enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_mode +{ + SdiocModeSD = 0u, ///< The SD mode + SdiocModeMMC = 1u, ///< The MMC mode +} en_sdioc_mode_t; + +/** + ******************************************************************************* + ** \brief SDIOC transfer bus width enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_bus_width +{ + SdiocBusWidth4Bit = 0u, ///< The SDIOC bus width 4 bit + SdiocBusWidth8Bit = 1u, ///< The SDIOC bus width 8 bit + SdiocBusWidth1Bit = 2u, ///< The SDIOC bus width 1 bit +} en_sdioc_bus_width_t; + +/** + ******************************************************************************* + ** \brief SDIOC clock division enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_clk_div +{ + SdiocClkDiv_1 = 0x00u, ///< EXCLK/1 + SdiocClkDiv_2 = 0x01u, ///< EXCLK/2 + SdiocClkDiv_4 = 0x02u, ///< EXCLK/4 + SdiocClkDiv_8 = 0x04u, ///< EXCLK/8 + SdiocClkDiv_16 = 0x08u, ///< EXCLK/16 + SdiocClkDiv_32 = 0x10u, ///< EXCLK/32 + SdiocClkDiv_64 = 0x20u, ///< EXCLK/64 + SdiocClkDiv_128 = 0x40u, ///< EXCLK/128 + SdiocClkDiv_256 = 0x80u, ///< EXCLK/256 +} en_sdioc_clk_div_t; + +/** + ******************************************************************************* + ** \brief SDIOC response type enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_response_type +{ + SdiocResponseNoneBit = 0u, ///< No Response + SdiocResponse136Bit = 1u, ///< Response Length 136 + SdiocResponse48Bit = 2u, ///< Response Length 48 + SdiocResponse48BitCheckBusy = 3u, ///< Response Length 48 check Busy after response +} en_sdioc_response_type_t; + +/** + ******************************************************************************* + ** \brief SDIOC response index enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_response_index +{ + SdiocCmdNoRsp = 0u, ///< No Response + SdiocCmdRspR1 = 1u, ///< Command Response 1 + SdiocCmdRspR1b = 2u, ///< Command Response 1 with busy + SdiocCmdRspR2 = 3u, ///< Command Response 2 + SdiocCmdRspR3 = 4u, ///< Command Response 3 + SdiocCmdRspR4 = 5u, ///< Command Response 4 + SdiocCmdRspR5 = 6u, ///< Command Response 5 + SdiocCmdRspR5b = 7u, ///< Command Response 5 with busy + SdiocCmdRspR6 = 8u, ///< Command Response 6 + SdiocCmdRspR7 = 9u, ///< Command Response 7 +} en_sdioc_response_index_t; + +/** + ******************************************************************************* + ** \brief SDIOC command type enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_cmd_type +{ + SdiocCmdNormal = 0u, ///< Other commands + SdiocCmdSuspend = 1u, ///< CMD52 for writing "Bus Suspend" in CCCR + SdiocCmdResume = 2u, ///< CMD52 for writing "Function Select" in CCCR + SdiocCmdAbort = 3u, ///< CMD12, CMD52 for writing "I/O Abort" in CCCR +} en_sdioc_cmd_type_t; + +/** + ******************************************************************************* + ** \brief SDIOC data transfer direction enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_transfer_dir +{ + SdiocTransferToCard = 0u, ///< Write (Host to Card) + SdiocTransferToHost = 1u, ///< Read (Card to Host) +} en_sdioc_transfer_dir_t; + +/** + ******************************************************************************* + ** \brief SDIOC data transfer mode enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_transfer_mode +{ + SdiocTransferSingle = 0u, ///< Single Block transfer + SdiocTransferInfinite = 1u, ///< Infinite Block transfer + SdiocTransferMultiple = 2u, ///< Multiple Block transfer + SdiocTransferStopMultiple = 3u, ///< Stop Multiple Block transfer +} en_sdioc_transfer_mode_t; + +/** + ******************************************************************************* + ** \brief SD data timeout time enumeration + ** + ******************************************************************************/ +typedef enum en_sd_data_timeout +{ + SdiocDtoSdclk_2_13 = 0u, ///< Timeout time: SDCLK*2^13 + SdiocDtoSdclk_2_14 = 1u, ///< Timeout time: SDCLK*2^14 + SdiocDtoSdclk_2_15 = 2u, ///< Timeout time: SDCLK*2^15 + SdiocDtoSdclk_2_16 = 3u, ///< Timeout time: SDCLK*2^16 + SdiocDtoSdclk_2_17 = 4u, ///< Timeout time: SDCLK*2^17 + SdiocDtoSdclk_2_18 = 5u, ///< Timeout time: SDCLK*2^18 + SdiocDtoSdclk_2_19 = 6u, ///< Timeout time: SDCLK*2^19 + SdiocDtoSdclk_2_20 = 7u, ///< Timeout time: SDCLK*2^20 + SdiocDtoSdclk_2_21 = 8u, ///< Timeout time: SDCLK*2^21 + SdiocDtoSdclk_2_22 = 9u, ///< Timeout time: SDCLK*2^22 + SdiocDtoSdclk_2_23 = 10u, ///< Timeout time: SDCLK*2^23 + SdiocDtoSdclk_2_24 = 11u, ///< Timeout time: SDCLK*2^24 + SdiocDtoSdclk_2_25 = 12u, ///< Timeout time: SDCLK*2^25 + SdiocDtoSdclk_2_26 = 13u, ///< Timeout time: SDCLK*2^26 + SdiocDtoSdclk_2_27 = 14u, ///< Timeout time: SDCLK*2^27 +} en_sdioc_data_timeout_t; + +/** + ******************************************************************************* + ** \brief SDIOC dat line type enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_dat_line_type +{ + SdiocDat0Line = 0u, ///< DAT0 Line + SdiocDat1Line = 1u, ///< DAT1 Line + SdiocDat2Line = 2u, ///< DAT2 Line + SdiocDat3Line = 3u, ///< DAT3 Line +} en_sdioc_dat_line_type_t; + +/** + ******************************************************************************* + ** \brief SDIOC software reset type enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_sw_reset +{ + SdiocSwResetDatLine = 0u, ///< Only part of data circuit is reset. + SdiocSwResetCmdLine = 1u, ///< Only part of command circuit is reset. + SdiocSwResetAll = 2u, ///< Reset the entire Host Controller except for the card detection circuit. +} en_sdioc_sw_reset_t; + +/** + ******************************************************************************* + ** \brief SDIOC host status enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_host_status +{ + SdiocCommandInhibitCmd = (1u << 0), ///< Command Inhibit(CMD). 1: Cannot issue command; 0:Can issue command using only CMD line + SdiocCommandInhibitData = (1u << 1), ///< Command Inhibit(DAT). 1: Cannot issue command which uses the DAT line; 0:Can issue command which uses the DAT line + SdiocDataLineActive = (1u << 2), ///< 1: DAT Line Active; 0: DAT Line Inactive + SdiocWriteTransferActive = (1u << 8), ///< Write Transfer Active.1: Transferring data; 0: No valid data + SdiocReadTransferActive = (1u << 9), ///< Read Transfer Active.1: Transferring data; 0: No valid data + SdiocBufferWriteEnble = (1u << 10), ///< 1: Write enable; 0: Write Disable + SdiocBufferReadEnble = (1u << 11), ///< 1: Read enable; 0: Read Disable + SdiocCardInserted = (1u << 16), ///< 1: Card Inserted; 0: Reset or Debouncing or No Card + SdiocCardStateStable = (1u << 17), ///< 1: No Card or Inserted; 0: Reset or Debouncing + SdiocCardDetectPinLvl = (1u << 18), ///< 1: Card present; 0: No card present + SdiocWriteProtectPinLvl = (1u << 19), ///< 1: Write enabled; 0: Write protected + SdiocData0PinLvl = (1u << 20), ///< 1: DAT0 line signal level high; 0: DAT0 line signal level low + SdiocData1PinLvl = (1u << 21), ///< 1: DAT1 line signal level high; 0: DAT1 line signal level low + SdiocData2PinLvl = (1u << 22), ///< 1: DAT2 line signal level high; 0: DAT2 line signal level low + SdiocData3PinLvl = (1u << 23), ///< 1: DAT3 line signal level high; 0: DAT3 line signal level low + SdiocCmdPinLvl = (1u << 24), ///< 1: CMD line signal level high; 0: CMD line signal level low +} en_sdioc_host_status_t; + +/** + ******************************************************************************* + ** \brief SDIOC normal interrupt selection enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_nor_int_sel +{ + SdiocCommandComplete = (1u << 0), ///< Command Complete. 1: Command complete; 0:No command complete + SdiocTransferComplete = (1u << 1), ///< Transfer Complete. 1: Data transfer complete; 0:No transfer complete + SdiocBlockGapEvent = (1u << 2), ///< Block Gap Event. 1: Transaction stopped at block gap; 0: No Block Gap Event + SdiocBufferWriteReady = (1u << 4), ///< Buffer Write Ready. 1: Ready to Write buffer; 0: No ready to Write buffer + SdiocBufferReadReady = (1u << 5), ///< Buffer Read Ready. 1: Ready to read buffer; 0: No ready to read buffer + SdiocCardInsertedInt = (1u << 6), ///< Write Transfer Active.1: Transferring data; 0: No valid data + SdiocCardRemoval = (1u << 7), ///< Card Removal. 1: Card removed; 0: Card state stable or Debouncing + SdiocCardInt = (1u << 8), ///< Card Interrupt. 1: Generate Card Interrupt; 0: No Card Interrupt + SdiocErrorInt = (1u << 15), ///< Error Interrupt. 1: Error; 0: No Error +} en_sdioc_nor_int_sel_t, en_sdioc_nor_int_flag_t; + +/** + ******************************************************************************* + ** \brief SDIOC error interrupt selection enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_err_int_sel +{ + SdiocCmdTimeoutErr = (1u << 0), ///< Command Timeout Error. 1: Timer out; 0:No Error + SdiocCmdCrcErr = (1u << 1), ///< Command CRC Error. 1: Command CRC Error Generated; 0:No Error + SdiocCmdEndBitErr = (1u << 2), ///< Command End Bit Error. 1: End Bit Error Generated; 0:No Error + SdiocCmdIndexErr = (1u << 3), ///< Command Index Error. 1: Command Index Error Generatedr; 0:No Error + SdiocDataTimeoutErr = (1u << 4), ///< Data Timeout Error. 1: Timer out; 0:No Error + SdiocDataCrcErr = (1u << 5), ///< Data CRC Error. 1: Data CRC Error Generated; 0:No Error + SdiocDataEndBitErr = (1u << 6), ///< Data End Bit Error. 1: End Bit Error Generated; 0:No Error + SdiocAutoCmd12Err = (1u << 8), ///< Auto CMD12 Error. 1: Error; 0:No Error +} en_sdioc_err_int_sel_t, en_sdioc_err_int_flag_t; + +/** + ******************************************************************************* + ** \brief SDIOC auto CMD12 error status enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_atuo_cmd_err_status +{ + SdiocAutoCmd12NotExecuted = (1u << 0), ///< Auto CMD12 Not Executed. 1: Not executed; 0:Executed + SdiocAutoCmd12Timeout = (1u << 1), ///< Auto CMD12 Timeout Error. 1: Time out; 0:No error + SdiocAutoCmd12CrcErr = (1u << 2), ///< Auto CMD12 CRC Error. 1: CRC Error Generated; 0: No error + SdiocAutoCmd12EndBitErr = (1u << 3), ///< Auto CMD12 End Bit Error. 1: End Bit Error Generated; 0: No error to Write buffer + SdiocAutoCmd12IndexErr = (1u << 4), ///< Auto CMD12 Index Error. 1: Error; 0: No error + SdiocCmdNotIssuedErr = (1u << 7), ///< Command Not Issued By Auto CMD12 Error.1: Not Issued; 0: No error +} en_sdioc_atuo_cmd_err_sel_t, en_sdioc_atuo_cmd_err_status_t; + +/** + ******************************************************************************* + ** \brief SDIOC speed mode enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_speed_mode +{ + SdiocNormalSpeedMode = 0u, ///< Normal speed mode + SdiocHighSpeedMode = 1u, ///< High speed mode +} en_sdioc_speed_mode_t; + +/** + ******************************************************************************* + ** \brief SDIOC response register enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_response_reg +{ + SdiocRegResp01 = 0x00u, ///< Response 0/1 Register + SdiocRegResp23 = 0x04u, ///< Response 2/3 Register + SdiocRegResp45 = 0x08u, ///< Response 4/5 Register + SdiocRegResp67 = 0x0Cu, ///< Response 5/6 Register +} en_sdioc_response_reg_t; + +/** + ****************************************************************************** + ** \brief SDIOC output clock frequency enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_clk_freq +{ + SdiocClk400K = 400000u, ///< SDIOC clock: 40KHz + SdiocClk20M = 20000000u, ///< SDIOC clock: 20MHz + SdiocClk25M = 25000000u, ///< SDIOC clock: 25MHz + SdiocClk40M = 40000000u, ///< SDIOC clock: 40MHz + SdiocClk50M = 50000000u, ///< SDIOC clock: 50MHz +} en_sdioc_clk_freq_t; + +/** + ****************************************************************************** + ** \brief SDIOC detect the source of card enumeration + ** + ******************************************************************************/ +typedef enum en_sdioc_detect_signal +{ + SdiocSdcdPinLevel = 0u, ///< SDCD# is selected (for normal use) + SdiocCardDetectTestLevel = 1u, ///< The Card Detect Test Level is selected(for test purpose) +} en_sdioc_detect_signal_t; + +/** + ******************************************************************************* + ** \brief SDIOC Command configure structure + ** + ******************************************************************************/ +typedef struct stc_sdioc_cmd_cfg +{ + uint8_t u8CmdIndex; ///< Command index + + uint32_t u32Argument; ///< The argument of command + + en_sdioc_cmd_type_t enCmdType; ///< Command type + + en_sdioc_response_index_t enRspIndex; ///< Response index, refer @ref en_sdioc_response_index_t for details + + en_functional_state_t enDataPresentEnable; ///< Enable: Data is present and shall be transferred using the DAT line, Disable: Commands using only CMD line +} stc_sdioc_cmd_cfg_t; + +/** + ******************************************************************************* + ** \brief SDIOC Data configure structure + ** + ******************************************************************************/ +typedef struct stc_sdioc_data_cfg +{ + uint16_t u16BlkSize; ///< Block size + + uint16_t u16BlkCnt; ///< Block count + + en_functional_state_t enAutoCmd12Enable; ///< Enable: Auto CMD12 enable, Disable: Auto CMD12 disable + + en_sdioc_transfer_dir_t enTransferDir; ///< Specifies the data transfer direction of the SDIOC controller. + ///< This parameter can be a value of @ref en_sdioc_transfer_dir_t. + + en_sdioc_data_timeout_t enDataTimeOut; ///< Specifies the data timeout period in card bus clock periods. + ///< This parameter can be a value of @ref en_sdioc_data_timeout_t. + + en_sdioc_transfer_mode_t enTransferMode; ///< Specifies the data transfer mode of the SDIOC controller. + ///< This parameter can be a value of @ref en_sdioc_transfer_mode_t. +} stc_sdioc_data_cfg_t; + +/** + ******************************************************************************* + ** \brief SDIOC normal interrupt enable structure + ** + ******************************************************************************/ +typedef struct stc_sdioc_normal_irq_en +{ + union + { + uint16_t u16NormalIntsgEn; ///< SDIOC normal interrupt enable + stc_sdioc_errintsgen_field_t stcNormalIntsgEn; ///< SDIOC normal interrupt enable bit-field structure + }; +} stc_sdioc_normal_irq_en_t; + +/** + ******************************************************************************* + ** \brief SDIOC normal interrupt enable structure + ** + ******************************************************************************/ +typedef struct stc_sdioc_error_irq_en +{ + union + { + uint16_t u16ErrorIntsgEn; ///< SDIOC error interrupt enable + stc_sdioc_errintsgen_field_t stcErrorIntsgEn; ///< SDIOC error interrupt enable bit-field structure + }; +} stc_sdioc_error_irq_en_t; + +/** + ******************************************************************************* + ** \brief SDIOC error status callback functions + ** + ******************************************************************************/ +typedef struct stc_sdioc_normal_irq_cb +{ + func_ptr_t pfnCommandCompleteIrqCb; ///< Pointer to command complete callback function + + func_ptr_t pfnTransferCompleteIrqCb; ///< Pointer to transfer complete callback function + + func_ptr_t pfnBlockGapIrqCb; ///< Pointer to Block gap callback function + + func_ptr_t pfnBufferWriteReadyIrqCb; ///< Pointer to buffer write ready callback function + + func_ptr_t pfnBufferReadReadyIrqCb; ///< Pointer to buffer read ready callback function + + func_ptr_t pfnCardInsertIrqCb; ///< Pointer to card insertion callback function + + func_ptr_t pfnCardRemovalIrqCb; ///< Pointer to card removal callback function + + func_ptr_t pfnCardIrqCb; ///< Pointer to card interrupt callback function +} stc_sdioc_normal_irq_cb_t; + +/** + ******************************************************************************* + ** \brief SDIOC error status callback functions + ** + ******************************************************************************/ +typedef struct stc_sdioc_error_irq_cb +{ + func_ptr_t pfnCmdTimeoutErrIrqCb; ///< Pointer to command timeout error interrupt callback function + + func_ptr_t pfnCmdCrcErrIrqCb; ///< Pointer to command CRC error interrupt callback function + + func_ptr_t pfnCmdEndBitErrIrqCb; ///< Pointer to command end bit error interrupt callback function + + func_ptr_t pfnCmdIndexErrIrqCb; ///< Pointer to command index error interrupt callback function + + func_ptr_t pfnDataTimeoutErrIrqCb; ///< Pointer to data timeout error interrupt callback function + + func_ptr_t pfnDataCrcErrIrqCb; ///< Pointer to data CRC error interrupt callback function + + func_ptr_t pfnDataEndBitErrIrqCb; ///< Pointer to data end bit error interrupt callback function + + func_ptr_t pfnAutoCmdErrIrqCb; ///< Pointer to command error interrupt callback function +} stc_sdioc_error_irq_cb_t; + +/** + ******************************************************************************* + ** \brief SDIOC initialization configuration + ** + ******************************************************************************/ +typedef struct stc_sdioc_init +{ + stc_sdioc_normal_irq_en_t *pstcNormalIrqEn; ///< Pointer to normal interrupt enable structure + + stc_sdioc_normal_irq_cb_t *pstcNormalIrqCb; ///< Pointer to normal interrupt callback function structure + + stc_sdioc_error_irq_en_t *pstcErrorIrqEn; ///< Pointer to error interrupt enable structure + + stc_sdioc_error_irq_cb_t *pstcErrorIrqCb; ///< Pointer to error interrupt callback structure +} stc_sdioc_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +void SDIOC_IrqHandler(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_Init(M4_SDIOC_TypeDef *SDIOCx, + const stc_sdioc_init_t *pstcInitCfg); +en_result_t SDIOC_DeInit(M4_SDIOC_TypeDef *SDIOCx); +void SDIOC_SetMode(const M4_SDIOC_TypeDef *SDIOCx, en_sdioc_mode_t enMode); +en_result_t SDIOC_SendCommand(M4_SDIOC_TypeDef *SDIOCx, + const stc_sdioc_cmd_cfg_t *pstcCmdCfg); +uint32_t SDIOC_GetResponse(const M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_response_reg_t enRespReg); +en_result_t SDIOC_ReadBuffer(M4_SDIOC_TypeDef *SDIOCx, + uint8_t au8Data[], + uint32_t u32Len); +en_result_t SDIOC_WriteBuffer(M4_SDIOC_TypeDef *SDIOCx, + uint8_t au8Data[], + uint32_t u32Len); +en_result_t SDIOC_ConfigData(M4_SDIOC_TypeDef *SDIOCx, + const stc_sdioc_data_cfg_t *pstcDataCfg); +en_result_t SDIOC_SdclkCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd); +en_result_t SDIOC_SetClkDiv(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_clk_div_t enClkDiv); +en_sdioc_clk_div_t SDIOC_GetClkDiv(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_SetClk(M4_SDIOC_TypeDef *SDIOCx, uint32_t u32ClkFreq); +en_result_t SDIOC_SetBusWidth(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_bus_width_t enBusWidth); +en_sdioc_bus_width_t SDIOC_GetBusWidth(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_SetSpeedMode(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_speed_mode_t enSpeedMode); +en_sdioc_speed_mode_t SDIOC_GetSpeedMode(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_SetDataTimeout(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_data_timeout_t enTimeout); +en_sdioc_data_timeout_t SDIOC_GetDataTimeout(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_SetCardDetectSignal(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_detect_signal_t enDetectSignal); +en_flag_status_t SDIOC_GetCardDetectTestLevel(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_BusPowerOn(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_BusPowerOff(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_StopAtBlockGapCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd); +en_result_t SDIOC_RestartTransfer(M4_SDIOC_TypeDef *SDIOCx); +en_result_t SDIOC_ReadWaitCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd); +en_result_t SDIOC_InterruptAtBlockGapCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd); +en_result_t SDIOC_SoftwareReset(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_sw_reset_t enSwResetType); +en_flag_status_t SDIOC_GetStatus(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_host_status_t enHostStatus); +en_result_t SDIOC_NormalIrqSignalCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_sel_t enNorInt, + en_functional_state_t enCmd); +en_result_t SDIOC_NormalIrqStatusCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_sel_t enNorInt, + en_functional_state_t enCmd); +en_flag_status_t SDIOC_GetNormalIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_flag_t enNorInt); +en_result_t SDIOC_ClearNormalIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_flag_t enNorInt); +en_result_t SDIOC_ErrIrqSignalCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_sel_t enErrInt, + en_functional_state_t enCmd); +en_result_t SDIOC_ErrIrqStatusCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_sel_t enErrInt, + en_functional_state_t enCmd); +en_flag_status_t SDIOC_GetErrIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_flag_t enErrInt); +en_result_t SDIOC_ClearErrIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_flag_t enErrInt); +en_result_t SDIOC_ForceErrIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_sel_t enErrInt); +en_flag_status_t SDIOC_GetAutoCmdErrStatus(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_atuo_cmd_err_status_t enAutoCmdErr); +en_result_t SDIOC_ForceAutoCmdErr(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_atuo_cmd_err_sel_t enAutoCmdErr); + +//@} // SdiocGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_SDIOC_ENABLE */ + +#endif /* __HC32F460_SDIOC_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_spi.h b/driver/inc/hc32f460_spi.h new file mode 100644 index 0000000..5afbf57 --- /dev/null +++ b/driver/inc/hc32f460_spi.h @@ -0,0 +1,426 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_spi.h + ** + ** A detailed description is available at + ** @link SpiGroup Serial Peripheral Interface description @endlink + ** + ** - 2018-10-29 CDT First version for Device Driver Library of Spi. + ** + ******************************************************************************/ +#ifndef __HC32F460_SPI_H__ +#define __HC32F460_SPI_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_SPI_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup SpiGroup Serial Peripheral Interface(SPI) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief SPI parity enumeration + ******************************************************************************/ +typedef enum en_spi_parity +{ + SpiParityEven = 0u, ///< Select even parity send and receive + SpiParityOdd = 1u, ///< Select odd parity send and receive +} en_spi_parity_t; + +/** + ******************************************************************************* + ** \brief SPI master/slave mode enumeration + ******************************************************************************/ +typedef enum en_spi_master_slave_mode +{ + SpiModeSlave = 0u, ///< Spi slave mode + SpiModeMaster = 1u, ///< Spi master mode +} en_spi_master_slave_mode_t; + +/** + ******************************************************************************* + ** \brief SPI transmission mode enumeration + ******************************************************************************/ +typedef enum en_spi_trans_mode +{ + SpiTransFullDuplex = 0u, ///< Full duplex sync serial communication + SpiTransOnlySend = 1u, ///< Only send serial communication +} en_spi_trans_mode_t; + +/** + ******************************************************************************* + ** \brief SPI work mode enumeration + ******************************************************************************/ +typedef enum en_spi_work_mode +{ + SpiWorkMode4Line = 0u, ///< 4 lines spi work mode + SpiWorkMode3Line = 1u, ///< 3 lines spi work mode(clock sync running) +} en_spi_work_mode_t; + +/** + ******************************************************************************* + ** \brief SPI SS interval time enumeration + ******************************************************************************/ +typedef enum en_spi_ss_interval_time +{ + SpiSsIntervalSck1PlusPck2 = 0u, ///< Spi SS interval time 1 SCK plus 2 PCLK1 + SpiSsIntervalSck2PlusPck2 = 1u, ///< Spi SS interval time 2 SCK plus 2 PCLK1 + SpiSsIntervalSck3PlusPck2 = 2u, ///< Spi SS interval time 3 SCK plus 2 PCLK1 + SpiSsIntervalSck4PlusPck2 = 3u, ///< Spi SS interval time 4 SCK plus 2 PCLK1 + SpiSsIntervalSck5PlusPck2 = 4u, ///< Spi SS interval time 5 SCK plus 2 PCLK1 + SpiSsIntervalSck6PlusPck2 = 5u, ///< Spi SS interval time 6 SCK plus 2 PCLK1 + SpiSsIntervalSck7PlusPck2 = 6u, ///< Spi SS interval time 7 SCK plus 2 PCLK1 + SpiSsIntervalSck8PlusPck2 = 7u, ///< Spi SS interval time 8 SCK plus 2 PCLK1 +} en_spi_ss_interval_time_t; + +/** + ******************************************************************************* + ** \brief SPI SS setup delay SCK enumeration + ******************************************************************************/ +typedef enum en_spi_ss_setup_delay +{ + SpiSsSetupDelaySck1 = 0u, ///< Spi SS setup delay 1 SCK + SpiSsSetupDelaySck2 = 1u, ///< Spi SS setup delay 2 SCK + SpiSsSetupDelaySck3 = 2u, ///< Spi SS setup delay 3 SCK + SpiSsSetupDelaySck4 = 3u, ///< Spi SS setup delay 4 SCK + SpiSsSetupDelaySck5 = 4u, ///< Spi SS setup delay 5 SCK + SpiSsSetupDelaySck6 = 5u, ///< Spi SS setup delay 6 SCK + SpiSsSetupDelaySck7 = 6u, ///< Spi SS setup delay 7 SCK + SpiSsSetupDelaySck8 = 7u, ///< Spi SS setup delay 8 SCK +} en_spi_ss_setup_delay_t; + +/** + ******************************************************************************* + ** \brief SPI SS hold delay SCK enumeration + ******************************************************************************/ +typedef enum en_spi_ss_hold_delay +{ + SpiSsHoldDelaySck1 = 0u, ///< Spi SS hold delay 1 SCK + SpiSsHoldDelaySck2 = 1u, ///< Spi SS hold delay 2 SCK + SpiSsHoldDelaySck3 = 2u, ///< Spi SS hold delay 3 SCK + SpiSsHoldDelaySck4 = 3u, ///< Spi SS hold delay 4 SCK + SpiSsHoldDelaySck5 = 4u, ///< Spi SS hold delay 5 SCK + SpiSsHoldDelaySck6 = 5u, ///< Spi SS hold delay 6 SCK + SpiSsHoldDelaySck7 = 6u, ///< Spi SS hold delay 7 SCK + SpiSsHoldDelaySck8 = 7u, ///< Spi SS hold delay 8 SCK +} en_spi_ss_hold_delay_t; + +/** + ******************************************************************************* + ** \brief SPI slave select polarity enumeration + ******************************************************************************/ +typedef enum en_spi_ss_polarity +{ + SpiSsLowValid = 0u, ///< SS0~3 signal low level valid + SpiSsHighValid = 1u, ///< SS0~3 signal high level valid +} en_spi_ss_polarity_t; + +/** + ******************************************************************************* + ** \brief SPI data register read object enumeration + ******************************************************************************/ +typedef enum en_spi_read_object +{ + SpiReadReceiverBuffer = 0u, ///< Read receive buffer + SpiReadSendBuffer = 1u, ///< Read send buffer(must be read when TDEF=1) +} en_spi_read_object_t; + +/** + ******************************************************************************* + ** \brief SPI frame number enumeration + ******************************************************************************/ +typedef enum en_spi_frame_number +{ + SpiFrameNumber1 = 0u, ///< 1 frame data + SpiFrameNumber2 = 1u, ///< 2 frame data + SpiFrameNumber3 = 2u, ///< 3 frame data + SpiFrameNumber4 = 3u, ///< 4 frame data +} en_spi_frame_number_t; + +/** + ******************************************************************************* + ** \brief SPI SS setup delay SCK option enumeration + ******************************************************************************/ +typedef enum en_spi_ss_setup_delay_option +{ + SpiSsSetupDelayTypicalSck1 = 0u, ///< SS setup delay 1 SCK + SpiSsSetupDelayCustomValue = 1u, ///< SS setup delay SCKDL register set value +} en_spi_ss_setup_delay_option_t; + +/** + ******************************************************************************* + ** \brief SPI SS hold delay SCK option enumeration + ******************************************************************************/ +typedef enum en_spi_ss_hold_delay_option +{ + SpiSsHoldDelayTypicalSck1 = 0u, ///< SS hold delay 1 SCK + SpiSsHoldDelayCustomValue = 1u, ///< SS hold delay SSDL register set value +} en_spi_ss_hold_delay_option_t; + +/** + ******************************************************************************* + ** \brief SPI SS interval time option enumeration + ******************************************************************************/ +typedef enum en_spi_ss_interval_time_option +{ + SpiSsIntervalTypicalSck1PlusPck2 = 0u, ///< Spi SS interval time 1 SCK plus 2 PCLK1 + SpiSsIntervalCustomValue = 1u, ///< Spi SS interval time NXTDL register set value +} en_spi_ss_interval_time_option_t; + +/** + ******************************************************************************* + ** \brief SPI first bit position enumeration + ******************************************************************************/ +typedef enum en_spi_first_bit_position +{ + SpiFirstBitPositionMSB = 0u, ///< Spi first bit to MSB + SpiFirstBitPositionLSB = 1u, ///< Spi first bit to LSB +} en_spi_first_bit_position_t; + +/** + ******************************************************************************* + ** \brief SPI data length enumeration + ******************************************************************************/ +typedef enum en_spi_data_length +{ + SpiDataLengthBit4 = 0u, ///< 4 bits + SpiDataLengthBit5 = 1u, ///< 5 bits + SpiDataLengthBit6 = 2u, ///< 6 bits + SpiDataLengthBit7 = 3u, ///< 7 bits + SpiDataLengthBit8 = 4u, ///< 8 bits + SpiDataLengthBit9 = 5u, ///< 9 bits + SpiDataLengthBit10 = 6u, ///< 10 bits + SpiDataLengthBit11 = 7u, ///< 11 bits + SpiDataLengthBit12 = 8u, ///< 12 bits + SpiDataLengthBit13 = 9u, ///< 13 bits + SpiDataLengthBit14 = 10u, ///< 14 bits + SpiDataLengthBit15 = 11u, ///< 15 bits + SpiDataLengthBit16 = 12u, ///< 16 bits + SpiDataLengthBit20 = 13u, ///< 20 bits + SpiDataLengthBit24 = 14u, ///< 24 bits + SpiDataLengthBit32 = 15u, ///< 32 bits +} en_spi_data_length_t; + +/** + ******************************************************************************* + ** \brief SPI SS valid channel select enumeration + ******************************************************************************/ +typedef enum en_spi_ss_valid_channel +{ + SpiSsValidChannel0 = 0u, ///< Select SS0 valid + SpiSsValidChannel1 = 1u, ///< Select SS1 valid + SpiSsValidChannel2 = 2u, ///< Select SS2 valid + SpiSsValidChannel3 = 3u, ///< Select SS3 valid +} en_spi_ss_valid_channel_t; + +/** + ******************************************************************************* + ** \brief SPI clock division enumeration + ******************************************************************************/ +typedef enum en_spi_clk_div +{ + SpiClkDiv2 = 0u, ///< Spi pclk1 division 2 + SpiClkDiv4 = 1u, ///< Spi pclk1 division 4 + SpiClkDiv8 = 2u, ///< Spi pclk1 division 8 + SpiClkDiv16 = 3u, ///< Spi pclk1 division 16 + SpiClkDiv32 = 4u, ///< Spi pclk1 division 32 + SpiClkDiv64 = 5u, ///< Spi pclk1 division 64 + SpiClkDiv128 = 6u, ///< Spi pclk1 division 128 + SpiClkDiv256 = 7u, ///< Spi pclk1 division 256 +} en_spi_clk_div_t; + +/** + ******************************************************************************* + ** \brief SPI SCK polarity enumeration + ******************************************************************************/ +typedef enum en_spi_sck_polarity +{ + SpiSckIdleLevelLow = 0u, ///< SCK is low level when SCK idle + SpiSckIdleLevelHigh = 1u, ///< SCK is high level when SCK idle +} en_spi_sck_polarity_t; + +/** + ******************************************************************************* + ** \brief SPI SCK phase enumeration + ******************************************************************************/ +typedef enum en_spi_sck_phase +{ + SpiSckOddSampleEvenChange = 0u, ///< SCK Odd edge data sample,even edge data change + SpiSckOddChangeEvenSample = 1u, ///< SCK Odd edge data change,even edge data sample +} en_spi_sck_phase_t; + +/** + ******************************************************************************* + ** \brief SPI interrupt request type enumeration + ******************************************************************************/ +typedef enum en_spi_irq_type +{ + SpiIrqIdle = 0u, ///< Spi idle interrupt request + SpiIrqReceive = 1u, ///< Spi receive interrupt request + SpiIrqSend = 2u, ///< Spi send interrupt request + SpiIrqError = 3u, ///< Spi error interrupt request +} en_spi_irq_type_t; + +/** + ******************************************************************************* + ** \brief SPI flag type enumeration + ******************************************************************************/ +typedef enum en_spi_flag_type +{ + SpiFlagReceiveBufferFull = 0u, ///< Receive buffer full flag + SpiFlagSendBufferEmpty = 1u, ///< Send buffer empty flag + SpiFlagUnderloadError = 2u, ///< Underload error flag + SpiFlagParityError = 3u, ///< Parity error flag + SpiFlagModeFaultError = 4u, ///< Mode fault error flag + SpiFlagSpiIdle = 5u, ///< SPI idle flag + SpiFlagOverloadError = 6u, ///< Overload error flag +} en_spi_flag_type_t; + +/** + ******************************************************************************* + ** \brief SPI SS channel enumeration + ******************************************************************************/ +typedef enum en_spi_ss_channel +{ + SpiSsChannel0 = 0u, ///< SS0 channel + SpiSsChannel1 = 1u, ///< SS1 channel + SpiSsChannel2 = 2u, ///< SS2 channel + SpiSsChannel3 = 3u, ///< SS3 channel +} en_spi_ss_channel_t; + +/** + ******************************************************************************* + ** \brief SPI bus delay structure definition + ** + ** \note Slave mode stc_spi_delay_config_t is invalid + ******************************************************************************/ +typedef struct stc_spi_delay_config +{ + en_spi_ss_setup_delay_option_t enSsSetupDelayOption; ///< SS setup delay time option + en_spi_ss_setup_delay_t enSsSetupDelayTime; ///< SS setup delay time(the value valid when enSsSetupDelayOption is custom) + en_spi_ss_hold_delay_option_t enSsHoldDelayOption; ///< SS hold delay time option + en_spi_ss_hold_delay_t enSsHoldDelayTime; ///< SS hold delay time(the value valid when enSsHoldDelayOption is custom) + en_spi_ss_interval_time_option_t enSsIntervalTimeOption; ///< SS interval time option + en_spi_ss_interval_time_t enSsIntervalTime; ///< SS interval time(the value valid when enSsIntervalTimeOption is custom) +} stc_spi_delay_config_t; + +/** + ******************************************************************************* + ** \brief SPI SS config structure definition + ** + ** \note 3 lines mode stc_spi_ss_config_t is invalid + ******************************************************************************/ +typedef struct stc_spi_ss_config +{ + en_spi_ss_valid_channel_t enSsValidBit; ///< SS valid channel select + en_spi_ss_polarity_t enSs0Polarity; ///< SS0 signal polarity + en_spi_ss_polarity_t enSs1Polarity; ///< SS1 signal polarity + en_spi_ss_polarity_t enSs2Polarity; ///< SS2 signal polarity + en_spi_ss_polarity_t enSs3Polarity; ///< SS3 signal polarity +} stc_spi_ss_config_t; + +/** + ******************************************************************************* + ** \brief SPI init structure definition + ******************************************************************************/ +typedef struct stc_spi_init_t +{ + stc_spi_delay_config_t stcDelayConfig; ///< SPI delay structure(Slave mode is invalid) + stc_spi_ss_config_t stcSsConfig; ///< SS polarity and channel structure(3 lines mode invalid) + en_spi_read_object_t enReadBufferObject; ///< Data register read object select(must be read when TDEF=1) + en_spi_sck_polarity_t enSckPolarity; ///< Sck polarity + en_spi_sck_phase_t enSckPhase; ///< Sck phase(This value must be SpiSckOddChangeEvenSample in 3-line mode) + en_spi_clk_div_t enClkDiv; ///< SPI clock division + en_spi_data_length_t enDataLength; ///< Data length + en_spi_first_bit_position_t enFirstBitPosition; ///< Data first bit position + en_spi_frame_number_t enFrameNumber; ///< Data frame number + en_spi_work_mode_t enWorkMode; ///< Spi work mode + en_spi_trans_mode_t enTransMode; ///< transmission mode + en_spi_master_slave_mode_t enMasterSlaveMode; ///< Spi master/slave mode + en_functional_state_t enCommAutoSuspendEn; ///< Enable/disable Communication auto suspend + en_functional_state_t enModeFaultErrorDetectEn; ///< Enable/disable Mode fault error detect + en_functional_state_t enParitySelfDetectEn; ///< Enable/disable Parity self detect + en_functional_state_t enParityEn; ///< Enable/disable Parity(if enable parity and SPI_CR1.TXMDS=1, receive data don't parity) + en_spi_parity_t enParity; ///< Parity mode select +} stc_spi_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* Base functions */ +en_result_t SPI_DeInit(M4_SPI_TypeDef *SPIx); +en_result_t SPI_Init(M4_SPI_TypeDef *SPIx, const stc_spi_init_t *pstcSpiInitCfg); +en_result_t SPI_GeneralLoopbackCmd(M4_SPI_TypeDef *SPIx, en_functional_state_t enNewSta); +en_result_t SPI_ReverseLoopbackCmd(M4_SPI_TypeDef *SPIx, en_functional_state_t enNewSta); +en_result_t SPI_Cmd(M4_SPI_TypeDef *SPIx, en_functional_state_t enNewSta); + +/* Send and receive data functions */ +en_result_t SPI_SendData8(M4_SPI_TypeDef *SPIx, uint8_t u8Data); +en_result_t SPI_SendData16(M4_SPI_TypeDef *SPIx, uint16_t u16Data); +en_result_t SPI_SendData32(M4_SPI_TypeDef *SPIx, uint32_t u32Data); +uint8_t SPI_ReceiveData8(const M4_SPI_TypeDef *SPIx); +uint16_t SPI_ReceiveData16(const M4_SPI_TypeDef *SPIx); +uint32_t SPI_ReceiveData32(const M4_SPI_TypeDef *SPIx); + +/* Communication configure functions */ +en_result_t SPI_SetSsPolarity(M4_SPI_TypeDef *SPIx, en_spi_ss_channel_t enChannel, + en_spi_ss_polarity_t enPolarity); +en_result_t SPI_SetSsValidChannel(M4_SPI_TypeDef *SPIx, en_spi_ss_channel_t enChannel); +en_result_t SPI_SetReadDataRegObject(M4_SPI_TypeDef *SPIx, en_spi_read_object_t enObject); +en_result_t SPI_SetFrameNumber(M4_SPI_TypeDef *SPIx, en_spi_frame_number_t enFrameNum); +en_result_t SPI_SetDataLength(M4_SPI_TypeDef *SPIx, en_spi_data_length_t enDataLength); +en_result_t SPI_SetFirstBitPosition(M4_SPI_TypeDef *SPIx, en_spi_first_bit_position_t enPosition); +en_result_t SPI_SetClockDiv(M4_SPI_TypeDef *SPIx, en_spi_clk_div_t enClkDiv); + +/* Interrupt and flags functions */ +en_result_t SPI_IrqCmd(M4_SPI_TypeDef *SPIx, en_spi_irq_type_t enIrq, + en_functional_state_t enNewSta); +en_flag_status_t SPI_GetFlag(M4_SPI_TypeDef *SPIx, en_spi_flag_type_t enFlag); +en_result_t SPI_ClearFlag(M4_SPI_TypeDef *SPIx, en_spi_flag_type_t enFlag); + +//@} // SpiGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_SPI_ENABLE */ + +#endif /* __HC32F460_SPI_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_sram.h b/driver/inc/hc32f460_sram.h new file mode 100644 index 0000000..cc7147d --- /dev/null +++ b/driver/inc/hc32f460_sram.h @@ -0,0 +1,190 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_sram.h + ** + ** A detailed description is available at + ** @link SramGroup Internal SRAM description @endlink + ** + ** - 2018-10-17 CDT First version for Device Driver Library of SRAM. + ** + ******************************************************************************/ + +#ifndef __HC32F460_SRAM_H__ +#define __HC32F460_SRAM_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_SRAM_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + * \defgroup SramGroup Internal SRAM + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +///< SRAM wait cycle register, parity/ECC check register protect code definition +#define SRAM_PROTECT_CODE (0x0000003Bu) + +/******************************************************************************* + Start addr. End addr. Size Function + SRAM1 0x20000000 0x2000FFFF 64KB Even Parity Check + SRAM2 0x20010000 0x2001FFFF 64KB Even Parity Check + SRAM3 0x20020000 0x20026FFF 28KB ECC Check + SRAM_Ret 0x200F0000 0x200F0FFF 4KB Even Parity Check + SRAM_HS 0x1FFF8000 0x1FFFFFFF 32KB Even Parity Check + ******************************************************************************/ +///< SRAM1 base address definition +#define SRAM1_BASE_ADDR (*((volatile unsigned int*)(0x20000000UL))) + +///< SRAM2 base address definition +#define SRAM2_BASE_ADDR (*((volatile unsigned int*)(0x20010000UL))) + +///< SRAM3 base address definition +#define SRAM3_BASE_ADDR (*((volatile unsigned int*)(0x20020000UL))) + +///< Retention SRAM base address definition +#define SRAMRET_BASE_ADDR (*((volatile unsigned int*)(0x200F0000UL))) + +///< High speed SRAM base address definition +#define SRAMHS_BASE_ADDR (*((volatile unsigned int*)(0x1FFF8000UL))) + + +typedef enum en_sram_index +{ + Sram12Idx = 1u << 0, + Sram3Idx = 1u << 1, + SramHsIdx = 1u << 2, + SramRetIdx = 1u << 3, +}en_sram_index_t; +/** + ******************************************************************************* + ** \brief Enumeration to the write/read cycles of SRAM + ** + ** \note + ******************************************************************************/ +typedef enum en_sram_rw_cycle +{ + SramCycle1 = 0u, + SramCycle2 = 1u, + SramCycle3 = 2u, + SramCycle4 = 3u, + SramCycle5 = 4u, + SramCycle6 = 5u, + SramCycle7 = 6u, + SramCycle8 = 7u, +}en_sram_rw_cycle_t; + +/** + ******************************************************************************* + ** \brief Enumeration to ECC check mode + ** + ** \note + ******************************************************************************/ +typedef enum en_ecc_mode +{ + EccMode0 = 0u, ///< disable ECC check function + EccMode1 = 1u, ///< no 1 bit ECC flag, interrupt/reset if 1 bit-ECC is detected + ///< generate 2 bit ECC flag, interrupt/reset if 2 bit-ECC is detected + EccMode2 = 2u, ///< generate 1 bit ECC flag, but no interrupt/reset if 1 bit-ECC is detected + ///< generate 2 bit ECC flag, interrupt/reset if 2 bit-ECC is detected + EccMode3 = 3u, ///< generate 1 bit ECC flag, interrupt/reset if 1 bit-ECC is detected + ///< generate 2 bit ECC flag, interrupt/reset if 2 bit-ECC is detected +}en_ecc_mode_t; + +/** + ******************************************************************************* + ** \brief Enumeration to operation after ECC/Parity error + ** + ** \note + ******************************************************************************/ +typedef enum en_ecc_py_err_op +{ + SramNmi = 0u, ///< Generate NMI after ECC/Parity error detected + SramReset = 1u, ///< Generate Reset after ECC/Parity error detected +}en_ecc_py_err_op_t; + +/** + ******************************************************************************* + ** \brief Enumeration to the ECC/Parity error status of each SRAM + ** + ** \note + ******************************************************************************/ +typedef enum en_sram_err_status +{ + Sram3EccErr1 = 1u << 0, ///< SRAM3 1 bit ECC error + Sram3EccErr2 = 1u << 1, ///< SRAM3 2 bit ECC error + Sram12ParityErr = 1u << 2, ///< SRAM1/2 parity error + SramHSParityErr = 1u << 3, ///< High speed SRAM parity error + SramRetParityErr = 1u << 4, ///< Retention SRAM parity error +}en_sram_err_status_t; + +/** + ******************************************************************************* + ** \brief SRAM configuration + ** + ** \note The SRAM configuration structure + ******************************************************************************/ +typedef struct stc_sram_config +{ + uint8_t u8SramIdx; ///< SRAM index, ref @ en_sram_index_t for details + en_sram_rw_cycle_t enSramRC; ///< SRAM read wait cycle setting + en_sram_rw_cycle_t enSramWC; ///< SRAM write wait cycle setting + en_ecc_mode_t enSramEccMode; ///< SRAM ECC mode setting + en_ecc_py_err_op_t enSramEccOp; ///< SRAM3 ECC error handling setting + en_ecc_py_err_op_t enSramPyOp; ///< SRAM1/2/HS/Ret Parity error handling setting + +}stc_sram_config_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +extern en_result_t SRAM_Init(const stc_sram_config_t *pstcSramConfig); +extern en_result_t SRAM_DeInit(void); +extern en_result_t SRAM_WT_Disable(void); +extern en_result_t SRAM_WT_Enable(void); +extern en_result_t SRAM_CK_Disable(void); +extern en_result_t SRAM_CK_Enable(void); +extern en_flag_status_t SRAM_GetStatus(en_sram_err_status_t enSramErrStatus); +extern en_result_t SRAM_ClrStatus(en_sram_err_status_t enSramErrStatus); + +//@} // SramGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_SRAM_ENABLE */ + +#endif /* __HC32F460_SRAM_H__ */ +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_swdt.h b/driver/inc/hc32f460_swdt.h new file mode 100644 index 0000000..63d94c4 --- /dev/null +++ b/driver/inc/hc32f460_swdt.h @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_swdt.h + ** + ** A detailed description is available at + ** @link SwdtGroup Special Watchdog Counter description @endlink + ** + ** - 2018-10-16 CDT First version for Device Driver Library of SWDT. + ** + ******************************************************************************/ +#ifndef __HC32F460_SWDT_H__ +#define __HC32F460_SWDT_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_SWDT_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup SwdtGroup Special Watchdog Counter(SWDT) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief SWDT flag type enumeration + ******************************************************************************/ +typedef enum en_swdt_flag_type +{ + SwdtFlagCountUnderflow = 0u, ///< Count underflow flag + SwdtFlagRefreshError = 1u, ///< Refresh error flag +} en_swdt_flag_type_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* Base functions */ +en_result_t SWDT_RefreshCounter(void); +uint16_t SWDT_GetCountValue(void); + +/* Flags functions */ +en_flag_status_t SWDT_GetFlag(en_swdt_flag_type_t enFlag); +en_result_t SWDT_ClearFlag(en_swdt_flag_type_t enFlag); + +//@} // SwdtGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_SWDT_ENABLE */ + +#endif /* __HC32F460_SWDT_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_timer0.h b/driver/inc/hc32f460_timer0.h new file mode 100644 index 0000000..46b570f --- /dev/null +++ b/driver/inc/hc32f460_timer0.h @@ -0,0 +1,209 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer0.h + ** + ** A detailed description is available at + ** @link Timer0Group description @endlink + ** + ** - 2018-10-11 CDT First version for Device Driver Library of TIMER0. + ** + ******************************************************************************/ + +#ifndef __HC32F460_TIMER0_H__ +#define __HC32F460_TIMER0_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ + +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_TIMER0_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup Timer0Group Timer0 + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Timer0 channel enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_channel +{ + Tim0_ChannelA = 0x00u, + Tim0_ChannelB = 0x01u +}en_tim0_channel_t; + +/** + ******************************************************************************* + ** \brief Timer0 Async Mode clock enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_async_clock_src +{ + Tim0_LRC = 0x00u, + Tim0_XTAL32 = 0x01u +}en_tim0_async_clock_src_t; + +/** + ******************************************************************************* + ** \brief Timer0 Sync Mode clock enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_sync_clock_src +{ + Tim0_Pclk1 = 0x00u, + Tim0_InsideHardTrig = 0x01u +}en_tim0_sync_clock_src_t; + +/** + ******************************************************************************* + ** \brief Timer0 counter mode enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_counter_mode +{ + Tim0_Sync = 0x00u, + Tim0_Async = 0x01u +}en_tim0_counter_mode_t; + +/** + ******************************************************************************* + ** \brief Timer0 trigger event mode enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_function +{ + Tim0_OutputCapare = 0x00u, + Tim0_InputCaptrue = 0x01u +}en_tim0_function_t; + +/** + ******************************************************************************* + ** \brief Timer0 clock division enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_clock_div +{ + Tim0_ClkDiv0 = 0u, + Tim0_ClkDiv2, + Tim0_ClkDiv4, + Tim0_ClkDiv8, + Tim0_ClkDiv16, + Tim0_ClkDiv32, + Tim0_ClkDiv64, + Tim0_ClkDiv128, + Tim0_ClkDiv256, + Tim0_ClkDiv512, + Tim0_ClkDiv1024 +}en_tim0_clock_div_t; + +/** + ******************************************************************************* + ** \brief Timer0 common trigger source select enumeration + ** + ******************************************************************************/ +typedef enum en_tim0_com_trigger +{ + Tim0ComTrigger_1 = 1u, ///< Select common trigger 1. + Tim0ComTrigger_2 = 2u, ///< Select common trigger 2. + Tim0ComTrigger_1_2 = 3u, ///< Select common trigger 1 and 2. +} en_tim0_com_trigger_t; + +/** + ******************************************************************************* + ** \brief Timer0 trigger function init structrue definition + ** + ******************************************************************************/ +typedef struct stc_tim0_trigger_init +{ + en_tim0_function_t Tim0_OCMode; ///GCMAR / GCMDR-->GCMBR Capture Input: GCMAR-->GCMCR / GCMDR-->GCMBR + ** Double buffer stransfer: Compare Ouput: GCMER-->GCMCR-->GCMAR / GCMFR-->GCMDR-->GCMBR Capture Input: GCMAR-->GCMCR-->GCMER /GCMFR-->GCMDR-->GCMBR + ** For Period register: + ** Single buffer stransfer: PERBR-->PERAR + ** Double buffer stransfer: PERCR-->PERBR-->PERAR + ******************************************************************************/ +typedef enum en_timer6_buf_gcmp_prd +{ + Timer6GcmpPrdSingleBuf = 0u, ///< Single buffer stransfer + Timer6GcmpPrdDoubleBuf = 1u, ///< Double buffer stransfer +}en_timer6_buf_gcmp_prd_t; + +/** + ****************************************************************************** + ** \brief Timer6 buffer - Special compare register transfer function selection + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_buf_spcl_cmp +{ + Timer6SpclSingleBuf = 0u, ///< Single buffer stransfer: Compare Ouput: SCMCR-->SCMAR / SCMDR-->SCMBR + Timer6SpclDoubleBuf = 1u, ///< Double buffer stransfer: Compare Ouput: SCMER-->SCMCR-->SCMAR / SCMFR-->SCMDR-->SCMBR +}en_timer6_buf_spcl_cmp_t; + +/** + ****************************************************************************** + ** \brief Timer6 buffer - Special compare register transfer opportunity selection + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_buf_spcl_opt +{ + Timer6SplcOptNone = 0u, ///< No transfer + Timer6SplcOptOverFlow = 1u, ///< Transfer when over flow (About sawtooth mode,accord to the count direction) + Timer6SplcOptUnderFlow = 2u, ///< Transfer when under flow (About sawtooth mode,accord to the count direction) + Timer6SplcOptBoth = 3u, ///< Transfer when over flow or under flow (About sawtooth mode,accord to the count direction) +}en_timer6_buf_spcl_opt_t; + +/** + ****************************************************************************** + ** \brief ADT dead timer control - PWMx dead timer separate set + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_dconr_sepa +{ + Timer6PWMxDtSeparate = 0u, ///< The dead timer of up count and down count separate set by DTUAR and DTDAR + Timer6PWMxDtEqual = 1u, ///< the values of DTUAR and DTDAR are equal automatically +}en_timer6_dconr_sepa_t; + +/** + ****************************************************************************** + ** \brief ADT filter control- TRIx/PWMx port filter sample clock selection + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_fconr_fltclk +{ + Timer6FltClkPclk0Div1 = 0u, ///< PCLK0 + Timer6FltClkPclk0Div4 = 1u, ///< PCLK0/4 + Timer6FltClkPclk0Div16 = 2u, ///< PCLK0/16 + Timer6FltClkPclk0Div64 = 3u, ///< PCLK0/64 +}en_timer6_fconr_fltclk_t; + +/** + ****************************************************************************** + ** \brief Timer6 valid period repeat- TIMx valid period repeat function selection(trigger interrupt or AOS event) + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_vperr_pcnts +{ + Timer6PeriodCnts0 = 0u, ///< Valid period repeat function disable + Timer6PeriodCnts1 = 1u, ///< Enable every other one period + Timer6PeriodCnts2 = 2u, ///< Enable every other two periods + Timer6PeriodCnts3 = 3u, ///< Enable every other three periods + Timer6PeriodCnts4 = 4u, ///< Enable every other four periods + Timer6PeriodCnts5 = 5u, ///< Enable every other five periods + Timer6PeriodCnts6 = 6u, ///< Enable every other six periods + Timer6PeriodCnts7 = 7u, ///< Enable every other seven periods +}en_timer6_vperr_pcnts_t; + +/** + ****************************************************************************** + ** \brief Timer6 valid period repeat- Count condition select + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_vperr_pcnte +{ + Timer6PeriodCnteDisable = 0u, ///< Valid period repeat function disable + Timer6PeriodCnteMin = 1u, ///< Over flow and under flow point of Sawtooth wave mode, or under flow point of Triangular wave mode + Timer6PeriodCnteMax = 2u, ///< Over flow and under flow point of Sawtooth wave mode, or voer flow point of Triangular wave mode + Timer6PeriodCnteBoth = 3u, ///< Over flow and under flow point of Sawtooth wave mode, or voer flow and under flow point of Triangular wave mode +}en_timer6_vperr_pcnte_t; + +/** + ****************************************************************************** + ** \brief Timer6 Hardware(Start/Stop/Clear/Capture) event trigger select + ** + ** \note + ******************************************************************************/ + +typedef enum en_timer6_hw_trig +{ + Timer6HwTrigAos0 = 0u, ///< Hardware trigger event from AOS0(HTSSR0) + Timer6HwTrigAos1 = 1u, ///< Hardware trigger event from AOS1(HTSSR1) + Timer6HwTrigPWMARise = 4u, ///< Hardware trigger event from PWMA rising + Timer6HwTrigPWMAFall = 5u, ///< Hardware trigger event from PWMA falling + Timer6HwTrigPWMBRise = 6u, ///< Hardware trigger event from PWMA rising + Timer6HwTrigPWMBFall = 7u, ///< Hardware trigger event from PWMA falling + Timer6HwTrigTimTriARise = 8u, ///< Hardware trigger event from TRIGA rising + Timer6HwTrigTimTriAFall = 9u, ///< Hardware trigger event from TRIGA falling + Timer6HwTrigTimTriBRise = 10u, ///< Hardware trigger event from TRIGB rising + Timer6HwTrigTimTriBFall = 11u, ///< Hardware trigger event from TRIGB falling + Timer6HwTrigEnd = 16u, +}en_timer6_hw_trig_t; + +/** + ****************************************************************************** + ** \brief Timer6 hardware (up count/down count) event trigger select + ** + ** \note + ******************************************************************************/ + +typedef enum en_timer6_hw_cnt +{ + Timer6HwCntPWMALowPWMBRise = 0u, ///< PWMB Rising trigger when PWMA is low level + Timer6HwCntPWMALowPWMBFall = 1u, ///< PWMB falling trigger when PWMA is low level + Timer6HwCntPWMAHighPWMBRise = 2u, ///< PWMB Rising trigger when PWMA is high level + Timer6HwCntPWMAHighPWMBFall = 3u, ///< PWMB falling trigger when PWMA is high level + Timer6HwCntPWMBLowPWMARise = 4u, ///< PWMA Rising trigger when PWMB is low level + Timer6HwCntPWMBLowPWMAFall = 5u, ///< PWMA falling trigger when PWMB is low level + Timer6HwCntPWMBHighPWMARise = 6u, ///< PWMA Rising trigger when PWMB is high level + Timer6HwCntPWMBHighPWMAFall = 7u, ///< PWMA falling trigger when PWMB is high level + Timer6HwCntTRIGARise = 8u, ///< TRIGA rising trigger + Timer6HwCntTRIGAFall = 9u, ///< TRIGA falling trigger + Timer6HwCntTRIGBRise = 10u, ///< TRIGB rising trigger + Timer6HwCntTRIGBFall = 11u, ///< TRIGB falling trigger + Timer6HwCntAos0 = 16u, ///< AOS0 trigger + Timer6HwCntAos1 = 17u, ///< AOS1 trigger + Timer6HwCntMax = 18u, +}en_timer6_hw_cnt_t; + + +/** + ****************************************************************************** + ** \brief Timer6 interrupt type + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_irq_type +{ + Timer6INTENA = 0u, ///< Interrupt of count equal to GCMA (or capture input A) + Timer6INTENB = 1u, ///< Interrupt of count equal to GCMB (or capture input B) + Timer6INTENC = 2u, ///< Interrupt of count equal to GCMC + Timer6INTEND = 3u, ///< Interrupt of count equal to GCMD + Timer6INTENE = 4u, ///< Interrupt of count equal to GCME + Timer6INTENF = 5u, ///< Interrupt of count equal to GCMF + Timer6INTENOVF = 6u, ///< Interrupt of over flow of sawtooth wave mode or peak point of triangular wave mode + Timer6INTENUDF = 7u, ///< Interrupt of under flow of sawtooth wave mode or valley point of triangular wave mode + Timer6INTENDTE = 8u, ///< Interrupt of dead timer error + Timer6INTENSAU = 16u, ///< Interrupt of count up equally compared with SCMA + Timer6INTENSAD = 17u, ///< Interrupt of count down equally compared with SCMA + Timer6INTENSBU = 18u, ///< Interrupt of count up equally compared with SCMB + Timer6INTENSBD = 19u, ///< Interrupt of count down equally compared with SCMB +}en_timer6_irq_type_t; + + +/** + ****************************************************************************** + ** \brief Timer6 status flag + ** + ** \note + ******************************************************************************/ +typedef enum en_timer6_status +{ + Timer6CMAF = 0u, ///< Status flag of count equal to GCMA (or capture input A) + Timer6CMBF = 1u, ///< Status flag of count equal to GCMB (or capture input B) + Timer6CMCF = 2u, ///< Status flag of count equal to GCMC + Timer6CMDF = 3u, ///< Status flag of count equal to GCMD + Timer6CMEF = 4u, ///< Status flag of count equal to GCME + Timer6CMFF = 5u, ///< Status flag of count equal to GCMF + Timer6OVFF = 6u, ///< Status flag of over flow of sawtooth wave mode or peak point of triangular wave mode + Timer6UDFF = 7u, ///< Status flag of under flow of sawtooth wave mode or valley point of triangular wave mode + Timer6DTEF = 8u, ///< Status flag of dead timer error + Timer6CMSAUF = 9u, ///< Status flag of count up equally compared with SCMA + Timer6CMSADF = 10u, ///< Status flag of count down equally compared with SCMA + Timer6CMSBUF = 11u, ///< Status flag of count up equally compared with SCMB + Timer6CMSBDF = 12u, ///< Status flag of count down equally compared with SCMB + Timer6VPERNUM = 21, ///< Number of valid period + Timer6DIRF = 31, ///< Count direction +}en_timer6_status_t; + +/** + ******************************************************************************* + ** \brief Timer6 common trigger source select enumeration + ** + ******************************************************************************/ +typedef enum en_timer6_com_trigger +{ + Timer6ComTrigger_1 = 1u, ///< Select common trigger 1. + Timer6ComTrigger_2 = 2u, ///< Select common trigger 2. + Timer6ComTrigger_1_2 = 3u, ///< Select common trigger 1 and 2. +} en_timer6_com_trigger_t; + +/** + ****************************************************************************** + ** \brief Timer6 software synchronous config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_sw_sync +{ + bool bTimer61; ///< Timer6 unit1 + bool bTimer62; ///< Timer6 unit2 + bool bTimer63; ///< Timer6 unit3 +}stc_timer6_sw_sync_t; + +/** + ****************************************************************************** + ** \brief Timer6 base init structure definition + ** \note + ******************************************************************************/ +typedef struct stc_timer6_basecnt_cfg +{ + en_timer6_count_mode_t enCntMode; ///< Count mode + en_timer6_count_dir_t enCntDir; ///< Count direction + en_timer6_clk_div_t enCntClkDiv; ///< Count clock division select +}stc_timer6_basecnt_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 Trig port config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_port_trig_cfg +{ + bool bFltEn; ///< trig source capture input filter enable + en_timer6_fconr_fltclk_t enFltClk; ///< Filter clock +}stc_tiemr6_port_trig_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 port output config +** \note + ******************************************************************************/ +typedef struct stc_timer6_port_output_cfg +{ + en_timer6_func_mode_t enPortMode; ///< Port mode + bool bOutEn; ///< Output enable / disable + en_timer6_pconr_cmpc_t enPerc; ///< Port state when counter match the period + en_timer6_pconr_cmpc_t enCmpc; ///< Port state when counter match GCMAR(GCMBR) + en_timer6_pconr_stastps_t enStaStp; ///< Post state selection when count start/stop + en_timer6_pconr_port_out_t enStaOut; ///< Port state when count start + en_timer6_pconr_port_out_t enStpOut; ///< port stop when count stop + en_timer6_pconr_disval_t enDisVal; ///< Port output state when brake +}stc_timer6_port_output_cfg_t; + + +/** + ****************************************************************************** + ** \brief Timer6 port input config +** \note + ******************************************************************************/ +typedef struct stc_timer6_port_input_cfg +{ + en_timer6_input_port_t enPortSel; ///< Port select + en_timer6_func_mode_t enPortMode; ///< Port mode + bool bFltEn; ///< trig source capture input filter enable + en_timer6_fconr_fltclk_t enFltClk; ///< Filter clock +}stc_timer6_port_input_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 hardware dead time function config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_deadtime_cfg +{ + bool bEnDeadtime; ///< Enable hardware dead time function + bool bEnDtBufUp; ///< Enable buffer transfer for up count dead time register(DTUBR-->DTUAR) + bool bEnDtBufDwn; ///< Enable buffer transfer for down count dead time register(DTDBR-->DTDAR) + bool bEnDtEqualUpDwn; ///< Enable down count dead time register equal to up count DT register +}stc_timer6_deadtime_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 valid period config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_validper_cfg +{ + en_timer6_vperr_pcnts_t enValidCntNum; ///< Valid period selection + en_timer6_vperr_pcnte_t enValidCdtEn; ///< Count condition of valid period + bool bPeriodSCMA; ///< Sepcial signal A valid period selection enable + bool bPeriodSCMB; ///< Sepcial signal A valid period selection enable +}stc_timer6_validper_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 general compare register buffer transfer config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_gcmp_buf_cfg +{ + bool bEnGcmpTransBuf; ///< Enable/Disable buffer transfer + en_timer6_buf_gcmp_prd_t enGcmpBufTransType; ///< Sigle or double buffer transfer +}stc_timer6_gcmp_buf_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 period register buffer transfer config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_period_buf_cfg +{ + bool bEnPeriodTransBuf; ///< Enable/Disable buffer transfer + en_timer6_buf_gcmp_prd_t enPeriodBufTransType; ///< Sigle or double buffer transfer +}stc_timer6_period_buf_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 Specila compare register buffer transfer config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_spcl_buf_cfg +{ + bool bEnSpclTransBuf; ///< Enable/Disable buffer transfer + en_timer6_buf_spcl_cmp_t enSpclBufTransType; ///< Sigle or double buffer transfer + en_timer6_buf_spcl_opt_t enSpclBufOptType; ///< Buffer transfer opportunity +}stc_timer6_spcl_buf_cfg_t; + +/** + ****************************************************************************** + ** \brief Timer6 Z phase input mask config + ** \note + ******************************************************************************/ +typedef struct stc_timer6_zmask_cfg +{ + en_timer6_gconr_zmsk_t enZMaskCycle; ///< Z phase input mask periods selection + bool bFltPosCntMaksEn; ///< As position count timer, position counter clear function enable(TRUE) or disable(FALSE) during the time of Z phase input mask + bool bFltRevCntMaksEn; ///< As revolution count timer, the counter function enable(TRUE) or disable(FALSE) during the time of Z phase input mask +}stc_timer6_zmask_cfg_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* IRQ config */ +en_result_t Timer6_ConfigIrq(M4_TMR6_TypeDef *TMR6x, en_timer6_irq_type_t enTimer6Irq, bool bEn); +/* Get status(flag) */ +uint8_t Timer6_GetStatus(M4_TMR6_TypeDef *TMR6x, en_timer6_status_t enStatus); + +/* Base functions */ +en_result_t Timer6_DeInit(M4_TMR6_TypeDef *TMR6x); +en_result_t Timer6_Init(M4_TMR6_TypeDef *TMR6x, const stc_timer6_basecnt_cfg_t* pstcTimer6BaseCntCfg); +/* Timer6 unit start count*/ +en_result_t Timer6_StartCount(M4_TMR6_TypeDef *TMR6x); +/* Timer6 unit stop count*/ +en_result_t Timer6_StopCount(M4_TMR6_TypeDef *TMR6x); +/* Timer6 unit Set Count Value*/ +en_result_t Timer6_SetCount(M4_TMR6_TypeDef *TMR6x, uint16_t u16Value); +/* Timer6 unit Get Count Value*/ +uint16_t Timer6_GetCount(M4_TMR6_TypeDef *TMR6x); +/* Timer6 unit Clear Count Value*/ +en_result_t Timer6_ClearCount(M4_TMR6_TypeDef *TMR6x); + +/* Timer6 unit Set Period and buffer Value*/ +en_result_t Timer6_SetPeriod(M4_TMR6_TypeDef *TMR6x, en_timer6_period_t enTimer6Periodx, uint16_t u16Period); +/* Timer6 unit set general compare register value*/ +en_result_t Timer6_SetGeneralCmpValue(M4_TMR6_TypeDef *TMR6x, en_timer6_compare_t enTimer6Compare, uint16_t u16Compare); +/* Timer6 unit set specoal compare register value*/ +en_result_t Timer6_SetSpecialCmpValue(M4_TMR6_TypeDef *TMR6x, en_timer6_special_compare_t enTimer6SpclCmp, uint16_t u16SpclCmp); +/* Timer6 unit get general compare register value*/ +uint16_t Timer6_GetGeneralCmpValue(M4_TMR6_TypeDef *TMR6x, en_timer6_compare_t enTimer6Compare); + +/* Timer6 unit set period buffer transfer function*/ +en_result_t Timer6_SetPeriodBuf(M4_TMR6_TypeDef *TMR6x, const stc_timer6_period_buf_cfg_t* pstcTimer6PrdBufCfg); +/* Timer6 unit set general compare buffer transfer function*/ +en_result_t Timer6_SetGeneralBuf(M4_TMR6_TypeDef *TMR6x, en_timer6_chx_port_t enTimer6PWMPort, const stc_timer6_gcmp_buf_cfg_t* pstcTimer6GenBufCfg); +/* Timer6 unit set special compare buffer transfer function*/ +en_result_t Timer6_SetSpecialBuf(M4_TMR6_TypeDef *TMR6x,en_timer6_special_compare_t enTimer6SpclCmp, const stc_timer6_spcl_buf_cfg_t* pstcTimer6SpclBufCfg); + +/* Timer6 unit Set valid period Value*/ +en_result_t Timer6_SetValidPeriod(M4_TMR6_TypeDef *TMR6x, const stc_timer6_validper_cfg_t* pstcTimer6ValidPerCfg); + +/* Config Input prot and filter function */ +en_result_t Timer6_PortInputConfig(M4_TMR6_TypeDef *TMR6x, const stc_timer6_port_input_cfg_t* pstcTimer6PortInputCfg); +/* Config output prot function */ +en_result_t Timer6_PortOutputConfig(M4_TMR6_TypeDef *TMR6x, en_timer6_chx_port_t enTimer6PWMPort, const stc_timer6_port_output_cfg_t* pstcTimer6PortOutCfg); + +/* Set dead time register value */ +en_result_t Timer6_SetDeadTimeValue(M4_TMR6_TypeDef *TMR6x, en_timer6_dead_time_reg_t enTimer6DTReg, uint16_t u16DTValue); +/* Config dead time function */ +en_result_t Timer6_ConfigDeadTime(M4_TMR6_TypeDef *TMR6x, const stc_timer6_deadtime_cfg_t* pstcTimer6DTCfg); + +/* Config Software Synchrony Stop */ +en_result_t Timer6_SwSyncStart(const stc_timer6_sw_sync_t* pstcTimer6SwSyncStart); +/* Config Software Synchrony Start */ +en_result_t Timer6_SwSyncStop(const stc_timer6_sw_sync_t* pstcTimer6SwSyncStop); +/* Config Software Synchrony Clear */ +en_result_t Timer6_SwSyncClear(const stc_timer6_sw_sync_t* pstcTimer6SwSyncClear); +/* Get Software Synchrony Status */ +en_result_t Timer6_GetSwSyncState(stc_timer6_sw_sync_t* pstcTimer6SwSyncState); + +/* Config Hardware up count event */ +en_result_t Timer6_ConfigHwCntUp(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_cnt_t enTimer6HwCntUp); +/* Clear Hardware up count event */ +en_result_t Timer6_ClearHwCntUp(M4_TMR6_TypeDef *TMR6x); +/* Config Hardware down count event */ +en_result_t Timer6_ConfigHwCntDwn(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_cnt_t enTimer6HwCntDwn); +/* Clear Hardware down count event */ +en_result_t Timer6_ClearHwCntDwn(M4_TMR6_TypeDef *TMR6x); + + +/* Config Hardware start event */ +en_result_t Timer6_ConfigHwStart(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwStart); +/* Clear Hardware start event */ +en_result_t Timer6_ClearHwStart(M4_TMR6_TypeDef *TMR6x); +/* Enable Hardware start event */ +en_result_t Timer6_EnableHwStart(M4_TMR6_TypeDef *TMR6x); +/* Dsiable Hardware start event */ +en_result_t Timer6_DisableHwStart(M4_TMR6_TypeDef *TMR6x); + +/* Config Hardware stop event */ +en_result_t Timer6_ConfigHwStop(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwStop); +/* Clear Hardware stop event */ +en_result_t Timer6_ClearHwStop(M4_TMR6_TypeDef *TMR6x); +/* Enable Hardware stop event */ +en_result_t Timer6_EnableHwStop(M4_TMR6_TypeDef *TMR6x); +/* Disable Hardware stop event */ +en_result_t Timer6_DisableHwStop(M4_TMR6_TypeDef *TMR6x); + +/* Config Hardware clear event */ +en_result_t Timer6_ConfigHwClear(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwClear); +/* Clear Hardware clear event */ +en_result_t Timer6_ClearHwClear(M4_TMR6_TypeDef *TMR6x); +/* Enable Hardware clear event */ +en_result_t Timer6_EnableHwClear(M4_TMR6_TypeDef *TMR6x); +/* Dsiable Hardware clear event */ +en_result_t Timer6_DisableHwClear(M4_TMR6_TypeDef *TMR6x); + + +/* Config Hardware capture event A */ +en_result_t Timer6_ConfigHwCaptureA(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwCaptureA); +/* Clear Hardware capture event A */ +en_result_t Timer6_ClearHwCaptureA(M4_TMR6_TypeDef *TMR6x); +/* Config Hardware capture event B */ +en_result_t Timer6_ConfigHwCaptureB(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwCaptureB); +/* Clear Hardware capture event B */ +en_result_t Timer6_ClearHwCaptureB(M4_TMR6_TypeDef *TMR6x); + + +/* Set trigger source 0 of hardware event */ +en_result_t Timer6_SetTriggerSrc0(en_event_src_t enTriggerSrc); +/* Set trigger source 1 of hardware event */ +en_result_t Timer6_SetTriggerSrc1(en_event_src_t enTriggerSrc); +/* Enable or disable Timer6 common trigger for Hardware trigger source 0 */ +void TIMER6_ComTriggerCmd0(en_timer6_com_trigger_t enComTrigger, en_functional_state_t enState); +/* Enable or disable Timer6 common trigger for Hardware trigger source 1 */ +void TIMER6_ComTriggerCmd1(en_timer6_com_trigger_t enComTrigger, en_functional_state_t enState); + +/* Z phase input mask config */ +en_result_t Timer6_ConfigZMask(M4_TMR6_TypeDef *TMR6x, const stc_timer6_zmask_cfg_t* pstcTimer6ZMaskCfg); + +//@} // Timer6Group + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_TIMER6_ENABLE */ + +#endif /* __HC32F460_TIMER6_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_timera.h b/driver/inc/hc32f460_timera.h new file mode 100644 index 0000000..5143819 --- /dev/null +++ b/driver/inc/hc32f460_timera.h @@ -0,0 +1,493 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timera.h + ** + ** A detailed description is available at + ** @link TimeraGroup Timer A description @endlink + ** + ** - 2018-11-08 CDT First version for Device Driver Library of + ** Timera. + ** + ******************************************************************************/ +#ifndef __HC32F460_TIMERA_H__ +#define __HC32F460_TIMERA_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_TIMERA_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup TimeraGroup Timer A(Timera) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Timera channel enumeration + ******************************************************************************/ +typedef enum en_timera_channel +{ + TimeraCh1 = 0u, ///< Timera channel 1 + TimeraCh2 = 1u, ///< Timera channel 2 + TimeraCh3 = 2u, ///< Timera channel 3 + TimeraCh4 = 3u, ///< Timera channel 4 + TimeraCh5 = 4u, ///< Timera channel 5 + TimeraCh6 = 5u, ///< Timera channel 6 + TimeraCh7 = 6u, ///< Timera channel 7 + TimeraCh8 = 7u, ///< Timera channel 8 +} en_timera_channel_t; + +/** + ******************************************************************************* + ** \brief Clock division enumeration + ******************************************************************************/ +typedef enum en_timera_clk_div +{ + TimeraPclkDiv1 = 0u, ///< Count clock: pclk + TimeraPclkDiv2 = 1u, ///< Count clock: pclk/2 + TimeraPclkDiv4 = 2u, ///< Count clock: pclk/4 + TimeraPclkDiv8 = 3u, ///< Count clock: pclk/8 + TimeraPclkDiv16 = 4u, ///< Count clock: pclk/16 + TimeraPclkDiv32 = 5u, ///< Count clock: pclk/32 + TimeraPclkDiv64 = 6u, ///< Count clock: pclk/64 + TimeraPclkDiv128 = 7u, ///< Count clock: pclk/128 + TimeraPclkDiv256 = 8u, ///< Count clock: pclk/256 + TimeraPclkDiv512 = 9u, ///< Count clock: pclk/512 + TimeraPclkDiv1024 = 10u, ///< Count clock: pclk/1024 +} en_timera_clk_div_t; + +/** + ******************************************************************************* + ** \brief Count mode enumeration + ******************************************************************************/ +typedef enum en_timera_count_mode +{ + TimeraCountModeSawtoothWave = 0u, ///< Sawtooth wave mode + TimeraCountModeTriangularWave = 1u, ///< Triangular wave mode +} en_timera_count_mode_t; + +/** + ******************************************************************************* + ** \brief Count direction enumeration + ******************************************************************************/ +typedef enum en_timera_count_dir +{ + TimeraCountDirDown = 0u, ///< Counter counting down + TimeraCountDirUp = 1u, ///< Counter counting up +} en_timera_count_dir_t; + +/** + ******************************************************************************* + ** \brief Input port filter clock division enumeration + ******************************************************************************/ +typedef enum en_timera_filter_clk_div +{ + TimeraFilterPclkDiv1 = 0u, ///< Filter clock: pclk + TimeraFilterPclkDiv4 = 1u, ///< Filter clock: pclk/4 + TimeraFilterPclkDiv16 = 2u, ///< Filter clock: pclk/16 + TimeraFilterPclkDiv64 = 3u, ///< Filter clock: pclk/64 +} en_timera_filter_clk_div_t; + +/** + ******************************************************************************* + ** \brief Input port filter source enumeration + ** + ** \note __ is unit number,range 1~6 + ******************************************************************************/ +typedef enum en_timera_filter_source +{ + TimeraFilterSourceCh1 = 0u, ///< TIMA__PWM1 input port + TimeraFilterSourceCh2 = 1u, ///< TIMA__PWM2 input port + TimeraFilterSourceCh3 = 2u, ///< TIMA__PWM3 input port + TimeraFilterSourceCh4 = 3u, ///< TIMA__PWM4 input port + TimeraFilterSourceCh5 = 4u, ///< TIMA__PWM5 input port + TimeraFilterSourceCh6 = 5u, ///< TIMA__PWM6 input port + TimeraFilterSourceCh7 = 6u, ///< TIMA__PWM7 input port + TimeraFilterSourceCh8 = 7u, ///< TIMA__PWM8 input port + TimeraFilterSourceClkA = 8u, ///< TIMA__CLKA input port + TimeraFilterSourceClkB = 9u, ///< TIMA__CLKB input port + TimeraFilterSourceTrig = 10u, ///< TIMA__TRIG input port +} en_timera_filter_source_t; + +/** + ******************************************************************************* + ** \brief Timera interrupt request type enumeration + ******************************************************************************/ +typedef enum en_timera_irq_type +{ + TimeraIrqCaptureOrCompareCh1 = 0u, ///< Interrupt request when channel 1 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh2 = 1u, ///< Interrupt request when channel 2 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh3 = 2u, ///< Interrupt request when channel 3 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh4 = 3u, ///< Interrupt request when channel 4 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh5 = 4u, ///< Interrupt request when channel 5 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh6 = 5u, ///< Interrupt request when channel 6 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh7 = 6u, ///< Interrupt request when channel 7 trigger capture event or compare value equal count value + TimeraIrqCaptureOrCompareCh8 = 7u, ///< Interrupt request when channel 8 trigger capture event or compare value equal count value + TimeraIrqOverflow = 8u, ///< Count overflow interrupt request + TimeraIrqUnderflow = 9u, ///< Count underflow interrupt request +} en_timera_irq_type_t; + +/** + ******************************************************************************* + ** \brief Timera flag type enumeration + ******************************************************************************/ +typedef enum en_timera_flag_type +{ + TimeraFlagCaptureOrCompareCh1 = 0u, ///< Match flag when channel 1 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh2 = 1u, ///< Match flag when channel 2 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh3 = 2u, ///< Match flag when channel 3 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh4 = 3u, ///< Match flag when channel 4 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh5 = 4u, ///< Match flag when channel 5 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh6 = 5u, ///< Match flag when channel 6 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh7 = 6u, ///< Match flag when channel 7 trigger capture complete or compare value equal count value + TimeraFlagCaptureOrCompareCh8 = 7u, ///< Match flag when channel 8 trigger capture complete or compare value equal count value + TimeraFlagOverflow = 8u, ///< Count overflow flag + TimeraFlagUnderflow = 9u, ///< Count underflow flag +} en_timera_flag_type_t; + +/** + ******************************************************************************* + ** \brief Timera function mode selection enumeration + ******************************************************************************/ +typedef enum en_timera_func_mode +{ + TimeraModeCompareOutput = 0u, ///< Compare output function + TimeraModeCaptureInput = 1u, ///< Capture input function +} en_timera_func_mode_t; + +/** + ******************************************************************************* + ** \brief Timera count start port output status enumeration + ** + ** \note __ is unit number,range 1~6 + ** \note PWMn is channel of unit,range 1-8 + ******************************************************************************/ +typedef enum en_timera_count_start_output +{ + TimeraCountStartOutputLow = 0u, ///< TIMA__PWMn port output low level + TimeraCountStartOutputHigh = 1u, ///< TIMA__PWMn port output high level + TimeraCountStartOutputKeep = 2u, ///< TIMA__PWMn port output to keep +} en_timera_count_start_output_t; + +/** + ******************************************************************************* + ** \brief Timera count stop port output status enumeration + ** + ** \note __ is unit number,range 1~6 + ** \note PWMn is channel of unit,range 1-8 + ******************************************************************************/ +typedef enum en_timera_count_stop_output +{ + TimeraCountStopOutputLow = 0u, ///< TIMA__PWMn port output low level + TimeraCountStopOutputHigh = 1u, ///< TIMA__PWMn port output high level + TimeraCountStopOutputKeep = 2u, ///< TIMA__PWMn port output to keep +} en_timera_count_stop_output_t; + +/** + ******************************************************************************* + ** \brief Timera compare value match output status enumeration + ** + ** \note __ is unit number,range 1~6 + ** \note PWMn is channel of unit,range 1-8 + ******************************************************************************/ +typedef enum en_timera_compare_match_output +{ + TimeraCompareMatchOutputLow = 0u, ///< TIMA__PWMn port output low level + TimeraCompareMatchOutputHigh = 1u, ///< TIMA__PWMn port output high level + TimeraCompareMatchOutputKeep = 2u, ///< TIMA__PWMn port output to keep + TimeraCompareMatchOutputReverse = 3u, ///< TIMA__PWMn port output reverse +} en_timera_compare_match_output_t; + +/** + ******************************************************************************* + ** \brief Timera period value match output status enumeration + ** + ** \note __ is unit number,range 1~6 + ** \note PWMn is channel of unit,range 1-8 + ******************************************************************************/ +typedef enum en_timera_period_match_output +{ + TimeraPeriodMatchOutputLow = 0u, ///< TIMA__PWMn port output low level + TimeraPeriodMatchOutputHigh = 1u, ///< TIMA__PWMn port output high level + TimeraPeriodMatchOutputKeep = 2u, ///< TIMA__PWMn port output to keep + TimeraPeriodMatchOutputReverse = 3u, ///< TIMA__PWMn port output reverse +} en_timera_period_match_output_t; + +/** + ******************************************************************************* + ** \brief Timera specify output status enumeration + ** + ** \note __ is unit number,range 1~6 + ** \note PWMn is channel of unit,range 1-8 + ******************************************************************************/ +typedef enum en_timera_specify_output +{ + TimeraSpecifyOutputInvalid = 0u, ///< TIMA__PWMn port output invalid + TimeraSpecifyOutputLow = 2u, ///< TIMA__PWMn port output low level from next period + TimeraSpecifyOutputHigh = 3u, ///< TIMA__PWMn port output high level from next period +} en_timera_specify_output_t; + +/** + ******************************************************************************* + ** \brief Timera common trigger source enumeration + ******************************************************************************/ +typedef enum en_timera_com_trigger +{ + TimeraComTrigger_1 = 1u, ///< Select common trigger 1. + TimeraComTrigger_2 = 2u, ///< Select common trigger 2. + TimeraComTrigger_1_2 = 3u, ///< Select common trigger 1 and 2. +} en_timera_com_trigger_t; + +/** + ******************************************************************************* + ** \brief Timera base init structure definition + ******************************************************************************/ +typedef struct stc_timera_base_init +{ + en_timera_clk_div_t enClkDiv; ///< Count clock division select,This is invalid when counting internal or external event + en_timera_count_mode_t enCntMode; ///< Timera count mode + en_timera_count_dir_t enCntDir; ///< Timera count direction + en_functional_state_t enSyncStartupEn; ///< Enable/disable synchronization startup when unit 1 startup,unit 1 set bit invalid + uint16_t u16PeriodVal; ///< Period value +} stc_timera_base_init_t; + +/** + ******************************************************************************* + ** \brief Timera compare output init structure definition + ******************************************************************************/ +typedef struct stc_timera_compare_init +{ + uint16_t u16CompareVal; ///< Compare value + en_timera_count_start_output_t enStartCountOutput; ///< Port status set when count start + en_timera_count_stop_output_t enStopCountOutput; ///< Port status set when count stop + en_timera_compare_match_output_t enCompareMatchOutput; ///< Port status set when compare value match + en_timera_period_match_output_t enPeriodMatchOutput; ///< Port status set when period value match + en_timera_specify_output_t enSpecifyOutput; ///< Specify port status,next period valid,priority more than other port status set + en_functional_state_t enCacheEn; ///< Enable/Disable cache,Only unit 1、3、5、7 valid + en_functional_state_t enTriangularTroughTransEn; ///< Enable/Disable triangular wave trough transmit cache value,Only unit 1、3、5、7 valid + en_functional_state_t enTriangularCrestTransEn; ///< Enable/Disable triangular wave crest transmit cache value,Only unit 1、3、5、7 valid + uint16_t u16CompareCacheVal; ///< Compare cache value,Only unit 1、3、5、7 valid +} stc_timera_compare_init_t; + +/** + ******************************************************************************* + ** \brief Timera capture input init structure definition + ******************************************************************************/ +typedef struct stc_timera_capture_init +{ + en_functional_state_t enCapturePwmRisingEn; ///< Enable/Disable capture channel n active when TIMA__PWMn sample rising + en_functional_state_t enCapturePwmFallingEn; ///< Enable/Disable capture channel n active when TIMA__PWMn sample falling + en_functional_state_t enCaptureSpecifyEventEn; ///< Enable/Disable capture channel n active when specify event trigger,event value is TMRA_HTSSR1 + en_timera_filter_clk_div_t enPwmClkDiv; ///< TIMA__PWMn filter clock select + en_functional_state_t enPwmFilterEn; ///< Enable/Disable TIMA__PWMn filter functions + en_functional_state_t enCaptureTrigRisingEn; ///< Enable/Disable capture channel 4 active when TIMA__TRIG sample rising, only CCONR4 valid + en_functional_state_t enCaptureTrigFallingEn; ///< Enable/Disable capture channel 4 active when TIMA__TRIG sample falling, only CCONR4 valid + en_timera_filter_clk_div_t enTrigClkDiv; ///< TIMA__TRIG filter clock select, only CCONR4 valid + en_functional_state_t enTrigFilterEn; ///< Enable/Disable TIMA__TRIG filter functions , only CCONR4 valid +} stc_timera_capture_init_t; + +/** + ******************************************************************************* + ** \brief Timera Orthogonal coding init structure definition + ** + ** \note __ is unit number,range 1~6 + ** \note PWMn is channel of unit,range 1-8 + ** \note n=2、4、6 when m=1、3、5 or n=1、3、5 when m=2、4、6 + ******************************************************************************/ +typedef struct stc_timera_orthogonal_coding_init +{ + en_functional_state_t enIncClkALowAndClkBRisingEn; ///< TIMA__CLKB sample rising edge hardware increase when TIMA__CLKA is low level + en_functional_state_t enIncClkALowAndClkBFallingEn; ///< TIMA__CLKB sample falling edge hardware increase when TIMA__CLKA is low level + en_functional_state_t enIncClkAHighAndClkBRisingEn; ///< TIMA__CLKB sample rising edge hardware increase when TIMA__CLKA is high level + en_functional_state_t enIncClkAHighAndClkBFallingEn; ///< TIMA__CLKB sample falling edge hardware increase when TIMA__CLKA is high level + en_functional_state_t enIncClkBLowAndClkARisingEn; ///< TIMA__CLKA sample rising edge hardware increase when TIMA__CLKB is low level + en_functional_state_t enIncClkBLowAndClkAFallingEn; ///< TIMA__CLKA sample falling edge hardware increase when TIMA__CLKB is low level + en_functional_state_t enIncClkBHighAndClkARisingEn; ///< TIMA__CLKA sample rising edge hardware increase when TIMA__CLKB is high level + en_functional_state_t enIncClkBHighAndClkAFallingEn; ///< TIMA__CLKA sample falling edge hardware increase when TIMA__CLKB is high level + en_functional_state_t enIncTrigRisingEn; ///< TIMA__TRIG sample rising edge hardware increase + en_functional_state_t enIncTrigFallingEn; ///< TIMA__TRIG sample falling edge hardware increase + en_functional_state_t enIncSpecifyEventTriggerEn; ///< TIMA_HTSSR0 register Specify event trigger hardware increase + en_functional_state_t enIncAnotherUnitOverflowEn; ///< Unit n generate count overflow hardware increase when current unit is m. + en_functional_state_t enIncAnotherUnitUnderflowEn; ///< Unit n generate count underflow hardware increase when current unit is m. + en_functional_state_t enDecClkALowAndClkBRisingEn; ///< TIMA__CLKB sample rising edge hardware increase when TIMA__CLKA is low level + en_functional_state_t enDecClkALowAndClkBFallingEn; ///< TIMA__CLKB sample falling edge hardware increase when TIMA__CLKA is low level + en_functional_state_t enDecClkAHighAndClkBRisingEn; ///< TIMA__CLKB sample rising edge hardware increase when TIMA__CLKA is high level + en_functional_state_t enDecClkAHighAndClkBFallingEn; ///< TIMA__CLKB sample falling edge hardware increase when TIMA__CLKA is high level + en_functional_state_t enDecClkBLowAndClkARisingEn; ///< TIMA__CLKA sample rising edge hardware increase when TIMA__CLKB is low level + en_functional_state_t enDecClkBLowAndClkAFallingEn; ///< TIMA__CLKA sample falling edge hardware increase when TIMA__CLKB is low level + en_functional_state_t enDecClkBHighAndClkARisingEn; ///< TIMA__CLKA sample rising edge hardware increase when TIMA__CLKB is high level + en_functional_state_t enDecClkBHighAndClkAFallingEn; ///< TIMA__CLKA sample falling edge hardware increase when TIMA__CLKB is high level + en_functional_state_t enDecTrigRisingEn; ///< TIMA__TRIG sample rising edge hardware increase + en_functional_state_t enDecTrigFallingEn; ///< TIMA__TRIG sample falling edge hardware increase + en_functional_state_t enDecSpecifyEventTriggerEn; ///< TIMA_HTSSR0 register Specify event trigger hardware increase + en_functional_state_t enDecAnotherUnitUnderflowEn; ///< Unit n generate count overflow hardware increase when current unit is m. + en_functional_state_t enDecAnotherUnitOverflowEn; ///< Unit n generate count underflow hardware increase when current unit is m. + en_timera_filter_clk_div_t enClkAClkDiv; ///< TIMA__CLKA filter clock select + en_functional_state_t enClkAFilterEn; ///< Enable/Disable TIMA__CLKA filter functions + en_timera_filter_clk_div_t enClkBClkDiv; ///< TIMA__CLKB filter clock select + en_functional_state_t enClkBFilterEn; ///< Enable/Disable TIMA__CLKB filter functions + en_timera_filter_clk_div_t enTrigClkDiv; ///< TIMA__TRIG filter clock select + en_functional_state_t enTrigFilterEn; ///< Enable/Disable TIMA__TRIG filter functions +} stc_timera_orthogonal_coding_init_t; + +/** + ******************************************************************************* + ** \brief Timera hardware startup config structure definition + ** + ** \note __ is unit number,range 1~6 + ** \note TMRA_HTSSR0 trigger startup only when unit 2~6 valid,unit 1 is invalid + ******************************************************************************/ +typedef struct stc_timera_hw_startup_config +{ + en_functional_state_t enTrigRisingStartupEn; ///< Hardware startup TIMA_ when TIMA__TRIG sample rising edge(sync start valid) + en_functional_state_t enTrigFallingStartupEn; ///< Hardware startup TIMA_ when TIMA__TRIG sample falling edge(sync start valid) + en_functional_state_t enSpecifyEventStartupEn; ///< Hardware startup TIMA_ when TIMA_HTSSR0 register Specify event trigger +} stc_timera_hw_startup_config_t; + +/** + ******************************************************************************* + ** \brief Timera hardware stop config structure definition + ** + ** \note __ is unit number,range 1~6 + ******************************************************************************/ +typedef struct stc_timera_hw_stop_config +{ + en_functional_state_t enTrigRisingStopEn; ///< Hardware stop TIMA_ when TIMA__TRIG sample rising edge + en_functional_state_t enTrigFallingStopEn; ///< Hardware stop TIMA_ when TIMA__TRIG sample falling edge + en_functional_state_t enSpecifyEventStopEn; ///< Hardware stop TIMA_ when TIMA_HTSSR0 register Specify event trigger +} stc_timera_hw_stop_config_t; + +/** + ******************************************************************************* + ** \brief Timera hardware clear config structure definition + ** + ** \note __ is unit number,range 1~6 + ** \note n=2、4、6 when m=1、3、5 or n=1、3、5 when m=2、4、6 + ******************************************************************************/ +typedef struct stc_timera_hw_clear_config +{ + en_functional_state_t enTrigRisingClearEn; ///< Hardware clear TIMA_ when TIMA__TRIG sample rising edge + en_functional_state_t enTrigFallingClearEn; ///< Hardware clear TIMA_ when TIMA__TRIG sample falling edge + en_functional_state_t enSpecifyEventClearEn; ///< Hardware clear TIMA_ when TIMA_HTSSR0 register Specify event trigger + en_functional_state_t enAnotherUnitTrigRisingClearEn; ///< Hardware clear TIMA_ when unit n TRIG port sample rising when current unit is m. + en_functional_state_t enAnotherUnitTrigFallingClearEn; ///< Hardware clear TIMA_ when unit n TRIG port sample falling when current unit is m. + en_functional_state_t enChannel3RisingClearEn; ///< Hardware clear TIMA_ when TIMA__PWM3 sample rising edge + en_functional_state_t enChannel3FallingClearEn; ///< Hardware clear TIMA_ when TIMA__PWM3 sample falling edge +} stc_timera_hw_clear_config_t; + +/** + ******************************************************************************* + ** \brief Timera hardware trigger init structure definition + ******************************************************************************/ +typedef struct stc_timera_hw_trigger_init +{ + stc_timera_hw_startup_config_t stcHwStartup; ///< Hardware startup condition config + stc_timera_hw_stop_config_t stcHwStop; ///< Hardware stop condition config + stc_timera_hw_clear_config_t stcHwClear; ///< Hardware clear condition config +} stc_timera_hw_trigger_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* Base functions */ +en_result_t TIMERA_DeInit(M4_TMRA_TypeDef *TIMERAx); +en_result_t TIMERA_BaseInit(M4_TMRA_TypeDef *TIMERAx, const stc_timera_base_init_t *pstcBaseInit); +en_result_t TIMERA_SetCurrCount(M4_TMRA_TypeDef *TIMERAx, uint16_t u16Cnt); +uint16_t TIMERA_GetCurrCount(M4_TMRA_TypeDef *TIMERAx); +en_result_t TIMERA_SetPeriodValue(M4_TMRA_TypeDef *TIMERAx, uint16_t u16Period); +uint16_t TIMERA_GetPeriodValue(M4_TMRA_TypeDef *TIMERAx); +en_result_t TIMERA_SyncStartupCmd(M4_TMRA_TypeDef *TIMERAx, en_functional_state_t enNewSta); +en_result_t TIMERA_Cmd(M4_TMRA_TypeDef *TIMERAx, en_functional_state_t enNewSta); + +/* Compare output functions */ +en_result_t TIMERA_CompareInit(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + const stc_timera_compare_init_t *pstcCompareInit); +en_result_t TIMERA_SetCompareValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + uint16_t u16CompareVal); +uint16_t TIMERA_GetCompareValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel); +en_result_t TIMERA_SetCacheValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + uint16_t u16CompareCache); +en_result_t TIMERA_CompareCacheCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_functional_state_t enNewSta); +en_result_t TIMERA_SpecifyOutputSta(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_timera_specify_output_t enOutputSta); +en_result_t TIMERA_CompareCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_functional_state_t enNewSta); + +/* Capture input functions */ +en_result_t TIMERA_CaptureInit(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + const stc_timera_capture_init_t *pstcCapInit); +en_result_t TIMERA_CaptureFilterCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_filter_source_t enFilterPort, + en_functional_state_t enNewSta); +uint16_t TIMERA_GetCaptureValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel); + +/* Orthogonal coding functions */ +en_result_t TIMERA_OrthogonalCodingInit(M4_TMRA_TypeDef *TIMERAx, const stc_timera_orthogonal_coding_init_t *pstcCodingInit); +en_result_t TIMERA_SetOrthogonalCodingCount(M4_TMRA_TypeDef *TIMERAx, uint16_t u16CodingCnt); +uint16_t TIMERA_GetOrthogonalCodingCount(M4_TMRA_TypeDef *TIMERAx); +en_result_t TIMERA_OrthogonalCodingFilterCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_filter_source_t enFilterPort, + en_functional_state_t enNewSta); + +/* Hardware control functions */ +en_result_t TIMERA_HwTriggerInit(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_trigger_init_t *pstcHwTriggerInit); +en_result_t TIMERA_HwStartupConfig(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_startup_config_t *pstcHwStartup); +en_result_t TIMERA_HwStopConfig(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_stop_config_t *pstcHwStop); +en_result_t TIMERA_HwClearConfig(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_clear_config_t *pstcHwClear); + +/* interrupt and flags functions */ +en_result_t TIMERA_IrqCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_irq_type_t enIrq, + en_functional_state_t enNewSta); +en_flag_status_t TIMERA_GetFlag(M4_TMRA_TypeDef *TIMERAx, en_timera_flag_type_t enFlag); +en_result_t TIMERA_ClearFlag(M4_TMRA_TypeDef *TIMERAx, en_timera_flag_type_t enFlag); + +/* Event config functions */ +en_result_t TIMERA_EventCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_functional_state_t enNewSta); +en_result_t TIMERA_SetCountTriggerSrc(en_event_src_t enTriggerSrc); +en_result_t TIMERA_SetCaptureTriggerSrc(en_event_src_t enTriggerSrc); +en_result_t TIMERA_CountComTriggerCmd(en_timera_com_trigger_t enComTrigger, en_functional_state_t enNewSta); +en_result_t TIMERA_CaptureComTriggerCmd(en_timera_com_trigger_t enComTrigger, en_functional_state_t enNewSta); + +//@} // TimeraGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_TIMERA_ENABLE */ + +#endif /* __HC32F460_TIMERA_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_trng.h b/driver/inc/hc32f460_trng.h new file mode 100644 index 0000000..6131a9c --- /dev/null +++ b/driver/inc/hc32f460_trng.h @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_trng.h + ** + ** A detailed description is available at + ** @link TrngGroup Trng description @endlink + ** + ** - 2018-10-20 CDT First version for Device Driver Library of Trng. + ** + ******************************************************************************/ +#ifndef __HC32F460_TRNG_H__ +#define __HC32F460_TRNG_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_TRNG_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup TrngGroup True Random Number Generator(TRNG) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* The data register loads the new initial value from the random number + generator before the random number is generated. */ +typedef enum en_trng_load_ctrl +{ + TrngLoadNewInitValue_Disable = 0x0, ///< Disable load new initial values. + TrngLoadNewInitValue_Enable = 0x1, ///< Enable load new initial values. +} en_trng_load_ctrl_t; + +/* Shift n times when capturing random noise. */ +typedef enum en_trng_shift_cnt +{ + TrngShiftCount_32 = 0x3, ///< Shift 32 times when capturing random noise. + TrngShiftCount_64 = 0x4, ///< Shift 64 times when capturing random noise. + TrngShiftCount_128 = 0x5, ///< Shift 128 times when capturing random noise. + TrngShiftCount_256 = 0x6, ///< Shift 256 times when capturing random noise. +} en_trng_shift_cnt_t; + +/* TRNG initialization structure definition. */ +typedef struct stc_trng_init +{ + en_trng_load_ctrl_t enLoadCtrl; ///< @ref en_trng_load_ctrl_t. + en_trng_shift_cnt_t enShiftCount; ///< @ref en_trng_shift_cnt_t. +} stc_trng_init_t; + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ + +en_result_t TRNG_Init(const stc_trng_init_t *pstcInit); +void TRNG_DeInit(void); +en_result_t TRNG_Generate(uint32_t *pu32Random, uint8_t u8Length, uint32_t u32Timeout); + +void TRNG_StartIT(void); +void TRNG_GetRandomNum(uint32_t *pu32Random, uint8_t u8Length); + +//@} // TrngGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_TRNG_ENABLE */ + +#endif /* __HC32F460_TRNG_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_usart.h b/driver/inc/hc32f460_usart.h new file mode 100644 index 0000000..1447455 --- /dev/null +++ b/driver/inc/hc32f460_usart.h @@ -0,0 +1,359 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_usart.h + ** + ** A detailed description is available at + ** @link UsartGroup USART description @endlink + ** + ** - 2018-11-27 CDT First version for Device Driver Library of USART. + ** + ******************************************************************************/ +#ifndef __HC32F460_USART_H__ +#define __HC32F460_USART_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_USART_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup UsartGroup Universal Synchronous Asynchronous Receiver \ + ** Transmitter(USART) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief USART tx mode in multiple processor mode enumeration + ** + ******************************************************************************/ +typedef enum en_usart_mp_tx_mode +{ + UsartMpTxData = 0u, ///< USART Send data in multiple-processor mode + UsartMpTxId = 1u, ///< USART Send ID in multiple-processor mode +} en_usart_mp_tx_mode_t; + +/** + ******************************************************************************* + ** \brief USART clock prescale enumeration + ** + ******************************************************************************/ +typedef enum en_usart_clk_div +{ + UsartClkDiv_1 = 0u, ///< PCLK/1 + UsartClkDiv_4 = 1u, ///< PCLK/4 + UsartClkDiv_16 = 2u, ///< PCLK/16 + UsartClkDiv_64 = 3u, ///< PCLK/64 +} en_usart_clk_div_t; + +/** + ****************************************************************************** + ** \brief USART mode + ** + ******************************************************************************/ +typedef enum en_usart_mode +{ + UsartUartMode = 0u, ///< UART mode + UsartClkSyncMode = 1u, ///< Clock sync mode + UsartSmartCardMode = 2u, ///< Smart card mode +} en_usart_mode_t; + +/** + ****************************************************************************** + ** \brief USART data direction + ** + ******************************************************************************/ +typedef enum en_usart_data_dir +{ + UsartDataLsbFirst = 0u, ///< LSB first + UsartDataMsbFirst = 1u, ///< MSB first +} en_usart_data_dir_t; + +/** + ****************************************************************************** + ** \brief USART sample mode enumeration + ** + ******************************************************************************/ +typedef enum en_usart_sample_mode +{ + UsartSampleBit16 = 0u, ///< 16 Bit + UsartSampleBit8 = 1u, ///< 8 Bit +} en_usart_sample_mode_t; + +/** + ****************************************************************************** + ** \brief USART data length enumeration + ** + ******************************************************************************/ +typedef enum en_usart_data_len +{ + UsartDataBits8 = 0u, ///< 8 Bit + UsartDataBits9 = 1u, ///< 9 Bit +} en_usart_data_len_t; + +/** + ****************************************************************************** + ** \brief USART parity format enumeration + ** + ******************************************************************************/ +typedef enum en_usart_parity +{ + UsartParityNone = 0u, ///< No parity bit is used. + UsartParityEven = 1u, ///< Even parity bit is used. + UsartParityOdd = 2u, ///< Odd parity bit is used. +} en_usart_parity_t; + +/** + ****************************************************************************** + ** \brief USART functions enumeration + ** + ******************************************************************************/ +typedef enum en_usart_func +{ + UsartRx = 0u, ///< UART RX function + UsartRxInt = 1u, ///< USART RX interrupt function + UsartTx = 2u, ///< UART TX function + UsartTxEmptyInt = 3u, ///< USART TX empty interrupt function + UsartTimeOut = 4u, ///< UART RX timeout function + UsartTimeOutInt = 5u, ///< UART RX timeout interrupt function + UsartSilentMode = 6u, ///< USART silent function + UsartTxCmpltInt = 7u, ///< USART TX complete interrupt function + UsartTxAndTxEmptyInt = 8u, ///< USART TX function and USART TX empty interrupt function + UsartParityCheck = 9u, ///< USART Parity check function + UsartNoiseFilter = 10u, ///< USART noise filter function + UsartFracBaudrate = 11u, ///< USART fractional baudrate function + UsartMulProcessor = 12u, ///< USART multiple processor function + UsartSmartCard = 13u, ///< USART smart card mode function + UsartCts = 14u, ///< USART CTS function +} en_usart_func_t; + +/** + ******************************************************************************* + ** \brief USART status type enumeration + ** + ******************************************************************************/ +typedef enum en_usart_status +{ + UsartParityErr = (1u << 0), ///< USART parity error + UsartFrameErr = (1u << 1), ///< USART receive frame error + UsartOverrunErr = (1u << 3), ///< USART receive over-run error + UsartRxNoEmpty = (1u << 5), ///< USART data receive register is not empty + UsartTxComplete = (1u << 6), ///< USART transfer completely + UsartTxEmpty = (1u << 7), ///< USART data transfer register is empty + UsartRxTimeOut = (1u << 8), ///< USART data receive timeout + UsartRxMpb = (1u << 16), ///< USART multiple processor id or normal data, 0: receive date; 1: received ID +} en_usart_status_t; + +/** + ******************************************************************************* + ** \brief USART Stop bit length select enumeration + ** + ******************************************************************************/ +typedef enum en_usart_stop_bit +{ + UsartOneStopBit = 0u, ///< 1 Stop Bit + UsartTwoStopBit = 1u, ///< 2 Stop Bit +} en_usart_stop_bit_t; + +/** + ******************************************************************************* + ** \brief USART start bit detect mode enumeration + ** + ******************************************************************************/ +typedef enum en_usart_sb_detect_mode +{ + UsartStartBitLowLvl = 0u, ///< Start bit: RD pin low level + UsartStartBitFallEdge = 1u, ///< Start bit: RD pin falling edge +} en_usart_sb_detect_mode_t; + +/** + ******************************************************************************* + ** \brief USART clock mode selection enumeration + ** + ******************************************************************************/ +typedef enum en_usart_clk_mode +{ + UsartIntClkCkNoOutput = 0u, ///< Select internal clock source and don't output clock. + UsartIntClkCkOutput = 1u, ///< Select internal clock source and output clock. + UsartExtClk = 2u, ///< Select external clock source. +} en_usart_clk_mode_t; + +/** + ******************************************************************************* + ** \brief USART smart-card mode selection enumeration + ** + ******************************************************************************/ +typedef enum en_usart_hw_flow_ctrl +{ + UsartRtsEnable = 0u, ///< Enable RTS function. + UsartCtsEnable = 1u, ///< Enable CTS function. +} en_usart_hw_flow_ctrl_t; + +/** + ****************************************************************************** + ** \brief USART etu clocks of smart card enumeration + ** + ******************************************************************************/ +typedef enum en_usart_sc_etu_clk +{ + UsartScEtuClk32 = 0u, ///< 1 etu = 32/f + UsartScEtuClk64 = 1u, ///< 1 etu = 64/f + UsartScEtuClk128 = 3u, ///< 1 etu = 128/f + UsartScEtuClk256 = 5u, ///< 1 etu = 256/f + UsartScEtuClk372 = 6u, ///< 1 etu = 372/f +} en_usart_sc_etu_clk_t; + +/** + ******************************************************************************* + ** \brief Uart mode initialization configuration + ** + ******************************************************************************/ +typedef struct stc_usart_uart_init +{ + en_usart_clk_mode_t enClkMode; ///< Clock mode and this parameter can be a value of @ref en_usart_clk_mode_t + + en_usart_clk_div_t enClkDiv; ///< USART divide PCLK1, and this parameter can be a value of @ref en_usart_clk_div_t + + en_usart_data_len_t enDataLength; ///< 8/9 Bit character length and this parameter can be a value of @ref en_usart_data_len_t + + en_usart_data_dir_t enDirection; ///< UART data direction and this parameter can be a value of @ref en_usart_data_dir_t + + en_usart_stop_bit_t enStopBit; ///< Stop bit and this parameter can be a value of @ref en_usart_stop_bit_t + + en_usart_parity_t enParity; ///< Parity format and this parameter can be a value of @ref en_usart_parity_t + + en_usart_sample_mode_t enSampleMode; ///< USART sample mode, and this parameter can be a value of @ref en_usart_sample_mode_t + + en_usart_sb_detect_mode_t enDetectMode; ///< USART start bit detect mode and this parameter can be a value of @ref en_usart_sb_detect_mode_t + + en_usart_hw_flow_ctrl_t enHwFlow; ///< Hardware flow control and this parameter can be a value of @ref en_usart_hw_flow_ctrl_t +} stc_usart_uart_init_t; + +/** + ******************************************************************************* + ** \brief Clock sync mode initialization configuration + ** + ******************************************************************************/ +typedef struct stc_usart_clksync_init +{ + en_usart_clk_mode_t enClkMode; ///< Clock mode and this parameter can be a value of @ref en_usart_clk_mode_t + + en_usart_clk_div_t enClkDiv; ///< USART divide PCLK1, and this parameter can be a value of @ref en_usart_clk_div_t + + en_usart_data_dir_t enDirection; ///< UART data direction and this parameter can be a value of @ref en_usart_data_dir_t + + en_usart_hw_flow_ctrl_t enHwFlow; ///< Hardware flow control and this parameter can be a value of @ref en_usart_hw_flow_ctrl_t +} stc_usart_clksync_init_t; + +/** + ******************************************************************************* + ** \brief Smart card mode initialization configuration + ** + ******************************************************************************/ +typedef struct stc_usart_sc_init +{ + en_usart_clk_mode_t enClkMode; ///< Clock mode and this parameter can be a value of @ref en_usart_clk_mode_t + + en_usart_clk_div_t enClkDiv; ///< USART divide PCLK1, and this parameter can be a value of @ref en_usart_clk_div_t + + en_usart_data_dir_t enDirection; ///< UART data direction and this parameter can be a value of @ref en_usart_data_dir_t +} stc_usart_sc_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +en_result_t USART_UART_Init(M4_USART_TypeDef *USARTx, + const stc_usart_uart_init_t *pstcInitCfg); +en_result_t USART_CLKSYNC_Init(M4_USART_TypeDef *USARTx, + const stc_usart_clksync_init_t *pstcInitCfg); +en_result_t USART_SC_Init(M4_USART_TypeDef *USARTx, + const stc_usart_sc_init_t *pstcInitCfg); +en_result_t USART_DeInit(M4_USART_TypeDef *USARTx); +en_flag_status_t USART_GetStatus(M4_USART_TypeDef *USARTx, + en_usart_status_t enStatus); +en_result_t USART_ClearStatus(M4_USART_TypeDef *USARTx, + en_usart_status_t enStatus); +en_result_t USART_FuncCmd(M4_USART_TypeDef *USARTx, + en_usart_func_t enFunc, + en_functional_state_t enCmd); +en_result_t USART_SetParity(M4_USART_TypeDef *USARTx, + en_usart_parity_t enParity); +en_usart_parity_t USART_GetParity(M4_USART_TypeDef *USARTx); +en_result_t USART_SetOverSampling(M4_USART_TypeDef *USARTx, + en_usart_sample_mode_t enSampleMode); +en_usart_sample_mode_t USART_GetOverSampling(M4_USART_TypeDef *USARTx); +en_result_t USART_SetDataDirection(M4_USART_TypeDef *USARTx, + en_usart_data_dir_t enDir); +en_usart_data_dir_t USART_GetTransferDirection(M4_USART_TypeDef *USARTx); +en_result_t USART_SetDataLength(M4_USART_TypeDef *USARTx, + en_usart_data_len_t enDataLen); +en_usart_data_len_t USART_GetDataLength(M4_USART_TypeDef *USARTx); +en_result_t USART_SetClkMode(M4_USART_TypeDef *USARTx, + en_usart_clk_mode_t enClkMode); +en_usart_clk_mode_t USART_GetClkMode(M4_USART_TypeDef *USARTx); +en_result_t USART_SetMode(M4_USART_TypeDef *USARTx, + en_usart_mode_t enMode); +en_usart_mode_t USART_GetMode(M4_USART_TypeDef *USARTx); +en_result_t USART_SetStopBitsLength(M4_USART_TypeDef *USARTx, + en_usart_stop_bit_t enStopBit); +en_usart_stop_bit_t USART_GetStopBitsLength(M4_USART_TypeDef *USARTx); +en_result_t USART_SetSbDetectMode(M4_USART_TypeDef *USARTx, + en_usart_sb_detect_mode_t enDetectMode); +en_usart_sb_detect_mode_t USART_GetSbDetectMode(M4_USART_TypeDef *USARTx); +en_result_t USART_SetHwFlowCtrl(M4_USART_TypeDef *USARTx, + en_usart_hw_flow_ctrl_t enHwFlowCtrl); +en_usart_hw_flow_ctrl_t USART_GetHwFlowCtrl(M4_USART_TypeDef *USARTx); +en_result_t USART_SetClockDiv(M4_USART_TypeDef *USARTx, + en_usart_clk_div_t enClkPrescale); +en_usart_clk_div_t USART_GetClockDiv(M4_USART_TypeDef *USARTx); +en_result_t USART_SetScEtuClk(M4_USART_TypeDef *USARTx, + en_usart_sc_etu_clk_t enEtuClk); +en_usart_sc_etu_clk_t USART_GetScEtuClk(M4_USART_TypeDef *USARTx); +en_result_t USART_SendData(M4_USART_TypeDef *USARTx, uint16_t u16Data); +uint16_t USART_RecData(M4_USART_TypeDef *USARTx); +en_result_t USART_SetBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate); + +//@} // UsartGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_USART_ENABLE */ + +#endif /* __HC32F460_USART_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_utility.h b/driver/inc/hc32f460_utility.h new file mode 100644 index 0000000..d4eda98 --- /dev/null +++ b/driver/inc/hc32f460_utility.h @@ -0,0 +1,108 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_utility.h + ** + ** A detailed description is available at + ** @link DdlUtilityGroup Ddl Utility description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library Utility. + ** + ******************************************************************************/ +#ifndef __HC32F460_UTILITY_H__ +#define __HC32F460_UTILITY_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_UTILITY_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup DdlUtilityGroup Device Driver Library Utility(DDLUTILITY) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ +/* A approximate delay */ +void Ddl_Delay1ms(uint32_t u32Cnt); +void Ddl_Delay1us(uint32_t u32Cnt); + +/* Systick functions */ +en_result_t SysTick_Init(uint32_t u32Freq); +void SysTick_Delay(uint32_t u32Delay); +void SysTick_IncTick(void); +uint32_t SysTick_GetTick(void); +void SysTick_Suspend(void); +void SysTick_Resume(void); + +/*! Ddl assert, you can add your own assert functions by implement the function +Ddl_AssertHook definition follow the function Ddl_AssertHook declaration */ +#ifdef __DEBUG +#define DDL_ASSERT(x) \ +do{ \ + ((x) ? (void)0 : Ddl_AssertHandler((uint8_t *)__FILE__, __LINE__)); \ +}while(0) +/* Exported function */ +void Ddl_AssertHandler(uint8_t *file, int16_t line); +#else +#define DDL_ASSERT(x) (void)(0) +#endif /* __DEBUG */ + +#if (DDL_PRINT_ENABLE == DDL_ON) +#include + +en_result_t UART_PrintfInit(M4_USART_TypeDef *UARTx, + uint32_t u32Baudrate, + void (*PortInit)(void)); + +#define DDL_PrintfInit (void)UART_PrintfInit +#define DDL_Printf (void)printf +#else +#define DDL_PrintfInit(x, y, z) +#define DDL_Printf(fmt, ...) +#endif + +//@} // DdlUtilityGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_UTILITY_ENABLE */ + +#endif /* __HC32F460_UTILITY_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/inc/hc32f460_wdt.h b/driver/inc/hc32f460_wdt.h new file mode 100644 index 0000000..0ae3521 --- /dev/null +++ b/driver/inc/hc32f460_wdt.h @@ -0,0 +1,162 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_wdt.h + ** + ** A detailed description is available at + ** @link WdtGroup Watchdog Counter description @endlink + ** + ** - 2018-10-18 CDT First version for Device Driver Library of WDT. + ** + ******************************************************************************/ +#ifndef __HC32F460_WDT_H__ +#define __HC32F460_WDT_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +#if (DDL_WDT_ENABLE == DDL_ON) + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup WdtGroup WatchDog Counter(WDT) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief WDT count cycle enumeration + ******************************************************************************/ +typedef enum en_wdt_count_cycle +{ + WdtCountCycle256 = 0u, ///< 256 cycle + WdtCountCycle4096 = 1u, ///< 4096 cycle + WdtCountCycle16384 = 2u, ///< 16384 cycle + WdtCountCycle65536 = 3u, ///< 65536 cycle +} en_wdt_count_cycle_t; + +/** + ******************************************************************************* + ** \brief WDT count clock division enumeration + ******************************************************************************/ +typedef enum en_wdt_clk_div +{ + WdtPclk3Div4 = 2u, ///< PCLK3/4 + WdtPclk3Div64 = 6u, ///< PCLK3/64 + WdtPclk3Div128 = 7u, ///< PCLK3/128 + WdtPclk3Div256 = 8u, ///< PCLK3/256 + WdtPclk3Div512 = 9u, ///< PCLK3/512 + WdtPclk3Div1024 = 10u, ///< PCLK3/1024 + WdtPclk3Div2048 = 11u, ///< PCLK3/2048 + WdtPclk3Div8192 = 13u, ///< PCLK3/8192 +} en_wdt_clk_div_t; + +/** + ******************************************************************************* + ** \brief WDT allow refresh percent range enumeration + ******************************************************************************/ +typedef enum en_wdt_refresh_range +{ + WdtRefresh100Pct = 0u, ///< 100% + WdtRefresh0To25Pct = 1u, ///< 0%~25% + WdtRefresh25To50Pct = 2u, ///< 25%~50% + WdtRefresh0To50Pct = 3u, ///< 0%~50% + WdtRefresh50To75Pct = 4u, ///< 50%~75% + WdtRefresh0To25PctAnd50To75Pct = 5u, ///< 0%~25% & 50%~75% + WdtRefresh25To75Pct = 6u, ///< 25%~75% + WdtRefresh0To75Pct = 7u, ///< 0%~75% + WdtRefresh75To100Pct = 8u, ///< 75%~100% + WdtRefresh0To25PctAnd75To100Pct = 9u, ///< 0%~25% & 75%~100% + WdtRefresh25To50PctAnd75To100Pct = 10u, ///< 25%~50% & 75%~100% + WdtRefresh0To50PctAnd75To100Pct = 11u, ///< 0%~50% & 75%~100% + WdtRefresh50To100Pct = 12u, ///< 50%~100% + WdtRefresh0To25PctAnd50To100Pct = 13u, ///< 0%~25% & 50%~100% + WdtRefresh25To100Pct = 14u, ///< 25%~100% + WdtRefresh0To100Pct = 15u, ///< 0%~100% +} en_wdt_refresh_range_t; + +/** + ******************************************************************************* + ** \brief WDT refresh error or count underflow trigger event type enumeration + ******************************************************************************/ +typedef enum en_wdt_event_request_type +{ + WdtTriggerInterruptRequest = 0u, ///< Interrupt request + WdtTriggerResetRequest = 1u, ///< Reset request +} en_wdt_event_request_type_t; + +/** + ******************************************************************************* + ** \brief WDT flag type enumeration + ******************************************************************************/ +typedef enum en_wdt_flag_type +{ + WdtFlagCountUnderflow = 0u, ///< Count underflow flag + WdtFlagRefreshError = 1u, ///< Refresh error flag +} en_wdt_flag_type_t; + +/** + ******************************************************************************* + ** \brief WDT init structure definition + ******************************************************************************/ +typedef struct stc_wdt_init +{ + en_wdt_count_cycle_t enCountCycle; ///< Count cycle + en_wdt_clk_div_t enClkDiv; ///< Count clock division + en_wdt_refresh_range_t enRefreshRange; ///< Allow refresh percent range + en_functional_state_t enSleepModeCountEn; ///< Enable/disable count in the sleep mode + en_wdt_event_request_type_t enRequestType; ///< Refresh error or count underflow trigger event type +} stc_wdt_init_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + Global function prototypes (definition in C source) + ******************************************************************************/ +/* Base functions */ +en_result_t WDT_Init(const stc_wdt_init_t *pstcWdtInit); +en_result_t WDT_RefreshCounter(void); +uint16_t WDT_GetCountValue(void); + +/* Flags functions */ +en_flag_status_t WDT_GetFlag(en_wdt_flag_type_t enFlag); +en_result_t WDT_ClearFlag(en_wdt_flag_type_t enFlag); + +//@} // WdtGroup + +#ifdef __cplusplus +} +#endif + +#endif /* DDL_WDT_ENABLE */ + +#endif /* __HC32F460_WDT_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_adc.c b/driver/src/hc32f460_adc.c new file mode 100644 index 0000000..da61a4c --- /dev/null +++ b/driver/src/hc32f460_adc.c @@ -0,0 +1,1739 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_adc.c + ** + ** A detailed description is available at + ** @link AdcGroup Adc description @endlink + ** + ** - 2018-11-30 CDT First version for Device Driver Library of Adc. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_adc.h" +#include "hc32f460_utility.h" + +#if (DDL_ADC_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup AdcGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Parameter validity check for ADC peripherals. */ +#define IS_ADC_PERIPH(ADCx) \ +( ((ADCx) == M4_ADC1) || \ + ((ADCx) == M4_ADC2)) + +/*! Parameter validity check for ADC1 channel index. */ +#define IS_ADC1_CH_INDEX(x) \ +( ((x) < ADC1_CH_COUNT)) + +/*! Parameter validity check for ADC2 channel index. */ +#define IS_ADC2_CH_INDEX(x) \ +( ((x) < ADC2_CH_COUNT)) + +/*! Parameter validity check for ADC average count. */ +#define IS_ADC_AVCNT(AVCNT) \ +( ((AVCNT) == AdcAvcnt_2) || \ + (((AVCNT) >= AdcAvcnt_4) && ((AVCNT) <= AdcAvcnt_256))) + +/*! Parameter validity check for ADC data alignment. */ +#define IS_ADC_DATA_ALIGN(ALIGN) \ +( ((ALIGN) == AdcDataAlign_Right) || \ + ((ALIGN) == AdcDataAlign_Left)) + +/*! Parameter validity check for ADC auto clear DR. */ +#define IS_ADC_CLREN(EN) \ +( ((EN) == AdcClren_Enable) || \ + ((EN) == AdcClren_Disable)) + +/*! Parameter validity check for ADC resolution. */ +#define IS_ADC_RESOLUTION(RESOLUTION) \ +( ((RESOLUTION) == AdcResolution_8Bit) || \ + ((RESOLUTION) == AdcResolution_10Bit) || \ + ((RESOLUTION) == AdcResolution_12Bit)) + +/*! Parameter validity check for ADC scan convert mode. */ +#define IS_ADC_SCAN_MODE(MODE) \ +( ((MODE) == AdcMode_SAOnce) || \ + ((MODE) == AdcMode_SAContinuous) || \ + ((MODE) == AdcMode_SAOnceSBOnce) || \ + ((MODE) == AdcMode_SAContinuousSBOnce)) + +/*! Parameter validity check for ADC RSCHSEL. */ +#define IS_ADC_RSCHSEL(SEL) \ +( ((SEL) == AdcRschsel_Continue) || \ + ((SEL) == AdcRschsel_Restart)) + +/*! Parameter validity check for ADC SA trigger source. */ +#define IS_ADC_TRGEN(EN) \ +( ((EN) == AdcTrgen_Enable) || \ + ((EN) == AdcTrgen_Disable)) + +/*! Parameter validity check for ADC SA trigger source. */ +#define IS_ADC_TRGSEL(SEL) \ +( ((SEL) == AdcTrgsel_ADTRGX) || \ + ((SEL) == AdcTrgsel_TRGX0) || \ + ((SEL) == AdcTrgsel_TRGX1) || \ + ((SEL) == AdcTrgsel_TRGX0_TRGX1)) + +/*! Parameter validity check for ADC common trigger. */ +#define IS_ADC_COM_TRIGGER(x) \ +( ((x) == AdcComTrigger_1) || \ + ((x) == AdcComTrigger_2) || \ + ((x) == AdcComTrigger_1_2)) + +/*! Parameter validity check for ADC EOCAIEN/ENCBIEN. */ +#define IS_ADC_EOCIEN(EN) \ +( ((EN) == AdcEocien_Disable) || \ + ((EN) == AdcEocien_Enable)) + +/*! Parameter validity check for ADC sampling time. */ +#define IS_ADC_SAMPLE_TIME(TIME) \ +( ((TIME) == 255u) || \ + (((TIME) >= 5u) && ((TIME) <= 254u))) + +/*! Parameter validity check for ADC sync trigger mode. */ +#define IS_ADC_SYNC_MODE(MODE) \ +( ((MODE) == AdcSync_SingleSerial) || \ + ((MODE) == AdcSync_SingleParallel) || \ + ((MODE) == AdcSync_ContinuousSerial) || \ + ((MODE) == AdcSync_ContinuousParallel)) + +/*! Parameter validity check for ADC sync able. */ +#define IS_ADC_SYNC_ENABLE(EN) \ +( ((EN) == AdcSync_Disable) || \ + ((EN) == AdcSync_Enable)) + +/*! Parameter validity check for ADC ADWIEN */ +#define IS_ADC_AWDIEN(EN) \ +( ((EN) == AdcAwdInt_Disable) || \ + ((EN) == AdcAwdInt_Enable)) + +/*! Parameter validity check for ADC AWDSS */ +#define IS_ADC_AWDSS(SS) \ +( ((SS) == AdcAwdSel_SA_SB) || \ + ((SS) == AdcAwdSel_SA) || \ + ((SS) == AdcAwdSel_SB) || \ + ((SS) == AdcAwdSel_SB_SA)) + +/*! Parameter validity check for ADC AWDMD */ +#define IS_ADC_AWDMD(MD) \ +( ((MD) == AdcAwdCmpMode_0) || \ + ((MD) == AdcAwdCmpMode_1)) + +/*! Parameter validity check for ADC AWDEN */ +#define IS_ADC_AWDEN(EN) \ +( ((EN) == AdcAwd_Disable) || \ + ((EN) == AdcAwd_Enable)) + +/*! Parameter validity check for ADC PGA control */ +#define IS_ADC_PGA_CTL(CTL) \ +( ((CTL) == AdcPgaCtl_Invalid) || \ + ((CTL) == AdcPgaCtl_Amplify)) + +/*! Parameter validity check for ADC gain factor. */ +#define IS_ADC_PGA_FACTOR(FACTOR) \ +( ((FACTOR) == AdcPgaFactor_2) || \ + (((FACTOR) >= AdcPgaFactor_2P133) && ((FACTOR) <= AdcPgaFactor_32))) + +/*! Parameter validity check for ADC PGA negative. */ +#define IS_ADC_PGA_NEGATIVE(N) \ +( ((N) == AdcPgaNegative_VSSA) || \ + ((N) == AdcPgaNegative_PGAVSS)) + +/*! Parameter validity check for ADC trigger source event . */ +#define IS_ADC_TRIG_SRC_EVENT(x) \ +( ((x) == EVT_PORT_EIRQ0) || \ + (((x) > EVT_PORT_EIRQ0) && ((x) <= EVT_PORT_EIRQ15)) || \ + (((x) >= EVT_DMA1_TC0) && ((x) <= EVT_DMA2_BTC3)) || \ + (((x) >= EVT_EFM_OPTEND) && ((x) <= EVT_USBFS_SOF)) || \ + (((x) >= EVT_DCU1) && ((x) <= EVT_DCU4)) || \ + (((x) >= EVT_TMR01_GCMA) && ((x) <= EVT_TMR02_GCMB)) || \ + (((x) >= EVT_RTC_ALM) && ((x) <= EVT_RTC_PRD)) || \ + (((x) >= EVT_TMR61_GCMA) && ((x) <= EVT_TMR61_GUDF)) || \ + (((x) >= EVT_TMR61_SCMA) && ((x) <= EVT_TMR61_SCMB)) || \ + (((x) >= EVT_TMR62_GCMA) && ((x) <= EVT_TMR62_GUDF)) || \ + (((x) >= EVT_TMR62_SCMA) && ((x) <= EVT_TMR62_SCMB)) || \ + (((x) >= EVT_TMR63_GCMA) && ((x) <= EVT_TMR63_GUDF)) || \ + (((x) >= EVT_TMR63_SCMA) && ((x) <= EVT_TMR63_SCMB)) || \ + (((x) >= EVT_TMRA1_OVF) && ((x) <= EVT_TMRA5_CMP)) || \ + (((x) >= EVT_TMRA6_OVF) && ((x) <= EVT_TMRA6_CMP)) || \ + (((x) >= EVT_USART1_EI) && ((x) <= EVT_USART4_RTO)) || \ + (((x) >= EVT_SPI1_SPRI) && ((x) <= EVT_AOS_STRG)) || \ + (((x) >= EVT_TMR41_SCMUH) && ((x) <= EVT_TMR42_SCMWL)) || \ + (((x) >= EVT_TMR43_SCMUH) && ((x) <= EVT_TMR43_SCMWL)) || \ + (((x) >= EVT_EVENT_PORT1) && ((x) <= EVT_EVENT_PORT4)) || \ + (((x) >= EVT_I2S1_TXIRQOUT) && ((x) <= EVT_I2S1_RXIRQOUT)) || \ + (((x) >= EVT_I2S2_TXIRQOUT) && ((x) <= EVT_I2S2_RXIRQOUT)) || \ + (((x) >= EVT_I2S3_TXIRQOUT) && ((x) <= EVT_I2S3_RXIRQOUT)) || \ + (((x) >= EVT_I2S4_TXIRQOUT) && ((x) <= EVT_I2S4_RXIRQOUT)) || \ + (((x) >= EVT_ACMP1) && ((x) <= EVT_ACMP3)) || \ + (((x) >= EVT_I2C1_RXI) && ((x) <= EVT_I2C3_EEI)) || \ + (((x) >= EVT_PVD_PVD1) && ((x) <= EVT_OTS)) || \ + ((x) == EVT_WDT_REFUDF) || \ + (((x) >= EVT_ADC1_EOCA) && ((x) <= EVT_TRNG_END)) || \ + (((x) >= EVT_SDIOC1_DMAR) && ((x) <= EVT_SDIOC1_DMAW)) || \ + (((x) >= EVT_SDIOC2_DMAR) && ((x) <= EVT_SDIOC2_DMAW)) || \ + ((x) == EVT_MAX)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static void ADC_ReadAllData(const M4_ADC_TypeDef *ADCx, uint16_t *pu16AdcData, uint8_t u8Length); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initializes an ADC instance. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] pstcInit Pointer to ADC initialization structure. + ** See @ref stc_adc_init_t for details. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_Init(M4_ADC_TypeDef *ADCx, const stc_adc_init_t *pstcInit) +{ + en_result_t enRet = ErrorInvalidParameter; + + if ((NULL != ADCx) && (NULL != pstcInit)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_ADC_RESOLUTION(pstcInit->enResolution)); + DDL_ASSERT(IS_ADC_DATA_ALIGN(pstcInit->enDataAlign)); + DDL_ASSERT(IS_ADC_CLREN(pstcInit->enAutoClear)); + DDL_ASSERT(IS_ADC_SCAN_MODE(pstcInit->enScanMode)); + DDL_ASSERT(IS_ADC_RSCHSEL(pstcInit->enRschsel)); + + /* Stop ADC conversion. */ + ADCx->STR = 0u; + + ADCx->CR0_f.ACCSEL = pstcInit->enResolution; + ADCx->CR0_f.DFMT = pstcInit->enDataAlign; + ADCx->CR0_f.CLREN = pstcInit->enAutoClear; + ADCx->CR0_f.MS = pstcInit->enScanMode; + ADCx->CR1_f.RSCHSEL = pstcInit->enRschsel; + + /* Disable EOC(End Of Conversion) interrupts default. */ + ADCx->ICR = (uint8_t)0x0; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Deinitializes an ADC instance. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_DeInit(M4_ADC_TypeDef *ADCx) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + /* Set the value of all registers to the reset value. */ + /* Stop ADC conversion. */ + ADCx->STR = 0u; + ADCx->CR0 = 0u; + ADCx->CR1 = 0u; + ADCx->TRGSR = 0u; + ADCx->CHSELRA0 = 0u; + ADCx->CHSELRB0 = 0u; + ADCx->AVCHSELR0 = 0u; + ADCx->AWDCHSR0 = 0u; + ADCx->SSTR0 = (uint8_t)0x0B; + ADCx->SSTR1 = (uint8_t)0x0B; + ADCx->SSTR2 = (uint8_t)0x0B; + ADCx->SSTR3 = (uint8_t)0x0B; + ADCx->SSTR4 = (uint8_t)0x0B; + ADCx->SSTR5 = (uint8_t)0x0B; + ADCx->SSTR6 = (uint8_t)0x0B; + ADCx->SSTR7 = (uint8_t)0x0B; + ADCx->SSTR8 = (uint8_t)0x0B; + ADCx->CHMUXR0 = (uint16_t)0x3210; + ADCx->CHMUXR1 = (uint16_t)0x7654; + ADCx->ISR = 0u; + ADCx->ICR = (uint8_t)0x03; + ADCx->AWDCR = 0u; + ADCx->AWDDR0 = 0u; + ADCx->AWDDR1 = 0u; + ADCx->AWDCHSR0 = 0u; + ADCx->AWDSR0 = 0u; + + if (M4_ADC1 == ADCx) + { + ADCx->CHSELRA1 = 0u; + ADCx->CHSELRB1 = 0u; + ADCx->AVCHSELR1 = 0u; + ADCx->CHMUXR2 = (uint16_t)0xBA98; + ADCx->CHMUXR3 = (uint16_t)0xFEDC; + ADCx->SYNCCR = (uint16_t)0x0C00; + ADCx->AWDCHSR1 = 0u; + ADCx->AWDSR1 = 0u; + ADCx->PGACR = 0u; + ADCx->PGAGSR = 0u; + ADCx->PGAINSR0 = 0u; + ADCx->PGAINSR1 = 0u; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set scan mode. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param[in] enMode See @ref en_adc_scan_mode_t for details. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_SetScanMode(M4_ADC_TypeDef *ADCx, en_adc_scan_mode_t enMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_ADC_SCAN_MODE(enMode)); + + ADCx->CR0_f.MS = enMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set trigger source. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] pstcTrgCfg Pointer to ADC trigger source configuration structure. + ** \arg u8Sequence The sequence which you want to set it's trigger source. + ** \arg enTrgEnable Enable or disable trigger source. + ** \arg enTrgSel The type of trigger source. + ** \arg enInTrg0 Event number @ref en_event_src_t. + ** \arg enInTrg1 Event number @ref en_event_src_t. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** \note Sequence A and Sequence B CAN NOT set the same trigger source. + ** + ******************************************************************************/ +en_result_t ADC_ConfigTriggerSrc(M4_ADC_TypeDef *ADCx, + const stc_adc_trg_cfg_t *pstcTrgCfg) +{ + uint32_t u32TrgSelR; + __IO uint32_t *io32AdcxTrgSelR0; + __IO uint32_t *io32AdcxTrgSelR1; + en_result_t enRet = ErrorInvalidParameter; + + if ((NULL != ADCx) && + (NULL != pstcTrgCfg) && + (pstcTrgCfg->u8Sequence <= ADC_SEQ_B)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_ADC_TRGSEL(pstcTrgCfg->enTrgSel)); + + if (ADC_SEQ_A == pstcTrgCfg->u8Sequence) + { + ADCx->TRGSR_f.TRGSELA = pstcTrgCfg->enTrgSel; + } + else + { + ADCx->TRGSR_f.TRGSELB = pstcTrgCfg->enTrgSel; + } + + if (AdcTrgsel_ADTRGX != pstcTrgCfg->enTrgSel) + { + if (M4_ADC1 == ADCx) + { + io32AdcxTrgSelR0 = &(M4_AOS->ADC1_ITRGSELR0); + io32AdcxTrgSelR1 = &(M4_AOS->ADC1_ITRGSELR1); + } + else + { + io32AdcxTrgSelR0 = &(M4_AOS->ADC2_ITRGSELR0); + io32AdcxTrgSelR1 = &(M4_AOS->ADC2_ITRGSELR1); + } + + if ((pstcTrgCfg->enTrgSel & AdcTrgsel_TRGX0) == AdcTrgsel_TRGX0) + { + DDL_ASSERT(IS_ADC_TRIG_SRC_EVENT(pstcTrgCfg->enInTrg0)); + + u32TrgSelR = *io32AdcxTrgSelR0; + u32TrgSelR &= ~0x1FFul; + u32TrgSelR |= pstcTrgCfg->enInTrg0; + *io32AdcxTrgSelR0 = u32TrgSelR; + } + if ((pstcTrgCfg->enTrgSel & AdcTrgsel_TRGX1) == AdcTrgsel_TRGX1) + { + DDL_ASSERT(IS_ADC_TRIG_SRC_EVENT(pstcTrgCfg->enInTrg1)); + + u32TrgSelR = *io32AdcxTrgSelR1; + u32TrgSelR &= ~0x1FFul; + u32TrgSelR |= pstcTrgCfg->enInTrg1; + *io32AdcxTrgSelR1 = u32TrgSelR; + } + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set trigger source. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u8Seq The sequence which you want to set it's trigger source. + ** + ** \param [in] enState Enable or disable trigger source. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_TriggerSrcCmd(M4_ADC_TypeDef *ADCx, + uint8_t u8Seq, + en_functional_state_t enState) +{ + en_result_t enRet = ErrorInvalidParameter; + + if ((NULL != ADCx) && (u8Seq <= ADC_SEQ_B)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (ADC_SEQ_A == u8Seq) + { + ADCx->TRGSR_f.TRGENA = enState; + } + else + { + ADCx->TRGSR_f.TRGENB = enState; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable ADC common trigger. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] enTrgSel ADC trigger source type. See @ref en_adc_trgsel_t for details. + ** + ** \param [in] enComTrigger ADC common trigger selection. See @ref en_adc_com_trigger_t for details. + ** + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_ComTriggerCmd(M4_ADC_TypeDef *ADCx, en_adc_trgsel_t enTrgSel, \ + en_adc_com_trigger_t enComTrigger, en_functional_state_t enState) +{ + uint32_t u32ComTrig = enComTrigger; + uint32_t u32ITRGSELRAddr; + + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_ADC_TRGSEL(enTrgSel) && (enTrgSel != AdcTrgsel_ADTRGX)); + DDL_ASSERT(IS_ADC_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (M4_ADC1 == ADCx) + { + u32ITRGSELRAddr = (uint32_t)&M4_AOS->ADC1_ITRGSELR0; + } + else + { + u32ITRGSELRAddr = (uint32_t)&M4_AOS->ADC2_ITRGSELR0; + } + + u32ComTrig <<= 30u; + + if ((enTrgSel & AdcTrgsel_TRGX0) == AdcTrgsel_TRGX0) + { + if (enState == Enable) + { + *(__IO uint32_t *)u32ITRGSELRAddr |= u32ComTrig; + } + else + { + *(__IO uint32_t *)u32ITRGSELRAddr &= ~u32ComTrig; + } + } + + if ((enTrgSel & AdcTrgsel_TRGX1) == AdcTrgsel_TRGX1) + { + u32ITRGSELRAddr += 4ul; + if (enState == Enable) + { + *(__IO uint32_t *)u32ITRGSELRAddr |= u32ComTrig; + } + else + { + *(__IO uint32_t *)u32ITRGSELRAddr &= ~u32ComTrig; + } + } +} + +/** + ******************************************************************************* + ** \brief Add ADC channel. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] pstcChCfg Pointer to ADC channel configuration structure. + ** \arg u32Channel The channel(s) you want to configure. + ** \arg u8Sequence The sequence which the channel(s) belong(s) to. + ** \arg pu8SampTime Pointer to sampling time. + ** eg. u32Channel = 1001b + ** pu8SampTime[0] = channel 0's time + ** pu8SampTime[1] = channel 3's time + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** \note Sequence A and Sequence B CAN NOT set the same channel!!! + ** + ******************************************************************************/ +en_result_t ADC_AddAdcChannel(M4_ADC_TypeDef *ADCx, const stc_adc_ch_cfg_t *pstcChCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + uint8_t i; + uint8_t j; + uint32_t u32ChannelSel; + __IO uint8_t *io8Sstr; + + if ((NULL != ADCx) && + (NULL != pstcChCfg) && + (pstcChCfg->u8Sequence <= ADC_SEQ_B)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + u32ChannelSel = pstcChCfg->u32Channel & ADC1_CH_ALL; + if (ADC_SEQ_A == pstcChCfg->u8Sequence) + { + ADCx->CHSELRA0 |= (uint16_t)u32ChannelSel; + ADCx->CHSELRA1 |= (uint16_t)(u32ChannelSel >> 16u); + } + else + { + ADCx->CHSELRB0 |= (uint16_t)u32ChannelSel; + ADCx->CHSELRB1 |= (uint16_t)(u32ChannelSel >> 16u); + } + } + else + { + u32ChannelSel = pstcChCfg->u32Channel & ADC2_CH_ALL; + if (ADC_SEQ_A == pstcChCfg->u8Sequence) + { + ADCx->CHSELRA0 |= (uint16_t)u32ChannelSel; + } + else + { + ADCx->CHSELRB0 |= (uint16_t)u32ChannelSel; + } + } + + /* Set sampling time */ + i = 0u; + j = 0u; + io8Sstr = &(ADCx->SSTR0); + while (0u != u32ChannelSel) + { + if (u32ChannelSel & 0x1ul) + { + io8Sstr[i] = pstcChCfg->pu8SampTime[j++]; + } + u32ChannelSel >>= 1u; + i++; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Delete ADC channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32Channel The channel(s) you want to delete. + ** \arg ADC1_CH0 ~ ADC1_CH16 + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ** \note You can use this function to delete ADC channel(s) + ** and then set the corresponding pin(s) of the channel(s) + ** to the other mode you need in your application. + ** + ******************************************************************************/ +en_result_t ADC_DelAdcChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel) +{ + en_result_t enRet = ErrorInvalidParameter; + uint16_t u16ChSelR0; + uint16_t u16ChSelR1; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + u16ChSelR0 = (uint16_t)u32Channel; + u16ChSelR1 = (uint16_t)(u32Channel >> 16u); + + ADCx->CHSELRA0 &= (uint16_t)(~u16ChSelR0); + ADCx->CHSELRB0 &= (uint16_t)(~u16ChSelR0); + + if (M4_ADC1 == ADCx) + { + ADCx->CHSELRA1 &= (uint16_t)(~u16ChSelR1); + ADCx->CHSELRB1 &= (uint16_t)(~u16ChSelR1); + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief ADC interrupt configuration. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u8Seq The sequence to be configured. + ** + ** \param [in] enState Enable or Disable sequence conversion done interrupt. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_SeqITCmd(M4_ADC_TypeDef *ADCx, + uint8_t u8Seq, + en_functional_state_t enState) +{ + en_result_t enRet = ErrorInvalidParameter; + uint8_t u8Msk = 0u; + + if ((NULL != ADCx) && (u8Seq <= ADC_SEQ_B)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + u8Msk = (uint8_t)(0x1ul << u8Seq); + ADCx->ISR &= (uint8_t)(~u8Msk); + + if (Enable == enState) + { + ADCx->ICR |= u8Msk; + } + else + { + ADCx->ICR &= (uint8_t)(~u8Msk); + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief ADC average conversion configuration. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] enAvgCnt Average after enAvgCnt conversions. + ** See @ref en_adc_avcnt_t for details. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_ConfigAvg(M4_ADC_TypeDef *ADCx, en_adc_avcnt_t enAvgCnt) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_ADC_AVCNT(enAvgCnt)); + + ADCx->CR0_f.AVCNT = enAvgCnt; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Add average channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32Channel The channel(s), which will be set as average channel(s). + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ** \note The channel must first be configured as an analog channel + ** by function ADC_AddAdcChannel. + ** + ******************************************************************************/ +en_result_t ADC_AddAvgChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel) +{ + en_result_t enRet = ErrorInvalidParameter; + uint16_t u16AvgChR0; + uint16_t u16AvgChR1; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + u32Channel &= ADC1_CH_ALL; + } + else + { + u32Channel &= ADC2_CH_ALL; + } + + u16AvgChR0 = (uint16_t)u32Channel; + u16AvgChR1 = (uint16_t)(u32Channel >> 16u); + + ADCx->AVCHSELR0 |= u16AvgChR0; + if (M4_ADC1 == ADCx) + { + ADCx->AVCHSELR1 |= u16AvgChR1; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Delete average channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32Channel The average channel(s) which you want to delete. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_DelAvgChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel) +{ + en_result_t enRet = ErrorInvalidParameter; + uint16_t u16AvgChR0; + uint16_t u16AvgChR1; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + u16AvgChR0 = (uint16_t)u32Channel; + u16AvgChR1 = (uint16_t)(u32Channel >> 16u); + + ADCx->AVCHSELR0 &= (uint16_t)(~u16AvgChR0); + if (M4_ADC1 == ADCx) + { + ADCx->AVCHSELR1 &= (uint16_t)(~u16AvgChR1); + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief ADC AWD(analog watch dog) configuration. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] pstcAwdCfg Pointer to the configuration structure. + ** See @ref stc_adc_awd_cfg_t for details. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_ConfigAwd(M4_ADC_TypeDef *ADCx, const stc_adc_awd_cfg_t *pstcAwdCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + + if ((NULL != ADCx) && (NULL != pstcAwdCfg)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_ADC_AWDMD(pstcAwdCfg->enAwdmd)); + DDL_ASSERT(IS_ADC_AWDSS(pstcAwdCfg->enAwdss)); + + ADCx->AWDCR_f.AWDEN = AdcAwd_Disable; + ADCx->AWDCR_f.AWDIEN = AdcAwdInt_Disable; + ADCx->AWDCR_f.AWDMD = pstcAwdCfg->enAwdmd; + ADCx->AWDCR_f.AWDSS = pstcAwdCfg->enAwdss; + + ADCx->AWDDR0 = pstcAwdCfg->u16AwdDr0; + ADCx->AWDDR1 = pstcAwdCfg->u16AwdDr1; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable ADC AWD(analog watch dog). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] enState Enable or disable AWD. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_AwdCmd(M4_ADC_TypeDef *ADCx, en_functional_state_t enState) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + ADCx->AWDCR_f.AWDEN = enState; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable ADC AWD(analog watch dog) interrupt. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] enState Enable or disable AWD interrupt. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_AwdITCmd(M4_ADC_TypeDef *ADCx, en_functional_state_t enState) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + ADCx->AWDCR_f.AWDIEN = enState; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Add AWD channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32Channel The channel(s), which will be set as AWD channel(s). + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ** \note The channel must first be configured as an analog channel + ** by function ADC_AddAdcChannel. + ** + ******************************************************************************/ +en_result_t ADC_AddAwdChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel) +{ + en_result_t enRet = ErrorInvalidParameter; + uint16_t u16ChSelR0; + uint16_t u16ChSelR1; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + u32Channel &= ADC1_CH_ALL; + } + else + { + u32Channel &= ADC2_CH_ALL; + } + + u16ChSelR0 = (uint16_t)u32Channel; + u16ChSelR1 = (uint16_t)(u32Channel >> 16u); + + ADCx->AWDCHSR0 |= u16ChSelR0; + if (M4_ADC1 == ADCx) + { + ADCx->AWDCHSR1 |= u16ChSelR1; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Delete AWD channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32Channel The AWD channel(s) which you are going to delete. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_DelAwdChannel(M4_ADC_TypeDef *ADCx, uint32_t u32Channel) +{ + en_result_t enRet = ErrorInvalidParameter; + uint16_t u16ChSelR0; + uint16_t u16ChSelR1; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + u16ChSelR0 = (uint16_t)u32Channel; + u16ChSelR1 = (uint16_t)(u32Channel >> 16u); + + ADCx->AWDCHSR0 &= (uint16_t)(~u16ChSelR0); + if (M4_ADC1 == ADCx) + { + ADCx->AWDCHSR1 &= (uint16_t)(~u16ChSelR1); + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief ADC programmable gain amplifier(PGA) configuration. + ** + ** \param [in] enFactor PGA gain factor. + ** \param [in] enNegativeIn PGA negative input select. + ** + ** \retval None. + ** + ** \note Only ADC1 has PGA. + ** + ******************************************************************************/ +void ADC_ConfigPga(en_adc_pga_factor_t enFactor, en_adc_pga_negative_t enNegativeIn) +{ + DDL_ASSERT(IS_ADC_PGA_FACTOR(enFactor)); + DDL_ASSERT(IS_ADC_PGA_NEGATIVE(enNegativeIn)); + + M4_ADC1->PGAGSR_f.GAIN = enFactor; + M4_ADC1->PGAINSR1_f.PGAVSSEN = enNegativeIn; +} + +/** + ******************************************************************************* + ** \brief Enable or disable PGA. + ** + ** \param [in] enState Enable or disable PGA. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_PgaCmd(en_functional_state_t enState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (Enable == enState) + { + M4_ADC1->PGACR_f.PGACTL = AdcPgaCtl_Amplify; + } + else + { + M4_ADC1->PGACR_f.PGACTL = AdcPgaCtl_Invalid; + } +} + +/** + ******************************************************************************* + ** \brief Add PGA channel(s). + ** + ** \param[in] u32Channel The channel(s), which you want to gain. + ** + ** \retval None. + ** + ** \note Only ADC1 has PGA. The channel must first + ** be configured as an analog channel + ** by function ADC_AddAdcChannel + ** + ******************************************************************************/ +void ADC_AddPgaChannel(uint32_t u32Channel) +{ + M4_ADC1->PGAINSR0 |= ((uint16_t)(u32Channel & PGA_CH_ALL)); +} + +/** + ******************************************************************************* + ** \brief Delete PGA channel(s). + ** + ** \param[in] u32Channel The PGA channel(s) which will be deleted. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_DelPgaChannel(uint32_t u32Channel) +{ + M4_ADC1->PGAINSR0 &= (uint16_t)(~u32Channel); +} + +/** + ******************************************************************************* + ** \brief ADC sync mode configuration. + ** + ** \param [in] enMode Synchronous mode types. + ** \param [in] u8TrgDelay ADC2 trigger delay time. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_ConfigSync(en_adc_sync_mode_t enMode, uint8_t u8TrgDelay) +{ + DDL_ASSERT(IS_ADC_SYNC_MODE(enMode)); + + /* Disable synchronous mode first. */ + M4_ADC1->SYNCCR_f.SYNCEN = AdcSync_Disable; + + M4_ADC1->SYNCCR_f.SYNCMD = enMode; + M4_ADC1->SYNCCR_f.SYNCDLY = u8TrgDelay; +} + +/** + ******************************************************************************* + ** \brief Enable or disable sync mode. + ** + ** \param [in] enState Enable or disable sync mode. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_SyncCmd(en_functional_state_t enState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + M4_ADC1->SYNCCR_f.SYNCEN = enState; +} + +/** + ******************************************************************************* + ** \brief Start an ADC conversion. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ** \note Software startup only support sequence A. + ** + ******************************************************************************/ +en_result_t ADC_StartConvert(M4_ADC_TypeDef *ADCx) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + ADCx->STR = 1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Stop an ADC conversion and clear flags. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval ErrorTimeout Timeout. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_StopConvert(M4_ADC_TypeDef *ADCx) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO uint32_t u32TimeCount = 0u; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + enRet = Ok; + /* Make sure the ADC is really stopped. */ + while (ADCx->STR == 1u) + { + /* Stop ADC conversion. */ + ADCx->STR = 0u; + if (++u32TimeCount > 10000u) + { + enRet = ErrorTimeout; + break; + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the conversion status flag. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u8Seq The sequence which you want to get + ** it's conversion status flag. + ** + ** \retval Set ADC converted done. + ** \retval Reset ADC is converting or parameter error. + ** + ******************************************************************************/ +en_flag_status_t ADC_GetEocFlag(const M4_ADC_TypeDef *ADCx, uint8_t u8Seq) +{ + en_flag_status_t enFlag = Reset; + + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (ADCx->ISR & ((uint8_t)(0x1ul << u8Seq))) + { + enFlag = Set; + } + + return enFlag; +} + +/** + ******************************************************************************* + ** \brief Clear conversion status flag of sequence A or sequence B. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u8Seq The sequence which you want to clear + ** it's conversion status flag. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_ClrEocFlag(M4_ADC_TypeDef *ADCx, uint8_t u8Seq) +{ + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + ADCx->ISR &= (uint8_t)(~(0x1ul << u8Seq)); + } +} + +/** + ******************************************************************************* + ** \brief ADC start sequence A, check it's EOC status and get the data. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [out] pu16AdcData The address to store ADC value. + ** The location of the data store depends on + ** the parameter u8Length. + ** u8Length >= ADCx_CH_COUNT(ADC1_CH_COUNT or ADC2_CH_COUNT), + ** all of the ADC data regs will be read: + ** pu16AdcData[0] = data of Channel 0, + ** pu16AdcData[1] = data of Channel 1, + ** pu16AdcData[2] = data of Channel 2, + ** ... + ** u8Length < ADCx_CH_COUNT(ADC1_CH_COUNT or ADC2_CH_COUNT), + ** only the data of the enabled channles will be read: + ** pu16AdcData[0] = data of the 1st enabled channel, + ** pu16AdcData[1] = data of the 2nd enabled channel, + ** pu16AdcData[2] = data of the 3rd enabled channel, + ** ... + ** + ** \param [in] u8Length The length of the ADC data to be read. + ** + ** \param [in] u32Timeout Timeout value. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval ErrorTimeout Timeout. + ** \retval OperationInProgress ADC is converting. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_PollingSa(M4_ADC_TypeDef *ADCx, + uint16_t *pu16AdcData, + uint8_t u8Length, + uint32_t u32Timeout) +{ + en_result_t enRet = ErrorInvalidParameter; + uint8_t u8AllDataLength = 0u; + uint32_t u32Channel = 0u; + uint32_t u32AdcTimeout = 0u; + __IO uint32_t u32TimeCount = 0u; + + if ((NULL != ADCx) && (NULL != pu16AdcData) && (0u != u8Length)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + if (u8Length >= ADC1_CH_COUNT) + { + u8AllDataLength = ADC1_CH_COUNT; + } + else + { + u32Channel = (uint32_t)ADCx->CHSELRA1; + u32Channel <<= 16u; + u32Channel |= (uint32_t)ADCx->CHSELRA0; + } + } + else + { + if (u8Length >= ADC2_CH_COUNT) + { + u8AllDataLength = ADC2_CH_COUNT; + } + else + { + u32Channel = (uint32_t)M4_ADC1->CHSELRA0; + } + } + + /* Start ADC conversion. */ + ADCx->STR = (uint8_t)0x01; + + /* 10 is the number of required instructions cycles for the below loop statement. */ + u32AdcTimeout = u32Timeout * (SystemCoreClock / 10u / 1000u); + u32TimeCount = 0u; + enRet = ErrorTimeout; + while (u32TimeCount < u32AdcTimeout) + { + if (ADCx->ISR_f.EOCAF) + { + /* Get ADC data. */ + if (u8AllDataLength) + { + ADC_ReadAllData(ADCx, pu16AdcData, u8AllDataLength); + } + else + { + ADC_GetChData(ADCx, u32Channel, pu16AdcData, u8Length); + } + + /* Clear sequence A flag. */ + ADCx->ISR_f.EOCAF = 0u; + enRet = Ok; + break; + } + u32TimeCount++; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Reading all data regs of an ADC. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [out] pu16AdcData The address where the data will be stored. + ** pu16AdcData[0] = data of Channel 0, + ** pu16AdcData[1] = data of Channel 1, + ** pu16AdcData[2] = data of Channel 2, + ** ... + ** + ** \param [in] u8Length The length of the ADC data to be read. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_GetAllData(const M4_ADC_TypeDef *ADCx, uint16_t *pu16AdcData, uint8_t u8Length) +{ + en_result_t enRet = ErrorInvalidParameter; + + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + if (((M4_ADC1 == ADCx) && (u8Length >= ADC1_CH_COUNT)) || + ((M4_ADC2 == ADCx) && (u8Length >= ADC2_CH_COUNT))) + { + ADC_ReadAllData(ADCx, pu16AdcData, u8Length); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Reading the data of the specified channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base + ** \arg M4_ADC1 ADC unit 1 instance register base + ** \arg M4_ADC2 ADC unit 2 instance register base + ** + ** \param [in] u32TargetCh The specified channel(s) + ** + ** \param [out] pu16AdcData The address where the data will be stored. + ** pu16AdcData[0] = data of the 1st enabled channel, + ** pu16AdcData[1] = data of the 2nd enabled channel, + ** pu16AdcData[2] = data of the 3rd enabled channel, + ** eg. u32TargetCh = 1001b + ** pu16AdcData[0] = Channel 0's data, + ** pu16AdcData[1] = Channel 3's data, + ** + ** \param [in] u8Length The length of the ADC data to be read. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_GetChData(const M4_ADC_TypeDef *ADCx, + uint32_t u32TargetCh, + uint16_t *pu16AdcData, + uint8_t u8Length) +{ + en_result_t enRet = ErrorInvalidParameter; + uint8_t i; + uint8_t j; + uint32_t u32Channel; + __IO const uint16_t *pu16DataReg = &(ADCx->DR0); + + if ((NULL != ADCx) && (NULL != pu16AdcData) && (0u != u8Length)) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + u32Channel = u32TargetCh & ADC1_CH_ALL; + } + else + { + u32Channel = u32TargetCh & ADC2_CH_ALL; + } + + i = 0u; + j = 0u; + while ((0u != u32Channel) && (0u != u8Length)) + { + if (0u != (u32Channel & 0x1ul)) + { + pu16AdcData[j] = pu16DataReg[i]; + j++; + u8Length--; + } + + u32Channel >>= 1u; + i++; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the value of a specified channel via channel index. + ** + ** \param [in] ADCx Pointer to ADC instance register base + ** \arg M4_ADC1 ADC unit 1 instance register base + ** \arg M4_ADC2 ADC unit 2 instance register base + ** + ** \param [in] u8ChIndex The index of the specified channel. + ** u8ChIndex < ADC1_CH_COUNT while ADCx == M4_ADC1; + ** u8ChIndex < ADC2_CH_COUNT while ADCx == M4_ADC2. + ** + ** \retval An uint16_t value -- the ADC value of the specified channel. + ** + ******************************************************************************/ +uint16_t ADC_GetValue(const M4_ADC_TypeDef *ADCx, uint8_t u8ChIndex) +{ + __IO const uint16_t *pu16DataReg = &(ADCx->DR0); + + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + return pu16DataReg[u8ChIndex]; +} + +/** + ******************************************************************************* + ** \brief Get all AWD channels status flags. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \retval u32AwdFlag 0 -- No ADC channel meets AWD comparison conditions. + ** !0 -- The bit value of the channel that satisfies the + ** AWD condition is 1. + ** + ******************************************************************************/ +uint32_t ADC_GetAwdFlag(const M4_ADC_TypeDef *ADCx) +{ + uint32_t u32AwdFlag; + + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + u32AwdFlag = ADCx->AWDSR1; + u32AwdFlag <<= 16u; + u32AwdFlag |= ADCx->AWDSR0; + } + else + { + u32AwdFlag = ADCx->AWDSR0; + } + + return u32AwdFlag; +} + +/** + ******************************************************************************* + ** \brief Clear all AWD channels status flags + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_ClrAwdFlag(M4_ADC_TypeDef *ADCx) +{ + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + ADCx->AWDSR0 = 0u; + if (M4_ADC1 == ADCx) + { + ADCx->AWDSR0 = 0u; + ADCx->AWDSR1 = 0u; + } + } +} + +/** + ******************************************************************************* + ** \brief Clear AWD specified channels status flags. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32AwdCh The channel(s) which you want to clear it's flag(s). + ** + ** \retval None. + ** + ******************************************************************************/ +void ADC_ClrAwdChFlag(M4_ADC_TypeDef *ADCx, uint32_t u32AwdCh) +{ + uint16_t u16ChR0; + uint16_t u16ChR1; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + u16ChR0 = (uint16_t)u32AwdCh; + u16ChR1 = (uint16_t)(u32AwdCh >> 16u); + + ADCx->AWDSR0 &= (uint16_t)(~u16ChR0); + if (M4_ADC1 == ADCx) + { + ADCx->AWDSR1 &= (uint16_t)(~u16ChR1); + } + } +} + +/** + ******************************************************************************* + ** \brief Remap an ADC pin to channel(s). + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u32DestChannel Destination channel(s). + ** + ** \param [in] u8AdcPin ADC pin number. + ** + ** \retval ErrorInvalidParameter Parameter error. + ** \retval Ok No error occurred. + ** + ******************************************************************************/ +en_result_t ADC_ChannelRemap(M4_ADC_TypeDef *ADCx, + uint32_t u32DestChannel, + uint8_t u8AdcPin) +{ + en_result_t enRet = ErrorInvalidParameter; + uint8_t i; + uint8_t u8OffsetReg; + uint8_t u8ChPos; + uint16_t u16AdcPin = u8AdcPin; + __IO uint16_t *io16Chmuxr = NULL; + + if (NULL != ADCx) + { + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + enRet = Ok; + if (M4_ADC1 == ADCx) + { + if (u16AdcPin <= ADC1_IN15) + { + u32DestChannel &= ADC1_PIN_MASK_ALL; + } + else + { + enRet = ErrorInvalidParameter; + } + } + else + { + if ((u16AdcPin > ADC12_IN4) && (u16AdcPin < ADC12_IN11)) + { + u16AdcPin -= 4u; + u32DestChannel &= ADC2_PIN_MASK_ALL; + } + else + { + enRet = ErrorInvalidParameter; + } + } + + if (Ok == enRet) + { + i = 0u; + while (0u != u32DestChannel) + { + if (u32DestChannel & 0x1ul) + { + u8OffsetReg = i / 4u; + u8ChPos = (i % 4u) * 4u; + io16Chmuxr = &(ADCx->CHMUXR0) + u8OffsetReg; + *io16Chmuxr &= (uint16_t)(~(0xFul << u8ChPos)); + *io16Chmuxr |= (uint16_t)(u16AdcPin << u8ChPos); + } + + u32DestChannel >>= 1u; + i++; + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the number of the pin corresponding to the specified channel. + ** + ** \param [in] ADCx Pointer to ADC instance register base. + ** \arg M4_ADC1 ADC unit 1 instance register base. + ** \arg M4_ADC2 ADC unit 2 instance register base. + ** + ** \param [in] u8ChIndex This channel that you want to get its pin number. + ** + ** \retval [0, 15] The correct ADC pin number. + ** \retval [0xFF] The invalid ADC pin number. + ** + ******************************************************************************/ +uint8_t ADC_GetChannelPinNum(const M4_ADC_TypeDef *ADCx, uint8_t u8ChIndex) +{ + uint8_t u8OffsetPin; + uint8_t u8OffsetReg; + uint8_t u8ChPos; + uint8_t u8AdcPin = ADC_PIN_INVALID; + __IO const uint16_t *io16Chmuxr = NULL; + + DDL_ASSERT(IS_ADC_PERIPH(ADCx)); + + if (M4_ADC1 == ADCx) + { + DDL_ASSERT(IS_ADC1_CH_INDEX(u8ChIndex)); + u8OffsetPin = 0u; + } + else + { + DDL_ASSERT(IS_ADC2_CH_INDEX(u8ChIndex)); + u8OffsetPin = 4u; + } + + u8OffsetReg = u8ChIndex / 4u; + u8ChPos = (u8ChIndex % 4u) * 4u; + io16Chmuxr = &(ADCx->CHMUXR0) + u8OffsetReg; + u8AdcPin = (uint8_t)((*io16Chmuxr >> u8ChPos) & ((uint16_t)0xF)); + u8AdcPin += u8OffsetPin; + + return u8AdcPin; +} + +/******************************************************************************* + * Function implementation - local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Read all data of an ADC. pu16AdcData[0] = DR0, pu16AdcData[1] = DR1, ... + ** + ******************************************************************************/ +static void ADC_ReadAllData(const M4_ADC_TypeDef *ADCx, uint16_t *pu16AdcData, uint8_t u8Length) +{ + uint8_t i; + __IO const uint16_t *pu16DataReg = &(ADCx->DR0); + + for (i = 0u; i < u8Length; i++) + { + pu16AdcData[i] = pu16DataReg[i]; + } +} + +//@} // AdcGroup + +#endif /* DDL_ADC_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_aes.c b/driver/src/hc32f460_aes.c new file mode 100644 index 0000000..d549d30 --- /dev/null +++ b/driver/src/hc32f460_aes.c @@ -0,0 +1,311 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_aes.c + ** + ** A detailed description is available at + ** @link AesGroup Aes description @endlink + ** + ** - 2018-10-20 CDT First version for Device Driver Library of Aes. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_aes.h" +#include "hc32f460_utility.h" + +#if (DDL_AES_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup AesGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* AES block length in bytes is 16. */ +#define AES_BLOCK_LEN ((uint8_t)16) + +/* Each encryption operation takes 440 system clock cycles. */ +#define AES_ENCRYPT_TIMEOUT (440u) + +/* Each decryption operation takes 580 system clock cycles. */ +#define AES_DECRYPT_TIMEOUT (580u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static void AES_WriteData(const uint8_t *pu8SrcData); +static void AES_ReadData(uint8_t *pu8Dest); +static void AES_WriteKey(const uint8_t *pu8Key); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief AES128 encryption(ECB mode). + ** + ** \param [in] pu8Plaintext Pointer to plaintext(the source data which will be encrypted) + ** + ** \param [in] u32PlaintextSize Length of plaintext in bytes. + ** + ** \param [in] pu8Key Pointer to the AES key. + ** + ** \param [out] pu8Ciphertext The destination address to store the result of the encryption. + ** + ** \retval Ok No error occurred. + ** \retval ErrorTimeout AES works timeout. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t AES_Encrypt(const uint8_t *pu8Plaintext, + uint32_t u32PlaintextSize, + const uint8_t *pu8Key, + uint8_t *pu8Ciphertext) +{ + en_result_t enRet = ErrorInvalidParameter; + uint32_t u32BlockOffset; + uint32_t u32Index; + __IO uint32_t u32TimeCount; + + if ((NULL != pu8Plaintext) && + (0u != u32PlaintextSize) && + (NULL != pu8Key) && + (NULL != pu8Ciphertext) && + (0u == (u32PlaintextSize & 0xFu)) && /* u32PlaintextSize % AES_BLOCK_LEN */ + (0u == ((uint32_t)pu8Plaintext & 0x3u)) && /* (uint32_t)pu8Ciphertext % 4u */ + (0u == ((uint32_t)pu8Key & 0x3u)) && /* (uint32_t)pu8Key % 4u */ + (0u == ((uint32_t)pu8Ciphertext & 0x3u))) /* (uint32_t)pu8Plaintext % 4u */ + { + /* Write the key to the register. */ + AES_WriteKey(pu8Key); + u32BlockOffset = 0u; + while (0u != u32PlaintextSize) + { + /* Stop AES calculating. */ + bM4_AES_CR_START = 0u; + + /* Write data. */ + u32Index = u32BlockOffset * AES_BLOCK_LEN; + AES_WriteData(&pu8Plaintext[u32Index]); + + /* Set AES encrypt. */ + bM4_AES_CR_MODE = 0u; + + /* Start AES calculating. */ + bM4_AES_CR_START = 1u; + + enRet = ErrorTimeout; + u32TimeCount = 0u; + while (u32TimeCount < AES_ENCRYPT_TIMEOUT) + { + if (bM4_AES_CR_START == 0u) + { + enRet = Ok; + break; + } + u32TimeCount++; + } + + if (enRet == ErrorTimeout) + { + break; + } + + AES_ReadData(&pu8Ciphertext[u32Index]); + u32PlaintextSize -= AES_BLOCK_LEN; + u32BlockOffset++; + } + + /* Stop AES calculating. */ + bM4_AES_CR_START = 0u; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief AES128 decryption(ECB mode). + ** + ** \param [in] pu8Ciphertext Pointer to ciphertext(the source data which will be decrypted) + ** + ** \param [in] u32CiphertextSize Length of ciphertext in bytes. + ** + ** \param [in] pu8Key Pointer to the AES key. + ** + ** \param [out] pu8Plaintext The destination address to store the result of the decryption. + ** + ** \retval Ok No error occurred. + ** \retval ErrorTimeout AES works timeout. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t AES_Decrypt(const uint8_t *pu8Ciphertext, + uint32_t u32CiphertextSize, + const uint8_t *pu8Key, + uint8_t *pu8Plaintext) +{ + en_result_t enRet = ErrorInvalidParameter; + uint32_t u32BlockOffset; + uint32_t u32Index; + __IO uint32_t u32TimeCount; + + if ((NULL != pu8Ciphertext) && + (0u != u32CiphertextSize) && + (NULL != pu8Key) && + (NULL != pu8Plaintext) && + (0u == (u32CiphertextSize & 0xFu)) && /* u32CiphertextSize % AES_BLOCK_LEN */ + (0u == ((uint32_t)pu8Ciphertext & 0x3u)) && /* (uint32_t)pu8Ciphertext % 4u */ + (0u == ((uint32_t)pu8Key & 0x3u)) && /* (uint32_t)pu8Key % 4u */ + (0u == ((uint32_t)pu8Plaintext & 0x3u))) /* (uint32_t)pu8Plaintext % 4u */ + { + /* Write the key to the register. */ + AES_WriteKey(pu8Key); + u32BlockOffset = 0u; + while (0u != u32CiphertextSize) + { + /* Stop AES calculating. */ + bM4_AES_CR_START = 0u; + + /* Write data. */ + u32Index = u32BlockOffset * AES_BLOCK_LEN; + AES_WriteData(&pu8Ciphertext[u32Index]); + + /* Set AES decrypt. */ + bM4_AES_CR_MODE = 1u; + + /* Start AES calculating. */ + bM4_AES_CR_START = 1u; + + enRet = ErrorTimeout; + u32TimeCount = 0u; + while (u32TimeCount < AES_DECRYPT_TIMEOUT) + { + if (bM4_AES_CR_START == 0u) + { + enRet = Ok; + break; + } + u32TimeCount++; + } + + if (enRet == ErrorTimeout) + { + break; + } + + AES_ReadData(&pu8Plaintext[u32Index]); + u32CiphertextSize -= AES_BLOCK_LEN; + u32BlockOffset++; + } + + /* Stop AES calculating. */ + bM4_AES_CR_START = 0u; + } + + return enRet; +} + +/******************************************************************************* + * Function implementation - local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Writes the input buffer in data register. + ** + ** \param [in] pu8SrcData Pointer to source data buffer. + ** + ** \retval None. + ** + ******************************************************************************/ +static void AES_WriteData(const uint8_t *pu8SrcData) +{ + uint8_t i; + uint32_t u32SrcAddr = (uint32_t)pu8SrcData; + uint32_t u32DrAddr = (uint32_t)&(M4_AES->DR0); + + for (i = 0u; i < 4u; i++) + { + *(__IO uint32_t *)u32DrAddr = *(uint32_t*)u32SrcAddr; + u32SrcAddr += 4u; + u32DrAddr += 4u; + } +} + +/** + ******************************************************************************* + ** \brief Reads the from data register. + ** + ** \param [out] pu8Dest Pointer to the destination buffer. + ** + ** \retval None. + ** + ******************************************************************************/ +static void AES_ReadData(uint8_t *pu8Dest) +{ + uint8_t i; + uint32_t u32DestAddr = (uint32_t)pu8Dest; + uint32_t u32DrAddr = (uint32_t)&(M4_AES->DR0); + + for (i = 0u; i < 4u; i++) + { + *(uint32_t*)u32DestAddr = *(__IO uint32_t *)u32DrAddr; + u32DestAddr += 4u; + u32DrAddr += 4u; + } +} + +/** + ******************************************************************************* + ** \brief Writes the input buffer in key register. + ** + ** \param [in] pu8Key Pointer to AES key. + ** + ** \retval None. + ** + ******************************************************************************/ +static void AES_WriteKey(const uint8_t *pu8Key) +{ + uint8_t i; + uint32_t u32SrcKeyAddr = (uint32_t)pu8Key; + uint32_t u32KeyAddr = (uint32_t)&(M4_AES->KR0); + + for (i = 0u; i < 4u; i++) + { + *(__IO uint32_t *)u32KeyAddr = *(uint32_t*)u32SrcKeyAddr; + u32SrcKeyAddr += 4u; + u32KeyAddr += 4u; + } +} + +//@} // AesGroup + +#endif /* DDL_AES_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_can.c b/driver/src/hc32f460_can.c new file mode 100644 index 0000000..2deb1c3 --- /dev/null +++ b/driver/src/hc32f460_can.c @@ -0,0 +1,562 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_can.c + ** + ** A detailed description is available at + ** @link CanGroup CAN description @endlink + ** + ** - 2018-12-13 CDT First version for Device Driver Library of CAN. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_can.h" +#include "hc32f460_utility.h" + +#if (DDL_CAN_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup CanGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define CAN_RESET_ENABLE() (M4_CAN->CFG_STAT_f.RESET = 1u) +#define CAN_RESET_DISABLE() \ +do{ \ + do{ \ + M4_CAN->CFG_STAT_f.RESET = 0u; \ +}while(M4_CAN->CFG_STAT_f.RESET); \ +}while(0) + +#define CAN_RW_MEM32(addr) (*(__IO uint32_t *)(addr)) + +#define CAN_ACF_ID_REG_SEL ((uint8_t)0x00u) +#define CAN_ACF_MASK_REG_SEL ((uint8_t)0x01u) + + +/*! Parameter validity check for CAN Mode \a CanMode. */ +#define IS_CAN_MODE_VALID(CanMode) \ +( (CanExternalLoopBackMode == (CanMode)) || \ + (CanInternalLoopBackMode == (CanMode)) || \ + (CanTxSignalPrimaryMode == (CanMode)) || \ + (CanTxSignalSecondaryMode == (CanMode)) || \ + (CanListenOnlyMode == (CanMode)) \ +) + +/*! Parameter validity check for CAN Tx Cmd \a TxCmd. */ +#define IS_TX_CMD_VALID(TxCmd) \ +( (CanPTBTxCmd == (TxCmd)) || \ + (CanPTBTxAbortCmd == (TxCmd)) || \ + (CanSTBTxOneCmd == (TxCmd)) || \ + (CanSTBTxAllCmd == (TxCmd)) || \ + (CanSTBTxAbortCmd == (TxCmd)) \ +) + +/*! Parameter validity check for CAN status \a enCanStatus. */ +#define IS_CAN_STATUS_VALID(enCanStatus) \ +( (CanRxActive == (enCanStatus)) || \ + (CanTxActive == (enCanStatus)) || \ + (CanBusoff == (enCanStatus)) \ +) + +/*! Parameter validity check for CAN Irq type \a enCanIrqType. */ +#define IS_CAN_IRQ_TYPE_VALID(enCanIrqType) \ +( (CanRxIrqEn == (enCanIrqType)) || \ + (CanRxOverIrqEn == (enCanIrqType)) || \ + (CanRxBufFullIrqEn == (enCanIrqType)) || \ + (CanRxBufAlmostFullIrqEn == (enCanIrqType)) || \ + (CanTxPrimaryIrqEn == (enCanIrqType)) || \ + (CanTxSecondaryIrqEn == (enCanIrqType)) || \ + (CanErrorIrqEn == (enCanIrqType)) || \ + (CanErrorPassiveIrqEn == (enCanIrqType)) || \ + (CanArbiLostIrqEn == (enCanIrqType)) || \ + (CanBusErrorIrqEn == (enCanIrqType)) \ +) + +/*! Parameter validity check for CAN Irq flag type \a enCanIrqFLg. */ +#define IS_CAN_IRQ_FLAG_VALID(enCanIrqFLg) \ +( (CanTxBufFullIrqFlg == (enCanIrqFLg)) || \ + (CanRxIrqFlg == (enCanIrqFLg)) || \ + (CanRxOverIrqFlg == (enCanIrqFLg)) || \ + (CanRxBufFullIrqFlg == (enCanIrqFLg)) || \ + (CanRxBufAlmostFullIrqFlg == (enCanIrqFLg)) || \ + (CanTxPrimaryIrqFlg == (enCanIrqFLg)) || \ + (CanTxSecondaryIrqFlg == (enCanIrqFLg)) || \ + (CanErrorIrqFlg == (enCanIrqFLg)) || \ + (CanAbortIrqFlg == (enCanIrqFLg)) || \ + (CanErrorWarningIrqFlg == (enCanIrqFLg)) || \ + (CanErrorPassivenodeIrqFlg == (enCanIrqFLg)) || \ + (CanErrorPassiveIrqFlg == (enCanIrqFLg)) || \ + (CanArbiLostIrqFlg == (enCanIrqFLg)) || \ + (CanBusErrorIrqFlg == (enCanIrqFLg)) \ +) + +/*! Parameter validity check for CAN filter \a enCanFilter. */ +#define IS_CAN_FILTER_VALID(enCanFilter) \ +( (enCanFilter) <= CanFilterSel8) + +/*! Parameter validity check for CAN filter count \a u8Count. */ +#define IS_CAN_FILTER_COUNT_VALID(u8Count) \ +( (u8Count) <= 8u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Configures the can base functions + ** + ** \param [in] pstcCanInitCfg The can initial config struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_Init(const stc_can_init_config_t *pstcCanInitCfg) +{ + uint8_t i; + if (NULL != pstcCanInitCfg) + { + DDL_ASSERT(IS_CAN_FILTER_COUNT_VALID(pstcCanInitCfg->u8FilterCount)); + + CAN_RESET_ENABLE(); + M4_CAN->BT_f.PRESC = pstcCanInitCfg->stcCanBt.PRESC; + M4_CAN->BT_f.SEG_1 = pstcCanInitCfg->stcCanBt.SEG_1; + M4_CAN->BT_f.SEG_2 = pstcCanInitCfg->stcCanBt.SEG_2; + M4_CAN->BT_f.SJW = pstcCanInitCfg->stcCanBt.SJW; + M4_CAN->TCTRL_f.TSMODE = pstcCanInitCfg->enCanSTBMode; + CAN_FilterConfig(pstcCanInitCfg->pstcFilter, pstcCanInitCfg->u8FilterCount); + + CAN_RESET_DISABLE(); + M4_CAN->RCTRL_f.RBALL = pstcCanInitCfg->enCanRxBufAll; + M4_CAN->RCTRL_f.ROM = pstcCanInitCfg->enCanRxBufMode; + M4_CAN->RCTRL_f.SACK = pstcCanInitCfg->enCanSAck; + M4_CAN->LIMIT_f.AFWL = pstcCanInitCfg->stcWarningLimit.CanWarningLimitVal; + M4_CAN->LIMIT_f.EWL = pstcCanInitCfg->stcWarningLimit.CanErrorWarningLimitVal; + + // Enable filters. + for (i=0u; iu8FilterCount; i++) + { + CAN_FilterCmd(pstcCanInitCfg->pstcFilter[i].enFilterSel, Enable); + } + } +} + +/** + ******************************************************************************* + ** \brief De-Init (RESET CAN register) + ** + ** \param None + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_DeInit(void) +{ + CAN_RESET_ENABLE(); +} + +/** + ******************************************************************************* + ** \brief Configures the can Mode + ** + ** \param [in] enMode The can mode enum. @ref en_can_mode_t + ** \param [in] enNewState The new state of the can filter chanel. + ** \arg Enable Enable filter. + ** \arg Disable Disable filter. + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_ModeConfig(en_can_mode_t enMode, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_CAN_MODE_VALID(enMode)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(CanListenOnlyMode == enMode) + { + M4_CAN->TCMD_f.LOM = enNewState; + }else + { + if(Enable == enNewState) + { + M4_CAN->CFG_STAT |= enMode; + }else + { + M4_CAN->CFG_STAT &= ~enMode; + } + } +} + + +/** + ******************************************************************************* + ** \brief Configures the can acceptance filter + ** + ** \param [in] pstcFilter Pointer to a stc_can_filter_t type array. + ** @ref stc_can_filter_t + ** \param [in] u8FilterCount Number of filters that to be configured. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_FilterConfig(const stc_can_filter_t pstcFilter[], uint8_t u8FilterCount) +{ + uint8_t i; + + if(NULL != pstcFilter) + { + DDL_ASSERT(IS_CAN_FILTER_COUNT_VALID(u8FilterCount)); + + for (i=0u; iACFCTRL_f.ACFADR = pstcFilter[i].enFilterSel; + //<ACFCTRL_f.SELMASK = CAN_ACF_ID_REG_SEL; + M4_CAN->ACF = pstcFilter[i].u32CODE; + //<ACFCTRL_f.SELMASK = CAN_ACF_MASK_REG_SEL; + M4_CAN->ACF = pstcFilter[i].u32MASK; + //<ACF_f.AIDEE = ((pstcFilter[i].enAcfFormat >> 1ul) & 0x01u); + M4_CAN->ACF_f.AIDE = (pstcFilter[i].enAcfFormat & 0x01ul); + } + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the specified can acceptance filter. + ** + ** \param [in] enFilter Specifies a filter. + ** @ref en_can_filter_sel_t + ** \param [in] enNewState The new state of the specified filter. + ** \arg Enable Enable. + ** \arg Disable Disable. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_FilterCmd(en_can_filter_sel_t enFilter, en_functional_state_t enNewState) +{ + uint8_t u8FilterSel; + + DDL_ASSERT(IS_CAN_FILTER_VALID(enFilter)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + u8FilterSel = (uint8_t)(1ul << enFilter); + + if(Enable == enNewState) + { + M4_CAN->ACFEN |= u8FilterSel; + }else + { + M4_CAN->ACFEN &= (uint8_t)(~u8FilterSel); + } +} + +/** + ******************************************************************************* + ** \brief Configures the can Tx frame set + ** + ** \param [in] pstcTxFrame The can Tx frame struct. + ** @ref stc_can_txframe_t + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_SetFrame(stc_can_txframe_t *pstcTxFrame) +{ + uint32_t u32TBUFAddr; + + if(NULL != pstcTxFrame) + { + u32TBUFAddr = (uint32_t)&M4_CAN->TBUF; + M4_CAN->TCMD_f.TBSEL = pstcTxFrame->enBufferSel; + CAN_RW_MEM32(u32TBUFAddr) = pstcTxFrame->TBUF32_0; + CAN_RW_MEM32(u32TBUFAddr+4) = pstcTxFrame->TBUF32_1; + CAN_RW_MEM32(u32TBUFAddr+8) = pstcTxFrame->TBUF32_2[0]; + CAN_RW_MEM32(u32TBUFAddr+12) = pstcTxFrame->TBUF32_2[1]; + + if(CanSTBSel == pstcTxFrame->enBufferSel) + { + M4_CAN->TCTRL_f.TSNEXT = Enable; + } + } +} + +/** + ******************************************************************************* + ** \brief Configures the can Tx Command + ** + ** \param [in] enTxCmd The can Tx Command. + ** + ** \retval Can Tx buffer status @ref en_can_tx_buf_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_can_tx_buf_status_t CAN_TransmitCmd(en_can_tx_cmd_t enTxCmd) +{ + DDL_ASSERT(IS_TX_CMD_VALID(enTxCmd)); + + M4_CAN->TCMD |= enTxCmd; + + return (en_can_tx_buf_status_t)M4_CAN->TCTRL_f.TSSTAT; +} + +/** + ******************************************************************************* + ** \brief Configures the can Rx frame + ** + ** \param [in] pstcRxFrame The can Rx frame. + ** @ref stc_can_rxframe_t + ** \retval Can rx buffer status @ref en_can_rx_buf_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_can_rx_buf_status_t CAN_Receive(stc_can_rxframe_t *pstcRxFrame) +{ + uint32_t u32RBUFAddr; + + if(NULL != pstcRxFrame) + { + u32RBUFAddr = (uint32_t)&M4_CAN->RBUF; + pstcRxFrame->RBUF32_0 = CAN_RW_MEM32(u32RBUFAddr); + pstcRxFrame->RBUF32_1 = CAN_RW_MEM32(u32RBUFAddr+4); + pstcRxFrame->RBUF32_2[0] = CAN_RW_MEM32(u32RBUFAddr+8); + pstcRxFrame->RBUF32_2[1] = CAN_RW_MEM32(u32RBUFAddr+12); + + M4_CAN->RCTRL_f.RREL = 1u; + } + return (en_can_rx_buf_status_t)M4_CAN->RCTRL_f.RSSTAT; +} + + +/** + ******************************************************************************* + ** \brief Get the can Error Status + ** + ** \param None + ** + ** \retval en_can_error_t The can error status + ** + ** \note None + ** + ******************************************************************************/ +en_can_error_t CAN_ErrorStatusGet(void) +{ + en_can_error_t enRet = UNKOWN_ERROR; + + if(6u > M4_CAN->EALCAP_f.KOER) + { + enRet = (en_can_error_t)M4_CAN->EALCAP_f.KOER; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the can Status + ** + ** \param enCanStatus The can status + ** \arg true + ** \arg false + ** \retval bool + ** + ** \note None + ** + ******************************************************************************/ +bool CAN_StatusGet(en_can_status_t enCanStatus) +{ + bool bRet = false; + DDL_ASSERT(IS_CAN_STATUS_VALID(enCanStatus)); + + if(M4_CAN->CFG_STAT & enCanStatus) + { + bRet = true; + } + return bRet; +} + +/** + ******************************************************************************* + ** \brief Configures the can Interrupt enable + ** + ** \param [in] enCanIrqType The can interrupt type. + ** \param [in] enNewState The new state of the can interrupt. + ** \arg Enable Enable. + ** \arg Disable Disable. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_IrqCmd(en_can_irq_type_t enCanIrqType, en_functional_state_t enNewState) +{ + volatile uint32_t *u32pIE; + + DDL_ASSERT(IS_CAN_IRQ_TYPE_VALID(enCanIrqType)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + u32pIE = (volatile uint32_t*)(&M4_CAN->RTIE); + + if(Enable == enNewState) + { + *u32pIE |= enCanIrqType; + }else + { + *u32pIE &= ~((uint32_t)enCanIrqType); + } +} + +/** + ******************************************************************************* + ** \brief Get the can Interrupt Flag + ** + ** \param [in] enCanIrqFlgType The can interrupt Flag. + ** + ** \retval bool + ** + ** \note None + ** + ******************************************************************************/ +bool CAN_IrqFlgGet(en_can_irq_flag_type_t enCanIrqFlgType) +{ + volatile uint32_t *u32pIE = NULL; + bool bRet = false; + + DDL_ASSERT(IS_CAN_IRQ_FLAG_VALID(enCanIrqFlgType)); + + u32pIE = (volatile uint32_t*)(&M4_CAN->RTIE); + + if( *u32pIE & enCanIrqFlgType) + { + bRet = true; + } + return bRet; +} + +/** + ******************************************************************************* + ** \brief Clear the can Interrupt Flag + ** + ** \param [in] enCanIrqFlgType The can interrupt type. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_IrqFlgClr(en_can_irq_flag_type_t enCanIrqFlgType) +{ + volatile uint32_t *u32pIE = NULL; + uint32_t u32IETempMsk = 0xFF2A00FF; + + DDL_ASSERT(IS_CAN_IRQ_FLAG_VALID(enCanIrqFlgType)); + + u32pIE = (volatile uint32_t*)(&M4_CAN->RTIE); + + *u32pIE = (((*u32pIE)&u32IETempMsk) | (uint32_t)enCanIrqFlgType); +} + + +/** + ******************************************************************************* + ** \brief Get the can Rx Error Counter + ** + ** \param None + ** + ** \retval Error Counter(0~255) + ** + ** \note None + ** + ******************************************************************************/ +uint8_t CAN_RxErrorCntGet(void) +{ + return M4_CAN->RECNT; +} + +/** + ******************************************************************************* + ** \brief Get the can Tx Error Counter + ** + ** \param None + ** + ** \retval Error Counter(0~255) + ** + ** \note None + ** + ******************************************************************************/ +uint8_t CAN_TxErrorCntGet(void) +{ + return M4_CAN->TECNT; +} + +/** + ******************************************************************************* + ** \brief Get the can Arbitration lost captrue + ** + ** \param None + ** + ** \retval address(0~31) + ** + ** \note None + ** + ******************************************************************************/ +uint8_t CAN_ArbitrationLostCap(void) +{ + return M4_CAN->EALCAP_f.ALC; +} + + +//@} // CanGroup + +#endif /* DDL_CAN_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/src/hc32f460_can1.c b/driver/src/hc32f460_can1.c new file mode 100644 index 0000000..ff08fe1 --- /dev/null +++ b/driver/src/hc32f460_can1.c @@ -0,0 +1,532 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_can.c + ** + ** A detailed description is available at + ** @link CanGroup CAN description @endlink + ** + ** - 2018-12-13 CDT First version for Device Driver Library of CAN. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_can.h" +#include "hc32f460_utility.h" + +#if (DDL_CAN_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup CanGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define CAN_RESET_ENABLE() (M4_CAN->CFG_STAT_f.RESET = 1u) +#define CAN_RESET_DISABLE() \ +do{ \ + do{ \ + M4_CAN->CFG_STAT_f.RESET = 0u; \ +}while(M4_CAN->CFG_STAT_f.RESET); \ +}while(0) + +#define CAN_RW_MEM32(addr) (*(__IO uint32_t *)(addr)) + +#define CAN_ACF_ID_REG_SEL ((uint8_t)0x00u) +#define CAN_ACF_MASK_REG_SEL ((uint8_t)0x01u) + + +/*! Parameter validity check for CAN Mode \a CanMode. */ +#define IS_CAN_MODE_VALID(CanMode) \ +( (CanExternalLoopBackMode == (CanMode)) || \ + (CanInternalLoopBackMode == (CanMode)) || \ + (CanTxSignalPrimaryMode == (CanMode)) || \ + (CanTxSignalSecondaryMode == (CanMode)) || \ + (CanListenOnlyMode == (CanMode)) \ +) + +/*! Parameter validity check for CAN Tx Cmd \a TxCmd. */ +#define IS_TX_CMD_VALID(TxCmd) \ +( (CanPTBTxCmd == (TxCmd)) || \ + (CanPTBTxAbortCmd == (TxCmd)) || \ + (CanSTBTxOneCmd == (TxCmd)) || \ + (CanSTBTxAllCmd == (TxCmd)) || \ + (CanSTBTxAbortCmd == (TxCmd)) \ +) + +/*! Parameter validity check for CAN status \a enCanStatus. */ +#define IS_CAN_STATUS_VALID(enCanStatus) \ +( (CanRxActive == (enCanStatus)) || \ + (CanTxActive == (enCanStatus)) || \ + (CanBusoff == (enCanStatus)) \ +) + +/*! Parameter validity check for CAN Irq type \a enCanIrqType. */ +#define IS_CAN_IRQ_TYPE_VALID(enCanIrqType) \ +( (CanRxIrqEn == (enCanIrqType)) || \ + (CanRxOverIrqEn == (enCanIrqType)) || \ + (CanRxBufFullIrqEn == (enCanIrqType)) || \ + (CanRxBufAlmostFullIrqEn == (enCanIrqType)) || \ + (CanTxPrimaryIrqEn == (enCanIrqType)) || \ + (CanTxSecondaryIrqEn == (enCanIrqType)) || \ + (CanErrorIrqEn == (enCanIrqType)) || \ + (CanErrorPassiveIrqEn == (enCanIrqType)) || \ + (CanArbiLostIrqEn == (enCanIrqType)) || \ + (CanBusErrorIrqEn == (enCanIrqType)) \ +) + +/*! Parameter validity check for CAN Irq flag type \a enCanIrqFLg. */ +#define IS_CAN_IRQ_FLAG_VALID(enCanIrqFLg) \ +( (CanTxBufFullIrqFlg == (enCanIrqFLg)) || \ + (CanRxIrqFlg == (enCanIrqFLg)) || \ + (CanRxOverIrqFlg == (enCanIrqFLg)) || \ + (CanRxBufFullIrqFlg == (enCanIrqFLg)) || \ + (CanRxBufAlmostFullIrqFlg == (enCanIrqFLg)) || \ + (CanTxPrimaryIrqFlg == (enCanIrqFLg)) || \ + (CanTxSecondaryIrqFlg == (enCanIrqFLg)) || \ + (CanErrorIrqFlg == (enCanIrqFLg)) || \ + (CanAbortIrqFlg == (enCanIrqFLg)) || \ + (CanErrorWarningIrqFlg == (enCanIrqFLg)) || \ + (CanErrorPassivenodeIrqFlg == (enCanIrqFLg)) || \ + (CanErrorPassiveIrqFlg == (enCanIrqFLg)) || \ + (CanArbiLostIrqFlg == (enCanIrqFLg)) || \ + (CanBusErrorIrqFlg == (enCanIrqFLg)) \ +) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Configures the can base functions + ** + ** \param [in] pstcCanInitCfg The can initial config struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_Init(stc_can_init_config_t *pstcCanInitCfg) +{ + if (NULL != pstcCanInitCfg) + { + M4_CAN->RCTRL_f.SACK = pstcCanInitCfg->enCanSAck; + M4_CAN->TCTRL_f.TSMODE = pstcCanInitCfg->enCanSTBMode; + M4_CAN->RCTRL_f.RBALL = pstcCanInitCfg->enCanRxBufAll; + M4_CAN->RCTRL_f.ROM = pstcCanInitCfg->enCanRxBufMode; + + M4_CAN->RTIE = 0x00u; + + CAN_RESET_ENABLE(); + + M4_CAN->BT_f.PRESC = pstcCanInitCfg->stcCanBt.PRESC; + M4_CAN->BT_f.SEG_1 = pstcCanInitCfg->stcCanBt.SEG_1; + M4_CAN->BT_f.SEG_2 = pstcCanInitCfg->stcCanBt.SEG_2; + M4_CAN->BT_f.SJW = pstcCanInitCfg->stcCanBt.SJW; + + M4_CAN->LIMIT_f.AFWL = pstcCanInitCfg->stcWarningLimit.CanWarningLimitVal; + M4_CAN->LIMIT_f.EWL = pstcCanInitCfg->stcWarningLimit.CanErrorWarningLimitVal; + + CAN_RESET_DISABLE(); + } +} + +/** + ******************************************************************************* + ** \brief De-Init (RESET CAN register) + ** + ** \param None + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_DeInit(void) +{ + CAN_RESET_ENABLE(); +} + +/** + ******************************************************************************* + ** \brief Configures the can Mode + ** + ** \param [in] enMode The can mode enum. @ref en_can_mode_t + ** \param [in] enNewState The new state of the can filter chanel. + ** \arg Enable Enable filter. + ** \arg Disable Disable filter. + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_ModeConfig(en_can_mode_t enMode, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_CAN_MODE_VALID(enMode)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(CanListenOnlyMode == enMode) + { + M4_CAN->TCMD_f.LOM = enNewState; + }else + { + if(Enable == enNewState) + { + M4_CAN->CFG_STAT |= enMode; + }else + { + M4_CAN->CFG_STAT &= ~enMode; + } + } + +} + + +/** + ******************************************************************************* + ** \brief Configures the can acceptance filter + ** + ** \param [in] pstcFilter The can filter config struct. + ** @ref stc_can_filter_t + ** \param [in] enNewState The new state of the can filter chanel. + ** \arg Enable Enable filter. + ** \arg Disable Disable filter. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_FilterConfig(const stc_can_filter_t *pstcFilter, en_functional_state_t enNewState) +{ + if(NULL != pstcFilter) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + CAN_RESET_ENABLE(); + + //<ACFCTRL_f.ACFADR = pstcFilter->enFilterSel; + + //<ACFCTRL_f.SELMASK = CAN_ACF_ID_REG_SEL; + M4_CAN->ACF = pstcFilter->u32CODE; + + //<ACFCTRL_f.SELMASK = CAN_ACF_MASK_REG_SEL; + M4_CAN->ACF = pstcFilter->u32MASK; + + //<ACF_f.AIDEE = ((pstcFilter->enAcfFormat >> 1ul) & 0x01u); + M4_CAN->ACF_f.AIDE = (pstcFilter->enAcfFormat & 0x01ul); + + if(Enable == enNewState) + { + M4_CAN->ACFEN |= (uint8_t)(1ul << pstcFilter->enFilterSel); + }else + { + M4_CAN->ACFEN &= (uint8_t)(~(1ul << (pstcFilter->enFilterSel))); + } + + CAN_RESET_DISABLE(); + } +} + + +/** + ******************************************************************************* + ** \brief Configures the can Tx frame set + ** + ** \param [in] pstcTxFrame The can Tx frame struct. + ** @ref stc_can_txframe_t + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_SetFrame(stc_can_txframe_t *pstcTxFrame) +{ + uint32_t u32TBUFAddr; + + if(NULL != pstcTxFrame) + { + u32TBUFAddr = (uint32_t)&M4_CAN->TBUF; + M4_CAN->TCMD_f.TBSEL = pstcTxFrame->enBufferSel; + CAN_RW_MEM32(u32TBUFAddr) = pstcTxFrame->TBUF32_0; + CAN_RW_MEM32(u32TBUFAddr+4) = pstcTxFrame->TBUF32_1; + CAN_RW_MEM32(u32TBUFAddr+8) = pstcTxFrame->TBUF32_2[0]; + CAN_RW_MEM32(u32TBUFAddr+12) = pstcTxFrame->TBUF32_2[1]; + + if(CanSTBSel == pstcTxFrame->enBufferSel) + { + M4_CAN->TCTRL_f.TSNEXT = Enable; + } + } +} + +/** + ******************************************************************************* + ** \brief Configures the can Tx Command + ** + ** \param [in] enTxCmd The can Tx Command. + ** + ** \retval Can Tx buffer status @ref en_can_tx_buf_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_can_tx_buf_status_t CAN_TransmitCmd(en_can_tx_cmd_t enTxCmd) +{ + DDL_ASSERT(IS_TX_CMD_VALID(enTxCmd)); + + M4_CAN->TCMD |= enTxCmd; + + return (en_can_tx_buf_status_t)M4_CAN->TCTRL_f.TSSTAT; + +} + +/** + ******************************************************************************* + ** \brief Configures the can Rx frame + ** + ** \param [in] pstcRxFrame The can Rx frame. + ** @ref stc_can_rxframe_t + ** \retval Can rx buffer status @ref en_can_rx_buf_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_can_rx_buf_status_t CAN_Receive(stc_can_rxframe_t *pstcRxFrame) +{ + uint32_t u32RBUFAddr; + + if(NULL != pstcRxFrame) + { + u32RBUFAddr = (uint32_t)&M4_CAN->RBUF; + pstcRxFrame->RBUF32_0 = CAN_RW_MEM32(u32RBUFAddr); + pstcRxFrame->RBUF32_1 = CAN_RW_MEM32(u32RBUFAddr+4); + pstcRxFrame->RBUF32_2[0] = CAN_RW_MEM32(u32RBUFAddr+8); + pstcRxFrame->RBUF32_2[1] = CAN_RW_MEM32(u32RBUFAddr+12); + + M4_CAN->RCTRL_f.RREL = 1u; + } + return (en_can_rx_buf_status_t)M4_CAN->RCTRL_f.RSSTAT; +} + + +/** + ******************************************************************************* + ** \brief Get the can Error Status + ** + ** \param None + ** + ** \retval en_can_error_t The can error status + ** + ** \note None + ** + ******************************************************************************/ +en_can_error_t CAN_ErrorStatusGet(void) +{ + en_can_error_t enRet = UNKOWN_ERROR; + + if(6u > M4_CAN->EALCAP_f.KOER) + { + enRet = (en_can_error_t)M4_CAN->EALCAP_f.KOER; + } + return enRet; + +} + +/** + ******************************************************************************* + ** \brief Get the can Status + ** + ** \param enCanStatus The can status + ** \arg true + ** \arg false + ** \retval bool + ** + ** \note None + ** + ******************************************************************************/ +bool CAN_StatusGet(en_can_status_t enCanStatus) +{ + bool bRet = false; + DDL_ASSERT(IS_CAN_STATUS_VALID(enCanStatus)); + + if(M4_CAN->CFG_STAT & enCanStatus) + { + bRet = true; + } + return bRet; +} + +/** + ******************************************************************************* + ** \brief Configures the can Interrupt enable + ** + ** \param [in] enCanIrqType The can interrupt type. + ** \param [in] enNewState The new state of the can interrupt. + ** \arg Enable Enable. + ** \arg Disable Disable. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_IrqCmd(en_can_irq_type_t enCanIrqType, en_functional_state_t enNewState) +{ + volatile uint32_t *u32pIE; + + DDL_ASSERT(IS_CAN_IRQ_TYPE_VALID(enCanIrqType)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + u32pIE = (volatile uint32_t*)(&M4_CAN->RTIE); + + if(Enable == enNewState) + { + *u32pIE |= enCanIrqType; + }else + { + *u32pIE &= ~((uint32_t)enCanIrqType); + } + +} + +/** + ******************************************************************************* + ** \brief Get the can Interrupt Flag + ** + ** \param [in] enCanIrqFlgType The can interrupt Flag. + ** + ** \retval bool + ** + ** \note None + ** + ******************************************************************************/ +bool CAN_IrqFlgGet(en_can_irq_flag_type_t enCanIrqFlgType) +{ + volatile uint32_t *u32pIE = NULL; + bool bRet = false; + + DDL_ASSERT(IS_CAN_IRQ_FLAG_VALID(enCanIrqFlgType)); + + u32pIE = (volatile uint32_t*)(&M4_CAN->RTIE); + + if( *u32pIE & enCanIrqFlgType) + { + bRet = true; + } + return bRet; +} + +/** + ******************************************************************************* + ** \brief Clear the can Interrupt Flag + ** + ** \param [in] enCanIrqFlgType The can interrupt type. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CAN_IrqFlgClr(en_can_irq_flag_type_t enCanIrqFlgType) +{ + volatile uint32_t *u32pIE = NULL; + uint32_t u32IETempMsk = 0xFF2A00FF; + + DDL_ASSERT(IS_CAN_IRQ_FLAG_VALID(enCanIrqFlgType)); + + u32pIE = (volatile uint32_t*)(&M4_CAN->RTIE); + + *u32pIE = (((*u32pIE)&u32IETempMsk) | (uint32_t)enCanIrqFlgType); +} + + +/** + ******************************************************************************* + ** \brief Get the can Rx Error Counter + ** + ** \param None + ** + ** \retval Error Counter(0~255) + ** + ** \note None + ** + ******************************************************************************/ +uint8_t CAN_RxErrorCntGet(void) +{ + return M4_CAN->RECNT; +} + +/** + ******************************************************************************* + ** \brief Get the can Tx Error Counter + ** + ** \param None + ** + ** \retval Error Counter(0~255) + ** + ** \note None + ** + ******************************************************************************/ +uint8_t CAN_TxErrorCntGet(void) +{ + return M4_CAN->TECNT; +} + +/** + ******************************************************************************* + ** \brief Get the can Arbitration lost captrue + ** + ** \param None + ** + ** \retval address(0~31) + ** + ** \note None + ** + ******************************************************************************/ +uint8_t CAN_ArbitrationLostCap(void) +{ + return M4_CAN->EALCAP_f.ALC; +} + + +//@} // CanGroup + +#endif /* DDL_CAN_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/src/hc32f460_clk.c b/driver/src/hc32f460_clk.c new file mode 100644 index 0000000..eda8677 --- /dev/null +++ b/driver/src/hc32f460_clk.c @@ -0,0 +1,1813 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_clk.c + ** + ** A detailed description is available at + ** @link CmuGroup Clock description @endlink + ** + ** - 2018-10-13 CDT First version for Device Driver Library of CMU. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_clk.h" +#include "hc32f460_utility.h" + +#if (DDL_CLK_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup CmuGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define CLK_XTAL_TIMEOUT ((uint16_t)0x1000u) +#define CLK_XTAL32_TIMEOUT ((uint8_t)0x05u) +#define CLK_HRC_TIMEOUT ((uint16_t)0x1000u) +#define CLK_MRC_TIMEOUT ((uint8_t)0x05u) +#define CLK_LRC_TIMEOUT ((uint8_t)0x05u) +#define CLK_MPLL_TIMEOUT ((uint16_t)0x1000u) +#define CLK_UPLL_TIMEOUT ((uint16_t)0x1000u) + +/* TBDs 30us based 200M frequency. */ +#define CLK_FCG_STABLE ((uint16_t)0x200u) +#define CLK_SYSCLK_STABLE ((uint16_t)0x200u) +#define CLK_USBCLK_STABLE ((uint16_t)0x200u) + +#define CLK_PLL_DIV_MIN (2u) +#define CLK_PLL_DIV_MAX (16u) + +#define CLK_PLLQ_DIV_MIN (1u) +#define CLK_PLLQ_DIV_MAX (16u) + +#define CLK_PLLN_MIN (20u) +#define CLK_PLLN_MAX (480u) + +#define CLK_PLLM_MIN (1u) +#define CLK_PLLM_MAX (24u) + +#define CLK_UPLLM_MIN (2u) +#define CLK_UPLLM_MAX (24u) + +#define CLK_PLL_VCO_IN_MIN (1u*1000u*1000u) +#define CLK_PLL_VCO_IN_MAX (24u*1000u*1000u) + +#define CLK_PLL_VCO_OUT_MIN (240u*1000u*1000u) +#define CLK_PLL_VCO_OUT_MAX (480u*1000u*1000u) + +#define ENABLE_FCG0_REG_WRITE() (M4_MSTP->FCG0PC = 0xa5a50001u) +#define DISABLE_FCG0_REG_WRITE() (M4_MSTP->FCG0PC = 0xa5a50000u) + +#define ENABLE_CLOCK_REG_WRITE() (M4_SYSREG->PWR_FPRC |= 0xa501u) +#define DISABLE_CLOCK_REG_WRITE() (M4_SYSREG->PWR_FPRC = (0xa500u | (M4_SYSREG->PWR_FPRC & (uint16_t)(~1u)))) + +#define ENABLE_CLOCK1_REG_WRITE() (M4_SYSREG->PWR_FPRC |= 0xa502u) +#define DISABLE_CLOCK1_REG_WRITE() (M4_SYSREG->PWR_FPRC = (0xa500u | (M4_SYSREG->PWR_FPRC & (uint16_t)(~2u)))) + + +#define DEFAULT_FCG0 (0xFFFFFAEEul) +#define DEFAULT_FCG1 (0xFFFFFFFFul) +#define DEFAULT_FCG2 (0xFFFFFFFFul) +#define DEFAULT_FCG3 (0xFFFFFFFFul) +#define FCG2_WITHOUT_EMB (0xFFFF7FFFul) + +#define FCG0_OFFSET_FCM (16ul) +#define FCG1_OFFSET_CAN (0ul) +#define FCG1_OFFSET_QSPI (3ul) +#define FCG1_OFFSET_USBFS (8ul) +#define FCG1_OFFSET_SPI1 (16ul) +#define FCG1_OFFSET_SPI2 (17ul) +#define FCG1_OFFSET_SPI3 (18ul) +#define FCG1_OFFSET_SPI4 (19ul) +#define FCG3_OFFSET_ADC1 (0ul) +#define FCG3_OFFSET_ADC2 (1ul) +#define FCG3_OFFSET_DAC (4ul) + +/*! Parameter validity check for XTAL stablization time \a stb. */ +#define IS_XTAL_STB_VALID(stb) \ +( (ClkXtalStbCycle35 <= (stb)) && \ + (ClkXtalStbCycle8163 >= (stb))) + +/*! Parameter validity check for pll source \a src. */ +#define IS_PLL_SOURCE(src) \ +( (ClkPllSrcXTAL == (src)) || \ + (ClkPllSrcHRC == (src))) + +/*! Parameter validity check for mpll div \a pllp, pllr, upll div \a pllp, pllq, pllr*/ +#define IS_PLL_DIV_VALID(pllx) \ +( (CLK_PLL_DIV_MIN <= (pllx)) && \ + (CLK_PLL_DIV_MAX >= (pllx))) + +/*! Parameter validity check for pll div \a pllq. */ +#define IS_PLLQ_DIV_VALID(pllx) \ +( (CLK_PLLQ_DIV_MIN <= (pllx)) && \ + (CLK_PLLQ_DIV_MAX >= (pllx))) + +/*! Parameter validity check for plln \a plln. */ +#define IS_PLLN_VALID(plln) \ +( (CLK_PLLN_MIN <= (plln)) && \ + (CLK_PLLN_MAX >= (plln))) + +/*! Parameter validity check for pllm \a pllm. */ +#define IS_PLLM_VALID(pllm) \ +( (CLK_PLLM_MIN <= (pllm)) && \ + (CLK_PLLM_MAX >= (pllm))) + +/*! Parameter validity check for pllm \a pllm. */ +#define IS_UPLLM_VALID(pllm) \ +( (CLK_UPLLM_MIN <= (pllm)) && \ + (CLK_UPLLM_MAX >= (pllm))) + +/*! Parameter validity check for pllsource/pllm \a vco_in. */ +#define IS_PLL_VCO_IN_VALID(vco_in) \ +( (CLK_PLL_VCO_IN_MIN <= (vco_in)) && \ + (CLK_PLL_VCO_IN_MAX >= (vco_in))) + +/*! Parameter validity check for pllsource/pllm*plln \a vco_out. */ +#define IS_PLL_VCO_OUT_VALID(vco_out) \ +( (CLK_PLL_VCO_OUT_MIN <= (vco_out)) && \ + (CLK_PLL_VCO_OUT_MAX >= (vco_out))) + +/*! Parameter validity check for system clock source \a syssrc. */ +#define IS_SYSCLK_SOURCE(syssrc) \ +( (ClkSysSrcHRC == (syssrc)) || \ + ((ClkSysSrcMRC <= (syssrc)) && \ + (CLKSysSrcMPLL >= (syssrc)))) + +/*! Parameter validity check for usb clock source \a usbsrc. */ +#define IS_USBCLK_SOURCE(usbsrc) \ +( ((ClkUsbSrcSysDiv2 <= (usbsrc)) && \ + (ClkUsbSrcSysDiv4 >= (usbsrc))) || \ + ((ClkUsbSrcMpllp <= (usbsrc)) && \ + (ClkUsbSrcUpllr >= (usbsrc)))) + +/*! Parameter validity check for peripheral(adc/trng/I2S) clock source \a adcsrc. */ +#define IS_PERICLK_SOURCE(adcsrc) \ +( (ClkPeriSrcPclk == (adcsrc)) || \ + ((ClkPeriSrcMpllp <= (adcsrc)) && \ + (ClkPeriSrcUpllr >= (adcsrc)))) + +/*! Parameter validity check for output clock source \a outsrc. */ +#define IS_OUTPUTCLK_SOURCE(outsrc) \ +( (ClkOutputSrcHrc == (outsrc)) || \ + (ClkOutputSrcMrc == (outsrc)) || \ + (ClkOutputSrcLrc == (outsrc)) || \ + (ClkOutputSrcXtal == (outsrc)) || \ + (ClkOutputSrcXtal32 == (outsrc)) || \ + (ClkOutputSrcMpllp == (outsrc)) || \ + (ClkOutputSrcUpllp == (outsrc)) || \ + (ClkOutputSrcMpllq == (outsrc)) || \ + (ClkOutputSrcUpllq == (outsrc)) || \ + (ClkOutputSrcSysclk == (outsrc))) + +/*! Parameter validity check for fcm source \a fcmsrc. */ +#define IS_FCM_SOURCE(fcmsrc) \ +( (ClkFcmSrcXtal == (fcmsrc)) || \ + ((ClkFcmSrcXtal32 <= (fcmsrc)) && \ + (ClkFcmSrcRtcLrc >= (fcmsrc)))) + +/*! Parameter validity check for output clock channel \a outch. */ +#define IS_OUTPUTCLK_CHANNEL(outch) \ +( (ClkOutputCh1 == (outch)) || \ + (ClkOutputCh2 == (outch))) + +/*! Parameter validity check for fcm reference \a ref. */ +#define IS_FCM_REF(ref) \ +( (ClkFcmExtRef == (ref)) || \ + (ClkFcmInterRef == (ref))) + +/*! Parameter validity check for fcm edge \a edge. */ +#define IS_FCM_EDGE(edge) \ +( (ClkFcmEdgeRising == (edge)) || \ + (ClkFcmEdgeFalling == (edge)) || \ + (ClkFcmEdgeBoth == (edge))) + +/*! Parameter validity check for fcm filter clock \a clk. */ +#define IS_FCM_FILTER_CLK(clk) \ +( (ClkFcmFilterClkNone == (clk)) || \ + (ClkFcmFilterClkFcmSrc == (clk)) || \ + (ClkFcmFilterClkFcmSrcDiv4 == (clk)) || \ + (ClkFcmFilterClkFcmSrcDiv16 == (clk))) + +/*! Parameter validity check for fcm abnormal handle \a handle. */ +#define IS_FCM_HANDLE(handle) \ +( (ClkFcmHandleInterrupt == (handle)) || \ + (ClkFcmHandleReset == (handle))) + +/*! Parameter validity check for debug clock division \a div. */ +#define IS_TPIUCLK_DIV_VALID(div) \ +( (ClkTpiuclkDiv1 == (div)) || \ + (ClkTpiuclkDiv2 == (div)) || \ + (ClkTpiuclkDiv4 == (div))) + +/*! Parameter validity check for output clock division \a div. */ +#define IS_OUTPUTCLK_DIV_VALID(div) \ +( (ClkOutputDiv1 == (div)) || \ + ((ClkOutputDiv2 <= (div)) && \ + (ClkOutputDiv128 >= (div)))) + +/*! Parameter validity check for fcm measurement source division \a div. */ +#define IS_FCM_MEASRC_DIV_VALID(div) \ +( (ClkFcmMeaDiv1 == (div)) || \ + (ClkFcmMeaDiv4 == (div)) || \ + (ClkFcmMeaDiv8 == (div)) || \ + (ClkFcmMeaDiv32 == (div))) + +/*! Parameter validity check for internal reference source division \a div. */ +#define IS_FCM_INTREF_DIV_VALID(div) \ +( (ClkFcmIntrefDiv32 == (div)) || \ + (ClkFcmIntrefDiv128 == (div)) || \ + (ClkFcmIntrefDiv1024 == (div)) || \ + (ClkFcmIntrefDiv8192 == (div))) + +/*! Parameter validity check for system clock config \a cfg. */ +#define IS_SYSCLK_CONFIG_VALID(cfg) \ +( ((cfg)->enHclkDiv <= ((cfg)->enPclk1Div)) && \ + ((cfg)->enHclkDiv <= ((cfg)->enPclk3Div)) && \ + ((cfg)->enHclkDiv <= ((cfg)->enPclk4Div)) && \ + ((cfg)->enPclk0Div <= ((cfg)->enPclk1Div)) && \ + ((cfg)->enPclk0Div <= ((cfg)->enPclk3Div)) && \ + (((cfg)->enPclk2Div-(cfg)->enPclk4Div == 3) || \ + ((cfg)->enPclk2Div-(cfg)->enPclk4Div == 2) || \ + ((cfg)->enPclk2Div-(cfg)->enPclk4Div == 1) || \ + ((cfg)->enPclk2Div-(cfg)->enPclk4Div == 0) || \ + ((cfg)->enPclk4Div-(cfg)->enPclk2Div == 1) || \ + ((cfg)->enPclk4Div-(cfg)->enPclk2Div == 2) || \ + ((cfg)->enPclk4Div-(cfg)->enPclk2Div == 3))) + + +/*! Parameter validity check for clock status \a flag. */ +#define IS_CLK_FLAG(flag) \ +( (ClkFlagHRCRdy == (flag)) || \ + (ClkFlagXTALRdy == (flag)) || \ + (ClkFlagMPLLRdy == (flag)) || \ + (ClkFlagUPLLRdy == (flag)) || \ + (ClkFlagXTALStoppage == (flag))) +/*! Parameter validity check for fcm status \a flag. */ +#define IS_FCM_FLAG(flag) \ +( (ClkFcmFlagOvf == (flag)) || \ + (ClkFcmFlagMendf == (flag)) || \ + (ClkFcmFlagErrf == (flag))) + + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Configures the external high speed oscillator(XTAL). + ** + ** \param [in] pstcXtalCfg The XTAL configures struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_XtalConfig(const stc_clk_xtal_cfg_t *pstcXtalCfg) +{ + if(NULL != pstcXtalCfg) + { + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_XTALCFGR_f.SUPDRV = pstcXtalCfg->enFastStartup; + M4_SYSREG->CMU_XTALCFGR_f.XTALMS = pstcXtalCfg->enMode; + M4_SYSREG->CMU_XTALCFGR_f.XTALDRV = pstcXtalCfg->enDrv; + + DISABLE_CLOCK_REG_WRITE(); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Configures the XTAL stable time. + ** + ** \param [in] enXtalStb The XTAL stable time. + ** + ** \retval None + ** + ** \note One of the stable clock is 1/8 LRC clock. + ** + ******************************************************************************/ +void CLK_XtalStbConfig(const en_clk_xtal_stb_cycle_t enXtalStb) +{ + DDL_ASSERT(IS_XTAL_STB_VALID(enXtalStb)); + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_XTALSTBCR_f.XTALSTB = enXtalStb; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Configures the XTAL stoppage. + ** + ** \param [in] pstcXtalStpCfg The XTAL stoppage configures struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_XtalStpConfig(const stc_clk_xtal_stp_cfg_t *pstcXtalStpCfg) +{ + if(NULL != pstcXtalStpCfg) + { + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_XTALSTDCR_f.XTALSTDE = pstcXtalStpCfg->enDetect; + M4_SYSREG->CMU_XTALSTDCR_f.XTALSTDRIS = pstcXtalStpCfg->enMode; + M4_SYSREG->CMU_XTALSTDCR_f.XTALSTDRE = pstcXtalStpCfg->enModeReset; + M4_SYSREG->CMU_XTALSTDCR_f.XTALSTDIE = pstcXtalStpCfg->enModeInt; + + DISABLE_CLOCK_REG_WRITE(); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the XTAL. + ** + ** \param [in] enNewState The new state of the XTAL. + ** \arg Enable Enable XTAL. + ** \arg Disable Disable XTAL. + ** + ** \retval en_result_t + ** + ** \note XTAL can not be stopped if it is used as system clock source or pll + ** clock source. + ** + ******************************************************************************/ +en_result_t CLK_XtalCmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0u; + en_flag_status_t status; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + if(Disable == enNewState) + { + if(ClkSysSrcXTAL == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = Error; + } + else if(ClkPllSrcXTAL == M4_SYSREG->CMU_PLLCFGR_f.PLLSRC) + { + if(0u == M4_SYSREG->CMU_PLLCR_f.MPLLOFF) + { + enRet = Error; + } + else + { + M4_SYSREG->CMU_XTALCR_f.XTALSTP = 1u; + } + } + else + { + M4_SYSREG->CMU_XTALCR_f.XTALSTP = 1u; + } + } + else + { + M4_SYSREG->CMU_XTALCR_f.XTALSTP = 0u; + do + { + status = CLK_GetFlagStatus(ClkFlagXTALRdy); + timeout++; + }while((timeout < CLK_XTAL_TIMEOUT) && (status != Set)); + } + + DISABLE_CLOCK_REG_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Configures the external low speed oscillator(XTAL32). + ** + ** \param [in] pstcXtal32Cfg The XTAL32 configures struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_Xtal32Config(const stc_clk_xtal32_cfg_t *pstcXtal32Cfg) +{ + if(NULL != pstcXtal32Cfg) + { + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_XTAL32CFGR_f.XTAL32DRV = pstcXtal32Cfg->enDrv; + M4_SYSREG->CMU_XTAL32NFR_f.XTAL32NF = pstcXtal32Cfg->enFilterMode; + + DISABLE_CLOCK_REG_WRITE(); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the XTAL32. + ** + ** \param [in] enNewState The new state of the XTAL32. + ** \arg Enable Enable XTAL32. + ** \arg Disable Disable XTAL32. + ** + ** \retval en_result_t + ** + ** \note XTAL32 can not be stopped if it is used as system clock source. + ** + ******************************************************************************/ +en_result_t CLK_Xtal32Cmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0ul; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + if(Disable == enNewState) + { + if(ClkSysSrcXTAL32 == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = Error; + } + else + { + M4_SYSREG->CMU_XTAL32CR_f.XTAL32STP = 1u; + } + } + else + { + M4_SYSREG->CMU_XTAL32CR_f.XTAL32STP = 0u; + do + { + timeout++; + }while(timeout < CLK_XTAL32_TIMEOUT); + } + + DISABLE_CLOCK_REG_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Trim the internal high speed oscillator(HRC). + ** + ** \param [in] trimValue The trim value. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_HrcTrim(int8_t trimValue) +{ + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_HRCTRM = trimValue; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the HRC. + ** + ** \param [in] enNewState The new state of the HRC. + ** \arg Enable Enable HRC. + ** \arg Disable Disable HRC. + ** + ** \retval en_result_t + ** + ** \note HRC can not be stopped if it is used as system clock source or pll + ** clock source. + ** + ******************************************************************************/ +en_result_t CLK_HrcCmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0ul; + en_flag_status_t status; + en_result_t enRet = Ok; + + ENABLE_CLOCK_REG_WRITE(); + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + if(Disable == enNewState) + { + if(ClkSysSrcHRC == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = Error; + } + else if(ClkPllSrcHRC == M4_SYSREG->CMU_PLLCFGR_f.PLLSRC) + { + if(0u == M4_SYSREG->CMU_PLLCR_f.MPLLOFF) + { + enRet = Error; + } + else + { + M4_SYSREG->CMU_HRCCR_f.HRCSTP = 1u; + } + } + else + { + M4_SYSREG->CMU_HRCCR_f.HRCSTP = 1u; + } + } + else + { + M4_SYSREG->CMU_HRCCR_f.HRCSTP = 0u; + do + { + status = CLK_GetFlagStatus(ClkFlagHRCRdy); + timeout++; + }while((timeout < CLK_HRC_TIMEOUT) && (status != Set)); + } + + DISABLE_CLOCK_REG_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Trim the internal middle speed oscillator(MRC). + ** + ** \param [in] trimValue The trim value. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_MrcTrim(int8_t trimValue) +{ + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_MRCTRM = trimValue; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the MRC. + ** + ** \param [in] enNewState The new state of the MRC. + ** \arg Enable Enable MRC. + ** \arg Disable Disable MRC. + ** + ** \retval en_result_t + ** + ** \note MRC can not be stopped if it is used as system clock source. + ** + ******************************************************************************/ +en_result_t CLK_MrcCmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0ul; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + if(Disable == enNewState) + { + if(ClkSysSrcMRC == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = Error; + } + else + { + M4_SYSREG->CMU_MRCCR_f.MRCSTP = 1u; + } + } + else + { + M4_SYSREG->CMU_MRCCR_f.MRCSTP = 0u; + do + { + timeout++; + }while(timeout < CLK_MRC_TIMEOUT); + } + + DISABLE_CLOCK_REG_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Trim the internal low speed oscillator(LRC). + ** + ** \param [in] trimValue The trim value. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_LrcTrim(int8_t trimValue) +{ + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_LRCTRM = trimValue; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the LRC. + ** + ** \param [in] enNewState The new state of the LRC. + ** \arg Enable Enable LRC. + ** \arg Disable Disable LRC. + ** + ** \retval en_result_t + ** + ** \note LRC can not be stopped if it is used as system clock source. + ** + ******************************************************************************/ +en_result_t CLK_LrcCmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0ul; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + if(Disable == enNewState) + { + if(ClkSysSrcLRC == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = Error; + } + else + { + M4_SYSREG->CMU_LRCCR_f.LRCSTP = 1u; + } + } + else + { + M4_SYSREG->CMU_LRCCR_f.LRCSTP = 0u; + do + { + timeout++; + }while(timeout < CLK_LRC_TIMEOUT); + } + + DISABLE_CLOCK_REG_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Select pll clock source. + ** + ** \param [in] enPllSrc The pll clock source. + ** \arg ClkPllSrcXTAL Select XTAL as pll clock source. + ** \arg ClkPllSrcHRC Select HRC as pll clock source. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_SetPllSource(en_clk_pll_source_t enPllSrc) +{ + DDL_ASSERT(IS_PLL_SOURCE(enPllSrc)); + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_PLLCFGR_f.PLLSRC = enPllSrc; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Configures the MPLL. + ** + ** \param [in] pstcMpllCfg The MPLL configures struct. + ** + ** \retval None + ** + ** \note The pllsource/pllm is between 1MHz and 24MHz. + ** The pllsource/pllm*plln is between 240MHz and 480MHz. + ** The maximum of pllsource/pllm*plln/pllp is 200MHz. + ** + ******************************************************************************/ +void CLK_MpllConfig(const stc_clk_mpll_cfg_t *pstcMpllCfg) +{ +#ifdef __DEBUG + uint32_t vcoIn = 0ul; + uint32_t vcoOut = 0ul; +#endif /* #ifdef __DEBUG */ + + if(NULL != pstcMpllCfg) + { + DDL_ASSERT(IS_PLL_DIV_VALID(pstcMpllCfg->PllpDiv)); + DDL_ASSERT(IS_PLLQ_DIV_VALID(pstcMpllCfg->PllqDiv)); + DDL_ASSERT(IS_PLL_DIV_VALID(pstcMpllCfg->PllrDiv)); + DDL_ASSERT(IS_PLLN_VALID(pstcMpllCfg->plln)); + DDL_ASSERT(IS_PLLM_VALID(pstcMpllCfg->pllmDiv)); + +#ifdef __DEBUG + vcoIn = ((ClkPllSrcXTAL == M4_SYSREG->CMU_PLLCFGR_f.PLLSRC ? + XTAL_VALUE : HRC_VALUE) / pstcMpllCfg->pllmDiv); + vcoOut = vcoIn * pstcMpllCfg->plln; + + DDL_ASSERT(IS_PLL_VCO_IN_VALID(vcoIn)); + DDL_ASSERT(IS_PLL_VCO_OUT_VALID(vcoOut)); +#endif /* #ifdef __DEBUG */ + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_PLLCFGR_f.MPLLP = pstcMpllCfg->PllpDiv - 1ul; + M4_SYSREG->CMU_PLLCFGR_f.MPLLQ = pstcMpllCfg->PllqDiv - 1ul; + M4_SYSREG->CMU_PLLCFGR_f.MPLLR = pstcMpllCfg->PllrDiv - 1ul; + M4_SYSREG->CMU_PLLCFGR_f.MPLLN = pstcMpllCfg->plln - 1ul; + M4_SYSREG->CMU_PLLCFGR_f.MPLLM = pstcMpllCfg->pllmDiv - 1ul; + + DISABLE_CLOCK_REG_WRITE(); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the MPLL. + ** + ** \param [in] enNewState The new state of the MPLL. + ** \arg Enable Enable MPLL. + ** \arg Disable Disable MPLL. + ** + ** \retval en_result_t + ** + ** \note MPLL can not be stopped if it is used as system clock source. + ** + ******************************************************************************/ +en_result_t CLK_MpllCmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0ul; + en_flag_status_t status; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + if(Disable == enNewState) + { + if(CLKSysSrcMPLL == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = Error; + } + else + { + M4_SYSREG->CMU_PLLCR_f.MPLLOFF = 1u; + } + } + else + { + M4_SYSREG->CMU_PLLCR_f.MPLLOFF = 0u; + do + { + status = CLK_GetFlagStatus(ClkFlagMPLLRdy); + timeout++; + }while((timeout < CLK_MPLL_TIMEOUT) && (status != Set)); + } + + DISABLE_CLOCK_REG_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Configures the UPLL. + ** + ** \param [in] pstcUpllCfg The UPLL configures struct. + ** + ** \retval None + ** + ** \note The pllsource/pllm is between 1MHz and 24MHz. + ** The pllsource/pllm*plln is between 240MHz and 480MHz. + ** The maximum of pllsource/pllm*plln/pllp is 200MHz. + ** + ******************************************************************************/ +void CLK_UpllConfig(const stc_clk_upll_cfg_t *pstcUpllCfg) +{ +#ifdef __DEBUG + uint32_t vcoIn = 0ul; + uint32_t vcoOut = 0ul; +#endif /* #ifdef __DEBUG */ + + if(NULL != pstcUpllCfg) + { + DDL_ASSERT(IS_PLL_DIV_VALID(pstcUpllCfg->PllpDiv)); + DDL_ASSERT(IS_PLL_DIV_VALID(pstcUpllCfg->PllqDiv)); + DDL_ASSERT(IS_PLL_DIV_VALID(pstcUpllCfg->PllrDiv)); + DDL_ASSERT(IS_PLLN_VALID(pstcUpllCfg->plln)); + DDL_ASSERT(IS_UPLLM_VALID(pstcUpllCfg->pllmDiv)); + +#ifdef __DEBUG + vcoIn = ((ClkPllSrcXTAL == M4_SYSREG->CMU_PLLCFGR_f.PLLSRC ? + XTAL_VALUE : HRC_VALUE) / pstcUpllCfg->pllmDiv); + vcoOut = vcoIn * pstcUpllCfg->plln; + + DDL_ASSERT(IS_PLL_VCO_IN_VALID(vcoIn)); + DDL_ASSERT(IS_PLL_VCO_OUT_VALID(vcoOut)); +#endif /* #ifdef __DEBUG */ + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_UPLLCFGR_f.UPLLP = pstcUpllCfg->PllpDiv - 1u; + M4_SYSREG->CMU_UPLLCFGR_f.UPLLQ = pstcUpllCfg->PllqDiv - 1u; + M4_SYSREG->CMU_UPLLCFGR_f.UPLLR = pstcUpllCfg->PllrDiv - 1u; + M4_SYSREG->CMU_UPLLCFGR_f.UPLLN = pstcUpllCfg->plln - 1u; + M4_SYSREG->CMU_UPLLCFGR_f.UPLLM = pstcUpllCfg->pllmDiv - 1u; + + DISABLE_CLOCK_REG_WRITE(); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the UPLL. + ** + ** \param [in] enNewState The new state of the UPLL. + ** \arg Enable Enable UPLL. + ** \arg Disable Disable UPLL. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t CLK_UpllCmd(en_functional_state_t enNewState) +{ + __IO uint32_t timeout = 0ul; + en_flag_status_t status; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_UPLLCR_f.UPLLOFF = ((Enable == enNewState) ? 0u : 1u); + + DISABLE_CLOCK_REG_WRITE(); + + do + { + status = CLK_GetFlagStatus(ClkFlagUPLLRdy); + timeout++; + }while((timeout < CLK_UPLL_TIMEOUT) && (status != ((Enable == enNewState) ? Set : Reset))); + + return Ok; +} + + +/** + ******************************************************************************* + ** \brief Select system clock source. + ** + ** \param [in] enTargetSysSrc The system clock source. + ** \arg ClkSysSrcHRC Select HRC as system clock source. + ** \arg ClkSysSrcMRC Select MRC as system clock source. + ** \arg ClkSysSrcLRC Select LRC as system clock source. + ** \arg ClkSysSrcXTAL Select XTAL as system clock source. + ** \arg ClkSysSrcXTAL32 Select XTAL32 as system clock source. + ** \arg CLKSysSrcMPLL Select MPLL as system clock source. + ** + ** \retval None + ** + ** \note Must close all of the fcg register before switch system clock source. + ** + ******************************************************************************/ +void CLK_SetSysClkSource(en_clk_sys_source_t enTargetSysSrc) +{ + __IO uint32_t timeout = 0ul; + __IO uint32_t fcg0 = M4_MSTP->FCG0; + __IO uint32_t fcg1 = M4_MSTP->FCG1; + __IO uint32_t fcg2 = M4_MSTP->FCG2; + __IO uint32_t fcg3 = M4_MSTP->FCG3; + + DDL_ASSERT(IS_SYSCLK_SOURCE(enTargetSysSrc)); + + ENABLE_FCG0_REG_WRITE(); + + /* Only current system clock source or target system clock source is MPLL + need to close fcg0~fcg3 and open fcg0~fcg3 during switch system clock source. + We need to backup fcg0~fcg3 before close them. */ + if((CLKSysSrcMPLL == M4_SYSREG->CMU_CKSWR_f.CKSW) || + (CLKSysSrcMPLL == enTargetSysSrc)) + { + /* Close fcg0~fcg3. */ + M4_MSTP->FCG0 = DEFAULT_FCG0; + M4_MSTP->FCG1 = DEFAULT_FCG1; + M4_MSTP->FCG2 = DEFAULT_FCG2; + M4_MSTP->FCG3 = DEFAULT_FCG3; + + /* Wait stable after close fcg. */ + do + { + timeout++; + }while(timeout < CLK_FCG_STABLE); + } + + /* Switch to target system clock source. */ + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_CKSWR_f.CKSW = enTargetSysSrc; + + DISABLE_CLOCK_REG_WRITE(); + + timeout = 0ul; + do + { + timeout++; + }while(timeout < CLK_SYSCLK_STABLE); + + /* Open fcg0~fcg3. */ + M4_MSTP->FCG0 = fcg0; + M4_MSTP->FCG1 = fcg1; + M4_MSTP->FCG2 = fcg2; + M4_MSTP->FCG3 = fcg3; + + DISABLE_FCG0_REG_WRITE(); + + /* Wait stable after open fcg. */ + timeout = 0ul; + do + { + timeout++; + }while(timeout < CLK_FCG_STABLE); + + SystemCoreClockUpdate(); +} + +/** + ******************************************************************************* + ** \brief Get system clock source. + ** + ** \param None + ** + ** \retval The system clock source. + ** + ** \note None + ** + ******************************************************************************/ +en_clk_sys_source_t CLK_GetSysClkSource(void) +{ + return (en_clk_sys_source_t)M4_SYSREG->CMU_CKSWR_f.CKSW; +} + + +/** + ******************************************************************************* + ** \brief Configures the division factor for hclk,exck,pclk0,pclk1,pclk2,pclk3, + ** pclk4 from system clock. + ** + ** \param [in] pstcSysclkCfg The system clock configures struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_SysClkConfig(const stc_clk_sysclk_cfg_t *pstcSysclkCfg) +{ + __IO uint32_t timeout = 0ul; + __IO uint32_t fcg0 = M4_MSTP->FCG0; + __IO uint32_t fcg1 = M4_MSTP->FCG1; + __IO uint32_t fcg2 = M4_MSTP->FCG2; + __IO uint32_t fcg3 = M4_MSTP->FCG3; + + ENABLE_FCG0_REG_WRITE(); + + if(NULL != pstcSysclkCfg) + { + DDL_ASSERT(IS_SYSCLK_CONFIG_VALID(pstcSysclkCfg)); + + /* Only current system clock source is MPLL need to close fcg0~fcg3 and + open fcg0~fcg3 during switch system clock division. + We need to backup fcg0~fcg3 before close them. */ + if(CLKSysSrcMPLL == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + /* Close fcg0~fcg3. */ + M4_MSTP->FCG0 = DEFAULT_FCG0; + M4_MSTP->FCG1 = DEFAULT_FCG1; + M4_MSTP->FCG2 = DEFAULT_FCG2; + M4_MSTP->FCG3 = DEFAULT_FCG3; + + /* Wait stable after close fcg. */ + do + { + timeout++; + }while(timeout < CLK_FCG_STABLE); + } + + /* Switch to target system clock division. */ + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_SCFGR = ( (uint32_t)pstcSysclkCfg->enPclk0Div | + ((uint32_t)pstcSysclkCfg->enPclk1Div << 4u) | + ((uint32_t)pstcSysclkCfg->enPclk2Div << 8u) | + ((uint32_t)pstcSysclkCfg->enPclk3Div << 12u) | + ((uint32_t)pstcSysclkCfg->enPclk4Div << 16u) | + ((uint32_t)pstcSysclkCfg->enExclkDiv << 20u) | + ((uint32_t)pstcSysclkCfg->enHclkDiv << 24u) | + ((uint32_t)pstcSysclkCfg->enHclkDiv << 28u)); + + DISABLE_CLOCK_REG_WRITE(); + + timeout = 0ul; + do + { + timeout++; + }while(timeout < CLK_SYSCLK_STABLE); + + /* Open fcg0~fcg3. */ + M4_MSTP->FCG0 = fcg0; + M4_MSTP->FCG1 = fcg1; + M4_MSTP->FCG2 = fcg2; + M4_MSTP->FCG3 = fcg3; + + DISABLE_FCG0_REG_WRITE(); + + /* Wait stable after open fcg. */ + timeout = 0ul; + do + { + timeout++; + }while(timeout < CLK_FCG_STABLE); + } + else + { + /* code */ + } +} + + +/** + ******************************************************************************* + ** \brief Get clock frequency. + ** + ** \param [in] pstcClkFreq The clock source struct. + ** + ** \retval The clock frequency include system clock,hclk,exck,pclk0,pclk1,pclk2 + ** pclk3,pclk4. + ** + ** \note None + ** + ******************************************************************************/ +void CLK_GetClockFreq(stc_clk_freq_t *pstcClkFreq) +{ + uint32_t plln = 0u, pllp = 0u, pllm = 0u, pllsource = 0u; + + if(NULL != pstcClkFreq) + { + /* Get system clock. */ + switch(M4_SYSREG->CMU_CKSWR_f.CKSW) + { + case ClkSysSrcHRC: + /* HRC used as system clock. */ + pstcClkFreq->sysclkFreq = HRC_VALUE; + break; + case ClkSysSrcMRC: + /* MRC used as system clock. */ + pstcClkFreq->sysclkFreq = MRC_VALUE; + break; + case ClkSysSrcLRC: + /* LRC used as system clock. */ + pstcClkFreq->sysclkFreq = LRC_VALUE; + break; + case ClkSysSrcXTAL: + /* XTAL used as system clock. */ + pstcClkFreq->sysclkFreq = XTAL_VALUE; + break; + case ClkSysSrcXTAL32: + /* XTAL32 used as system clock. */ + pstcClkFreq->sysclkFreq = XTAL32_VALUE; + break; + default: + /* MPLLP used as system clock. */ + pllsource = M4_SYSREG->CMU_PLLCFGR_f.PLLSRC; + pllp = M4_SYSREG->CMU_PLLCFGR_f.MPLLP; + plln = M4_SYSREG->CMU_PLLCFGR_f.MPLLN; + pllm = M4_SYSREG->CMU_PLLCFGR_f.MPLLM; + + /* PLLCLK = ((pllsrc / pllm) * plln) / pllp */ + if (ClkPllSrcXTAL == pllsource) + { + pstcClkFreq->sysclkFreq = (XTAL_VALUE)/(pllm+1u)*(plln+1u)/(pllp+1u); + } + else if (ClkPllSrcHRC == pllsource) + { + pstcClkFreq->sysclkFreq = (HRC_VALUE)/(pllm+1u)*(plln+1u)/(pllp+1u); + } + else + { + //else + } + break; + } + + /* Get hclk. */ + pstcClkFreq->hclkFreq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.HCLKS; + + /* Get exck. */ + pstcClkFreq->exckFreq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.EXCKS; + + /* Get pclk0. */ + pstcClkFreq->pclk0Freq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.PCLK0S; + + /* Get pclk1. */ + pstcClkFreq->pclk1Freq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.PCLK1S; + + /* Get pclk2. */ + pstcClkFreq->pclk2Freq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.PCLK2S; + + /* Get pclk3. */ + pstcClkFreq->pclk3Freq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.PCLK3S; + + /* Get pclk4. */ + pstcClkFreq->pclk4Freq = pstcClkFreq->sysclkFreq >> M4_SYSREG->CMU_SCFGR_f.PCLK4S; + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Get PLL clock frequency. + ** + ** \param [in] pstcPllClkFreq The PLL clock source struct. + ** + ** \retval The clock frequency include mpllp, mpllq, mpllr, upllp, upllq, upllr. + ** + ** \note None + ** + ******************************************************************************/ +void CLK_GetPllClockFreq(stc_pll_clk_freq_t *pstcPllClkFreq) +{ + uint32_t pllsource; + uint32_t mplln = 0u, mpllp = 0u, mpllq = 0u, mpllr = 0u, mpllm = 0u; + uint32_t uplln = 0u, upllp = 0u, upllq = 0u, upllr = 0u, upllm = 0u; + + /* Get pll clock source */ + pllsource = M4_SYSREG->CMU_PLLCFGR_f.PLLSRC; + + /* Get Mpll parameter value */ + mpllp = M4_SYSREG->CMU_PLLCFGR_f.MPLLP; + mpllq = M4_SYSREG->CMU_PLLCFGR_f.MPLLQ; + mpllr = M4_SYSREG->CMU_PLLCFGR_f.MPLLR; + mplln = M4_SYSREG->CMU_PLLCFGR_f.MPLLN; + mpllm = M4_SYSREG->CMU_PLLCFGR_f.MPLLM; + + /* Get Upll paramter value */ + upllp = M4_SYSREG->CMU_UPLLCFGR_f.UPLLP; + upllq = M4_SYSREG->CMU_UPLLCFGR_f.UPLLQ; + upllr = M4_SYSREG->CMU_UPLLCFGR_f.UPLLR; + uplln = M4_SYSREG->CMU_UPLLCFGR_f.UPLLN; + upllm = M4_SYSREG->CMU_UPLLCFGR_f.UPLLM; + + /* Get mpllp ,mpllr, mpllq, upllp, upllq, upllr clock frequency */ + if (ClkPllSrcXTAL == pllsource) + { + pstcPllClkFreq->mpllp = (XTAL_VALUE)/(mpllm+1u)*(mplln+1u)/(mpllp+1u); + pstcPllClkFreq->mpllq = (XTAL_VALUE)/(mpllm+1u)*(mplln+1u)/(mpllq+1u); + pstcPllClkFreq->mpllr = (XTAL_VALUE)/(mpllm+1u)*(mplln+1u)/(mpllr+1u); + pstcPllClkFreq->upllp = (XTAL_VALUE)/(upllm+1u)*(uplln+1u)/(upllp+1u); + pstcPllClkFreq->upllq = (XTAL_VALUE)/(upllm+1u)*(uplln+1u)/(upllq+1u); + pstcPllClkFreq->upllr = (XTAL_VALUE)/(upllm+1u)*(uplln+1u)/(upllr+1u); + } + else if (ClkPllSrcHRC == pllsource) + { + pstcPllClkFreq->mpllp = (HRC_VALUE)/(mpllm+1u)*(mplln+1u)/(mpllp+1u); + pstcPllClkFreq->mpllq = (HRC_VALUE)/(mpllm+1u)*(mplln+1u)/(mpllq+1u); + pstcPllClkFreq->mpllr = (HRC_VALUE)/(mpllm+1u)*(mplln+1u)/(mpllr+1u); + pstcPllClkFreq->upllp = (HRC_VALUE)/(upllm+1u)*(uplln+1u)/(upllp+1u); + pstcPllClkFreq->upllq = (HRC_VALUE)/(upllm+1u)*(uplln+1u)/(upllq+1u); + pstcPllClkFreq->upllr = (HRC_VALUE)/(upllm+1u)*(uplln+1u)/(upllr+1u); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Select usb clock source. + ** + ** \param [in] enTargetUsbSrc The usb clock source. + ** \arg ClkUsbSrcSysDiv2 Select 1/2 system clock as usb clock source. + ** \arg ClkUsbSrcSysDiv3 Select 1/3 system clock as usb clock source. + ** \arg ClkUsbSrcSysDiv4 Select 1/4 system clock as usb clock source. + ** \arg ClkUsbSrcMpllp Select MPLLP as usb clock source. + ** \arg ClkUsbSrcMpllq Select MPLLQ as usb clock source. + ** \arg ClkUsbSrcMpllr Select MPLLR as usb clock source. + ** \arg ClkUsbSrcUpllp Select UPLLP as usb clock source. + ** \arg ClkUsbSrcUpllq Select UPLLQ as usb clock source. + ** \arg ClkUsbSrcUpllr Select UPLLR as usb clock source. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_SetUsbClkSource(en_clk_usb_source_t enTargetUsbSrc) +{ + + DDL_ASSERT(IS_USBCLK_SOURCE(enTargetUsbSrc)); + + /* Switch to target usb clock source. */ + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_UFSCKCFGR_f.USBCKS = enTargetUsbSrc; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Select peripheral(adc/trng) clock source. + ** + ** \param [in] enTargetPeriSrc The peripheral(adc/trng) clock source. + ** \arg ClkPeriSrcPclk Select PCLK2 as adc analog clok, PCLK4 as adc digital clock. Select PCLK4 as trng clock. + ** \arg ClkPeriSrcMpllp Select MPLLP as peripheral(adc/trng) clock source. + ** \arg ClkPeriSrcMpllq Select MPLLQ as peripheral(adc/trng) clock source. + ** \arg ClkPeriSrcMpllr Select MPLLR as peripheral(adc/trng) clock source. + ** \arg ClkPeriSrcUpllp Select UPLLP as peripheral(adc/trng) clock source. + ** \arg ClkPeriSrcUpllq Select UPLLQ as peripheral(adc/trng) clock source. + ** \arg ClkPeriSrcUpllr Select UPLLR as peripheral(adc/trng) clock source. + ** + ** \retval None + ** + ******************************************************************************/ +void CLK_SetPeriClkSource(en_clk_peri_source_t enTargetPeriSrc) +{ + DDL_ASSERT(IS_PERICLK_SOURCE(enTargetPeriSrc)); + + ENABLE_CLOCK1_REG_WRITE(); + + /* Switch to target adc clock source. */ + M4_SYSREG->CMU_PERICKSEL_f.PERICKSEL = enTargetPeriSrc; + + DISABLE_CLOCK1_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Select I2S clock source. + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \arg M4_I2S1 I2s channel 1 + ** \arg M4_I2S2 I2s channel 2 + ** \arg M4_I2S3 I2s channel 3 + ** \arg M4_I2S4 I2s channel 4 + ** \param [in] enTargetPeriSrc The I2S clock source. + ** \arg ClkPeriSrcPclk Select PCLK3 as I2S clock source. + ** \arg ClkPeriSrcMpllp Select MPLLP as I2S clock source. + ** \arg ClkPeriSrcMpllq Select MPLLQ as I2S clock source. + ** \arg ClkPeriSrcMpllr Select MPLLR as I2S clock source. + ** \arg ClkPeriSrcUpllp Select UPLLP as I2S clock source. + ** \arg ClkPeriSrcUpllq Select UPLLQ as I2S clock source. + ** \arg ClkPeriSrcUpllr Select UPLLR as I2S clock source. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_SetI2sClkSource(const M4_I2S_TypeDef* pstcI2sReg, en_clk_peri_source_t enTargetPeriSrc) +{ + DDL_ASSERT(IS_PERICLK_SOURCE(enTargetPeriSrc)); + + ENABLE_CLOCK1_REG_WRITE(); + + if(M4_I2S1 == pstcI2sReg) + { + M4_SYSREG->CMU_I2SCKSEL_f.I2S1CKSEL = enTargetPeriSrc; + } + else if(M4_I2S2 == pstcI2sReg) + { + M4_SYSREG->CMU_I2SCKSEL_f.I2S2CKSEL = enTargetPeriSrc; + } + else if(M4_I2S3 == pstcI2sReg) + { + M4_SYSREG->CMU_I2SCKSEL_f.I2S3CKSEL = enTargetPeriSrc; + } + else if(M4_I2S4 == pstcI2sReg) + { + M4_SYSREG->CMU_I2SCKSEL_f.I2S4CKSEL = enTargetPeriSrc; + } + else + { + /* code */ + } + + DISABLE_CLOCK1_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Get I2S clock source. + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \arg M4_I2S1 I2s channel 1 + ** \arg M4_I2S2 I2s channel 2 + ** \arg M4_I2S3 I2s channel 3 + ** \arg M4_I2S4 I2s channel 4 + ** + ** \retval en_clk_peri_source_t The I2S clock source. + ** + ** \note None + ** + ******************************************************************************/ +en_clk_peri_source_t CLK_GetI2sClkSource(const M4_I2S_TypeDef* pstcI2sReg) +{ + en_clk_peri_source_t enI2sClkSource = ClkPeriSrcPclk; + + if(M4_I2S1 == pstcI2sReg) + { + enI2sClkSource = (en_clk_peri_source_t)M4_SYSREG->CMU_I2SCKSEL_f.I2S1CKSEL; + } + else if(M4_I2S2 == pstcI2sReg) + { + enI2sClkSource = (en_clk_peri_source_t)M4_SYSREG->CMU_I2SCKSEL_f.I2S2CKSEL; + } + else if(M4_I2S3 == pstcI2sReg) + { + enI2sClkSource = (en_clk_peri_source_t)M4_SYSREG->CMU_I2SCKSEL_f.I2S3CKSEL; + } + else if(M4_I2S4 == pstcI2sReg) + { + enI2sClkSource = (en_clk_peri_source_t)M4_SYSREG->CMU_I2SCKSEL_f.I2S4CKSEL; + } + else + { + /* code */ + } + + return enI2sClkSource; +} + +/** + ******************************************************************************* + ** \brief Configures the debug clock. + ** + ** \param [in] enTpiuDiv The division of debug clock from system + ** clock. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_TpiuClkConfig(const en_clk_tpiuclk_div_factor_t enTpiuDiv) +{ + DDL_ASSERT(IS_TPIUCLK_DIV_VALID(enTpiuDiv)); + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_TPIUCKCFGR_f.TPIUCKS = enTpiuDiv; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the debug clock. + ** + ** \param [in] enNewState The new state of the debug clock. + ** \arg Enable Enable debug clock. + ** \arg Disable Disable debug clock. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_TpiuClkCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + M4_SYSREG->CMU_TPIUCKCFGR_f.TPIUCKOE = enNewState; + + DISABLE_CLOCK_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Configures the output clock. + ** + ** \param [in] enCh The clock output channel. + ** \param [in] pstcOutputCfg The clock output configures struct. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_OutputClkConfig(en_clk_output_ch_t enCh, const stc_clk_output_cfg_t *pstcOutputCfg) +{ + if(NULL != pstcOutputCfg) + { + DDL_ASSERT(IS_OUTPUTCLK_CHANNEL(enCh)); + DDL_ASSERT(IS_OUTPUTCLK_SOURCE(pstcOutputCfg->enOutputSrc)); + DDL_ASSERT(IS_OUTPUTCLK_DIV_VALID(pstcOutputCfg->enOutputDiv)); + + ENABLE_CLOCK_REG_WRITE(); + + switch(enCh) + { + case ClkOutputCh1: + M4_SYSREG->CMU_MCO1CFGR_f.MCO1SEL = pstcOutputCfg->enOutputSrc; + M4_SYSREG->CMU_MCO1CFGR_f.MCO1DIV = pstcOutputCfg->enOutputDiv; + break; + case ClkOutputCh2: + M4_SYSREG->CMU_MCO2CFGR_f.MCO2SEL = pstcOutputCfg->enOutputSrc; + M4_SYSREG->CMU_MCO2CFGR_f.MCO2DIV = pstcOutputCfg->enOutputDiv; + break; + default: + break; + } + + DISABLE_CLOCK_REG_WRITE(); + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the clock output. + ** + ** \param [in] enCh The clock output channel. + ** \param [in] enNewState The new state of the clock output. + ** \arg Enable Enable clock output. + ** \arg Disable Disable clock output. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_OutputClkCmd(en_clk_output_ch_t enCh, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_CLOCK_REG_WRITE(); + + switch(enCh) + { + case ClkOutputCh1: + M4_SYSREG->CMU_MCO1CFGR_f.MCO1EN = enNewState; + break; + case ClkOutputCh2: + M4_SYSREG->CMU_MCO2CFGR_f.MCO2EN = enNewState; + break; + default: + break; + } + + DISABLE_CLOCK_REG_WRITE(); +} + + +/** + ******************************************************************************* + ** \brief Get the specified clock flag status. + ** + ** \param [in] enClkFlag The specified clock flag. + ** \arg ClkFlagHRCRdy HRC is ready or not. + ** \arg ClkFlagXTALRdy XTAL is ready or not. + ** \arg ClkFlagMPLLRdy MPLL is ready or not. + ** \arg ClkFlagUPLLRdy UPLL is ready or not. + ** \arg ClkFlagXTALStoppage XTAL is detected stoppage or not. + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t CLK_GetFlagStatus(en_clk_flag_t enClkFlag) +{ + en_flag_status_t status; + + DDL_ASSERT(IS_CLK_FLAG(enClkFlag)); + + switch(enClkFlag) + { + case ClkFlagHRCRdy: + status = ((1u == M4_SYSREG->CMU_OSCSTBSR_f.HRCSTBF) ? Set : Reset); + break; + case ClkFlagXTALRdy: + status = ((1u == M4_SYSREG->CMU_OSCSTBSR_f.XTALSTBF) ? Set : Reset); + break; + case ClkFlagMPLLRdy: + status = ((1u == M4_SYSREG->CMU_OSCSTBSR_f.MPLLSTBF) ? Set : Reset); + break; + case ClkFlagUPLLRdy: + status = ((1u == M4_SYSREG->CMU_OSCSTBSR_f.UPLLSTBF) ? Set : Reset); + break; + default: + status = ((1u == M4_SYSREG->CMU_XTALSTDSR_f.XTALSTDF) ? Set : Reset); + break; + } + + return status; +} + + +/** + ******************************************************************************* + ** \brief Configures the clock frequency measurement. + ** + ** \param [in] pstcClkFcmCfg The clock frequency measurement configures + ** struct. + ** + ** \retval None + ** + ** \note Configures the window,measurement,reference and interrupt independently. + ** + ******************************************************************************/ +void CLK_FcmConfig(const stc_clk_fcm_cfg_t *pstcClkFcmCfg) +{ + if(NULL != pstcClkFcmCfg) + { + /* Window config. */ + if(pstcClkFcmCfg->pstcFcmWindowCfg) + { + /* Set window lower. */ + M4_FCM->LVR = pstcClkFcmCfg->pstcFcmWindowCfg->windowLower; + /* Set window upper. */ + M4_FCM->UVR = pstcClkFcmCfg->pstcFcmWindowCfg->windowUpper; + } + + /* Measure config. */ + if(pstcClkFcmCfg->pstcFcmMeaCfg) + { + DDL_ASSERT(IS_FCM_SOURCE(pstcClkFcmCfg->pstcFcmMeaCfg->enSrc)); + DDL_ASSERT(IS_FCM_MEASRC_DIV_VALID(pstcClkFcmCfg->pstcFcmMeaCfg->enSrcDiv)); + + /* Measure source. */ + M4_FCM->MCCR_f.MCKS = pstcClkFcmCfg->pstcFcmMeaCfg->enSrc; + /* Measure source division. */ + M4_FCM->MCCR_f.MDIVS = pstcClkFcmCfg->pstcFcmMeaCfg->enSrcDiv; + } + + /* Reference config. */ + if(pstcClkFcmCfg->pstcFcmRefCfg) + { + DDL_ASSERT(IS_FCM_REF(pstcClkFcmCfg->pstcFcmRefCfg->enRefSel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcClkFcmCfg->pstcFcmRefCfg->enExtRef)); + DDL_ASSERT(IS_FCM_SOURCE(pstcClkFcmCfg->pstcFcmRefCfg->enIntRefSrc)); + DDL_ASSERT(IS_FCM_INTREF_DIV_VALID(pstcClkFcmCfg->pstcFcmRefCfg->enIntRefDiv)); + DDL_ASSERT(IS_FCM_EDGE(pstcClkFcmCfg->pstcFcmRefCfg->enEdge)); + DDL_ASSERT(IS_FCM_FILTER_CLK(pstcClkFcmCfg->pstcFcmRefCfg->enFilterClk)); + + M4_FCM->RCCR_f.INEXS = pstcClkFcmCfg->pstcFcmRefCfg->enRefSel; + M4_FCM->RCCR_f.EXREFE = pstcClkFcmCfg->pstcFcmRefCfg->enExtRef; + M4_FCM->RCCR_f.RCKS = pstcClkFcmCfg->pstcFcmRefCfg->enIntRefSrc; + M4_FCM->RCCR_f.RDIVS = pstcClkFcmCfg->pstcFcmRefCfg->enIntRefDiv; + M4_FCM->RCCR_f.EDGES = pstcClkFcmCfg->pstcFcmRefCfg->enEdge; + M4_FCM->RCCR_f.DNFS = pstcClkFcmCfg->pstcFcmRefCfg->enFilterClk; + } + + /* Interrupt config. */ + if(pstcClkFcmCfg->pstcFcmIntCfg) + { + DDL_ASSERT(IS_FCM_HANDLE(pstcClkFcmCfg->pstcFcmIntCfg->enHandleSel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcClkFcmCfg->pstcFcmIntCfg->enHandleReset)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcClkFcmCfg->pstcFcmIntCfg->enHandleInterrupt)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcClkFcmCfg->pstcFcmIntCfg->enOvfInterrupt)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcClkFcmCfg->pstcFcmIntCfg->enEndInterrupt)); + + M4_FCM->RIER_f.ERRINTRS = pstcClkFcmCfg->pstcFcmIntCfg->enHandleSel; + M4_FCM->RIER_f.ERRE = pstcClkFcmCfg->pstcFcmIntCfg->enHandleReset; + M4_FCM->RIER_f.ERRIE = pstcClkFcmCfg->pstcFcmIntCfg->enHandleInterrupt; + M4_FCM->RIER_f.MENDIE = pstcClkFcmCfg->pstcFcmIntCfg->enEndInterrupt; + M4_FCM->RIER_f.OVFIE = pstcClkFcmCfg->pstcFcmIntCfg->enOvfInterrupt; + } + } + else + { + /* code */ + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the clock frequency measurement. + ** + ** \param [in] enNewState The new state of the clock frequency + ** measurement. + ** \arg Enable Enable clock frequency measurement. + ** \arg Disable Disable clock frequency measurement. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_FcmCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + M4_FCM->STR = enNewState; +} + +/** + ******************************************************************************* + ** \brief Get fcm counter value. + ** + ** \param None + ** + ** \retval The fcm counter value. + ** + ** \note None + ** + ******************************************************************************/ +uint16_t CLK_GetFcmCounter(void) +{ + return (uint16_t)(M4_FCM->CNTR & 0xFFFFu); +} + +/** + ******************************************************************************* + ** \brief Get the specified fcm flag status. + ** + ** \param [in] enFcmFlag The specified fcm flag. + ** \arg ClkFcmFlagOvf The fcm counter overflow or not. + ** \arg ClkFcmFlagMendf The end of the measurement or not. + ** \arg ClkFcmFlagErrf Whether the frequency is abnormal or not. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t CLK_GetFcmFlag(en_clk_fcm_flag_t enFcmFlag) +{ + en_flag_status_t status = Reset; + + DDL_ASSERT(IS_FCM_FLAG(enFcmFlag)); + + switch(enFcmFlag) + { + case ClkFcmFlagOvf: + status = (en_flag_status_t)M4_FCM->SR_f.OVF; + break; + case ClkFcmFlagMendf: + status = (en_flag_status_t)M4_FCM->SR_f.MENDF; + break; + case ClkFcmFlagErrf: + status = (en_flag_status_t)M4_FCM->SR_f.ERRF; + break; + default: + break; + } + + return status; +} + +/** + ******************************************************************************* + ** \brief Clear the specified fcm flag status. + ** + ** \param [in] enFcmFlag The specified fcm flag. + ** \arg ClkFcmFlagOvf Clear the fcm counter overflow flag. + ** \arg ClkFcmFlagMendf Clear the end of the measurement flag. + ** \arg ClkFcmFlagErrf Clear the frequency abnormal flag. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void CLK_ClearFcmFlag(en_clk_fcm_flag_t enFcmFlag) +{ + DDL_ASSERT(IS_FCM_FLAG(enFcmFlag)); + + switch(enFcmFlag) + { + case ClkFcmFlagOvf: + M4_FCM->CLR_f.OVFCLR = Set; + break; + case ClkFcmFlagMendf: + M4_FCM->CLR_f.MENDFCLR = Set; + break; + case ClkFcmFlagErrf: + M4_FCM->CLR_f.ERRFCLR = Set; + break; + default: + break; + } +} + +/** + ******************************************************************************* + ** \brief Clear the XTAL error flag. + ** + ** \param None + ** + ** \retval None + ** + ** \note The system clock should not be XTAL before call this function. + ** + ******************************************************************************/ +void CLK_ClearXtalStdFlag(void) +{ + /* Enable register write. */ + ENABLE_CLOCK_REG_WRITE(); + + if(Set == M4_SYSREG->CMU_XTALSTDSR_f.XTALSTDF) + { + /* Clear the XTAL STD flag */ + M4_SYSREG->CMU_XTALSTDSR_f.XTALSTDF = Reset; + } + + /* Disbale register write. */ + DISABLE_CLOCK_REG_WRITE(); +} + + +//@} // CmuGroup + +#endif /* DDL_CLK_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_cmp.c b/driver/src/hc32f460_cmp.c new file mode 100644 index 0000000..dde45b7 --- /dev/null +++ b/driver/src/hc32f460_cmp.c @@ -0,0 +1,1046 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_cmp.c + ** + ** A detailed description is available at + ** @link CmpGroup CMP @endlink + ** + ** - 2018-10-22 CDT First version for Device Driver Library of CMP. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_cmp.h" +#include "hc32f460_utility.h" + +#if (DDL_CMP_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup CmpGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter valid check for CMP Instances. */ +#define IS_VALID_CMP(__CMPx__) \ +( (M4_CMP1 == (__CMPx__)) || \ + (M4_CMP2 == (__CMPx__)) || \ + (M4_CMP3 == (__CMPx__))) + +/*!< Parameter valid check for CMP function */ +#define IS_VALID_CMP_FUNCTION(x) \ +( (CmpOutput == (x)) || \ + (CmpOutpuInv == (x)) || \ + (CmpVcoutOutput == (x))) + +/*! Parameter validity check for edge sel. */ +#define IS_VALID_EDGESEL(x) \ +( (CmpNoneEdge == (x)) || \ + (CmpBothEdge == (x)) || \ + (CmpRisingEdge == (x)) || \ + (CmpFaillingEdge == (x))) + +/*!< Parameter CMP FLT validity check for clock division. */ +#define IS_VALID_FLTCLK_DIVISION(x) \ +( (CmpNoneFlt == (x)) || \ + (CmpFltPclk3Div1 == (x)) || \ + (CmpFltPclk3Div2 == (x)) || \ + (CmpFltPclk3Div4 == (x)) || \ + (CmpFltPclk3Div8 == (x)) || \ + (CmpFltPclk3Div16 == (x)) || \ + (CmpFltPclk3Div32 == (x)) || \ + (CmpFltPclk3Div64 == (x))) + +/*!< Parameter validity check for INP4 SEL. */ +#define IS_VALID_INP4SEL(x) \ +( (CmpInp4None == (x)) || \ + (CmpInp4PGAO == (x)) || \ + (CmpInp4PGAO_BP == (x)) || \ + (CmpInp4CMP1_INP4 == (x))) + +/*!< Parameter validity check for INP INPUT SEL. */ +#define IS_VALID_INPSEL(x) \ +( (CmpInpNone == (x)) || \ + (CmpInp1 == (x)) || \ + (CmpInp2 == (x)) || \ + (CmpInp3 == (x)) || \ + (CmpInp4 == (x)) || \ + (CmpInp1_Inp2 == (x)) || \ + (CmpInp1_Inp3 == (x)) || \ + (CmpInp2_Inp3 == (x)) || \ + (CmpInp1_Inp4 == (x)) || \ + (CmpInp2_Inp4 == (x)) || \ + (CmpInp3_Inp4 == (x)) || \ + (CmpInp1_Inp2_Inp3 == (x)) || \ + (CmpInp1_Inp2_Inp4 == (x)) || \ + (CmpInp1_Inp3_Inp4 == (x)) || \ + (CmpInp2_Inp3_Inp4 == (x)) || \ + (CmpInp1_Inp2_Inp3_Inp4 == (x))) + +/*!< Parameter validity check for INM INPUT SEL. */ +#define IS_VALID_INMSEL(x) \ +( (CmpInm1 == (x)) || \ + (CmpInm2 == (x)) || \ + (CmpInm3 == (x)) || \ + (CmpInm4 == (x)) || \ + (CmpInmNone == (x))) + +/*!< Parameter validity check for CMP_CR channel. */ +#define IS_VALID_CMP_CR_CH(x) \ +( (CmpDac1 == (x)) || \ + (CmpDac2 == (x))) + +/*!< Parameter validity check for ADC internal reference voltage path. */ +#define IS_VALID_ADC_REF_VOLT_PATH(x) \ +( (CmpAdcRefVoltPathDac1 == (x)) || \ + (CmpAdcRefVoltPathDac2 == (x)) || \ + (CmpAdcRefVoltPathVref == (x))) + +/*!< RVADC Write Protection Key. */ +#define RVADC_WRITE_PROT_KEY (0x5500u) + +/*!< Timer4x ECER register address. */ +#define CMP_CR_DADRx(__DACx__) \ +( (CmpDac1 == (__DACx__)) ? &M4_CMP_CR->DADR1 : &M4_CMP_CR->DADR2) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initializes the specified CMP. + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] pstcInitCfg Pointer to CMP configure structure + ** \arg This parameter detail refer @ref stc_cmp_init_t + ** + ** \retval Ok CMP is initialized normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - CMPx is invalid + ** - pstcInitCfg == NULL + ** + ******************************************************************************/ +en_result_t CMP_Init(M4_CMP_TypeDef *CMPx, const stc_cmp_init_t *pstcInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx && pstcInitCfg pointer */ + if ((IS_VALID_CMP(CMPx)) && (NULL != pstcInitCfg)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_EDGESEL(pstcInitCfg->enEdgeSel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpIntEN)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpInvEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpOutputEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpVcoutOutputEn)); + DDL_ASSERT(IS_VALID_FLTCLK_DIVISION(pstcInitCfg->enFltClkDiv)); + + /* De-Initialize CMP */ + CMPx->CTRL = (uint16_t)0x0000u; + CMPx->VLTSEL = (uint16_t)0x0000u; + CMPx->CVSSTB = (uint16_t)0x0005u; + CMPx->CVSPRD = (uint16_t)0x000Fu; + + CMPx->CTRL_f.IEN = (uint16_t)pstcInitCfg->enCmpIntEN; + CMPx->CTRL_f.INV = (uint16_t)pstcInitCfg->enCmpInvEn; + CMPx->CTRL_f.EDGSL = (uint16_t)pstcInitCfg->enEdgeSel; + CMPx->CTRL_f.FLTSL = (uint16_t)pstcInitCfg->enFltClkDiv; + CMPx->CTRL_f.CMPOE = (uint16_t)pstcInitCfg->enCmpOutputEn; + CMPx->CTRL_f.OUTEN = (uint16_t)pstcInitCfg->enCmpVcoutOutputEn; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initialize CMP + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_DeInit(M4_CMP_TypeDef *CMPx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + CMPx->CTRL = (uint16_t)0x0000u; + CMPx->VLTSEL = (uint16_t)0x0000u; + CMPx->CVSSTB = (uint16_t)0x0005u; + CMPx->CVSPRD = (uint16_t)0x000Fu; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable CMP working + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enCmd The CMP function state + ** \arg Disable Disable CMP working + ** \arg Enable Enable CMP working + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_Cmd(M4_CMP_TypeDef *CMPx, en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + /* Check parameter */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + CMPx->CTRL_f.CMPON = (uint16_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable CMP interrupt request + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enCmd The CMP interrupt function state + ** \arg Disable Disable interrupt request + ** \arg Enable Enable interrupt request + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid. + ** + ******************************************************************************/ +en_result_t CMP_IrqCmd(M4_CMP_TypeDef *CMPx, en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + CMPx->CTRL_f.IEN = (uint16_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set scan time(scan stable&&period) + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] u8ScanStable CMP scan stable value + ** \arg u8ScanStable < 16 + ** \param [in] u8ScanPeriod CMP scan period value + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ** \note u8ScanStable && u8ScanPeriod value must meet following condition: + ** u8ScanPeriod > u8ScanStable + FLTSL_DIV*4 + 5 + ** FLTSL_DIV is filter sample period division(refer CMPx->CTRL_f.FLTSL) + ** + ******************************************************************************/ +en_result_t CMP_SetScanTime(M4_CMP_TypeDef *CMPx, + uint8_t u8ScanStable, + uint8_t u8ScanPeriod) +{ + uint16_t u16Flts; + uint16_t u16FltslDiv; + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if ((!IS_VALID_CMP(CMPx)) || (u8ScanStable & 0xF0u)) + { + enRet = ErrorInvalidParameter; + } + else + { + u16Flts = CMPx->CTRL_f.FLTSL; + u16FltslDiv = ((uint16_t)1u << (u16Flts - 1u)); + + if ((0u != u16Flts) && + (u8ScanPeriod <= (u8ScanStable + u16FltslDiv * 4u + 5u))) + { + enRet = ErrorInvalidParameter; + } + else + { + CMPx->CVSSTB_f.STB = u8ScanStable; + CMPx->CVSPRD_f.PRD = u8ScanPeriod; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable the specified CMP function. + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enFunc CMP function selection + ** \arg CmpVcoutOutput CMP Vcout output enable function + ** \arg CmpOutpuInv CMP output invert enable function + ** \arg CmpOutput CMP output enable function + ** \param [in] enCmd CMP functional state + ** \arg Enable Enable the specified CMP function + ** \arg Disable Disable the specified CMP function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_FuncCmd(M4_CMP_TypeDef *CMPx, + en_cmp_func_t enFunc, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + /* Check parameter */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + DDL_ASSERT(IS_VALID_CMP_FUNCTION(enFunc)); + + if (Enable == enCmd) + { + CMPx->CTRL |= (uint16_t)enFunc; + } + else + { + CMPx->CTRL &= (uint16_t)(~((uint16_t)enFunc)); + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Start CMP scan + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval Ok Start successfully + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_StartScan(M4_CMP_TypeDef *CMPx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + CMPx->CTRL_f.CVSEN = (uint16_t)1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Stop CMP scan + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval Ok Stop successfully + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_StopScan(M4_CMP_TypeDef *CMPx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + CMPx->CTRL_f.CVSEN = (uint16_t)0u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set CMP filter sample clock division. + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enFltClkDiv The CMP filter sample clock division selection + ** \arg CmpNoneFlt Unuse filter + ** \arg CmpFltPclk3Div1 PCLK3/1 + ** \arg CmpFltPclk3Div2 PCLK3/2 + ** \arg CmpFltPclk3Div4 PCLK3/4 + ** \arg CmpFltPclk3Div8 PCLK3/8 + ** \arg CmpFltPclk3Div16 PCLK3/16 + ** \arg CmpFltPclk3Div32 PCLK3/32 + ** \arg CmpFltPclk3Div64 PCLK3/64 + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_SetFilterClkDiv(M4_CMP_TypeDef *CMPx, + en_cmp_fltclk_div_t enFltClkDiv) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_FLTCLK_DIVISION(enFltClkDiv)); + CMPx->CTRL_f.FLTSL = (uint16_t)enFltClkDiv; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get CMP filter sample clock division. + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpNoneFlt Unuse filter + ** \retval CmpFltPclk3Div1 PCLK3/1 + ** \retval CmpFltPclk3Div2 PCLK3/2 + ** \retval CmpFltPclk3Div4 PCLK3/4 + ** \retval CmpFltPclk3Div8 PCLK3/8 + ** \retval CmpFltPclk3Div16 PCLK3/16 + ** \retval CmpFltPclk3Div32 PCLK3/32 + ** \retval CmpFltPclk3Div64 PCLK3/64 + ** + ******************************************************************************/ +en_cmp_fltclk_div_t CMP_GetFilterClkDiv(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_fltclk_div_t)CMPx->CTRL_f.FLTSL; +} + +/** + ******************************************************************************* + ** \brief Set CMP detection edge selection. + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enEdgeSel The CMP detection edge selection + ** \arg CmpNoneEdge None edge detection + ** \arg CmpRisingEdge Rising edge detection + ** \arg CmpFaillingEdge Falling edge detection + ** \arg CmpBothEdge Falling or Rising edge detection + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_SetEdgeSel(M4_CMP_TypeDef *CMPx, + en_cmp_edge_sel_t enEdgeSel) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_EDGESEL(enEdgeSel)); + CMPx->CTRL_f.EDGSL = (uint16_t)enEdgeSel; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get CMP detection edge selection. + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpNoneEdge None edge detection + ** \retval CmpRisingEdge Rising edge detection + ** \retval CmpFaillingEdge Falling edge detection + ** \retval CmpBothEdge Falling or Rising edge detection + ** + ******************************************************************************/ +en_cmp_edge_sel_t CMP_GetEdgeSel(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_edge_sel_t)CMPx->CTRL_f.EDGSL; +} + +/** + ******************************************************************************* + ** \brief Set CMP input sel + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] pstcInputSel The CMP input selection structure + ** \arg This parameter detail refer @ref stc_cmp_input_sel_t + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_InputSel(M4_CMP_TypeDef *CMPx, + const stc_cmp_input_sel_t *pstcInputSel) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx && pstcInputSel pointer */ + if ((IS_VALID_CMP(CMPx)) && (NULL != pstcInputSel)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_INMSEL(pstcInputSel->enInmSel)); + DDL_ASSERT(IS_VALID_INPSEL(pstcInputSel->enInpSel)); + DDL_ASSERT(IS_VALID_INP4SEL(pstcInputSel->enInp4Sel)); + + if ((CmpInp4PGAO == pstcInputSel->enInp4Sel) || + (CmpInp4PGAO_BP == pstcInputSel->enInp4Sel)) + { + if (M4_CMP3 != CMPx) + { + enRet = Ok; + } + } + else if (CmpInp4CMP1_INP4 == pstcInputSel->enInp4Sel) + { + if (M4_CMP1 == CMPx) + { + enRet = Ok; + } + } + else + { + enRet = Ok; + } + + if (enRet == Ok) + { + CMPx->VLTSEL_f.CVSL = (uint16_t)pstcInputSel->enInpSel; + CMPx->VLTSEL_f.RVSL = (uint16_t)pstcInputSel->enInmSel; + CMPx->VLTSEL_f.C4SL = (uint16_t)pstcInputSel->enInp4Sel; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set CMP INP input selection + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enInputSel The INP input selection + ** \arg CmpInpNone None input + ** \arg CmpInp1 INP1 input + ** \arg CmpInp2 INP2 input + ** \arg CmpInp1_Inp2 INP1 INP2 input + ** \arg CmpInp3 INP3 input + ** \arg CmpInp1_Inp3 INP1 INP3 input + ** \arg CmpInp2_Inp3 INP2 INP3 input + ** \arg CmpInp1_Inp2_Inp3 INP1 INP2 INP3 input + ** \arg CmpInp4 INP4 input + ** \arg CmpInp1_Inp4 INP1 INP4 input + ** \arg CmpInp2_Inp4 INP2 INP4 input + ** \arg CmpInp1_Inp2_Inp4 INP1 INP2 INP4 input + ** \arg CmpInp3_Inp4 INP3 INP4 input + ** \arg CmpInp1_Inp3_Inp4 INP1 INP3 INP4 input + ** \arg CmpInp2_Inp3_Inp4 INP2 INP3 INP4 input + ** \arg CmpInp1_Inp2_Inp3_Inp4 INP1 INP2 INP3 INP4 input + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid + ** + ******************************************************************************/ +en_result_t CMP_SetInp(M4_CMP_TypeDef *CMPx, en_cmp_inp_sel_t enInputSel) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_INPSEL(enInputSel)); + CMPx->VLTSEL_f.CVSL = (uint16_t)enInputSel; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set CMP INP input selection + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpInpNone None input + ** \retval CmpInp1 INP1 input + ** \retval CmpInp2 INP2 input + ** \retval CmpInp1_Inp2 INP1 INP2 input + ** \retval CmpInp3 INP3 input + ** \retval CmpInp1_Inp3 INP1 INP3 input + ** \retval CmpInp2_Inp3 INP2 INP3 input + ** \retval CmpInp1_Inp2_Inp3 INP1 INP2 INP3 input + ** \retval CmpInp4 INP4 input + ** \retval CmpInp1_Inp4 INP1 INP4 input + ** \retval CmpInp2_Inp4 INP2 INP4 input + ** \retval CmpInp1_Inp2_Inp4 INP1 INP2 INP4 input + ** \retval CmpInp3_Inp4 INP3 INP4 input + ** \retval CmpInp1_Inp3_Inp4 INP1 INP3 INP4 input + ** \retval CmpInp2_Inp3_Inp4 INP2 INP3 INP4 input + ** \retval CmpInp1_Inp2_Inp3_Inp4 INP1 INP2 INP3 INP4 input + ** + ******************************************************************************/ +en_cmp_inp_sel_t CMP_GetInp(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_inp_sel_t)CMPx->VLTSEL_f.CVSL; +} + +/** + ******************************************************************************* + ** \brief Set CMP INM input selection + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enInputSel The INP input selection + ** \arg CmpInmNone None input + ** \arg CmpInm1 INM1 input + ** \arg CmpInm2 INM2 input + ** \arg CmpInm3 INM3 input + ** \arg CmpInm4 INM4 input + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid. + ** + ******************************************************************************/ +en_result_t CMP_SetInm(M4_CMP_TypeDef *CMPx, en_cmp_inm_sel_t enInputSel) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_INMSEL(enInputSel)); + CMPx->VLTSEL_f.RVSL = (uint16_t)enInputSel; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get CMP INM input selection + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpInmNone None input + ** \retval CmpInm1 INM1 input + ** \retval CmpInm2 INM2 input + ** \retval CmpInm3 INM3 input + ** \retval CmpInm4 INM4 input + ** + ******************************************************************************/ +en_cmp_inm_sel_t CMP_GetInm(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_inm_sel_t)CMPx->VLTSEL_f.RVSL; +} + +/** + ******************************************************************************* + ** \brief Set CMP INP4 input selection + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** \param [in] enInputSel The INP input selection + ** \arg CmpInp4None None input + ** \arg CmpInp4PGAO PGAO output + ** \arg CmpInp4PGAO_BP PGAO_BP output + ** \arg CmpInp4CMP1_INP4 CMP1_INP4 + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter CMPx is invalid. + ** + ** \note Inp4 Selection is valid only for M4_CMP1 + ** and M4_CMP2. + ** + ******************************************************************************/ +en_result_t CMP_SetInp4(M4_CMP_TypeDef *CMPx,en_cmp_inp4_sel_t enInputSel) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameter */ + DDL_ASSERT(M4_CMP3 != CMPx); + DDL_ASSERT(IS_VALID_INP4SEL(enInputSel)); + + /* Check CMPx pointer */ + if (IS_VALID_CMP(CMPx)) + { + CMPx->VLTSEL_f.C4SL = (uint16_t)enInputSel; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get CMP INP4 input selection + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpInp4None None input + ** \retval CmpInp4PGAO PGAO output + ** \retval CmpInp4PGAO_BP PGAO_BP output + ** \retval CmpInp4CMP1_INP4 CMP1_INP4 + ** + ** \note Inp4 Selection is valid only for M4_CMP1 + ** and M4_CMP2. + ** + ******************************************************************************/ +en_cmp_inp4_sel_t CMP_GetInp4(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_inp4_sel_t)CMPx->VLTSEL_f.C4SL; +} + +/** + ******************************************************************************* + ** \brief Get CMP output state + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpOutputLow Compare output Low "0" + ** \retval CmpOutputHigh Compare output High "1" + ** + ******************************************************************************/ +en_cmp_output_state_t CMP_GetOutputState(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_output_state_t)(CMPx->MON_f.OMON); +} + +/** + ******************************************************************************* + ** \brief Get CMP INP state + ** + ** \param [in] CMPx Pointer to CMP instance register base + ** \arg M4_CMP1 CMP unit 1 instance register base + ** \arg M4_CMP2 CMP unit 2 instance register base + ** \arg M4_CMP3 CMP unit 3 instance register base + ** + ** \retval CmpOutputLow Compare output Low "0" + ** \retval CmpOutputHigh Compare output High "1" + ** + ******************************************************************************/ +en_cmp_inp_state_t CMP_GetInpState(M4_CMP_TypeDef *CMPx) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP(CMPx)); + + return (en_cmp_inp_state_t)(CMPx->MON_f.CVST); +} + +/** + ******************************************************************************* + ** \brief Initialize CMP DAC + ** + ** \param [in] enCh CMP DAC channel + ** \arg CmpDac1 CMP CR DAC channel: DAC1 + ** \arg CmpDac2 CMP CR DAC channel: DAC2 + ** \param [in] pstcInitCfg Pointer to CMP DAC configure structure + ** \arg This parameter detail refer @ref stc_cmp_dac_init_t + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enCh is invalid. + ** + ******************************************************************************/ +en_result_t CMP_DAC_Init(en_cmp_dac_ch_t enCh, + const stc_cmp_dac_init_t *pstcInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + + if ((IS_VALID_CMP_CR_CH(enCh)) && (pstcInitCfg != NULL)) + { + /* Check parameter */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpDacEN)); + + M4_CMP_CR->DACR &= (uint16_t)(~(1ul << enCh)); /* Disable DAC */ + + *(__IO uint8_t *)CMP_CR_DADRx(enCh) = pstcInitCfg->u8DacData; /* Set DAC data */ + + if (Enable == pstcInitCfg->enCmpDacEN) + { + M4_CMP_CR->DACR |= (uint16_t)(1ul << enCh); /* Enable DAC */ + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initialize CMP DAC + ** + ** \param [in] enCh CMP DAC channel + ** \arg CmpDac1 CMP CR DAC channel: DAC1 + ** \arg CmpDac2 CMP CR DAC channel: DAC2 + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enCh is invalid. + ** + ******************************************************************************/ +en_result_t CMP_DAC_DeInit(en_cmp_dac_ch_t enCh) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameter */ + if (IS_VALID_CMP_CR_CH(enCh)) + { + M4_CMP_CR->DACR &= (uint16_t)(~(1ul << enCh)); + *(__IO uint8_t *)CMP_CR_DADRx(enCh) = 0u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable CMP DAC working + ** + ** \param [in] enCh CMP DAC channel + ** \arg CmpDac1 CMP DAC channel: DAC1 + ** \arg CmpDac2 CMP DAC channel: DAC2 + ** \param [in] enCmd The CMP DAC function state + ** \arg Disable Disable CMP DAC working + ** \arg Enable Enable CMP DAC working + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enCh is invalid. + ** + ******************************************************************************/ +en_result_t CMP_DAC_Cmd(en_cmp_dac_ch_t enCh, en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameter */ + if (IS_VALID_CMP_CR_CH(enCh)) + { + if(Enable == enCmd) + { + M4_CMP_CR->DACR |= (uint16_t)(1ul << enCh); + } + else + { + M4_CMP_CR->DACR &= (uint16_t)(~(1ul << enCh)); + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set DAC data register value + ** + ** \param [in] enCh CMP DAC channel + ** \arg CmpDac1 CMP CR DAC channel: DAC1 + ** \arg CmpDac2 CMP CR DAC channel: DAC2 + ** \param [in] u8DacData DAC data register value + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enCh is invalid. + ** + ******************************************************************************/ +en_result_t CMP_DAC_SetData(en_cmp_dac_ch_t enCh, uint8_t u8DacData) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameter */ + if (IS_VALID_CMP_CR_CH(enCh)) + { + *(__IO uint8_t *)CMP_CR_DADRx(enCh) = u8DacData; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get DAC data register value + ** + ** \param [in] enCh CMP DAC channel + ** \arg CmpDac1 CMP CR DAC channel: DAC1 + ** \arg CmpDac2 CMP CR DAC channel: DAC2 + ** + ** \retval DAC data register value + ** + ******************************************************************************/ +uint8_t CMP_DAC_GetData(en_cmp_dac_ch_t enCh) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_CMP_CR_CH(enCh)); + + return *(__IO uint8_t *)CMP_CR_DADRx(enCh); +} + +/** + ******************************************************************************* + ** \brief Set ADC internal reference voltage path + ** + ** \param [in] enRefVoltPath ADC internal reference voltage path + ** \arg CmpAdcRefVoltPathDac1 ADC internal reference voltage path: DAC1 + ** \arg CmpAdcRefVoltPathDac2 ADC internal reference voltage path: DAC2 + ** \arg CmpAdcRefVoltPathVref ADC internal reference voltage path: VREF + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enRefVoltPath is invalid. + ** + ******************************************************************************/ +en_result_t CMP_ADC_SetRefVoltPath(en_cmp_adc_int_ref_volt_path_t enRefVoltPath) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameter */ + if (IS_VALID_ADC_REF_VOLT_PATH(enRefVoltPath)) + { + M4_CMP_CR->RVADC = RVADC_WRITE_PROT_KEY; /* Release write protection */ + M4_CMP_CR->RVADC = enRefVoltPath; /* Set reference voltage path */ + enRet = Ok; + } + + return enRet; +} + +//@} // CmpGroup + +#endif /* DDL_CMP_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_crc.c b/driver/src/hc32f460_crc.c new file mode 100644 index 0000000..1cdf7fb --- /dev/null +++ b/driver/src/hc32f460_crc.c @@ -0,0 +1,327 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_crc.c + ** + ** A detailed description is available at + ** @link CrcGroup Crc description @endlink + ** + ** - 2019-03-07 CDT First version for Device Driver Library of Crc. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_crc.h" +#include "hc32f460_utility.h" + +#if (DDL_CRC_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup CrcGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* Definition of CRC16 data register. */ +#define M4_CRC16_DAT (*((__IO uint16_t *)&M4_CRC->DAT0)) + +/* Definition of CRC16 checksum register. */ +#define M4_CRC16_RSLT (*((__IO uint16_t *)&M4_CRC->RESLT)) + +/* Definition of CRC16 initial value register. */ +#define M4_CRC16_INIT (M4_CRC16_RSLT) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static uint32_t CRC_ProcChecksum(uint32_t u32Checksum); +static uint32_t CRC_ReverseBits(uint32_t u32Data); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initialize the CRC. + ** + ** \param [in] u32Config Bit[1]: CRC_SEL_16B or CRC_SEL_32B. + ** Bit[2]: CRC_REFIN_DISABLE or CRC_REFIN_ENABLE. + ** Bit[3]: CRC_REFOUT_DISABLE or CRC_REFOUT_ENABLE. + ** Bit[4]: CRC_XOROUT_DISABLE or CRC_XOROUT_ENABLE. + ** See the definitions for details. + ** + ** \retval None + ** + ******************************************************************************/ +void CRC_Init(uint32_t u32Config) +{ + u32Config &= CRC_CONFIG_MASK; + + M4_CRC->CR = u32Config; +} + +/** + ******************************************************************************* + ** \brief CRC16 calculation. + ** + ** \param [in] u16InitVal Initial value of CRC16. + ** + ** \param [in] pu16Data Pointer to the buffer containing the data to be computed. + ** + ** \param [in] u32Length Length of the buffer to be computed. + ** + ** \retval 16-bit CRC checksum. + ** + ******************************************************************************/ +uint16_t CRC_Calculate16B(uint16_t u16InitVal, const uint16_t *pu16Data, uint32_t u32Length) +{ + uint16_t u16Ret = 0u; + uint32_t u32Count; + + if (NULL != pu16Data) + { + M4_CRC16_INIT = u16InitVal; + + for (u32Count = 0u; u32Count < u32Length; u32Count++) + { + M4_CRC16_DAT = pu16Data[u32Count]; + } + + u16Ret = M4_CRC16_RSLT; + } + + return u16Ret; +} + +/** + ******************************************************************************* + ** \brief CRC32 calculation. + ** + ** \param [in] u32InitVal Initial value of CRC32. + ** + ** \param [in] pu32Data Pointer to the buffer containing the data to be computed. + ** + ** \param [in] u32Length Length of the buffer to be computed. + ** + ** \retval 32-bit CRC checksum. + ** + ******************************************************************************/ +uint32_t CRC_Calculate32B(uint32_t u32InitVal, const uint32_t *pu32Data, uint32_t u32Length) +{ + uint32_t u32Ret = 0u; + uint32_t u32Count; + + M4_CRC->RESLT = u32InitVal; + + if (NULL != pu32Data) + { + for (u32Count = 0u; u32Count < u32Length; u32Count++) + { + M4_CRC->DAT0 = pu32Data[u32Count]; + } + + u32Ret = M4_CRC->RESLT; + } + + return u32Ret; +} + +/** + ******************************************************************************* + ** \brief CRC16 check. + ** + ** \param [in] u16InitVal Initial value of CRC16. + ** + ** \param [in] u16Checksum CRC16 checksum of the source data. + ** + ** \param [in] pu16Data Pointer to the buffer containing the data to be checked. + ** + ** \param [in] u32Length Length of the buffer to be checked. + ** + ** \retval true CRC16 checks successfully. + ** \retval false CRC16 checks unsuccessfully. + ** + ******************************************************************************/ +bool CRC_Check16B(uint16_t u16InitVal, uint16_t u16Checksum, const uint16_t *pu16Data, uint32_t u32Length) +{ + bool bRet = false; + uint32_t u32Count; + uint16_t u16CrcChecksum; + + if (NULL != pu16Data) + { + u16CrcChecksum = (uint16_t)CRC_ProcChecksum((uint32_t)u16Checksum); + M4_CRC16_INIT = u16InitVal; + + for (u32Count = 0u; u32Count < u32Length; u32Count++) + { + M4_CRC16_DAT = pu16Data[u32Count]; + } + + M4_CRC16_DAT = u16CrcChecksum; + + if (bM4_CRC_FLG_FLAG) + { + bRet = true; + } + } + + return bRet; +} + +/** + ******************************************************************************* + ** \brief CRC32 check. + ** + ** \param [in] u32InitVal Initial value of CRC32. + ** + ** \param [in] u32Checksum CRC32 checksum of the source data. + ** + ** \param [in] pu32Data Pointer to the buffer containing the data to be checked. + ** + ** \param [in] u32Length Length of the buffer to be checked. + ** + ** \retval true CRC32 checks successfully. + ** \retval false CRC32 checks unsuccessfully. + ** + ******************************************************************************/ +bool CRC_Check32B(uint32_t u32InitVal, uint32_t u32Checksum, const uint32_t *pu32Data, uint32_t u32Length) +{ + bool bRet = false; + uint32_t u32Count; + uint32_t u32CrcChecksum; + + if (NULL != pu32Data) + { + u32CrcChecksum = CRC_ProcChecksum(u32Checksum); + M4_CRC->RESLT = u32InitVal; + + for (u32Count = 0u; u32Count < u32Length; u32Count++) + { + M4_CRC->DAT0 = pu32Data[u32Count]; + } + + M4_CRC->DAT0 = u32CrcChecksum; + + if (bM4_CRC_FLG_FLAG) + { + bRet = true; + } + } + + return bRet; +} + +/******************************************************************************* + * Function implementation - local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Processes the checksum of CRC. + ** + ** \param [in] u32Checksum The checksum of CRC16 or CRC32. + ** + ** \retval 32-bit new checksum will be used by CRC checking. + ** + ******************************************************************************/ +static uint32_t CRC_ProcChecksum(uint32_t u32Checksum) +{ + uint8_t i; + uint8_t u8Size = 16u; + uint8_t u8Offset; + uint32_t u32Config; + uint32_t u32FinalChecksum; + uint32_t u32Temp; + + u32Config = M4_CRC->CR; + u32FinalChecksum = u32Checksum; + + if ((u32Config & CRC_SEL_32B) == CRC_SEL_32B) + { + u8Size = 32u; + } + + if ((u32Config & CRC_REFOUT_ENABLE) == CRC_REFOUT_DISABLE) + { + /* Bits reversing. */ + u32FinalChecksum = CRC_ReverseBits(u32Checksum); + if (u8Size == 16u) + { + u32FinalChecksum >>= 16u; + u32FinalChecksum &= 0xFFFFu; + } + } + + if ((u32Config & CRC_XOROUT_ENABLE) == CRC_XOROUT_DISABLE) + { + /* Bits NOT. */ + u32FinalChecksum = ~u32FinalChecksum; + } + + if ((u32Config & CRC_REFIN_ENABLE) == CRC_REFIN_DISABLE) + { + u8Size /= 8u; + /* Bits reversing in bytes. */ + for (i = 0u; i < u8Size; i++) + { + u8Offset = i * 8u; + u32Temp = (u32FinalChecksum >> u8Offset) & 0xFFul; + u32Temp = CRC_ReverseBits(u32Temp); + u32Temp = u32Temp >> (24u - u8Offset); + u32FinalChecksum &= ~((uint32_t)0xFF << u8Offset); + u32FinalChecksum |= u32Temp; + } + } + + return u32FinalChecksum; +} + +/** + ******************************************************************************* + ** \brief Reverse bits. + ** + ** \param [in] u32Data The data to be reversed bits. + ** + ** \retval 32-bit new data. + ** + ******************************************************************************/ +static uint32_t CRC_ReverseBits(uint32_t u32Data) +{ + u32Data = (((u32Data & 0xAAAAAAAAul) >> 1u) | ((u32Data & 0x55555555ul) << 1u)); + u32Data = (((u32Data & 0xCCCCCCCCul) >> 2u) | ((u32Data & 0x33333333ul) << 2u)); + u32Data = (((u32Data & 0xF0F0F0F0ul) >> 4u) | ((u32Data & 0x0F0F0F0Ful) << 4u)); + u32Data = (((u32Data & 0xFF00FF00ul) >> 8u) | ((u32Data & 0x00FF00FFul) << 8u)); + + return ((u32Data >> 16u) | (u32Data << 16u)); +} + +//@} // CrcGroup + +#endif /* DDL_CRC_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_dcu.c b/driver/src/hc32f460_dcu.c new file mode 100644 index 0000000..71fdbed --- /dev/null +++ b/driver/src/hc32f460_dcu.c @@ -0,0 +1,975 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_dcu.c + ** + ** A detailed description is available at + ** @link DcuGroup DCU description @endlink + ** + ** - 2018-10-15 CDT First version for Device Driver Library of DCU. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_dcu.h" +#include "hc32f460_utility.h" + +#if (DDL_DCU_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup DcuGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter valid check for DCU Instances. */ +#define IS_VALID_DCU(__DCUx__) \ +( (M4_DCU1 == (__DCUx__)) || \ + (M4_DCU2 == (__DCUx__)) || \ + (M4_DCU3 == (__DCUx__)) || \ + (M4_DCU4 == (__DCUx__))) + +/*!< Parameter valid check for DCU DATA register. */ +#define IS_VALID_DCU_DATA_REG(x) \ +( (DcuRegisterData0 == (x)) || \ + (DcuRegisterData1 == (x)) || \ + (DcuRegisterData2 == (x))) + +/*!< Parameter valid check for DCU operation mode. */ +#define IS_VALID_DCU_OPERATION(x) \ +( (DcuOpAdd == (x)) || \ + (DcuOpSub == (x)) || \ + (DcuInvalid == (x)) || \ + (DcuOpCompare == (x)) || \ + (DcuHwTrigOpAdd == (x)) || \ + (DcuHwTrigOpSub == (x))) + +/*!< Parameter valid check for DCU data size. */ +#define IS_VALID_DCU_DATAZ_SIZE(x) \ +( (DcuDataBit8 == (x)) || \ + (DcuDataBit16 == (x)) || \ + (DcuDataBit32 == (x))) + +/*!< Parameter valid check for DCU compare trigger mode type. */ +#define IS_VALID_DCU_CMP_TRIG_MODE(x) \ +( (DcuCmpTrigbyData0 == (x)) || \ + (DcuCmpTrigbyData012 == (x))) + +/*!< Parameter valid check for DCU interrupt. */ +#define IS_VALID_DCU_INT(x) \ +( (DcuIntOp == (x)) || \ + (DcuIntLs2 == (x)) || \ + (DcuIntEq2 == (x)) || \ + (DcuIntGt2 == (x)) || \ + (DcuIntLs1 == (x)) || \ + (DcuIntEq1 == (x)) || \ + (DcuIntGt1 == (x))) + +/*!< Parameter valid check for DCU interrupt mode. */ +#define IS_VALID_DCU_INT_WIN_MODE(x) \ +( (DcuIntInvalid == (x)) || \ + (DcuWinIntInvalid == (x)) || \ + (DcuInsideWinCmpInt == (x)) || \ + (DcuOutsideWinCmpInt == (x))) + +/*!< Parameter valid check for external trigger event. */ +#define IS_VALID_TRG_SRC_EVENT(x) \ +( (((x) >= EVT_PORT_EIRQ0) && ((x) <= EVT_PORT_EIRQ15)) || \ + (((x) >= EVT_DMA1_TC0) && ((x) <= EVT_DMA2_BTC3)) || \ + (((x) >= EVT_EFM_OPTEND) && ((x) <= EVT_USBFS_SOF)) || \ + (((x) >= EVT_DCU1) && ((x) <= EVT_DCU4)) || \ + (((x) >= EVT_TMR01_GCMA) && ((x) <= EVT_TMR02_GCMB)) || \ + (((x) >= EVT_RTC_ALM) && ((x) <= EVT_RTC_PRD)) || \ + (((x) >= EVT_TMR61_GCMA) && ((x) <= EVT_TMR61_GUDF)) || \ + (((x) >= EVT_TMR61_SCMA) && ((x) <= EVT_TMR61_SCMB)) || \ + (((x) >= EVT_TMR62_GCMA) && ((x) <= EVT_TMR62_GUDF)) || \ + (((x) >= EVT_TMR62_SCMA) && ((x) <= EVT_TMR62_SCMB)) || \ + (((x) >= EVT_TMR63_GCMA) && ((x) <= EVT_TMR63_GUDF)) || \ + (((x) >= EVT_TMR63_SCMA) && ((x) <= EVT_TMR63_SCMB)) || \ + (((x) >= EVT_TMRA1_OVF) && ((x) <= EVT_TMRA5_CMP)) || \ + (((x) >= EVT_TMRA6_OVF) && ((x) <= EVT_TMRA6_CMP)) || \ + (((x) >= EVT_USART1_EI) && ((x) <= EVT_USART4_RTO)) || \ + (((x) >= EVT_SPI1_SPRI) && ((x) <= EVT_AOS_STRG)) || \ + (((x) >= EVT_TMR41_SCMUH) && ((x) <= EVT_TMR42_SCMWL)) || \ + (((x) >= EVT_TMR43_SCMUH) && ((x) <= EVT_TMR43_SCMWL)) || \ + (((x) >= EVT_EVENT_PORT1) && ((x) <= EVT_EVENT_PORT4)) || \ + (((x) >= EVT_I2S1_TXIRQOUT) && ((x) <= EVT_I2S1_RXIRQOUT)) || \ + (((x) >= EVT_I2S2_TXIRQOUT) && ((x) <= EVT_I2S2_RXIRQOUT)) || \ + (((x) >= EVT_I2S3_TXIRQOUT) && ((x) <= EVT_I2S3_RXIRQOUT)) || \ + (((x) >= EVT_I2S4_TXIRQOUT) && ((x) <= EVT_I2S4_RXIRQOUT)) || \ + (((x) >= EVT_ACMP1) && ((x) <= EVT_ACMP3)) || \ + (((x) >= EVT_I2C1_RXI) && ((x) <= EVT_I2C3_EEI)) || \ + (((x) >= EVT_PVD_PVD1) && ((x) <= EVT_OTS)) || \ + ((x) == EVT_WDT_REFUDF) || \ + (((x) >= EVT_ADC1_EOCA) && ((x) <= EVT_TRNG_END)) || \ + (((x) >= EVT_SDIOC1_DMAR) && ((x) <= EVT_SDIOC1_DMAW)) || \ + (((x) >= EVT_SDIOC2_DMAR) && ((x) <= EVT_SDIOC2_DMAW)) || \ + ((x) == EVT_MAX)) + +/*! Parameter valid check for DCU common trigger. */ +#define IS_DCU_COM_TRIGGER(x) \ +( ((x) == DcuComTrigger_1) || \ + ((x) == DcuComTrigger_2) || \ + ((x) == DcuComTrigger_1_2)) + +/*!< Get the specified DATA register address of the specified DCU unit */ +#define DCU_DATAx(__DCUx__, __DATAx__) ((uint32_t)(&(__DCUx__)->DATA0) + ((uint32_t)(__DATAx__)) * 4u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static __IO uint32_t* DCU_TRGSELx(const M4_DCU_TypeDef *DCUx); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initializes a DCU. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] pstcInitCfg Pointer to DCU configure structure + ** \arg This parameter detail refer @ref stc_dcu_init_t + ** + ** \retval Ok DCU is initialized normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - DCUx is invalid + ** - pstcInitCfg == NULL + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t DCU_Init(M4_DCU_TypeDef *DCUx, const stc_dcu_init_t *pstcInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx && pstcInitCfg pointer */ + if ((IS_VALID_DCU(DCUx)) && (NULL != pstcInitCfg)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enIntCmd)); + DDL_ASSERT(IS_VALID_DCU_OPERATION(pstcInitCfg->enOperation)); + DDL_ASSERT(IS_VALID_DCU_DATAZ_SIZE(pstcInitCfg->enDataSize)); + DDL_ASSERT(IS_VALID_DCU_INT_WIN_MODE(pstcInitCfg->enIntWinMode)); + DDL_ASSERT(IS_VALID_DCU_CMP_TRIG_MODE(pstcInitCfg->enCmpTriggerMode)); + + /* De-initialize dcu register value */ + DCUx->CTL = 0ul; + DCUx->INTSEL = 0ul; + DCUx->FLAGCLR = 0x7Ful; + + /* Set dcu operation mode */ + DCUx->CTL_f.MODE = (uint32_t)pstcInitCfg->enOperation; + + /* Set dcu data sieze */ + DCUx->CTL_f.DATASIZE = (uint32_t)pstcInitCfg->enDataSize; + + /* Set dcu compare trigger mode */ + DCUx->CTL_f.COMP_TRG = (uint32_t)pstcInitCfg->enCmpTriggerMode; + + /* Set dcu interrupt window mode */ + DCUx->INTSEL_f.INT_WIN = (uint32_t)pstcInitCfg->enIntWinMode; + + DCUx->INTSEL = pstcInitCfg->u32IntSel; + DCUx->CTL_f.INTEN = (uint32_t)(pstcInitCfg->enIntCmd); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initializes a DCU. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** + ** \retval Ok De-Initialized successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_DeInit(M4_DCU_TypeDef *DCUx) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO uint32_t *TRGSELx = DCU_TRGSELx(DCUx); + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* De-initialize dcu register value */ + DCUx->CTL = 0u; + DCUx->INTSEL = 0u; + DCUx->FLAGCLR = 0x7Fu; + *TRGSELx = EVT_MAX; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set DCU operation mode. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enMode DCU operation mode + ** \arg DcuInvalid Invalid + ** \arg DcuOpAdd Operation: Add + ** \arg DcuOpSub Operation: Sub + ** \arg DcuHwTrigOpAdd Operation: Hardware trigger Add + ** \arg DcuHwTrigOpSub Operation: Hardware trigger Sub + ** \arg DcuOpCompare Operation: Compare + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_SetOperationMode(M4_DCU_TypeDef *DCUx, + en_dcu_operation_mode_t enMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_OPERATION(enMode)); + + DCUx->CTL_f.MODE = (uint32_t)enMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get DCU operation mode. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** + ** \retval DcuInvalid Invalid + ** \retval DcuOpAdd Operation: Add + ** \retval DcuOpSub Operation: Sub + ** \retval DcuHwTrigOpAdd Operation: Hardware trigger Add + ** \retval DcuHwTrigOpSub Operation: Hardware trigger Sub + ** \retval DcuOpCompare Operation: Compare + ** + ******************************************************************************/ +en_dcu_operation_mode_t DCU_GetOperationMode(M4_DCU_TypeDef *DCUx) +{ + /* Check for DCUx pointer */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + + return (en_dcu_operation_mode_t)DCUx->CTL_f.MODE; +} + +/** + ******************************************************************************* + ** \brief Set DCU data size. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enSize DCU data size + ** \arg DcuDataBit8 8 bit + ** \arg DcuDataBit16 16 bit + ** \arg DcuDataBit32 32 bit + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_SetDataSize(M4_DCU_TypeDef *DCUx, en_dcu_data_size_t enSize) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_DATAZ_SIZE(enSize)); + + DCUx->CTL_f.DATASIZE = (uint32_t)enSize; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get DCU data size. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** + ** \retval DcuDataBit8 8 bit + ** \retval DcuDataBit16 16 bit + ** \retval DcuDataBit32 32 bit + ** + ******************************************************************************/ +en_dcu_data_size_t DCU_GetDataSize(M4_DCU_TypeDef *DCUx) +{ + /* Check for DCUx pointer */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + + return (en_dcu_data_size_t)(DCUx->CTL_f.DATASIZE); +} + +/** + ******************************************************************************* + ** \brief Set DCU interrup window. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enIntWinMode Interrupt window mode + ** \arg DcuIntInvalid DCU don't occur interrupt + ** \arg DcuWinIntInvalid DCU window interrupt is invalid. + ** \arg DcuInsideWinCmpInt DCU occur interrupt when DATA2 <= DATA0 <= DATA2 + ** \arg DcuOutsideWinCmpInt DCU occur interrupt when DATA0 > DATA1 or DATA0 < DATA2 + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_SetIntWinMode(M4_DCU_TypeDef *DCUx, + en_dcu_int_win_mode_t enIntWinMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_INT_WIN_MODE(enIntWinMode)); + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + DCUx->INTSEL_f.INT_WIN = (uint32_t)enIntWinMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get DCU interrup window. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** + ** \retval DcuIntInvalid DCU don't occur interrupt + ** \retval DcuWinIntInvalid DCU window interrupt is invalid. + ** \retval DcuInsideWinCmpInt DCU occur interrupt when DATA2 <= DATA0 <= DATA2 + ** \retval DcuOutsideWinCmpInt DCU occur interrupt when DATA0 > DATA1 or DATA0 < DATA2 + ** + ******************************************************************************/ +en_dcu_int_win_mode_t DCU_GetIntWinMode(M4_DCU_TypeDef *DCUx) +{ + /* Check for DCUx pointer */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + + return (en_dcu_int_win_mode_t)(DCUx->INTSEL_f.INT_WIN); +} + +/** + ******************************************************************************* + ** \brief Set DCU compare trigger mode. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enTriggerMode DCU compare trigger mode + ** \arg DcuCmpTrigbyData0 DCU compare triggered by DATA0 + ** \arg DcuCmpTrigbyData012 DCU compare triggered by DATA0 or DATA1 or DATA2 + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_SetCmpTriggerMode(M4_DCU_TypeDef *DCUx, + en_dcu_cmp_trigger_mode_t enTriggerMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_CMP_TRIG_MODE(enTriggerMode)); + + DCUx->CTL_f.COMP_TRG = (uint32_t)enTriggerMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get DCU compare trigger mode. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** + ** \retval DcuCmpTrigbyData0 DCU compare triggered by DATA0 + ** \retval DcuCmpTrigbyData012 DCU compare triggered by DATA0 or DATA1 or DATA2 + ** + ******************************************************************************/ +en_dcu_cmp_trigger_mode_t DCU_GetCmpTriggerMode(M4_DCU_TypeDef *DCUx) +{ + /* Check for DCUx pointer */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + + return (en_dcu_cmp_trigger_mode_t)(DCUx->CTL_f.COMP_TRG); +} + +/** + ******************************************************************************* + ** \brief Enable DCU interrupt. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enCmd DCU interrupt state + ** \arg Enable Enable the DCU interrupt function + ** \arg Disable Disable the DCU interrupt function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_IrqCmd(M4_DCU_TypeDef *DCUx, en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + DCUx->CTL_f.INTEN = (uint32_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the specified DCU flag + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enFlag The specified DCU flag + ** \arg DcuIntOp DCU overflow or underflow + ** \arg DcuIntLs2 DCU DATA0 < DATA2 + ** \arg DcuIntEq2 DCU DATA0 = DATA2 + ** \arg DcuIntGt2 DCU DATA0 > DATA2 + ** \arg DcuIntLs1 DCU DATA0 < DATA1 + ** \arg DcuIntEq1 DCU DATA0 = DATA1 + ** \arg DcuIntGt1 DCU DATA0 > DATA1 + ** + ** \retval Set Flag is set. + ** \retval Reset Flag is reset or enStatus is invalid. + ** + ******************************************************************************/ +en_flag_status_t DCU_GetIrqFlag(M4_DCU_TypeDef *DCUx, en_dcu_flag_t enFlag) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + DDL_ASSERT(IS_VALID_DCU_INT(enFlag)); + + return ((DCUx->FLAG & enFlag) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Clear the specified DCU flag + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enFlag the specified DCU flag + ** \arg DcuIntOp DCU overflow or underflow + ** \arg DcuIntLs2 DCU DATA0 < DATA2 + ** \arg DcuIntEq2 DCU DATA0 = DATA2 + ** \arg DcuIntGt2 DCU DATA0 > DATA2 + ** \arg DcuIntLs1 DCU DATA0 < DATA1 + ** \arg DcuIntEq1 DCU DATA0 = DATA1 + ** \arg DcuIntGt1 DCU DATA0 > DATA1 + ** + ** \retval Ok Clear flag successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_ClearIrqFlag(M4_DCU_TypeDef *DCUx, en_dcu_flag_t enFlag) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_INT(enFlag)); + DCUx->FLAGCLR = (uint32_t)enFlag; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable DCU interrupt. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enIntSel DCU interrupt selection + ** \arg DcuIntOp DCU overflow or underflow + ** \arg DcuIntLs2 DCU DATA0 < DATA2 + ** \arg DcuIntEq2 DCU DATA0 = DATA2 + ** \arg DcuIntGt2 DCU DATA0 > DATA2 + ** \arg DcuIntLs1 DCU DATA0 < DATA1 + ** \arg DcuIntEq1 DCU DATA0 = DATA1 + ** \arg DcuIntGt1 DCU DATA0 > DATA1 + ** \param [in] enCmd DCU interrupt functional state + ** \arg Enable Enable the specified DCU interrupt function + ** \arg Disable Disable the specified DCU interrupt function + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - DCUx is invalid + ** - enIntSel is invalid + ** + ******************************************************************************/ +en_result_t DCU_IrqSelCmd(M4_DCU_TypeDef *DCUx, + en_dcu_int_sel_t enIntSel, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_INT(enIntSel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + enRet = Ok; + switch(enIntSel) + { + case DcuIntOp: + DCUx->INTSEL_f.INT_OP = (uint32_t)enCmd; + break; + case DcuIntLs2: + DCUx->INTSEL_f.INT_LS2 = (uint32_t)enCmd; + break; + case DcuIntEq2: + DCUx->INTSEL_f.INT_EQ2 = (uint32_t)enCmd; + break; + case DcuIntGt2: + DCUx->INTSEL_f.INT_GT2 = (uint32_t)enCmd; + break; + case DcuIntLs1: + DCUx->INTSEL_f.INT_LS1 = (uint32_t)enCmd; + break; + case DcuIntEq1: + DCUx->INTSEL_f.INT_EQ1 = (uint32_t)enCmd; + break; + case DcuIntGt1: + DCUx->INTSEL_f.INT_GT1 = (uint32_t)enCmd; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Read DCU register DATAx + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enDataReg The specified DATA register. + ** \arg DcuRegisterData0 DCU register DATA0 + ** \arg DcuRegisterData1 DCU register DATA1 + ** \arg DcuRegisterData2 DCU register DATA2 + ** + ** \retval DCU register DATAx value + ** + ******************************************************************************/ +uint8_t DCU_ReadDataByte(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + DDL_ASSERT(IS_VALID_DCU_DATA_REG(enDataReg)); + + return *(uint8_t *)DCU_DATAx(DCUx, enDataReg); +} + +/** + ******************************************************************************* + ** \brief Write DCU register DATAx + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enDataReg The specified DATA register. + ** \arg DcuRegisterData0 DCU register DATA0 + ** \arg DcuRegisterData1 DCU register DATA1 + ** \arg DcuRegisterData2 DCU register DATA2 + ** \param [in] u8Data The data will be written. + ** + ** \retval Ok Write successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_WriteDataByte(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg, + uint8_t u8Data) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_DATA_REG(enDataReg)); + + *(uint8_t *)DCU_DATAx(DCUx, enDataReg) = u8Data; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Read DCU register DATAx + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enDataReg The specified DATA register. + ** \arg DcuRegisterData0 DCU register DATA0 + ** \arg DcuRegisterData1 DCU register DATA1 + ** \arg DcuRegisterData2 DCU register DATA2 + ** + ** \retval DCU register DATAx value + ** + ******************************************************************************/ +uint16_t DCU_ReadDataHalfWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + DDL_ASSERT(IS_VALID_DCU_DATA_REG(enDataReg)); + + return *(uint16_t *)DCU_DATAx(DCUx, enDataReg); +} + +/** + ******************************************************************************* + ** \brief Write DCU register DATAx + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enDataReg The specified DATA register. + ** \arg DcuRegisterData0 DCU register DATA0 + ** \arg DcuRegisterData1 DCU register DATA1 + ** \arg DcuRegisterData2 DCU register DATA2 + ** \param [in] u16Data The data will be written. + ** + ** \retval Ok Write successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_WriteDataHalfWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg, + uint16_t u16Data) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_DATA_REG(enDataReg)); + + *(uint16_t *)DCU_DATAx(DCUx, enDataReg) = u16Data; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Read DCU register DATAx + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enDataReg The specified DATA register. + ** \arg DcuRegisterData0 DCU register DATA0 + ** \arg DcuRegisterData1 DCU register DATA1 + ** \arg DcuRegisterData2 DCU register DATA2 + ** + ** \retval DCU register DATAx value + ** + ******************************************************************************/ +uint32_t DCU_ReadDataWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU(DCUx)); + DDL_ASSERT(IS_VALID_DCU_DATA_REG(enDataReg)); + + return *(uint32_t *)DCU_DATAx(DCUx, enDataReg); +} + +/** + ******************************************************************************* + ** \brief Write DCU register DATAx + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enDataReg The specified DATA register. + ** \arg DcuRegisterData0 DCU register DATA0 + ** \arg DcuRegisterData1 DCU register DATA1 + ** \arg DcuRegisterData2 DCU register DATA2 + ** \param [in] u32Data The data will be written. + ** + ** \retval Ok Write successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_WriteDataWord(M4_DCU_TypeDef *DCUx, + en_dcu_data_register_t enDataReg, + uint32_t u32Data) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for DCUx pointer */ + if (IS_VALID_DCU(DCUx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_DCU_DATA_REG(enDataReg)); + + *(uint32_t *)DCU_DATAx(DCUx, enDataReg) = u32Data; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set DCU trigger source number + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enTriggerSrc The trigger source. + ** \arg This parameter can be any value of @ref en_event_src_t + ** + ** \retval Ok Write successfully. + ** \retval ErrorInvalidParameter DCUx is invalid + ** + ******************************************************************************/ +en_result_t DCU_SetTriggerSrc(M4_DCU_TypeDef *DCUx, + en_event_src_t enTriggerSrc) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO uint32_t *TRGSELx = DCU_TRGSELx(DCUx); + + if (NULL != TRGSELx) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_TRG_SRC_EVENT(enTriggerSrc)); + + *TRGSELx = (*TRGSELx & (~((uint32_t)EVT_MAX))) | (uint32_t)enTriggerSrc; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable DCU common trigger. + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** \param [in] enComTrigger DCU common trigger selection. See @ref en_dcu_com_trigger_t for details. + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None. + ** + ******************************************************************************/ +void DCU_ComTriggerCmd(M4_DCU_TypeDef *DCUx, + en_dcu_com_trigger_t enComTrigger, + en_functional_state_t enState) +{ + uint32_t u32ComTrig = (uint32_t)enComTrigger; + __IO uint32_t *TRGSELx = DCU_TRGSELx(DCUx); + + if (NULL != TRGSELx) + { + DDL_ASSERT(IS_DCU_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (enState == Enable) + { + *TRGSELx |= (u32ComTrig << 30u); + } + else + { + *TRGSELx &= ~(u32ComTrig << 30u); + } + } +} + +/** + ******************************************************************************* + ** \brief Get DCU trigger source register address + ** + ** \param [in] DCUx Pointer to DCU instance register base + ** \arg M4_DCU1 DCU unit 1 instance register base + ** \arg M4_DCU2 DCU unit 2 instance register base + ** \arg M4_DCU3 DCU unit 3 instance register base + ** \arg M4_DCU4 DCU unit 4 instance register base + ** + ** \retval DCUx_TRGSEL address DCUx is valid + ** \retval NULL DCUx is invalid + ** + ******************************************************************************/ +static __IO uint32_t* DCU_TRGSELx(const M4_DCU_TypeDef *DCUx) +{ + __IO uint32_t *TRGSELx = NULL; + + if (M4_DCU1 == DCUx) + { + TRGSELx = &M4_AOS->DCU1_TRGSEL; + } + else if (M4_DCU2 == DCUx) + { + TRGSELx = &M4_AOS->DCU2_TRGSEL; + } + else if (M4_DCU3 == DCUx) + { + TRGSELx = &M4_AOS->DCU3_TRGSEL; + } + else if (M4_DCU4 == DCUx) + { + TRGSELx = &M4_AOS->DCU4_TRGSEL; + } + else + { + TRGSELx = NULL; + } + + return TRGSELx; +} + +//@} // DcuGroup + +#endif /* DDL_DCU_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_dmac.c b/driver/src/hc32f460_dmac.c new file mode 100644 index 0000000..a4eba02 --- /dev/null +++ b/driver/src/hc32f460_dmac.c @@ -0,0 +1,1827 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_dmac.c + ** + ** A detailed description is available at + ** @link DmacGroup DMAC description @endlink + ** + ** - 2018-11-18 CDT First version for Device Driver Library of DMAC. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_dmac.h" +#include "hc32f460_utility.h" + +#if (DDL_DMAC_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup DmacGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define DMA_CNT (10u) +#define DMA_IDLE (0u) +#define DMA_BUSY (1u) + +#define DMACH0 (0x01u) +#define DMACH1 (0x02u) +#define DMACH2 (0x04u) +#define DMACH3 (0x08u) + +#define DMATIMEOUT1 (0x5000u) +#define DMATIMEOUT2 (0x1000u) + +#define DMA_CHCTL_DEFAULT (0x00001000ul) +#define DMA_DTCTL_DEFAULT (0x00000001ul) +#define DMA_DAR_DEFAULT (0x00000000ul) +#define DMA_SAR_DEFAULT (0x00000000ul) +#define DMA_RPT_DEFAULT (0x00000000ul) +#define DMA_LLP_DEFAULT (0x00000000ul) +#define DMA_SNSEQCTL_DEFAULT (0x00000000ul) +#define DMA_DNSEQCTL_DEFAULT (0x00000000ul) +#define DMA_RCFGCTL_DEFAULT (0x00000000ul) + +/***************** Bits definition for DMA_INTSTAT0 register ****************/ +#define DMA_INTSTAT0_TRNERR_Pos (0U) /*!< DMA_INTSTAT0: TRNERR Position */ +#define DMA_INTSTAT0_REQERR_Pos (16U) /*!< DMA_INTSTAT0: REQERR Position */ + +/***************** Bits definition for DMA_INTSTAT1 register ****************/ +#define DMA_INTSTAT1_TC_Pos (0U) /*!< DMA_INTSTAT1: TC Position */ +#define DMA_INTSTAT1_BTC_Pos (16U) /*!< DMA_INTSTAT1: BTC Position */ + +/***************** Bits definition for DMA_INTMASK0 register ****************/ +#define DMA_INTMASK0_MSKTRNERR_Pos (0U) /*!< DMA_INTMASK0: MSKTRNERR Position */ +#define DMA_INTMASK0_MSKREQERR_Pos (16U) /*!< DMA_INTMASK0: MSKREQERR Position */ + +/***************** Bits definition for DMA_INTMASK1 register ****************/ +#define DMA_INTMASK1_MSKTC_Pos (0U) /*!< DMA_INTMASK1: MSKTC Position */ +#define DMA_INTMASK1_MSKBTC_Pos (16U) /*!< DMA_INTMASK1: MSKBTC Position */ + +/***************** Bits definition for DMA_INTCLR0 register *****************/ +#define DMA_INTCLR0_CLRTRNERR_Pos (0U) /*!< DMA_INTCLR0: CLRTRNERR Position */ +#define DMA_INTCLR0_CLRREQERR_Pos (16U) /*!< DMA_INTCLR0: CLRREQERR Position */ + +/***************** Bits definition for DMA_INTCLR1 register *****************/ +#define DMA_INTCLR1_CLRTC_Pos (0U) /*!< DMA_INTCLR1: CLRTC Position */ +#define DMA_INTCLR1_CLRBTC_Pos (16U) /*!< DMA_INTCLR1: CLRBTC Position */ + +/******************* Bits definition for DMA_CHEN register ******************/ +#define DMA_CHEN_CHEN_Pos (0U) /*!< DMA_CHEN: CHEN Position */ + +/************** Bits definition for DMA_DTCTLx(x=0~3) register **************/ +#define DMA_DTCTL_BLKSIZE_Pos (0ul) /*!< DMA_DTCTLx: BLKSIZE Position */ +#define DMA_DTCTL_BLKSIZE_Msk (0x3FFul << DMA_DTCTL_BLKSIZE_Pos) /*!< DMA_DTCTLx: BLKSIZE Mask 0x000003FF */ +#define DMA_DTCTL_BLKSIZE (DMA_DTCTL_BLKSIZE_Msk) + +#define DMA_DTCTL_CNT_Pos (16ul) /*!< DMA_DTCTLx: CNT Position */ +#define DMA_DTCTL_CNT_Msk (0xFFFFul << DMA_DTCTL_CNT_Pos) /*!< DMA_DTCTLx: CNT Mask 0xFFFF0000 */ +#define DMA_DTCTL_CNT (DMA_DTCTL_CNT_Msk) + +/*************** Bits definition for DMA_RPTx(x=0~3) register ***************/ +#define DMA_RPT_SRPT_Pos (0ul) /*!< DMA_RPTx: SRPT Position */ +#define DMA_RPT_SRPT_Msk (0x3FFul << DMA_RPT_SRPT_Pos) /*!< DMA_RPTx: SRPT Mask 0x000003FF */ +#define DMA_RPT_SRPT (DMA_RPT_SRPT_Msk) + +#define DMA_RPT_DRPT_Pos (16ul) /*!< DMA_RPTx: DRPT Position */ +#define DMA_RPT_DRPT_Msk (0x3FFul << DMA_RPT_DRPT_Pos) /*!< DMA_RPTx: DRPT Mask 0x03FF0000 */ +#define DMA_RPT_DRPT (DMA_RPT_DRPT_Msk) + +/*************** Bits definition for DMA_RPTBx(x=0~3) register ***************/ +#define DMA_RPTB_SRPTB_Pos (0ul) /*!< DMA_RPTBx: SRPTB Position */ +#define DMA_RPTB_SRPTB_Msk (0x3FFul << DMA_RPTB_SRPTB_Pos) /*!< DMA_RPTBx: SRPTB Mask 0x000003FF */ +#define DMA_RPTB_SRPTB (DMA_RPTB_SRPTB_Msk) + +#define DMA_RPTB_DRPTB_Pos (16ul) /*!< DMA_RPTBx: DRPTB Position */ +#define DMA_RPTB_DRPTB_Msk (0x3FFul << DMA_RPTB_DRPTB_Pos) /*!< DMA_RPTBx: DRPTB Mask 0x03FF0000 */ +#define DMA_RPTB_DRPTB (DMA_RPTB_DRPTB_Msk) + +/************* Bits definition for DMA_SNSEQCTLx(x=0~3) register ************/ +#define DMA_SNSEQCTL_SOFFSET_Pos (0ul) /*!< DMA_SNSEQCTLx: SOFFSET Position */ +#define DMA_SNSEQCTL_SOFFSET_Msk (0xFFFFFul << DMA_SNSEQCTL_SOFFSET_Pos) /*!< DMA_SNSEQCTLx: SOFFSET Mask 0x000FFFFF */ +#define DMA_SNSEQCTL_SOFFSET (DMA_SNSEQCTL_SOFFSET_Msk) + +#define DMA_SNSEQCTL_SNSCNT_Pos (20ul) /*!< DMA_SNSEQCTLx: SNSCNT Position */ +#define DMA_SNSEQCTL_SNSCNT_Msk (0xFFFul << DMA_SNSEQCTL_SNSCNT_Pos) /*!< DMA_SNSEQCTLx: SNSCNT Mask 0xFFF00000 */ +#define DMA_SNSEQCTL_SNSCNT (DMA_SNSEQCTL_SNSCNT_Msk) + +/************* Bits definition for DMA_SNSEQCTLBx(x=0~3) register ************/ +#define DMA_SNSEQCTLB_SNSDIST_Pos (0ul) /*!< DMA_SNSEQCTLBx: SNSDIST Position */ +#define DMA_SNSEQCTLB_SNSDIST_Msk (0xFFFFFul << DMA_SNSEQCTLB_SNSDIST_Pos) /*!< DMA_SNSEQCTLBx: SNSDIST Mask 0x000FFFFF */ +#define DMA_SNSEQCTLB_SNSDIST (DMA_SNSEQCTLB_SNSDIST_Msk) + +#define DMA_SNSEQCTLB_SNSCNTB_Pos (20ul) /*!< DMA_SNSEQCTLBx: SNSCNTB Position */ +#define DMA_SNSEQCTLB_SNSCNTB_Msk (0xFFFul << DMA_SNSEQCTLB_SNSCNTB_Pos) /*!< DMA_SNSEQCTLBx: SNSCNTB Mask 0xFFF00000 */ +#define DMA_SNSEQCTLB_SNSCNTB (DMA_SNSEQCTLB_SNSCNTB_Msk) + +/************* Bits definition for DMA_DNSEQCTLx(x=0~3) register ************/ +#define DMA_DNSEQCTL_DOFFSET_Pos (0ul) /*!< DMA_DNSEQCTLx: DOFFSET Position */ +#define DMA_DNSEQCTL_DOFFSET_Msk (0xFFFFFul << DMA_DNSEQCTL_DOFFSET_Pos) /*!< DMA_DNSEQCTLx: DOFFSET Mask 0x000FFFFF */ +#define DMA_DNSEQCTL_DOFFSET (DMA_DNSEQCTL_DOFFSET_Msk) + +#define DMA_DNSEQCTL_DNSCNT_Pos (20ul) /*!< DMA_DNSEQCTLx: DNSCNT Position */ +#define DMA_DNSEQCTL_DNSCNT_Msk (0xFFFul << DMA_DNSEQCTL_DNSCNT_Pos) /*!< DMA_DNSEQCTLx: DNSCNT Mask 0xFFF00000 */ +#define DMA_DNSEQCTL_DNSCNT (DMA_DNSEQCTL_DNSCNT_Msk) + +/************* Bits definition for DMA_DNSEQCTLx(x=0~3) register ************/ +#define DMA_DNSEQCTLB_DNSDIST_Pos (0ul) /*!< DMA_DNSEQCTLBx: DNSDIST Position */ +#define DMA_DNSEQCTLB_DNSDIST_Msk (0xFFFFFul << DMA_DNSEQCTLB_DNSDIST_Pos) /*!< DMA_DNSEQCTLBx: DNSDIST Mask 0x000FFFFF */ +#define DMA_DNSEQCTLB_DNSDIST (DMA_DNSEQCTLB_DNSDIST_Msk) + +#define DMA_DNSEQCTLB_DNSCNTB_Pos (20ul) /*!< DMA_DNSEQCTLBx: DNSCNTB Position */ +#define DMA_DNSEQCTLB_DNSCNTB_Msk (0xFFFul << DMA_DNSEQCTLB_DNSCNTB_Pos) /*!< DMA_DNSEQCTLBx: DNSCNTB Mask 0xFFF00000 */ +#define DMA_DNSEQCTLB_DNSCNTB (DMA_DNSEQCTLB_DNSCNTB_Msk) + +/**************** Bits definition for DMA_LLPx(x=0~7) register **************/ +#define DMA_LLP_LLP_Pos (2ul) /*!< DMA_LLPx: LLP Position */ +#define DMA_LLP_LLP_Msk (0x3FFFFFFFul << DMA_LLP_LLP_Pos) /*!< DMA_LLPx: LLP Mask 0xFFFFFFC */ +#define DMA_LLP_LLP (DMA_LLP_LLP_Msk) + +/*************** Bits definition for DMA_CHxCTL(x=0~3) register *************/ +#define DMA_CHCTL_SINC_Pos (0ul) /*!< DMA_CHxCTL: SINC Position */ +#define DMA_CHCTL_SINC_Msk (0x3ul << DMA_CHCTL_SINC_Pos) /*!< DMA_CHxCTL: SINC Mask 0x00000003 */ +#define DMA_CHCTL_SINC (DMA_CHCTL_SINC_Msk) + +#define DMA_CHCTL_DINC_Pos (2ul) /*!< DMA_CHxCTL: DINC Position */ +#define DMA_CHCTL_DINC_Msk (0x3ul << DMA_CHCTL_DINC_Pos) /*!< DMA_CHxCTL: DINC Mask 0x0000000C */ +#define DMA_CHCTL_DINC (DMA_CHCTL_DINC_Msk) + +#define DMA_CHCTL_SRPTEN_Pos (4ul) /*!< DMA_CHxCTL: SRPTEN Position */ +#define DMA_CHCTL_SRPTEN_Msk (0x1ul << DMA_CHCTL_SRPTEN_Pos) /*!< DMA_CHxCTL: SRPTEN Mask 0x00000010 */ +#define DMA_CHCTL_SRPTEN (DMA_CHCTL_SRPTEN_Msk) + +#define DMA_CHCTL_DRPTEN_Pos (5ul) /*!< DMA_CHxCTL: DRPTEN Position */ +#define DMA_CHCTL_DRPTEN_Msk (0x1ul << DMA_CHCTL_DRPTEN_Pos) /*!< DMA_CHxCTL: DRPTEN Mask 0x00000020 */ +#define DMA_CHCTL_DRPTEN (DMA_CHCTL_DRPTEN_Msk) + +#define DMA_CHCTL_SNSEQEN_Pos (6ul) /*!< DMA_CHxCTL: SNSEQEN Position */ +#define DMA_CHCTL_SNSEQEN_Msk (0x1ul << DMA_CHCTL_SNSEQEN_Pos) /*!< DMA_CHxCTL: SNSEQEN Mask 0x00000040 */ +#define DMA_CHCTL_SNSEQEN (DMA_CHCTL_SNSEQEN_Msk) + +#define DMA_CHCTL_DNSEQEN_Pos (7ul) /*!< DMA_CHxCTL: DNSEQEN Position */ +#define DMA_CHCTL_DNSEQEN_Msk (0x1ul << DMA_CHCTL_DNSEQEN_Pos) /*!< DMA_CHxCTL: DNSEQEN Mask 0x00000080 */ +#define DMA_CHCTL_DNSEQEN (DMA_CHCTL_DNSEQEN_Msk) + +#define DMA_CHCTL_HSIZE_Pos (8ul) /*!< DMA_CHxCTL: HSIZE Position */ +#define DMA_CHCTL_HSIZE_Msk (0x3ul << DMA_CHCTL_HSIZE_Pos) /*!< DMA_CHxCTL: HSIZE Mask 0x00000300 */ +#define DMA_CHCTL_HSIZE (DMA_CHCTL_HSIZE_Msk) + +#define DMA_CHCTL_LLPEN_Pos (10ul) /*!< DMA_CHxCTL: LLPEN Position */ +#define DMA_CHCTL_LLPEN_Msk (0x1ul << DMA_CHCTL_LLPEN_Pos) /*!< DMA_CHxCTL: LLPEN Mask 0x00000400 */ +#define DMA_CHCTL_LLPEN (DMA_CHCTL_LLPEN_Msk) + +#define DMA_CHCTL_LLPRUN_Pos (11ul) /*!< DMA_CHxCTL: LLPRUN Position */ +#define DMA_CHCTL_LLPRUN_Msk (0x1ul << DMA_CHCTL_LLPRUN_Pos) /*!< DMA_CHxCTL: LLPRUN Mask 0x00000800 */ +#define DMA_CHCTL_LLPRUN (DMA_CHCTL_LLPRUN_Msk) + +#define DMA_CHCTL_IE_Pos (12ul) /*!< DMA_CHxCTL: IE Position */ +#define DMA_CHCTL_IE_Msk (0x1ul << DMA_CHCTL_IE_Pos) /*!< DMA_CHxCTL: IE Mask 0x00001000 */ +#define DMA_CHCTL_IE (DMA_CHCTL_IE_Msk) + +/*********************** DMA REGISTERx(x=0~3) register **********************/ +#define _DMA_CH_REG_OFFSET(ch) ((ch) * 0x40ul) +#define _DMA_CH_REG(reg_base, ch) (*(volatile uint32_t *)((uint32_t)(reg_base) + _DMA_CH_REG_OFFSET(ch))) + +#define WRITE_DMA_CH_REG(reg_base, ch, val) (_DMA_CH_REG((reg_base), (ch)) = (val)) +#define READ_DMA_CH_REG(reg_base, ch) (_DMA_CH_REG((reg_base), (ch))) + +#define SET_DMA_CH_REG_BIT(reg_base, ch, pos) (_DMA_CH_REG((reg_base), (ch)) |= (1ul << (pos))) +#define CLR_DMA_CH_REG_BIT(reg_base, ch, pos) (_DMA_CH_REG((reg_base), (ch)) &= (~(1ul << (pos)))) + +#define WRITE_DMA_CH_TRGSEL(reg_base, ch, val) ((*(volatile uint32_t *)((uint32_t)(reg_base) + (ch) * 4ul)) = (val)) + +#define MODIFY_DMA_CH_REG(reg_base, ch, msk, val) {do { \ + WRITE_DMA_CH_REG((reg_base), (ch), ((READ_DMA_CH_REG((reg_base), (ch)) & (~(msk))) | ((val) << (msk##_Pos)))); \ +} while(0);} + +/*! Parameter valid check for Dmac register pointer. */ +#define IS_VALID_DMA_REG(x) \ +( (M4_DMA1 == (x)) || \ + (M4_DMA2 == (x))) + +/*! Parameter valid check for Dmac Channel. */ +#define IS_VALID_CH(x) \ +( (DmaCh0 == (x)) || \ + (DmaCh1 == (x)) || \ + (DmaCh2 == (x)) || \ + (DmaCh3 == (x))) + +/*! Parameter valid check for Dmac irq selection. */ +#define IS_VALID_IRQ_SEL(x) \ +( (TrnErrIrq == (x)) || \ + (TrnReqErrIrq == (x)) || \ + (TrnCpltIrq == (x)) || \ + (BlkTrnCpltIrq == (x))) + +/*! Parameter valid check for Dmac re_config count mode. */ +#define IS_VALID_CNT_MODE(x) \ +( (CntFix == (x)) || \ + (CntSrcAddr == (x)) || \ + (CntDesAddr == (x))) + +/*! Parameter valid check for Dmac re_config source address mode. */ +#define IS_VALID_SADDR_MODE(x) \ +( (SaddrFix == (x)) || \ + (SaddrNseq == (x)) || \ + (SaddrRep == (x))) + +/*! Parameter valid check for Dmac re_config destination address mode. */ +#define IS_VALID_DADDR_MODE(x) \ +( (DaddrFix == (x)) || \ + (DaddrNseq == (x)) || \ + (DaddrRep == (x))) + +/*! Parameter valid check for Dmac status. */ +#define IS_VALID_DMA_STA(x) \ +( (DmaSta == (x)) || \ + (ReCfgSta == (x)) || \ + (DmaCh0Sta == (x)) || \ + (DmaCh1Sta == (x)) || \ + (DmaCh2Sta == (x)) || \ + (DmaCh3Sta == (x))) + +/*! Parameter valid check for Dmac transfer data width. */ +#define IS_VALID_TRN_WIDTH(x) \ +( (Dma8Bit == (x)) || \ + (Dma16Bit == (x)) || \ + (Dma32Bit == (x))) + +/*! Parameter valid check for Dmac address mode. */ +#define IS_VALID_ADDR_MODE(x) \ +( (AddressFix == (x)) || \ + (AddressIncrease == (x)) || \ + (AddressDecrease == (x))) + +/*! Parameter valid check for Dmac link-list-pointer mode. */ +#define IS_VALID_LLP_MODE(x) \ +( (LlpWaitNextReq == (x)) || \ + (LlpRunNow == (x))) + +/*! Parameter validity check for DMA common trigger. */ +#define IS_DMA_COM_TRIGGER(x) \ +( ((x) == DmaComTrigger_1) || \ + ((x) == DmaComTrigger_2) || \ + ((x) == DmaComTrigger_1_2)) + +/*! Parameter valid check for Dmac transfer block size. */ +#define IS_VALID_BLKSIZE(x) \ +( !((x) & (uint16_t)(~(DMA_DTCTL_BLKSIZE_Msk >> DMA_DTCTL_BLKSIZE_Pos)))) + +/*! Parameter valid check for Dmac transfer count. */ +#define IS_VALID_TRNCNT(x) \ +( !((x) & ~(DMA_DTCTL_CNT_Msk >> DMA_DTCTL_CNT_Pos))) + +/*! Parameter valid check for Dmac source repeat size. */ +#define IS_VALID_SRPT_SIZE(x) \ +( !((x) & ~(DMA_RPT_SRPT_Msk >> DMA_RPT_SRPT_Pos))) + +/*! Parameter valid check for Dmac destination repeat size. */ +#define IS_VALID_DRPT_SIZE(x) \ +( !((x) & ~(DMA_RPT_DRPT_Msk >> DMA_RPT_DRPT_Pos))) + +/*! Parameter valid check for Dmac source repeatB size. */ +#define IS_VALID_SRPTB_SIZE(x) \ +( !((x) & ~(DMA_RPTB_SRPTB_Msk >> DMA_RPTB_SRPTB_Pos))) + +/*! Parameter valid check for Dmac destinationB repeat size. */ +#define IS_VALID_DRPTB_SIZE(x) \ +( !((x) & ~(DMA_RPTB_DRPTB_Msk >> DMA_RPTB_DRPTB_Pos))) + +/*! Parameter valid check for Dmac source no-sequence count. */ +#define IS_VALID_SNSCNT(x) \ +( !((x) & ~(DMA_SNSEQCTL_SNSCNT_Msk >> DMA_SNSEQCTL_SNSCNT_Pos))) + +/*! Parameter valid check for Dmac source no-sequence offset. */ +#define IS_VALID_SNSOFFSET(x) \ +( !((x) & ~(DMA_SNSEQCTL_SOFFSET_Msk >> DMA_SNSEQCTL_SOFFSET_Pos))) + +/*! Parameter valid check for Dmac source no-sequence countB. */ +#define IS_VALID_SNSCNTB(x) \ +( !((x) & ~(DMA_SNSEQCTLB_SNSCNTB_Msk >> DMA_SNSEQCTLB_SNSCNTB_Pos))) + +/*! Parameter valid check for Dmac source no-sequence distance. */ +#define IS_VALID_SNSDIST(x) \ +( !((x) & ~(DMA_SNSEQCTLB_SNSDIST_Msk >> DMA_SNSEQCTLB_SNSDIST_Pos))) + +/*! Parameter valid check for Dmac destination no-sequence count. */ +#define IS_VALID_DNSCNT(x) \ +( !((x) & ~(DMA_DNSEQCTL_DNSCNT_Msk >> DMA_DNSEQCTL_DNSCNT_Pos))) + +/*! Parameter valid check for Dmac destination no-sequence offset. */ +#define IS_VALID_DNSOFFSET(x) \ +( !((x) & ~(DMA_DNSEQCTL_DOFFSET_Msk >> DMA_DNSEQCTL_DOFFSET_Pos))) + +/*! Parameter valid check for Dmac destination no-sequence countB. */ +#define IS_VALID_DNSCNTB(x) \ +( !((x) & ~(DMA_DNSEQCTLB_DNSCNTB_Msk >> DMA_DNSEQCTLB_DNSCNTB_Pos))) + +/*! Parameter valid check for Dmac destination no-sequence distance. */ +#define IS_VALID_DNSDIST(x) \ +( !((x) & ~(DMA_DNSEQCTLB_DNSDIST_Msk >> DMA_DNSEQCTLB_DNSDIST_Pos))) + +/*! Parameter valid check for Dmac link-list-pointer. */ +#define IS_VALID_LLP(x) (!((x) & ~DMA_LLP_LLP_Msk)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ +static volatile uint8_t DmaChEnState = DMA_IDLE; + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Enable or disable the dma. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] enNewState The new state of dma + ** \arg Enable Enable dma. + ** \arg Disable Disable dma. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void DMA_Cmd(M4_DMA_TypeDef* pstcDmaReg, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcDmaReg->EN_f.EN = enNewState; +} + +/** + ******************************************************************************* + ** \brief Enable the specified dma interrupt. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enIrqSel The specified dma flag. + ** \arg TrnErrIrq The DMA transfer error interrupt. + ** \arg TrnReqErrIrq DMA transfer req over error interrupt. + ** \arg TrnCpltIrq DMA transfer completion interrupt. + ** \arg BlkTrnCpltIrq DMA block completion interrupt. + ** + ** \retval Ok Interrupt enabled normally. + ** \retval ErrorInvalidParameter u8Ch or enIrqSel is invalid. + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_EnableIrq(M4_DMA_TypeDef* pstcDmaReg, + uint8_t u8Ch, + en_dma_irq_sel_t enIrqSel) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_IRQ_SEL(enIrqSel)); + + if(!IS_VALID_CH(u8Ch)) + { + enRet = ErrorInvalidParameter; + } + else + { + switch(enIrqSel) + { + case TrnErrIrq: + pstcDmaReg->INTMASK0 &= ~(1ul << (u8Ch + DMA_INTMASK0_MSKTRNERR_Pos)); + break; + case TrnReqErrIrq: + pstcDmaReg->INTMASK0 &= ~(1ul << (u8Ch + DMA_INTMASK0_MSKREQERR_Pos)); + break; + case TrnCpltIrq: + pstcDmaReg->INTMASK1 &= ~(1ul << (u8Ch + DMA_INTMASK1_MSKTC_Pos)); + break; + case BlkTrnCpltIrq: + pstcDmaReg->INTMASK1 &= ~(1ul << (u8Ch + DMA_INTMASK1_MSKBTC_Pos)); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable the specified dma interrupt. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enIrqSel The specified dma flag. + ** \arg TrnErrIrq The DMA transfer error interrupt. + ** \arg TrnReqErrIrq DMA transfer req over error interrupt. + ** \arg TrnCpltIrq DMA transfer completion interrupt. + ** \arg BlkTrnCpltIrq DMA block completion interrupt. + ** + ** \retval Ok Interrupt disabled normally. + ** \retval ErrorInvalidParameter u8Ch or enIrqSel is invalid. + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_DisableIrq(M4_DMA_TypeDef* pstcDmaReg, + uint8_t u8Ch, + en_dma_irq_sel_t enIrqSel) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_IRQ_SEL(enIrqSel)); + + if(!IS_VALID_CH(u8Ch)) + { + enRet = ErrorInvalidParameter; + } + else + { + switch(enIrqSel) + { + case TrnErrIrq: + pstcDmaReg->INTMASK0 |= (1ul << (u8Ch + DMA_INTMASK0_MSKTRNERR_Pos)); + break; + case TrnReqErrIrq: + pstcDmaReg->INTMASK0 |= (1ul << (u8Ch + DMA_INTMASK0_MSKREQERR_Pos)); + break; + case TrnCpltIrq: + pstcDmaReg->INTMASK1 |= (1ul << (u8Ch + DMA_INTMASK1_MSKTC_Pos)); + break; + case BlkTrnCpltIrq: + pstcDmaReg->INTMASK1 |= (1ul << (u8Ch + DMA_INTMASK1_MSKBTC_Pos)); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the specified dma interrupt flag status. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enIrqSel The specified dma flag. + ** \arg TrnErrIrq The DMA transfer error interrupt. + ** \arg TrnReqErrIrq DMA transfer req over error interrupt. + ** \arg TrnCpltIrq DMA transfer completion interrupt. + ** \arg BlkTrnCpltIrq DMA block completion interrupt. + ** + ** \retval the specified dma flag status + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t DMA_GetIrqFlag(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_irq_sel_t enIrqSel) +{ + uint32_t u32IntStat = 0ul; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_IRQ_SEL(enIrqSel)); + + switch(enIrqSel) + { + case TrnErrIrq: + u32IntStat = (pstcDmaReg->INTSTAT0 & (1ul << (u8Ch \ + + DMA_INTSTAT0_TRNERR_Pos))); + break; + case TrnReqErrIrq: + u32IntStat = (pstcDmaReg->INTSTAT0 & (1ul << (u8Ch \ + + DMA_INTSTAT0_REQERR_Pos))); + break; + case TrnCpltIrq: + u32IntStat = (pstcDmaReg->INTSTAT1 & (1ul << (u8Ch \ + + DMA_INTSTAT1_TC_Pos))); + break; + case BlkTrnCpltIrq: + u32IntStat = (pstcDmaReg->INTSTAT1 & (1ul << (u8Ch \ + + DMA_INTSTAT1_BTC_Pos))); + break; + default: + break; + } + + return (u32IntStat ? Set:Reset); +} + +/** + ******************************************************************************* + ** \brief Clear the specified dma interrupt. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enIrqSel The specified dma flag. + ** \arg TrnErrIrq The DMA transfer error interrupt. + ** \arg TrnReqErrIrq DMA transfer req over error interrupt. + ** \arg TrnCpltIrq DMA transfer completion interrupt. + ** \arg BlkTrnCpltIrq DMA block completion interrupt. + ** + ** \retval Ok Clear flag successfully. + ** \retval ErrorInvalidParameter u8Ch or enIrqSel is invalid. + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_ClearIrqFlag(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_dma_irq_sel_t enIrqSel) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_IRQ_SEL(enIrqSel)); + + if(!IS_VALID_CH(u8Ch)) + { + enRet = ErrorInvalidParameter; + } + else + { + switch(enIrqSel) + { + case TrnErrIrq: + pstcDmaReg->INTCLR0 |= (1ul << (u8Ch + DMA_INTCLR0_CLRTRNERR_Pos)); + break; + case TrnReqErrIrq: + pstcDmaReg->INTCLR0 |= (1ul << (u8Ch + DMA_INTCLR0_CLRREQERR_Pos)); + break; + case TrnCpltIrq: + pstcDmaReg->INTCLR1 |= (1ul << (u8Ch + DMA_INTCLR1_CLRTC_Pos)); + break; + case BlkTrnCpltIrq: + pstcDmaReg->INTCLR1 |= (1ul << (u8Ch + DMA_INTCLR1_CLRBTC_Pos)); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enNewState The new state of dma + ** \arg Enable Enable dma. + ** \arg Disable Disable dma. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_ChannelCmd(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_functional_state_t enNewState) +{ + uint16_t u16Timeout = 0u; + uint32_t u32Temp = 0u; + uint32_t u32Cnt; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(DMA_IDLE == DmaChEnState) + { + DmaChEnState = DMA_BUSY; + + /* Read back channel enable register except current channel */ + u32Temp = (pstcDmaReg->CHEN & (~(1ul << u8Ch))); + if(0ul != u32Temp) + { + if(((pstcDmaReg->CHEN & 0x01ul) == 0x01ul) && (u8Ch != DmaCh0)) + { + u32Cnt = pstcDmaReg->DTCTL0_f.CNT; + if(pstcDmaReg->MONDTCTL0_f.CNT > DMA_CNT) + { + /* not wait. */ + } + else if(pstcDmaReg->MONDTCTL0_f.CNT < u32Cnt) + { + while(Reset != (pstcDmaReg->CHEN & 0x01ul)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT1) + { + DmaChEnState = DMA_IDLE; + return ErrorTimeout; + } + } + } + } + if(((pstcDmaReg->CHEN & 0x02ul) == 0x02ul) && (u8Ch != DmaCh1)) + { + u32Cnt = pstcDmaReg->DTCTL1_f.CNT; + if(pstcDmaReg->MONDTCTL1_f.CNT > DMA_CNT) + { + /* not wait. */ + } + else if(pstcDmaReg->MONDTCTL1_f.CNT < u32Cnt) + { + u16Timeout = 0u; + while(Reset != (pstcDmaReg->CHEN & 0x02ul)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT1) + { + DmaChEnState = DMA_IDLE; + return ErrorTimeout; + } + } + } + } + if(((pstcDmaReg->CHEN & 0x04ul) == 0x04ul) && (u8Ch != DmaCh2)) + { + u16Timeout = 0u; + u32Cnt = pstcDmaReg->DTCTL2_f.CNT; + if(pstcDmaReg->MONDTCTL2_f.CNT > DMA_CNT) + { + /* not wait. */ + } + else if(pstcDmaReg->MONDTCTL2_f.CNT < u32Cnt) + { + while(Reset != (pstcDmaReg->CHEN & 0x04ul)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT1) + { + DmaChEnState = DMA_IDLE; + return ErrorTimeout; + } + } + } + } + if(((pstcDmaReg->CHEN & 0x08ul) == 0x08ul) && (u8Ch != DmaCh3)) + { + u16Timeout = 0u; + u32Cnt = pstcDmaReg->DTCTL3_f.CNT; + if(pstcDmaReg->MONDTCTL3_f.CNT > DMA_CNT) + { + /* not wait. */ + } + else if(pstcDmaReg->MONDTCTL3_f.CNT < u32Cnt) + { + while(Reset != (pstcDmaReg->CHEN & 0x08ul)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT1) + { + DmaChEnState = DMA_IDLE; + return ErrorTimeout; + } + } + } + } + } + + switch(enNewState) + { + case Enable: + pstcDmaReg->CHEN |= (1ul << (u8Ch + DMA_CHEN_CHEN_Pos)) & 0x0fu; + break; + case Disable: + pstcDmaReg->CHEN &= (~(1ul << (u8Ch + DMA_CHEN_CHEN_Pos))) & 0x0fu; + break; + } + + DmaChEnState = DMA_IDLE; + return Ok; + } + + return Error; +} + +/** + ******************************************************************************* + ** \brief DMA repeat & non_sequence Re_Config control configuration. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcDmaReCfg The configuration struct of DMA. + ** \arg u16SrcRptBSize The source repeat size. + ** \arg u16SrcRptBSize; The source repeat size. + ** \arg u16DesRptBSize; The destination repeat size. + ** \arg enSaddrMd; DMA re_config source address mode. + ** \arg enDaddrMd; DMA re_config destination address mode. + ** \arg enCntMd; DMA re_config count mode. + ** \arg stcSrcNseqBCfg; The source no_sequence re_config. + ** \arg stcDesNseqBCfg; The destination no_sequence re_config. + ** + ** \retval None + ** + ** \note This function should be used while DMA disable. + ** + ******************************************************************************/ +void DMA_InitReConfig(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_recfg_ctl_t* pstcDmaReCfg) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_CNT_MODE(pstcDmaReCfg->enCntMd)); + DDL_ASSERT(IS_VALID_DADDR_MODE(pstcDmaReCfg->enDaddrMd)); + DDL_ASSERT(IS_VALID_SADDR_MODE(pstcDmaReCfg->enSaddrMd)); + + pstcDmaReg->RCFGCTL_f.SARMD = pstcDmaReCfg->enSaddrMd; + pstcDmaReg->RCFGCTL_f.DARMD = pstcDmaReCfg->enDaddrMd; + pstcDmaReg->RCFGCTL_f.CNTMD = pstcDmaReCfg->enCntMd; + pstcDmaReg->RCFGCTL_f.RCFGCHS = u8Ch; + + if(SaddrRep == pstcDmaReCfg->enSaddrMd) + { + /* Set DMA source repeat size B. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch, DMA_RPT_SRPT, (uint32_t)pstcDmaReCfg->u16SrcRptBSize); + } + else if(SaddrNseq == pstcDmaReCfg->enSaddrMd) + { + /* Set DMA source no_sequence B. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch, DMA_SNSEQCTL_SOFFSET, pstcDmaReCfg->stcSrcNseqBCfg.u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch, DMA_SNSEQCTL_SNSCNT, (uint32_t)pstcDmaReCfg->stcSrcNseqBCfg.u16Cnt); + } + else + { + /* */ + } + + if(DaddrRep == pstcDmaReCfg->enDaddrMd) + { + /* Set DMA destination repeat size B. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch, DMA_RPT_DRPT, (uint32_t)pstcDmaReCfg->u16DesRptBSize); + } + else if(DaddrNseq == pstcDmaReCfg->enDaddrMd) + { + /* Set DMA destination no_sequence B. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch, DMA_DNSEQCTL_DOFFSET, pstcDmaReCfg->stcDesNseqBCfg.u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch, DMA_DNSEQCTL_DNSCNT, (uint32_t)pstcDmaReCfg->stcDesNseqBCfg.u16Cnt); + } + else + { + /* */ + } +} + +/** + ******************************************************************************* + ** \brief Disable or enable DMA Re_Config. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] enNewState The new state of dma + ** \arg Enable Enable dma. + ** \arg Disable Disable dma. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void DMA_ReCfgCmd(M4_DMA_TypeDef* pstcDmaReg, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcDmaReg->RCFGCTL_f.RCFGEN = enNewState; +} + +/** + ******************************************************************************* + ** \brief Configure DMA Re_Config LLP. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] u8Ch The specified dma channel. + ** + ** \param [in] enNewState The new state of dma + ** \arg Enable Enable dma. + ** \arg Disable Disable dma. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void DMA_ReCfgLlp(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcDmaReg->RCFGCTL_f.RCFGCHS = u8Ch; + pstcDmaReg->RCFGCTL_f.RCFGLLP = enNewState; +} + +/** + ******************************************************************************* + ** \brief Get the specified dma flag status. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 register + ** \arg M4_DMA2 DMAC unit 2 register + ** + ** \param [in] enDmaChFlag The specified dma flag. + ** \arg DmaSta The DMA status. + ** \arg ReCfgSta The DMA re_config stauts. + ** \arg DmaCh0Sta The DMA channel 0 status. + ** \arg DmaCh1Sta The DMA channel 1 status. + ** \arg DmaCh2Sta The DMA channel 2 status. + ** \arg DmaCh3Sta The DMA channel 3 status. + ** + ** \retval the specified dma flag status + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t DMA_GetChFlag(M4_DMA_TypeDef* pstcDmaReg, en_dma_ch_flag_t enDmaChFlag) +{ + uint32_t u32IntStat = 0ul; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_DMA_STA(enDmaChFlag)); + + switch(enDmaChFlag) + { + case DmaSta: + u32IntStat = pstcDmaReg->CHSTAT_f.DMAACT; + break; + case ReCfgSta: + u32IntStat = pstcDmaReg->CHSTAT_f.RCFGACT; + break; + case DmaCh0Sta: + u32IntStat = (pstcDmaReg->CHSTAT_f.CHACT & DMACH0); + break; + case DmaCh1Sta: + u32IntStat = (pstcDmaReg->CHSTAT_f.CHACT & DMACH1); + break; + case DmaCh2Sta: + u32IntStat = (pstcDmaReg->CHSTAT_f.CHACT & DMACH2); + break; + case DmaCh3Sta: + u32IntStat = (pstcDmaReg->CHSTAT_f.CHACT & DMACH3); + break; + default: + break; + } + return (u32IntStat ? Set:Reset); +} + +/** + ******************************************************************************* + ** \brief Set the source address of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 DMAC unit 2 registers + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u32Address The source address. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetSrcAddress(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint32_t u32Address) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + + WRITE_DMA_CH_REG(&pstcDmaReg->SAR0, u8Ch, u32Address); + + /* Ensure the address has been writed */ + while(u32Address != READ_DMA_CH_REG(&pstcDmaReg->MONSAR0, u8Ch)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + WRITE_DMA_CH_REG(&pstcDmaReg->SAR0, u8Ch, u32Address); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the destination address of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 DMAC unit 2 registers + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u32Address The destination address. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetDesAddress(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint32_t u32Address) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + + WRITE_DMA_CH_REG(&pstcDmaReg->DAR0, u8Ch, u32Address); + + /* Ensure the address has been writed */ + while(u32Address != READ_DMA_CH_REG(&pstcDmaReg->MONDAR0, u8Ch)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + WRITE_DMA_CH_REG(&pstcDmaReg->DAR0, u8Ch, u32Address); + } + } + + return enRet; + +} + + +/** + ******************************************************************************* + ** \brief Set the block size of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u16BlkSize The block size. + ** + ** \retval None. + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetBlockSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16BlkSize) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_BLKSIZE(u16BlkSize)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_BLKSIZE, (uint32_t)u16BlkSize); + + /* Ensure the block size has been writed */ + while(u16BlkSize != (uint16_t)(READ_DMA_CH_REG(&pstcDmaReg->MONDTCTL0, u8Ch) & DMA_DTCTL_BLKSIZE)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_BLKSIZE, (uint32_t)u16BlkSize); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the transfer count of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u16TrnCnt The transfer count. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetTransferCnt(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16TrnCnt) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_TRNCNT(u16TrnCnt)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_CNT, (uint32_t)u16TrnCnt); + + /* Ensure the transfer count has been writed */ + while(u16TrnCnt != ((READ_DMA_CH_REG(&pstcDmaReg->MONDTCTL0, u8Ch) & DMA_DTCTL_CNT) >> DMA_DTCTL_CNT_Pos)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_CNT, (uint32_t)u16TrnCnt); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the source repeat size of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u16Size The source repeat size. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetSrcRptSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_SRPT_SIZE(u16Size)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_SRPT, (uint32_t)u16Size); + + /* Ensure the source repeat size has been writed */ + while(u16Size != (uint16_t)(READ_DMA_CH_REG(&pstcDmaReg->MONRPT0, u8Ch) & DMA_RPT_SRPT)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_SRPT, (uint32_t)u16Size); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the destination repeat size of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u16Size The destination repeat size. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetDesRptSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_DRPT_SIZE(u16Size)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_DRPT, (uint32_t)u16Size); + + /* Ensure the destination repeat size has been writed */ + while(u16Size != ((READ_DMA_CH_REG(&pstcDmaReg->MONRPT0, u8Ch) & DMA_RPT_DRPT) >> DMA_RPT_DRPT_Pos)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_DRPT, (uint32_t)u16Size); + } + } + + return enRet; +} + + +/** + ******************************************************************************* + ** \brief Set the source repeat size of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u16Size The source repeat size. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetSrcRptbSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_SRPTB_SIZE(u16Size)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch, DMA_RPTB_SRPTB, (uint32_t)u16Size); + + /* Ensure the source repeat size has been writed */ + while(u16Size != (uint16_t)(READ_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch) & DMA_RPTB_SRPTB)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch, DMA_RPTB_SRPTB, (uint32_t)u16Size); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the destination repeat size of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u16Size The destination repeat size. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetDesRptBSize(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint16_t u16Size) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_DRPTB_SIZE(u16Size)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch, DMA_RPTB_DRPTB, (uint32_t)u16Size); + + /* Ensure the destination repeat size has been writed */ + while(u16Size != ((READ_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch) & DMA_RPTB_DRPTB) >> DMA_RPTB_DRPTB_Pos)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->RPTB0, u8Ch, DMA_RPTB_DRPTB, (uint32_t)u16Size); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the source no-sequence offset & count of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcSrcNseqCfg + ** \arg u32offset The source no-sequence offset. + ** \arg u16cnt The source no-sequence count. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetSrcNseqCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_nseq_cfg_t* pstcSrcNseqCfg) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_SNSOFFSET(pstcSrcNseqCfg->u32Offset)); + DDL_ASSERT(IS_VALID_SNSCNT(pstcSrcNseqCfg->u16Cnt)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, + DMA_SNSEQCTL_SOFFSET, pstcSrcNseqCfg->u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, + DMA_SNSEQCTL_SNSCNT, (uint32_t)pstcSrcNseqCfg->u16Cnt); + + /* Ensure the no-sequence offset & count has been writed */ + while((pstcSrcNseqCfg->u32Offset | ((uint32_t)pstcSrcNseqCfg->u16Cnt << DMA_SNSEQCTL_SNSCNT_Pos)) + != READ_DMA_CH_REG(&pstcDmaReg->MONSNSEQCTL0, u8Ch)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, + DMA_SNSEQCTL_SOFFSET, pstcSrcNseqCfg->u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, + DMA_SNSEQCTL_SNSCNT, (uint32_t)pstcSrcNseqCfg->u16Cnt); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the source no-sequence offset & count of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcSrcNseqBCfg + ** \arg u32NseqDist The source no-sequence distance. + ** \arg u16cntB The source no-sequence count. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetSrcNseqBCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_nseqb_cfg_t* pstcSrcNseqBCfg) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_SNSDIST(pstcSrcNseqBCfg->u32NseqDist)); + DDL_ASSERT(IS_VALID_SNSCNTB(pstcSrcNseqBCfg->u16CntB)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch, DMA_SNSEQCTLB_SNSDIST, pstcSrcNseqBCfg->u32NseqDist); + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch, DMA_SNSEQCTLB_SNSCNTB, (uint32_t)pstcSrcNseqBCfg->u16CntB); + + /* Ensure the no-sequence offset & count has been writed */ + while((pstcSrcNseqBCfg->u32NseqDist | ((uint32_t)pstcSrcNseqBCfg->u16CntB << DMA_SNSEQCTLB_SNSCNTB_Pos)) + != READ_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch, + DMA_SNSEQCTLB_SNSDIST, pstcSrcNseqBCfg->u32NseqDist); + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTLB0, u8Ch, + DMA_SNSEQCTLB_SNSCNTB, (uint32_t)pstcSrcNseqBCfg->u16CntB); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the destination no-sequence offset & count of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcDesNseqCfg + ** \arg u32offset The destination no-sequence offset. + ** \arg u16cnt The destination no-sequence count. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetDesNseqCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_nseq_cfg_t* pstcDesNseqCfg) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_DNSOFFSET(pstcDesNseqCfg->u32Offset)); + DDL_ASSERT(IS_VALID_DNSCNT(pstcDesNseqCfg->u16Cnt)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, DMA_DNSEQCTL_DOFFSET, pstcDesNseqCfg->u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, DMA_DNSEQCTL_DNSCNT, (uint32_t)pstcDesNseqCfg->u16Cnt); + + /* Ensure the no-sequence offset & count has been writed */ + while((pstcDesNseqCfg->u32Offset | ((uint32_t)pstcDesNseqCfg->u16Cnt << DMA_DNSEQCTL_DNSCNT_Pos)) + != READ_DMA_CH_REG(&pstcDmaReg->MONDNSEQCTL0, u8Ch)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, + DMA_DNSEQCTL_DOFFSET, pstcDesNseqCfg->u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, + DMA_DNSEQCTL_DNSCNT, (uint32_t)pstcDesNseqCfg->u16Cnt); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the destination no-sequence offset & count of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcDesNseqBCfg + ** \arg u32offset The destination no-sequence offset. + ** \arg u16cnt The destination no-sequence count. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetDesNseqBCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_nseqb_cfg_t* pstcDesNseqBCfg) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_DNSDIST(pstcDesNseqBCfg->u32NseqDist)); + DDL_ASSERT(IS_VALID_DNSCNTB(pstcDesNseqBCfg->u16CntB)); + + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch, DMA_DNSEQCTLB_DNSDIST, pstcDesNseqBCfg->u32NseqDist); + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch, DMA_DNSEQCTLB_DNSCNTB, (uint32_t)pstcDesNseqBCfg->u16CntB); + + /* Ensure the no-sequence offset & count has been writed */ + while((pstcDesNseqBCfg->u32NseqDist | ((uint32_t)pstcDesNseqBCfg->u16CntB << DMA_DNSEQCTLB_DNSCNTB_Pos)) + != READ_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch, + DMA_DNSEQCTLB_DNSDIST, pstcDesNseqBCfg->u32NseqDist); + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTLB0, u8Ch, + DMA_DNSEQCTLB_DNSCNTB, (uint32_t)pstcDesNseqBCfg->u16CntB); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set linked list pointer of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] u32Pointer The decriptor pointer. + ** + ** \retval None. + ** + ** \note None + ** + ******************************************************************************/ +en_result_t DMA_SetLLP(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, uint32_t u32Pointer) +{ + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_LLP(u32Pointer)); + + WRITE_DMA_CH_REG(&pstcDmaReg->LLP0, u8Ch, u32Pointer); + + /* Ensure the destination repeat size has been writed */ + while(u32Pointer != ((READ_DMA_CH_REG(&pstcDmaReg->LLP0, u8Ch) & DMA_LLP_LLP) >> DMA_LLP_LLP_Pos)) + { + u16Timeout++; + if(u16Timeout > DMATIMEOUT2) + { + enRet = ErrorTimeout; + } + else + { + WRITE_DMA_CH_REG(&pstcDmaReg->LLP0, u8Ch, u32Pointer); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set The DMA trigger source. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enSrc The DMA trigger source. + ** + ** \retval None. + ** + ** \note Before call this function, shoud ensure enable AOS. + ** + ******************************************************************************/ +void DMA_SetTriggerSrc(const M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, en_event_src_t enSrc) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + + if(M4_DMA1 == pstcDmaReg) + { + WRITE_DMA_CH_TRGSEL(&M4_AOS->DMA1_TRGSEL0,u8Ch,enSrc); + } + else if(M4_DMA2 == pstcDmaReg) + { + WRITE_DMA_CH_TRGSEL(&M4_AOS->DMA2_TRGSEL0,u8Ch,enSrc); + } + else + { + //else + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable DMA common trigger.. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** \param [in] u8Ch The specified dma channel. + ** \param [in] enComTrigger DMA common trigger selection. + ** \arg DmaComTrigger_1 + ** \arg DmaComTrigger_2 + ** \arg DmaComTrigger_1_2 + ** \param [in] enNewState Enable or disable the specified common trigger. + ** + ** \retval None. + ** + ******************************************************************************/ +void DMA_ComTriggerCmd(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + en_dma_com_trigger_t enComTrigger, en_functional_state_t enNewState) +{ + __IO uint32_t *TRGSELx; + uint32_t u32ComTrig = (uint32_t)enComTrigger; + + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_DMA_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if (M4_DMA1 == pstcDmaReg) + { + TRGSELx = (uint32_t *)((uint32_t)(&M4_AOS->DMA1_TRGSEL0) + u8Ch*4UL); + } + else + { + TRGSELx = (uint32_t *)((uint32_t)(&M4_AOS->DMA2_TRGSEL0) + u8Ch*4UL); + } + + if (Enable == enNewState) + { + *TRGSELx |= (u32ComTrig << 30u); + } + else + { + *TRGSELx &= ~(u32ComTrig << 30u); + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable DMA re-config common trigger.. + ** + ** \param [in] enComTrigger DMA common trigger selection. + ** \arg DmaComTrigger_1 + ** \arg DmaComTrigger_2 + ** \arg DmaComTrigger_1_2 + ** \param [in] enNewState Enable or disable the specified common trigger. + ** + ** \retval None. + ** + ******************************************************************************/ +void DMA_ReConfigComTriggerCmd(en_dma_com_trigger_t enComTrigger, en_functional_state_t enNewState) +{ + uint32_t u32ComTrig = (uint32_t)enComTrigger; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + DDL_ASSERT(IS_DMA_COM_TRIGGER(enComTrigger)); + + if (Enable == enNewState) + { + M4_AOS->DMA_TRGSELRC |= (u32ComTrig << 30u); + } + else + { + M4_AOS->DMA_TRGSELRC &= ~(u32ComTrig << 30u); + } +} +/** + ******************************************************************************* + ** \brief Set linked list pointer of the specified dma channel. + ** + ** \param [in] enSrc The DMA trigger source. + ** + ** \retval None. + ** + ** \note Before call this function, should ensure enable AOS. + ** + ******************************************************************************/ +void DMA_SetReConfigTriggerSrc(en_event_src_t enSrc) +{ + + M4_AOS->DMA_TRGSELRC_f.TRGSEL = enSrc; + +} +/** + ******************************************************************************* + ** \brief The configuration of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcChCfg The configuration pointer. + ** \arg enSrcInc The source address mode. + ** \arg enDesInc The destination address mode. + ** \arg enSrcRptEn The source repeat function(enable or disable). + ** \arg enDesRptEn The destination repeat function(enable or disable). + ** \arg enSrcNseqEn The source no_sequence function(enable or disable). + ** \arg enDesNseqEn The destination no_sequence function(enable or disable). + ** \arg enTrnWidth The transfer data width. + ** \arg enLlpEn The linked list pointer function(enable or disable). + ** \arg enLlpMd The linked list pointer mode. + ** \arg enIntEn The interrupt function(enable or disable). + ** + ** \retval None. + ** + ** \note None + ** + ******************************************************************************/ +void DMA_ChannelCfg(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_ch_cfg_t* pstcChCfg) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_ADDR_MODE(pstcChCfg->enSrcInc)); + DDL_ASSERT(IS_VALID_ADDR_MODE(pstcChCfg->enDesInc)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcChCfg->enSrcRptEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcChCfg->enDesRptEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcChCfg->enSrcNseqEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcChCfg->enDesNseqEn)); + DDL_ASSERT(IS_VALID_TRN_WIDTH(pstcChCfg->enTrnWidth)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcChCfg->enLlpEn)); + DDL_ASSERT(IS_VALID_LLP_MODE(pstcChCfg->enLlpMd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcChCfg->enIntEn)); + + /* Set the source address mode. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_SINC, pstcChCfg->enSrcInc); + /* Set the destination address mode. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_DINC, pstcChCfg->enDesInc); + /* Enable or disable source repeat function. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_SRPTEN, pstcChCfg->enSrcRptEn); + /* Enable or disable destination repeat function. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_DRPTEN, pstcChCfg->enDesRptEn); + /* Enable or disable source no_sequence function. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_SNSEQEN, pstcChCfg->enSrcNseqEn); + /* Enable or disable destination no_sequence function. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_DNSEQEN, pstcChCfg->enDesNseqEn); + /* Set the transfer data width. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_HSIZE, pstcChCfg->enTrnWidth); + /* Enable or disable linked list pointer no_sequence function. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_LLPEN, pstcChCfg->enLlpEn); + /* Set the linked list pointer mode. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_LLPRUN, pstcChCfg->enLlpMd); + /* Enable or disable channel interrupt function. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_IE, pstcChCfg->enIntEn); +} + +/** + ******************************************************************************* + ** \brief The configuration of the specified dma channel. + ** + ** \param [in] pstcDmaReg The pointer to dma register + ** \arg M4_DMA1 DMAC unit 1 registers + ** \arg M4_DMA2 + ** + ** \param [in] u8Ch The specified dma channel. + ** \param [in] pstcDmaCfg The configuration pointer. + ** \arg enSrcInc The source address mode. + ** \arg enDesInc The destination address mode. + ** \arg enSrcRptEn The source repeat function(enable or disable). + ** \arg enDesRptEn The destination repeat function(enable or disable). + ** \arg enSrcNseqEn The source no_sequence function(enable or disable). + ** \arg enDesNseqEn The destination no_sequence function(enable or disable). + ** \arg enTrnWidth The transfer data width. + ** \arg enLlpEn The linked list pointer function(enable or disable). + ** \arg enLlpMd The linked list pointer mode. + ** \arg enIntEn The interrupt function(enable or disable). + ** + ** \retval None. + ** + ** \note This function should be used after enable DMAx clk(PWC_Fcg0PeriphClockCmd) + ** and before channel enable. + ** + ******************************************************************************/ +void DMA_InitChannel(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch, + const stc_dma_config_t* pstcDmaCfg) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + DDL_ASSERT(IS_VALID_BLKSIZE(pstcDmaCfg->u16BlockSize)); + DDL_ASSERT(IS_VALID_TRNCNT(pstcDmaCfg->u16TransferCnt)); + DDL_ASSERT(IS_VALID_SRPT_SIZE(pstcDmaCfg->u16SrcRptSize)); + DDL_ASSERT(IS_VALID_DRPT_SIZE(pstcDmaCfg->u16DesRptSize)); + + /* Enable DMA. */ + DMA_Cmd(pstcDmaReg, Enable); + /* Disable DMA interrupt */ + CLR_DMA_CH_REG_BIT(&pstcDmaReg->CH0CTL , u8Ch, DMA_CHCTL_IE_Pos); + /* Set DMA source address. */ + WRITE_DMA_CH_REG(&pstcDmaReg->SAR0, u8Ch, pstcDmaCfg->u32SrcAddr); + /* Set DMA destination address. */ + WRITE_DMA_CH_REG(&pstcDmaReg->DAR0, u8Ch, pstcDmaCfg->u32DesAddr); + /* Set DMA transfer block size. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_BLKSIZE, (uint32_t)pstcDmaCfg->u16BlockSize); + /* Set DMA transfer count. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_CNT, (uint32_t)pstcDmaCfg->u16TransferCnt); + /* Set DMA source repeat size. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_SRPT, (uint32_t)pstcDmaCfg->u16SrcRptSize); + /* Set DMA destination repeat size. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_DRPT, (uint32_t)pstcDmaCfg->u16DesRptSize); + /* Set DMA source no_sequence. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, DMA_SNSEQCTL_SOFFSET, pstcDmaCfg->stcSrcNseqCfg.u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, DMA_SNSEQCTL_SNSCNT, (uint32_t)pstcDmaCfg->stcSrcNseqCfg.u16Cnt); + /* Set DMA destination no_sequence. */ + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, DMA_DNSEQCTL_DOFFSET, pstcDmaCfg->stcDesNseqCfg.u32Offset); + MODIFY_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, DMA_DNSEQCTL_DNSCNT, (uint32_t)pstcDmaCfg->stcDesNseqCfg.u16Cnt); + /* Set DMA linked list pointer. */ + WRITE_DMA_CH_REG(&pstcDmaReg->LLP0, u8Ch, pstcDmaCfg->u32DmaLlp); + /* Set DMA channel parameter. */ + DMA_ChannelCfg(pstcDmaReg, u8Ch, &pstcDmaCfg->stcDmaChCfg); +} + +void DMA_DeInit(M4_DMA_TypeDef* pstcDmaReg, uint8_t u8Ch) +{ + DDL_ASSERT(IS_VALID_DMA_REG(pstcDmaReg)); + DDL_ASSERT(IS_VALID_CH(u8Ch)); + + /* reset dma channel */ + WRITE_DMA_CH_REG(&pstcDmaReg->CH0CTL, u8Ch, DMA_CHCTL_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->DTCTL0, u8Ch, DMA_DTCTL_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->DAR0, u8Ch, DMA_DAR_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->SAR0, u8Ch, DMA_SAR_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->SNSEQCTL0, u8Ch, DMA_SNSEQCTL_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->DNSEQCTL0, u8Ch, DMA_DNSEQCTL_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->RPT0, u8Ch, DMA_RPT_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->LLP0, u8Ch, DMA_LLP_DEFAULT); + WRITE_DMA_CH_REG(&pstcDmaReg->RCFGCTL, u8Ch, DMA_RCFGCTL_DEFAULT); + + /* Set trigger source event max */ + DMA_SetTriggerSrc(pstcDmaReg, u8Ch, EVT_MAX); + /* disable channel */ + DMA_ChannelCmd(pstcDmaReg, u8Ch, Disable); +} + +#endif /* DDL_DMAC_ENABLE */ + +//@} // DmacGroup + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_efm.c b/driver/src/hc32f460_efm.c new file mode 100644 index 0000000..4625f3d --- /dev/null +++ b/driver/src/hc32f460_efm.c @@ -0,0 +1,942 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_efm.c + ** + ** A detailed description is available at + ** @link EfmGroup EFM description @endlink + ** + ** - 2018-10-29 CDT First version for Device Driver Library of EFM. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_efm.h" +#include "hc32f460_utility.h" + +#if (DDL_EFM_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup EfmGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define EFM_LOCK (0x00000000u) +#define EFM_UNLOCK (0x00000001u) +#define EFM_KEY1 (0x0123ul) +#define EFM_KEY2 (0x3210ul) + +#define EFM_PROTECT_ADDR_MSK (0x000FFFFFu) + +/* Parameter validity check for pointer. */ +#define IS_VALID_POINTER(x) (NULL != (x)) + +/* Parameter validity check for flash latency. */ +#define IS_VALID_FLASH_LATENCY(x) \ +( ((x) == EFM_LATENCY_0) || \ + ((x) == EFM_LATENCY_1) || \ + ((x) == EFM_LATENCY_2) || \ + ((x) == EFM_LATENCY_3) || \ + ((x) == EFM_LATENCY_4) || \ + ((x) == EFM_LATENCY_5) || \ + ((x) == EFM_LATENCY_6) || \ + ((x) == EFM_LATENCY_7) || \ + ((x) == EFM_LATENCY_8) || \ + ((x) == EFM_LATENCY_9) || \ + ((x) == EFM_LATENCY_10) || \ + ((x) == EFM_LATENCY_11) || \ + ((x) == EFM_LATENCY_12) || \ + ((x) == EFM_LATENCY_13) || \ + ((x) == EFM_LATENCY_14) || \ + ((x) == EFM_LATENCY_15)) + +/* Parameter validity check for read mode. */ +#define IS_VALID_READ_MD(MD) \ +( ((MD) == NormalRead) || \ + ((MD) == UltraPowerRead)) + +/* Parameter validity check for erase/program mode. */ +#define IS_VALID_ERASE_PGM_MD(MD) \ +( ((MD) == EFM_MODE_READONLY) || \ + ((MD) == EFM_MODE_SINGLEPROGRAM) || \ + ((MD) == EFM_MODE_SINGLEPROGRAMRB) || \ + ((MD) == EFM_MODE_SEQUENCEPROGRAM) || \ + ((MD) == EFM_MODE_SECTORERASE) || \ + ((MD) == EFM_MODE_CHIPERASE)) + +/* Parameter validity check for flash flag. */ +#define IS_VALID_FLASH_FLAG(flag) \ +( ((flag) == EFM_FLAG_WRPERR) || \ + ((flag) == EFM_FLAG_PEPRTERR) || \ + ((flag) == EFM_FLAG_PGSZERR) || \ + ((flag) == EFM_FLAG_PGMISMTCH) || \ + ((flag) == EFM_FLAG_EOP) || \ + ((flag) == EFM_FLAG_COLERR) || \ + ((flag) == EFM_FLAG_RDY)) + +/* Parameter validity check for flash clear flag. */ +#define IS_VALID_CLEAR_FLASH_FLAG(flag) \ +( ((flag) == EFM_FLAG_WRPERR) || \ + ((flag) == EFM_FLAG_PEPRTERR) || \ + ((flag) == EFM_FLAG_PGSZERR) || \ + ((flag) == EFM_FLAG_PGMISMTCH) || \ + ((flag) == EFM_FLAG_EOP) || \ + ((flag) == EFM_FLAG_COLERR)) + +/* Parameter validity check for flash interrupt. */ +#define IS_VALID_EFM_INT_SEL(int) \ +( ((int) == PgmErsErrInt) || \ + ((int) == EndPgmInt) || \ + ((int) == ColErrInt)) + +/* Parameter validity check for flash address. */ +#define IS_VALID_FLASH_ADDR(addr) \ +( ((addr) == 0x00000000u) || \ + (((addr) >= 0x00000001u) && \ + ((addr) <= 0x0007FFDFu))) + +/* Parameter validity check for flash address. */ +#define IS_VALID_OTP_LOCK_ADDR(addr) \ +( ((addr) >= 0x03000FC0u) || \ + ((addr) <= 0x03000FF8u)) +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Unlock the flash. + ** + ** \param None + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_Unlock(void) +{ + M4_EFM->FAPRT = EFM_KEY1; + M4_EFM->FAPRT = EFM_KEY2; +} + +/** + ******************************************************************************* + ** \brief Lock the flash. + ** + ** \param None + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_Lock(void) +{ + if(EFM_UNLOCK == M4_EFM->FAPRT) + { + M4_EFM->FAPRT = EFM_KEY2; + M4_EFM->FAPRT = EFM_KEY2; + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the flash. + ** + ** \param [in] enNewState The new state of the flash. + ** \arg Enable Enable flash. + ** \arg Disable Stop flash. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_FlashCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + M4_EFM->FSTP_f.FSTP = ((Enable == enNewState) ? 0ul : 1ul); +} +/** + ******************************************************************************* + ** \brief Sets the code latency value.. + ** + ** \param [in] u32Latency specifies the FLASH Latency value. + ** \arg EFM_LATENCY_0 FLASH 0 Latency cycle + ** \arg EFM_LATENCY_1 FLASH 1 Latency cycle + ** \arg EFM_LATENCY_2 FLASH 2 Latency cycles + ** \arg EFM_LATENCY_3 FLASH 3 Latency cycles + ** \arg EFM_LATENCY_4 FLASH 4 Latency cycles + ** \arg EFM_LATENCY_5 FLASH 5 Latency cycles + ** \arg EFM_LATENCY_6 FLASH 6 Latency cycles + ** \arg EFM_LATENCY_7 FLASH 7 Latency cycles + ** \arg EFM_LATENCY_8 FLASH 8 Latency cycles + ** \arg EFM_LATENCY_9 FLASH 9 Latency cycles + ** \arg EFM_LATENCY_10 FLASH 10 Latency cycles + ** \arg EFM_LATENCY_11 FLASH 11 Latency cycles + ** \arg EFM_LATENCY_12 FLASH 12 Latency cycles + ** \arg EFM_LATENCY_13 FLASH 13 Latency cycles + ** \arg EFM_LATENCY_14 FLASH 14 Latency cycles + ** \arg EFM_LATENCY_15 FLASH 15 Latency cycles + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_SetLatency(uint32_t u32Latency) +{ + DDL_ASSERT(IS_VALID_FLASH_LATENCY(u32Latency)); + + M4_EFM->FRMC_f.FLWT = u32Latency; +} + +/** + ******************************************************************************* + ** \brief Enable or disable the flash instruction cache. + ** + ** \param [in] enNewState The new state of the flash instruction cache. + ** \arg Enable Enable flash instruction cache. + ** \arg Disable Disable flash instruction cache. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_InstructionCacheCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + M4_EFM->FRMC_f.CACHE = enNewState; +} + +/** + ******************************************************************************* + ** \brief Enable or disable the data cache reset. + ** + ** \param [in] enNewState The new state of the data cache reset. + ** \arg Enable Enable data cache reset. + ** \arg Disable Disable data cache reset. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_DataCacheRstCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + M4_EFM->FRMC_f.CRST = enNewState; +} + +/** + ******************************************************************************* + ** \brief Set the flash read mode. + ** + ** \param [in] enReadMD The flash read mode. + ** \arg NormalRead Normal read mode. + ** \arg UltraPowerRead Ultra_Low power read mode. + ** + ** \retval None. + ** + ** \note None + ** + ******************************************************************************/ +void EFM_SetReadMode(en_efm_read_md_t enReadMD) +{ + DDL_ASSERT(IS_VALID_READ_MD(enReadMD)); + M4_EFM->FRMC_f.SLPMD = enReadMD; +} + +/** + ******************************************************************************* + ** \brief Enable or disable erase / program. + ** + ** \param [in] enNewState The new state of the erase / program. + ** \arg Enable Enable erase / program. + ** \arg Disable Disable erase / program. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_ErasePgmCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + M4_EFM->FWMC_f.PEMODE = enNewState; +} + +/** + ******************************************************************************* + ** \brief Set the flash erase program mode. + ** + ** \param [in] u32Mode The flash erase program mode. + ** \arg EFM_MODE_READONLY The flash read only. + ** \arg EFM_MODE_SINGLEPROGRAM The flash single program. + ** \arg EFM_MODE_SINGLEPROGRAMRB The flash single program with read back. + ** \arg EFM_MODE_SEQUENCEPROGRAM The flash sequence program. + ** \arg EFM_MODE_SECTORERASE The flash sector erase. + ** \arg EFM_MODE_CHIPERASE The flash mass erase. + ** + ** \retval en_result_t. + ** + ** \note None + ** + ******************************************************************************/ +en_result_t EFM_SetErasePgmMode(uint32_t u32Mode) +{ + en_result_t enRet = Ok; + uint16_t u16Timeout = 0u; + + DDL_ASSERT(IS_VALID_ERASE_PGM_MD(u32Mode)); + + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + break; + } + } + if(Ok == enRet) + { + M4_EFM->FWMC_f.PEMODE = Enable; + M4_EFM->FWMC_f.PEMOD = u32Mode; + M4_EFM->FWMC_f.PEMODE = Disable; + } + + return enRet; +} +/** + ******************************************************************************* + ** \brief Enable or disable the specified interrupt. + ** + ** \param [in] enInt The specified interrupt. + ** \arg PgmErsErrInt Program erase error interrupt. + ** \arg EndPgmInt End of Program interrupt. + ** \arg ReadErrInt Read collided error flag. + ** + ** \param [in] enNewState The new state of the specified interrupt. + ** \arg Enable Enable the specified interrupt. + ** \arg Disable Disable the specified interrupt. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_InterruptCmd(en_efm_int_sel_t enInt, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + DDL_ASSERT(IS_VALID_EFM_INT_SEL(enInt)); + + switch(enInt) + { + case PgmErsErrInt: + M4_EFM->FITE_f.PEERRITE = enNewState; + break; + case EndPgmInt: + M4_EFM->FITE_f.OPTENDITE = enNewState; + break; + case ColErrInt: + M4_EFM->FITE_f.COLERRITE = enNewState; + break; + default: + break; + } +} + +/** + ******************************************************************************* + ** \brief Checks whether the specified FLASH flag is set or not.. + ** + ** \param [in] u32flag Specifies the FLASH flag to check. + ** \arg EFM_FLAG_WRPERR Flash write protect error flag. + ** \arg EFM_FLAG_PEPRTERR Flash program protect area error flag. + ** \arg EFM_FLAG_PGSZERR Flash program size error flag. + ** \arg EFM_FLAG_PGMISMTCH Flash program miss match flag. + ** \arg EFM_FLAG_EOP Flash end of program flag. + ** \arg EFM_FLAG_COLERR Flash collision error flag. + ** \arg EFM_FLAG_RDY Flash ready flag. + ** + ** \retval The flash status. + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t EFM_GetFlagStatus(uint32_t u32flag) +{ + DDL_ASSERT(IS_VALID_FLASH_FLAG(u32flag)); + + return ((0ul == (M4_EFM->FSR & u32flag)) ? Reset :Set); +} + +/** + ******************************************************************************* + ** \brief Checks whether the specified FLASH flag is set or not.. + ** + ** \param [in] u32flag Specifies the FLASH flag to clear. + ** \arg EFM_FLAG_WRPERR Flash write protect error flag. + ** \arg EFM_FLAG_PEPRTERR Flash program protect area error flag. + ** \arg EFM_FLAG_PGSZERR Flash program size error flag. + ** \arg EFM_FLAG_PGMISMTCH Flash program miss match flag. + ** \arg EFM_FLAG_EOP Flash end of program flag. + ** \arg EFM_FLAG_COLERR Flash collision error flag. + ** + ** \retval The flash status. + ** + ** \note None + ** + ******************************************************************************/ +void EFM_ClearFlag(uint32_t u32flag) +{ + //DDL_ASSERT(IS_VALID_CLEAR_FLASH_FLAG(u32flag)); + + M4_EFM->FSCLR = u32flag; +} +/** + ******************************************************************************* + ** \brief Get the flash status. + ** + ** \param None + ** + ** \retval The flash status. + ** + ** \note None + ** + ******************************************************************************/ +en_efm_flash_status_t EFM_GetStatus(void) +{ + en_efm_flash_status_t enFlashStatus = FlashEOP; + + if(1ul == M4_EFM->FSR_f.RDY ) + { + enFlashStatus = FlashReady; + } + else if(1ul == M4_EFM->FSR_f.COLERR) + { + enFlashStatus = FlashRWErr; + } + else if(1ul == M4_EFM->FSR_f.OPTEND) + { + enFlashStatus = FlashEOP; + } + else if(1ul == M4_EFM->FSR_f.PGMISMTCH) + { + enFlashStatus = FlashPgMissMatch; + } + else if(1ul == M4_EFM->FSR_f.PGSZERR) + { + enFlashStatus = FlashPgSizeErr; + } + else if(1ul == M4_EFM->FSR_f.PEPRTERR) + { + enFlashStatus = FlashPgareaPErr; + } + else if(1ul == M4_EFM->FSR_f.PEWERR) + { + enFlashStatus = FlashWRPErr; + } + else + { + //else + } + + return enFlashStatus; +} + +/** + ******************************************************************************* + ** \brief Set flash the windows protect address. + ** + ** \param [in] stcAddr The specified windows protect address. + ** \arg StartAddr The start of windows protect address. + ** \arg EndAddr The end of windows protect address. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_SetWinProtectAddr(stc_efm_win_protect_addr_t stcAddr) +{ + M4_EFM->FPMTSW_f.FPMTSW = (stcAddr.StartAddr & EFM_PROTECT_ADDR_MSK); + M4_EFM->FPMTEW_f.FPMTEW = (stcAddr.EndAddr & EFM_PROTECT_ADDR_MSK); +} + +/** + ******************************************************************************* + ** \brief Set bus state while flash program & erase. + ** + ** \param [in] enState The specified bus state while flash program & erase. + ** \arg BusBusy The bus busy. + ** \arg BusRelease The bus release. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void EFM_SetBusState(en_efm_bus_sta_t enState) +{ + M4_EFM->FWMC_f.BUSHLDCTL = enState; +} + +/** + ******************************************************************************* + ** \brief Flash single program without read back. + ** + ** \param [in] u32Addr The specified program address. + ** \param [in] u32Data The specified program data. + ** + ** \retval en_result_t + ** + ** \note None + ** + ******************************************************************************/ +en_result_t EFM_SingleProgram(uint32_t u32Addr, uint32_t u32Data) +{ + en_result_t enRet = Ok; + uint8_t u8tmp; + uint16_t u16Timeout = 0u; + + DDL_ASSERT(IS_VALID_FLASH_ADDR(u32Addr)); + + /* CLear the error flag. */ + EFM_ClearFlag(EFM_FLAG_WRPERR | EFM_FLAG_PEPRTERR | EFM_FLAG_PGSZERR | + EFM_FLAG_PGMISMTCH | EFM_FLAG_EOP | EFM_FLAG_COLERR); + + /* read back CACHE */ + u8tmp = (uint8_t)M4_EFM->FRMC_f.CACHE; + + M4_EFM->FRMC_f.CACHE = Disable; + + /* Enable program. */ + EFM_ErasePgmCmd(Enable); + /* Set single program mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_SINGLEPROGRAM; + /* program data. */ + *(uint32_t*)u32Addr = u32Data; + + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + + if(u32Data != *(uint32_t*)u32Addr) + { + enRet = Error; + } + + EFM_ClearFlag(EFM_FLAG_EOP); + /* Set read only mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_READONLY; + EFM_ErasePgmCmd(Disable); + + /* recover CACHE */ + M4_EFM->FRMC_f.CACHE = u8tmp; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Flash single program with read back. + ** + ** \param [in] u32Addr The specified program address. + ** \param [in] u32Data The specified program data. + ** + ** \retval en_result_t + ** + ** \note None + ** + ******************************************************************************/ +en_result_t EFM_SingleProgramRB(uint32_t u32Addr, uint32_t u32Data) +{ + en_result_t enRet = Ok; + uint8_t u8tmp = 0u; + uint16_t u16Timeout = 0u; + + DDL_ASSERT(IS_VALID_FLASH_ADDR(u32Addr)); + + /* CLear the error flag. */ + EFM_ClearFlag(EFM_FLAG_WRPERR | EFM_FLAG_PEPRTERR | EFM_FLAG_PGSZERR | + EFM_FLAG_PGMISMTCH | EFM_FLAG_EOP | EFM_FLAG_COLERR); + + /* read back CACHE */ + u8tmp = (uint8_t)M4_EFM->FRMC_f.CACHE; + + M4_EFM->FRMC_f.CACHE = Disable; + + /* Enable program. */ + EFM_ErasePgmCmd(Enable); + /* Set single program with read back mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_SINGLEPROGRAMRB; + /* program data. */ + *(uint32_t*)u32Addr = u32Data; + + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + + if(1ul == M4_EFM->FSR_f.PGMISMTCH) + { + enRet = Error; + } + + EFM_ClearFlag(EFM_FLAG_EOP); + /* Set read only mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_READONLY; + EFM_ErasePgmCmd(Disable); + + /* recover CACHE */ + M4_EFM->FRMC_f.CACHE = u8tmp; + + return enRet; +} + +static void *EFM_Memcpy(void *pvDst, void *pvSrc, uint32_t u32Count) +{ + uint8_t *u8TmpDst = (uint8_t *)pvDst; + uint8_t *u8TmpSrc = (uint8_t *)pvSrc; + + DDL_ASSERT(IS_VALID_POINTER(pvDst)); + DDL_ASSERT(IS_VALID_POINTER(pvSrc)); + + while (u32Count--) + { + *u8TmpDst++ = *u8TmpSrc++; + } + + return pvDst; +} +/** + ******************************************************************************* + ** \brief Flash sequence program. + ** + ** \param [in] u32Addr The specified program address. + ** \param [in] u32Len The len of specified program data. + ** \param [in] *pBuf The pointer of specified program data. + ** + ** \retval en_result_t + ** + ** \note None + ** + ******************************************************************************/ +en_result_t EFM_SequenceProgram(uint32_t u32Addr, uint32_t u32Len, void *pBuf) +{ + en_result_t enRet = Ok; + uint8_t u8tmp; + uint32_t i; + uint16_t u16Timeout = 0u; + uint32_t u32Tmp = 0xFFFFFFFFul; + uint32_t *u32pSrc = pBuf; + uint32_t *u32pDest = (uint32_t *)u32Addr; + uint32_t u32LoopWords = u32Len >> 2ul; + uint32_t u32RemainBytes = u32Len % 4ul; + + DDL_ASSERT(IS_VALID_FLASH_ADDR(u32Addr)); + DDL_ASSERT(IS_VALID_POINTER(pBuf)); + + /* CLear the error flag. */ + EFM_ClearFlag(EFM_FLAG_WRPERR | EFM_FLAG_PEPRTERR | EFM_FLAG_PGSZERR | + EFM_FLAG_PGMISMTCH | EFM_FLAG_EOP | EFM_FLAG_COLERR); + + /* read back CACHE */ + u8tmp = (uint8_t)M4_EFM->FRMC_f.CACHE; + + M4_EFM->FRMC_f.CACHE = Disable; + + /* Enable program. */ + EFM_ErasePgmCmd(Enable); + /* Set sequence program mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_SEQUENCEPROGRAM; + /* clear read collided error flag.*/ + EFM_ClearFlag(EFM_FLAG_COLERR); + EFM_ClearFlag(EFM_FLAG_WRPERR); + + /* program data. */ + for(i = 0ul; i < u32LoopWords; i++) + { + *u32pDest++ = *u32pSrc++; + /* wait operate end. */ + while(1ul != M4_EFM->FSR_f.OPTEND) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + /* clear end flag. */ + EFM_ClearFlag(EFM_FLAG_EOP); + } + if(u32RemainBytes) + { + EFM_Memcpy(&u32Tmp, u32pSrc, u32RemainBytes); + *u32pDest++ = u32Tmp; + } + + /* Set read only mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_READONLY; + + u16Timeout = 0u; + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + + EFM_ClearFlag(EFM_FLAG_EOP); + EFM_ErasePgmCmd(Disable); + + /* recover CACHE */ + M4_EFM->FRMC_f.CACHE = u8tmp; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Flash sector erase. + ** + ** \param [in] u32Addr The uncertain(random) address in the specified sector. + ** + ** \retval en_result_t + ** + ** \note The address should be word align. + ** + ******************************************************************************/ +en_result_t EFM_SectorErase(uint32_t u32Addr) +{ + uint8_t u8tmp; + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_FLASH_ADDR(u32Addr)); + + /* CLear the error flag. */ + EFM_ClearFlag(EFM_FLAG_WRPERR | EFM_FLAG_PEPRTERR | EFM_FLAG_PGSZERR | + EFM_FLAG_PGMISMTCH | EFM_FLAG_EOP | EFM_FLAG_COLERR); + + /* read back CACHE */ + u8tmp = (uint8_t)M4_EFM->FRMC_f.CACHE; + + M4_EFM->FRMC_f.CACHE = Disable; + + /* Enable erase. */ + EFM_ErasePgmCmd(Enable); + /* Set sector erase mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_SECTORERASE; + + *(uint32_t*)u32Addr = 0x12345678u; + + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + + EFM_ClearFlag(EFM_FLAG_EOP); + /* Set read only mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_READONLY; + EFM_ErasePgmCmd(Disable); + + /* recover CACHE */ + M4_EFM->FRMC_f.CACHE = u8tmp; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Flash mass erase. + ** + ** \param [in] u32Addr The uncertain(random) address in the flash. + ** + ** \retval en_result_t + ** + ** \note The address should be word align. + ** + ******************************************************************************/ +en_result_t EFM_MassErase(uint32_t u32Addr) +{ + uint8_t u8tmp; + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_FLASH_ADDR(u32Addr)); + + /* CLear the error flag. */ + EFM_ClearFlag(EFM_FLAG_WRPERR | EFM_FLAG_PEPRTERR | EFM_FLAG_PGSZERR | + EFM_FLAG_PGMISMTCH | EFM_FLAG_EOP | EFM_FLAG_COLERR); + + /* read back CACHE */ + u8tmp = (uint8_t)M4_EFM->FRMC_f.CACHE; + + M4_EFM->FRMC_f.CACHE = Disable; + + /* Enable erase. */ + EFM_ErasePgmCmd(Enable); + /* Set sector erase mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_CHIPERASE; + + *(uint32_t*)u32Addr = 0x12345678u; + + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + + EFM_ClearFlag(EFM_FLAG_EOP); + /* Set read only mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_READONLY; + EFM_ErasePgmCmd(Disable); + + /* recover CACHE */ + M4_EFM->FRMC_f.CACHE = u8tmp; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get flash switch status. + ** + ** \param None. + ** + ** \retval en_flag_status_t + ** \arg Set The flash has switched, the start address is sector1. + ** \arg Reset The flash did not switch, the start address is sector0. + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t EFM_GetSwitchStatus(void) +{ + return ((0u == M4_EFM->FSWP_f.FSWP) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Lock OTP data block. + ** + ** \param u32Addr The addr to lock. + ** + ** \retval en_result_t + ** + ** \note None + ** + ******************************************************************************/ +en_result_t EFM_OtpLock(uint32_t u32Addr) +{ + DDL_ASSERT(IS_VALID_OTP_LOCK_ADDR(u32Addr)); + uint16_t u16Timeout = 0u; + en_result_t enRet = Ok; + + /* Enable program. */ + EFM_ErasePgmCmd(Enable); + /* Set single program mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_SINGLEPROGRAM; + + /* Lock the otp block. */ + *(uint32_t*)u32Addr = 0ul; + + while(1ul != M4_EFM->FSR_f.RDY) + { + u16Timeout++; + if(u16Timeout > 0x1000u) + { + enRet = ErrorTimeout; + } + } + + EFM_ClearFlag(EFM_FLAG_EOP); + /* Set read only mode. */ + M4_EFM->FWMC_f.PEMOD = EFM_MODE_READONLY; + EFM_ErasePgmCmd(Disable); + + return enRet; +} +/** + ******************************************************************************* + ** \brief read unique ID. + ** + ** \param None + ** + ** \retval uint32_t + ** + ** \note None + ** + ******************************************************************************/ +stc_efm_unique_id_t EFM_ReadUID(void) +{ + stc_efm_unique_id_t stcUID; + + stcUID.uniqueID1 = M4_EFM->UQID1; + stcUID.uniqueID2 = M4_EFM->UQID2; + stcUID.uniqueID3 = M4_EFM->UQID3; + + return stcUID; +} + +//@} // EfmGroup + +#endif /* DDL_EFM_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_emb.c b/driver/src/hc32f460_emb.c new file mode 100644 index 0000000..9fe5840 --- /dev/null +++ b/driver/src/hc32f460_emb.c @@ -0,0 +1,487 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_emb.c + ** + ** A detailed description is available at + ** @link EMBGroup EMB description @endlink + ** + ** - 2018-11-24 CDT First version for Device Driver Library of EMB. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_emb.h" +#include "hc32f460_utility.h" + +#if (DDL_EMB_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup EMBGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for emb unit */ +#define IS_VALID_EMB_UNIT(__EMBx__) \ +( (M4_EMB1 == (__EMBx__)) || \ + (M4_EMB2 == (__EMBx__)) || \ + (M4_EMB3 == (__EMBx__)) || \ + (M4_EMB4 == (__EMBx__))) + +/*!< Parameter valid check for emb status*/ +#define IS_VALID_EMB_STATUS_TYPE(x) \ +( (EMBFlagPortIn == (x)) || \ + (EMBFlagPWMSame == (x)) || \ + (EMBFlagCmp == (x)) || \ + (EMBFlagOSCFail == (x)) || \ + (EMBPortInState == (x)) || \ + (EMBPWMState == (x))) + +/*!< Parameter valid check for emb status clear*/ +#define IS_VALID_EMB_STATUS_CLR(x) \ +( (EMBPortInFlagClr == (x)) || \ + (EMBPWMSameFlagCLr == (x)) || \ + (EMBCmpFlagClr == (x)) || \ + (EMBOSCFailFlagCLr == (x))) + +/*!< Parameter valid check for emb irq enable*/ +#define IS_VALID_EMB_IRQ(x) \ +( (PORTBrkIrq == (x)) || \ + (PWMSmBrkIrq == (x)) || \ + (CMPBrkIrq == (x)) || \ + (OSCFailBrkIrq == (x))) + + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/******************************************************************************* + * \brief EMB interrupt request enable or disable + * + * \param [in] EMBx EMB unit + * \param [in] enEMBIrq Irq type + * \param [in] bEn true/false + * + * \retval en_result_t Ok: config success + ******************************************************************************/ +en_result_t EMB_ConfigIrq(M4_EMB_TypeDef *EMBx, + en_emb_irq_type_t enEMBIrq, + bool bEn) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (IS_VALID_EMB_UNIT(EMBx)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_IRQ(enEMBIrq)); + + enRet = Ok; + switch (enEMBIrq) + { + case PORTBrkIrq: + EMBx->INTEN_f.PORTINTEN = (uint32_t)bEn; + break; + case PWMSmBrkIrq: + EMBx->INTEN_f.PWMINTEN = (uint32_t)bEn; + break; + case CMPBrkIrq: + EMBx->INTEN_f.CMPINTEN = (uint32_t)bEn; + break; + case OSCFailBrkIrq: + EMBx->INTEN_f.OSINTEN = (uint32_t)bEn; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get EMB status + ** + ** \param [in] EMBx EMB unit + ** + ** \param [in] enStatus EMB status type + ** + ** \retval EMB status + ** + ******************************************************************************/ +bool EMB_GetStatus(M4_EMB_TypeDef *EMBx, en_emb_status_t enStatus) +{ + bool status = false; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_UNIT(EMBx)); + DDL_ASSERT(IS_VALID_EMB_STATUS_TYPE(enStatus)); + + switch (enStatus) + { + case EMBFlagPortIn: + status = EMBx->STAT_f.PORTINF; + break; + case EMBFlagPWMSame: + status = EMBx->STAT_f.PWMSF; + break; + case EMBFlagCmp: + status = EMBx->STAT_f.CMPF; + break; + case EMBFlagOSCFail: + status = EMBx->STAT_f.OSF; + break; + case EMBPortInState: + status = EMBx->STAT_f.PORTINST; + break; + case EMBPWMState: + status = EMBx->STAT_f.PWMST; + break; + default: + break; + } + + return status; +} + +/** + ******************************************************************************* + ** \brief EMB clear status(Recover from protection state) + ** + ** \param [in] EMBx EMB unit + ** + ** \param [in] enStatusClr EMB status clear type + ** + ** \retval en_result_t Ok: Config Success + ** + ******************************************************************************/ +en_result_t EMB_ClrStatus(M4_EMB_TypeDef *EMBx, + en_emb_status_clr_t enStatusClr) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (IS_VALID_EMB_UNIT(EMBx)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_STATUS_CLR(enStatusClr)); + + enRet = Ok; + switch (enStatusClr) + { + case EMBPortInFlagClr: + EMBx->STATCLR_f.PORTINFCLR = 1ul; + break; + case EMBPWMSameFlagCLr: + EMBx->STATCLR_f.PWMSFCLR = 1ul; + break; + case EMBCmpFlagClr: + EMBx->STATCLR_f.CMPFCLR = 1ul; + break; + case EMBOSCFailFlagCLr: + EMBx->STATCLR_f.OSFCLR = 1ul; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/******************************************************************************* + * \brief EMB Control Register(CR) for timer6 + * + * \param [in] EMBx EMB unit + * \param [in] pstcEMBConfigCR EMB Config CR pointer + * + * \retval en_result_t Ok: Set successfully + * \retval en_result_t ErrorInvalidParameter: Provided parameter is not valid + ******************************************************************************/ +en_result_t EMB_Config_CR_Timer6(const stc_emb_ctrl_timer6_t* pstcEMBConfigCR) +{ + uint32_t u32Val = 0ul; + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != pstcEMBConfigCR) + { + if (pstcEMBConfigCR->bEnPortBrake) + { + u32Val |= 1ul; + } + if (pstcEMBConfigCR->bEnCmp1Brake) + { + u32Val |= 1ul << 1; + } + if (pstcEMBConfigCR->bEnCmp2Brake) + { + u32Val |= 1ul << 2; + } + if (pstcEMBConfigCR->bEnCmp3Brake) + { + u32Val |= 1ul << 3; + } + if (pstcEMBConfigCR->bEnOSCFailBrake) + { + u32Val |= 1ul << 5; + } + if (pstcEMBConfigCR->bEnTimer61PWMSBrake) + { + u32Val |= 1ul << 6; + } + if (pstcEMBConfigCR->bEnTimer62PWMSBrake) + { + u32Val |= 1ul << 7; + } + if (pstcEMBConfigCR->bEnTimer63PWMSBrake) + { + u32Val |= 1ul << 8; + } + if (EMBPortFltDiv0 == pstcEMBConfigCR->enPortInFltClkSel) + { + } + if (EMBPortFltDiv8 == pstcEMBConfigCR->enPortInFltClkSel) + { + u32Val |= 1ul << 28; + } + if (EMBPortFltDiv32 == pstcEMBConfigCR->enPortInFltClkSel) + { + u32Val |= 2ul << 28; + } + if (EMBPortFltDiv128 == pstcEMBConfigCR->enPortInFltClkSel) + { + u32Val |= 3ul << 28; + } + if (pstcEMBConfigCR->bEnPorInFlt) + { + u32Val |= 1ul << 30; + } + if (pstcEMBConfigCR->bEnPortInLevelSel_Low) + { + u32Val |= 1ul << 31; + } + + M4_EMB1->CTL = u32Val; + enRet = Ok; + } + + return enRet; +} + + +/******************************************************************************* + * \brief EMB Control Register(CR) for timer4 + * + * \param [in] EMBx EMB unit + * \param [in] pstcEMBConfigCR EMB Config CR pointer + * + * \retval en_result_t Ok: Set successfully + * \retval en_result_t ErrorInvalidParameter: Provided parameter is not valid + ******************************************************************************/ +en_result_t EMB_Config_CR_Timer4(M4_EMB_TypeDef *EMBx, + const stc_emb_ctrl_timer4_t* pstcEMBConfigCR) +{ + uint32_t u32Val = 0ul; + en_result_t enRet = ErrorInvalidParameter; + + if ((M4_EMB1 != EMBx) && \ + (IS_VALID_EMB_UNIT(EMBx)) && \ + (NULL != pstcEMBConfigCR)) + { + if (pstcEMBConfigCR->bEnPortBrake) + { + u32Val |= 1ul; + } + if (pstcEMBConfigCR->bEnCmp1Brake) + { + u32Val |= 1ul << 1; + } + if (pstcEMBConfigCR->bEnCmp2Brake) + { + u32Val |= 1ul << 2; + } + if (pstcEMBConfigCR->bEnCmp3Brake) + { + u32Val |= 1ul << 3; + } + if (pstcEMBConfigCR->bEnOSCFailBrake) + { + u32Val |= 1ul << 5; + } + if (pstcEMBConfigCR->bEnTimer4xWHLSammeBrake) + { + u32Val |= 1ul << 6; + } + if (pstcEMBConfigCR->bEnTimer4xVHLSammeBrake) + { + u32Val |= 1ul << 7; + } + if (pstcEMBConfigCR->bEnTimer4xUHLSammeBrake) + { + u32Val |= 1ul << 8; + } + if (EMBPortFltDiv0 == pstcEMBConfigCR->enPortInFltClkSel) + { + } + if (EMBPortFltDiv8 == pstcEMBConfigCR->enPortInFltClkSel) + { + u32Val |= 1ul << 28; + } + if (EMBPortFltDiv32 == pstcEMBConfigCR->enPortInFltClkSel) + { + u32Val |= 2ul << 28; + } + if (EMBPortFltDiv128 == pstcEMBConfigCR->enPortInFltClkSel) + { + u32Val |= 3ul << 28; + } + if (pstcEMBConfigCR->bEnPorInFlt) + { + u32Val |= 1ul << 30; + } + if (pstcEMBConfigCR->bEnPortInLevelSel_Low) + { + u32Val |= 1ul << 31; + } + + EMBx->CTL = u32Val; + enRet = Ok; + } + + return enRet; +} + +/******************************************************************************* + * \brief EMB detect PWM atcive level (short detection) selection for timer6 + * + * \param [in] EMBx EMB unit + * \param [in] pstcEMBPWMlv EMB en detect active level pointer + * + * \retval en_result_t Ok: Set successfully + * \retval en_result_t ErrorInvalidParameter: Provided parameter is not valid + ******************************************************************************/ +en_result_t EMB_PWMLv_Timer6(const stc_emb_pwm_level_timer6_t* pstcEMBPWMlv) +{ + uint32_t u32Val = 0ul; + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != pstcEMBPWMlv) + { + if (pstcEMBPWMlv->bEnTimer61HighLevelDect) + { + u32Val |= 0x1ul; + } + if (pstcEMBPWMlv->bEnTimer62HighLevelDect) + { + u32Val |= 0x2ul; + } + if (pstcEMBPWMlv->bEnTimer63HighLevelDect) + { + u32Val |= 0x4ul; + } + + M4_EMB1->PWMLV = u32Val; + enRet = Ok; + } + + return enRet; +} + + +/******************************************************************************* + * \brief EMB detect PWM atcive level (short detection) selection for timer4 + * + * \param [in] EMBx EMB unit + * \param [in] pstcEMBPWMlv EMB en detect active level pointer + * + * \retval en_result_t Ok: Set successfully + * \retval en_result_t ErrorInvalidParameter: Provided parameter is not valid + ******************************************************************************/ +en_result_t EMB_PWMLv_Timer4(M4_EMB_TypeDef *EMBx, + const stc_emb_pwm_level_timer4_t* pstcEMBPWMlv) +{ + uint32_t u32Val = 0ul; + en_result_t enRet = ErrorInvalidParameter; + + if ((IS_VALID_EMB_UNIT(EMBx)) && \ + (M4_EMB1 != EMBx) && \ + (NULL != pstcEMBPWMlv)) + { + if (pstcEMBPWMlv->bEnWHLphaseHighLevelDect) + { + u32Val |= 0x1ul; + } + if (pstcEMBPWMlv->bEnVHLPhaseHighLevelDect) + { + u32Val |= 0x2ul; + } + if (pstcEMBPWMlv->bEnUHLPhaseHighLevelDect) + { + u32Val |= 0x4ul; + } + + EMBx->PWMLV = u32Val; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief EMB Software brake + ** + ** \param [in] EMBx EMB unit + ** +** \param [in] bEn true: Software Brake Enable / false: Software Brake Disable + ** + ** \retval en_result_t Ok: Config Success + ** + ******************************************************************************/ +en_result_t EMB_SwBrake(M4_EMB_TypeDef *EMBx, bool bEn) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_UNIT(EMBx)); + + EMBx->SOE_f.SOE = (uint32_t)bEn; + + return Ok; +} + +//@} // EMBGroup + +#endif /* DDL_EMB_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_event_port.c b/driver/src/hc32f460_event_port.c new file mode 100644 index 0000000..fafc2ad --- /dev/null +++ b/driver/src/hc32f460_event_port.c @@ -0,0 +1,468 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_event_port.c + ** + ** A detailed description is available at + ** @link EventPortGroup EventPort description @endlink + ** + ** - 2018-12-07 CDT First version for Device Driver Library of EventPort. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_event_port.h" +#include "hc32f460_utility.h" + +#if (DDL_EVENT_PORT_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup EventPortGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define EP1_BASE 0x40010800ul + 0x0100ul +#define EP2_BASE 0x40010800ul + 0x011Cul +#define EP3_BASE 0x40010800ul + 0x0138ul +#define EP4_BASE 0x40010800ul + 0x0154ul +#define EP1_DIR_BASE 0x00ul +#define EP1_IDR_BASE 0x04ul +#define EP1_ODR_BASE 0x08ul +#define EP1_ORR_BASE 0x0Cul +#define EP1_OSR_BASE 0x10ul +#define EP1_RISR_BASE 0x14ul +#define EP1_FAL_BASE 0x18ul +#define EP_NFCR_BASE 0x40010800ul + 0x0170ul + + +/*! Parameter validity check for port group. */ +#define IS_VALID_EVENT_PORT(x) \ +( ((x) == EventPort1) || \ + ((x) == EventPort2) || \ + ((x) == EventPort3) || \ + ((x) == EventPort4)) + +/*! Parameter validity check for pin. */ +#define IS_VALID_EVENT_PIN(x) \ +( ((x) == EventPin00) || \ + ((x) == EventPin01) || \ + ((x) == EventPin02) || \ + ((x) == EventPin03) || \ + ((x) == EventPin04) || \ + ((x) == EventPin05) || \ + ((x) == EventPin06) || \ + ((x) == EventPin07) || \ + ((x) == EventPin08) || \ + ((x) == EventPin09) || \ + ((x) == EventPin10) || \ + ((x) == EventPin11) || \ + ((x) == EventPin12) || \ + ((x) == EventPin13) || \ + ((x) == EventPin14) || \ + ((x) == EventPin15)) + +/*! Parameter valid check for Event Port common trigger. */ +#define IS_EP_COM_TRIGGER(x) \ +( ((x) == EpComTrigger_1) || \ + ((x) == EpComTrigger_2) || \ + ((x) == EpComTrigger_1_2)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Event Port init + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** \param [in] u16EventPin Event pin index, This parameter can be + ** any composed value of @ref en_event_pin_t + ** \param [in] pstcEventPortInit Structure pointer of event port configuration + ** + ** \retval Ok Init successful + ** ErrorInvalidParameter Event port index invalid + ** + ******************************************************************************/ +en_result_t EVENTPORT_Init(en_event_port_t enEventPort, uint16_t u16EventPin, \ + const stc_event_port_init_t *pstcEventPortInit) +{ + en_result_t enRet = Ok; + + uint32_t *EPDIRx; ///< Direction register + uint32_t *EPORRx; ///< Reset after trigger enable register + uint32_t *EPOSRx; ///< Set after trigger enable register + uint32_t *EPRISRx; ///< Rising edge detect enable register + uint32_t *EPFALx; ///< Falling edge detect enable register + + EPDIRx = (uint32_t *)(EP1_BASE + EP1_DIR_BASE + (0x1C * enEventPort)); + EPORRx = (uint32_t *)(EP1_BASE + EP1_ORR_BASE + (0x1C * enEventPort)); + EPOSRx = (uint32_t *)(EP1_BASE + EP1_OSR_BASE + (0x1C * enEventPort)); + EPRISRx= (uint32_t *)(EP1_BASE + EP1_RISR_BASE+ (0x1C * enEventPort)); + EPFALx = (uint32_t *)(EP1_BASE + EP1_FAL_BASE + (0x1C * enEventPort)); + + /* Direction configure */ + if (EventPortOut == pstcEventPortInit->enDirection) + { + *EPDIRx |= u16EventPin; + } + else + { + *EPDIRx &= (~(uint32_t)u16EventPin) & 0xFFFFul; + } + + /* Reset if be triggered */ + if (Enable == pstcEventPortInit->enReset) + { + *EPORRx |= u16EventPin; + } + else + { + *EPORRx &= (~(uint32_t)u16EventPin) & 0xFFFFul; + } + + /* Set if be triggered */ + if (Enable == pstcEventPortInit->enSet) + { + *EPOSRx |= u16EventPin; + } + else + { + *EPOSRx &= (~(uint32_t)u16EventPin) & 0xFFFFul; + } + + /* Rising edge detect setting */ + if (Enable == pstcEventPortInit->enRisingDetect) + { + *EPRISRx |= u16EventPin; + } + else + { + *EPRISRx &= (~(uint32_t)u16EventPin) & 0xFFFFul; + } + + /* Falling edge detect setting */ + if (Enable == pstcEventPortInit->enFallingDetect) + { + *EPFALx |= u16EventPin; + } + else + { + *EPFALx &= (~(uint32_t)u16EventPin) & 0xFFFFul; + } + + /* Noise filter setting */ + switch (enEventPort) + { + case EventPort1: + M4_AOS->PEVNTNFCR_f.NFEN1 = pstcEventPortInit->enFilter; + M4_AOS->PEVNTNFCR_f.DIVS1 = pstcEventPortInit->enFilterClk; + break; + case EventPort2: + M4_AOS->PEVNTNFCR_f.NFEN2 = pstcEventPortInit->enFilter; + M4_AOS->PEVNTNFCR_f.DIVS2 = pstcEventPortInit->enFilterClk; + break; + case EventPort3: + M4_AOS->PEVNTNFCR_f.NFEN3 = pstcEventPortInit->enFilter; + M4_AOS->PEVNTNFCR_f.DIVS3 = pstcEventPortInit->enFilterClk; + break; + case EventPort4: + M4_AOS->PEVNTNFCR_f.NFEN4 = pstcEventPortInit->enFilter; + M4_AOS->PEVNTNFCR_f.DIVS4 = pstcEventPortInit->enFilterClk; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Event Port de-init, restore all registers to default value + ** + ** \param None + ** + ** \retval Ok De-init successful + ** + ******************************************************************************/ +en_result_t EVENTPORT_DeInit(void) +{ + uint32_t EPDIRx ; + uint32_t EPODRx ; + uint32_t EPORRx ; + uint32_t EPOSRx ; + uint32_t EPRISRx; + uint32_t EPFALx ; + uint8_t u8EPCnt; + + EPDIRx = (uint32_t)(EP1_BASE + EP1_DIR_BASE); + EPODRx = (uint32_t)(EP1_BASE + EP1_ODR_BASE); + EPORRx = (uint32_t)(EP1_BASE + EP1_ORR_BASE); + EPOSRx = (uint32_t)(EP1_BASE + EP1_OSR_BASE); + EPRISRx = (uint32_t)(EP1_BASE + EP1_RISR_BASE); + EPFALx = (uint32_t)(EP1_BASE + EP1_FAL_BASE); + + /* Restore all registers to default value */ + M4_AOS->PORT_PEVNTTRGSR12 = 0x1FFul; + M4_AOS->PORT_PEVNTTRGSR34 = 0x1FFul; + M4_AOS->PEVNTNFCR = 0ul; + for (u8EPCnt = 0u; u8EPCnt < 4u; u8EPCnt++) + { + *(uint32_t *)(EPDIRx + 0x1Cul * u8EPCnt) = 0ul; + *(uint32_t *)(EPODRx + 0x1Cul * u8EPCnt) = 0ul; + *(uint32_t *)(EPORRx + 0x1Cul * u8EPCnt) = 0ul; + *(uint32_t *)(EPOSRx + 0x1Cul * u8EPCnt) = 0ul; + *(uint32_t *)(EPRISRx + 0x1Cul * u8EPCnt) = 0ul; + *(uint32_t *)(EPFALx + 0x1Cul * u8EPCnt) = 0ul; + } + return Ok; +} + +/** + ******************************************************************************* + ** \brief Event Port trigger source select + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** \param [in] enTriggerSrc Event port trigger source. This parameter + ** can be any value of @ref en_event_src_t + ** \retval Ok Trigger source is set + ** ErrorInvalidParameter Invalid event port enum + ** + ******************************************************************************/ +en_result_t EVENTPORT_SetTriggerSrc(en_event_port_t enEventPort, \ + en_event_src_t enTriggerSrc) +{ + en_result_t enRet = Ok; + DDL_ASSERT(IS_VALID_EVENT_PORT(enEventPort)); + + if ((EventPort1 == enEventPort) || (EventPort2 == enEventPort)) + { + M4_AOS->PORT_PEVNTTRGSR12 = enTriggerSrc; + } + else if ((EventPort3 == enEventPort) || (EventPort4 == enEventPort)) + { + M4_AOS->PORT_PEVNTTRGSR34 = enTriggerSrc; + } + else + { + enRet = ErrorInvalidParameter; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Event Port common trigger. + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** \param [in] enComTrigger Event port common trigger selection. + ** See @ref en_event_port_com_trigger_t for details. + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None. + ** + ******************************************************************************/ +void EVENTPORT_ComTriggerCmd(en_event_port_t enEventPort, \ + en_event_port_com_trigger_t enComTrigger, \ + en_functional_state_t enState) +{ + uint32_t u32ComTrig = (uint32_t)enComTrigger; + __IO uint32_t *TRGSELx; + + TRGSELx = (__IO uint32_t *)((uint32_t)&M4_AOS->PORT_PEVNTTRGSR12 + (4UL * ((uint32_t)enEventPort/2UL))); + + if (NULL != TRGSELx) + { + DDL_ASSERT(IS_EP_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (enState == Enable) + { + *TRGSELx |= (u32ComTrig << 30u); + } + else + { + *TRGSELx &= ~(u32ComTrig << 30u); + } + } +} + +/** + ******************************************************************************* + ** \brief Read Event Port value after be triggered + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** + ** \retval uint16_t The output port value + ** + ******************************************************************************/ +uint16_t EVENTPORT_GetData(en_event_port_t enEventPort) +{ + uint16_t u16Data = 0u; + DDL_ASSERT(IS_VALID_EVENT_PORT(enEventPort)); + switch (enEventPort) + { + case EventPort1: + u16Data = (uint16_t)(M4_AOS->PEVNTIDR1 & 0xFFFFul); + break; + case EventPort2: + u16Data = (uint16_t)(M4_AOS->PEVNTIDR2 & 0xFFFFul); + break; + case EventPort3: + u16Data = (uint16_t)(M4_AOS->PEVNTIDR3 & 0xFFFFul); + break; + case EventPort4: + u16Data = (uint16_t)(M4_AOS->PEVNTIDR4 & 0xFFFFul); + break; + } + return u16Data; +} + +/** + ******************************************************************************* + ** \brief Read Event Pin value after triggered + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** \param [in] enEventPin GPIO pin index, This parameter can be + ** any value of @ref en_event_pin_t + ** \retval en_flag_status_t The output port pin value + ** + ******************************************************************************/ +en_flag_status_t EVENTPORT_GetBit(en_event_port_t enEventPort, en_event_pin_t enEventPin) +{ + bool bBitValue = false; + + switch (enEventPort) + { + case EventPort1: + bBitValue = M4_AOS->PEVNTIDR1 & enEventPin; + break; + case EventPort2: + bBitValue = M4_AOS->PEVNTIDR2 & enEventPin; + break; + case EventPort3: + bBitValue = M4_AOS->PEVNTIDR3 & enEventPin; + break; + case EventPort4: + bBitValue = M4_AOS->PEVNTIDR4 & enEventPin; + break; + } + return (en_flag_status_t)(bool)((!!bBitValue)); +} + +/** + ******************************************************************************* + ** \brief Set Event Port Pin + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** \param [in] u16EventPin Event pin index, This parameter can be + ** any composed value of @ref en_event_pin_t + ** \retval Ok Set successful + ** ErrorInvalidParameter Event port index invalid + ** + ******************************************************************************/ +en_result_t EVENTPORT_SetBits(en_event_port_t enEventPort, en_event_pin_t u16EventPin) +{ + en_result_t enRet = Ok; + DDL_ASSERT(IS_VALID_EVENT_PORT(enEventPort)); + + switch (enEventPort) + { + case EventPort1: + M4_AOS->PEVNTODR1 |= u16EventPin; + break; + case EventPort2: + M4_AOS->PEVNTODR2 |= u16EventPin; + break; + case EventPort3: + M4_AOS->PEVNTODR3 |= u16EventPin; + break; + case EventPort4: + M4_AOS->PEVNTODR4 |= u16EventPin; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Reset Event Port Pin + ** + ** \param [in] enEventPort Event port index, This parameter can be + ** any value of @ref en_event_port_t + ** \param [in] u16EventPin Event pin index, This parameter can be + ** any composed value of @ref en_event_pin_t + ** \retval Ok Reset successful + ** ErrorInvalidParameter Event port index invalid + ** + ******************************************************************************/ +en_result_t EVENTPORT_ResetBits(en_event_port_t enEventPort, en_event_pin_t u16EventPin) +{ + en_result_t enRet = Ok; + DDL_ASSERT(IS_VALID_EVENT_PORT(enEventPort)); + + switch (enEventPort) + { + case EventPort1: + M4_AOS->PEVNTODR1 &= (~(uint32_t)u16EventPin) & 0xFFFFul; + break; + case EventPort2: + M4_AOS->PEVNTODR2 &= (~(uint32_t)u16EventPin) & 0xFFFFul; + break; + case EventPort3: + M4_AOS->PEVNTODR3 &= (~(uint32_t)u16EventPin) & 0xFFFFul; + break; + case EventPort4: + M4_AOS->PEVNTODR4 &= (~(uint32_t)u16EventPin) & 0xFFFFul; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + return enRet; +} + +//@} // EventPortGroup + +#endif /* DDL_EVENT_PORT_ENABLE */ + +/****************************************************************************** + * EOF (not truncated) + *****************************************************************************/ diff --git a/driver/src/hc32f460_exint_nmi_swi.c b/driver/src/hc32f460_exint_nmi_swi.c new file mode 100644 index 0000000..56f5e9c --- /dev/null +++ b/driver/src/hc32f460_exint_nmi_swi.c @@ -0,0 +1,337 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_exint_nmi_swi.c + ** + ** A detailed description is available at + ** @link ExintNmiSwiGroup Exint/Nmi/Swi description @endlink + ** + ** - 2018-10-17 CDT First version for Device Driver Library of exint, Nmi, SW interrupt. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_exint_nmi_swi.h" +#include "hc32f460_utility.h" + +#if (DDL_EXINT_NMI_SWI_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup ExintNmiSwiGroup + ******************************************************************************/ +//@{ +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + /*! Parameter validity check for external interrupt channel. */ +#define IS_VALID_CH(x) \ +( ((x) == ExtiCh00) || \ + ((x) == ExtiCh01) || \ + ((x) == ExtiCh02) || \ + ((x) == ExtiCh03) || \ + ((x) == ExtiCh04) || \ + ((x) == ExtiCh05) || \ + ((x) == ExtiCh06) || \ + ((x) == ExtiCh07) || \ + ((x) == ExtiCh08) || \ + ((x) == ExtiCh09) || \ + ((x) == ExtiCh10) || \ + ((x) == ExtiCh11) || \ + ((x) == ExtiCh12) || \ + ((x) == ExtiCh13) || \ + ((x) == ExtiCh14) || \ + ((x) == ExtiCh15)) + +/*! Parameter validity check for null pointer. */ +#define IS_NULL_POINT(x) (NULL != (x)) + +/*! Parameter validity check for external interrupt trigger method. */ +#define IS_VALID_LEVEL(x) \ +( ((x) == ExIntLowLevel) || \ + ((x) == ExIntBothEdge) || \ + ((x) == ExIntRisingEdge) || \ + ((x) == ExIntFallingEdge)) + +/*! Parameter validity check for NMI interrupt source. */ +#define IS_VALID_NMI_SRC(x) \ +( ((x) == NmiSrcNmi) || \ + ((x) == NmiSrcSwdt) || \ + ((x) == NmiSrcVdu1) || \ + ((x) == NmiSrcVdu2) || \ + ((x) == NmiSrcXtalStop) || \ + ((x) == NmiSrcSramPE) || \ + ((x) == NmiSrcSramDE) || \ + ((x) == NmiSrcMpu) || \ + ((x) == NmiSrcWdt)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ +static func_ptr_t pfnNmiCallback; + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief External Int initialization + ** + ** \param [in] pstcExtiConfig EXTI configure structure + ** + ** \retval Ok EXTI initialized + ** + ******************************************************************************/ +en_result_t EXINT_Init(const stc_exint_config_t *pstcExtiConfig) +{ + stc_intc_eirqcr_field_t *EIRQCRx; + + DDL_ASSERT(IS_VALID_CH(pstcExtiConfig->enExitCh)); + + EIRQCRx = (stc_intc_eirqcr_field_t *)((uint32_t)(&M4_INTC->EIRQCR0) + \ + (uint32_t)(4ul * (uint32_t)(pstcExtiConfig->enExitCh))); + + /* Set filter function */ + EIRQCRx->EFEN = pstcExtiConfig->enFilterEn; + EIRQCRx->EISMPCLK = pstcExtiConfig->enFltClk; + + /* Set detection level */ + EIRQCRx->EIRQTRG = pstcExtiConfig->enExtiLvl; + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get External interrupt request flag + ** + ** \param [in] enExint NMI Int source, This parameter can be + ** any value of @ref en_exti_ch_t + ** + ** \retval Set Corresponding Ex.Int request flag be set + ** Reset Corresponding Ex.Int request flag not be set + ** + ******************************************************************************/ +en_int_status_t EXINT_IrqFlgGet(en_exti_ch_t enExint) +{ + en_int_status_t enRet; + DDL_ASSERT(IS_VALID_CH(enExint)); + + enRet = (1u == !!(M4_INTC->EIFR & (1ul<EICFR |= (uint32_t)(1ul << enExint); + return Ok; +} + +/** + ******************************************************************************* + ** \brief NMI initialization + ** + ** \param [in] pstcNmiConfig NMI configure structure + ** + ** \retval Ok NMI initialized + ** ErrorInvalidParameter NMI configuration pointer is null + ** + ******************************************************************************/ +en_result_t NMI_Init(const stc_nmi_config_t *pstcNmiConfig) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != pstcNmiConfig) + { + /* NMI callback function */ + pfnNmiCallback = pstcNmiConfig->pfnNmiCallback; + /* Set filter function */ + M4_INTC->NMICR_f.NFEN = pstcNmiConfig->enFilterEn; + /* Set filter clock */ + M4_INTC->NMICR_f.NSMPCLK = pstcNmiConfig->enFilterClk; + /* Set detection level */ + M4_INTC->NMICR_f.NMITRG = pstcNmiConfig->enNmiLvl; + /* Set NMI source */ + M4_INTC->NMIENR = (uint32_t)pstcNmiConfig->u16NmiSrc; + enRet = Ok; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Init Non-Maskable Interrupt (NMI) + ** + ** \param None + ** + ** \retval Ok NMI De-initialized + ** + ******************************************************************************/ +en_result_t NMI_DeInit(void) +{ + /* Set internal data */ + pfnNmiCallback = NULL; + + /* clear NMI control register */ + M4_INTC->NMICR = 0u; + + /* clear NMI enable register */ + M4_INTC->NMIENR = 0u; + + /* clear all NMI flags */ + M4_INTC->NMIFR = 0u; + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get NMI interrupt request flag + ** + ** \param [in] enNmiSrc NMI Int source, This parameter can be + ** any value of @ref en_nmi_src_t + ** + ** \retval Set Corresponding NMI flag be set + ** Reset Corresponding NMI flag not be set + ** + ******************************************************************************/ +en_int_status_t NMI_IrqFlgGet(en_nmi_src_t enNmiSrc) +{ + DDL_ASSERT(IS_VALID_NMI_SRC(enNmiSrc)); + + en_int_status_t enRet = Reset; + switch (enNmiSrc) + { + case NmiSrcNmi: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.NMIFR); + break; + case NmiSrcSwdt: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.SWDTFR); + break; + case NmiSrcVdu1: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.PVD1FR); + break; + case NmiSrcVdu2: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.PVD2FR); + break; + case NmiSrcXtalStop: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.XTALSTPFR); + break; + case NmiSrcSramPE: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.REPFR); + break; + case NmiSrcSramDE: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.RECCFR); + break; + case NmiSrcMpu: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.BUSMFR); + break; + case NmiSrcWdt: + enRet = (en_int_status_t)(M4_INTC->NMIFR_f.WDTFR); + break; + default: + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Clear NMI interrupt request flag + ** + ** \param [in] u16NmiSrc NMI Int source, This parameter can be + ** any composited value of @ref en_nmi_src_t + ** + ** \retval Ok Interrupt source be cleared + ** + ******************************************************************************/ +en_result_t NMI_IrqFlgClr(uint16_t u16NmiSrc) +{ + M4_INTC->NMICFR |= u16NmiSrc; + return Ok; +} + +/** + ******************************************************************************* + ** \brief ISR for NMI + ** + ******************************************************************************/ +void NMI_IrqHandler(void) +{ + DDL_ASSERT(IS_NULL_POINT(pfnNmiCallback)); + + pfnNmiCallback(); +} + +/** + ******************************************************************************* + ** \brief Enable Softeware Interrupt (SWI) + ** + * \param [in] u32SwiCh This parameter can be any composited + * value of @ref en_swi_ch_t + ** + ** \retval Ok SWI initialized + ** + ******************************************************************************/ +en_result_t SWI_Enable(uint32_t u32SwiCh) +{ + M4_INTC->SWIER |= u32SwiCh; + return Ok; +} + +/** + ******************************************************************************* + ** \brief De-Init Softeware Interrupt (SWI) + ** + * \param [in] u32SwiCh This parameter can be any composited + * value of @ref en_swi_ch_t + ** + ** \retval Ok SWI de-initialized + ** + ******************************************************************************/ +en_result_t SWI_Disable(uint32_t u32SwiCh) +{ + /* clear software interrupt enable register */ + M4_INTC->SWIER &= ~u32SwiCh; + + return Ok; +} + +//@} // ExintNmiSwiGroup + +#endif /* DDL_EXINT_NMI_SWI_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_gpio.c b/driver/src/hc32f460_gpio.c new file mode 100644 index 0000000..16b8656 --- /dev/null +++ b/driver/src/hc32f460_gpio.c @@ -0,0 +1,671 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_gpio.c + ** + ** A detailed description is available at + ** @link GpioGroup Gpio description @endlink + ** + ** - 2018-10-12 CDT First version for Device Driver Library of Gpio. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_gpio.h" +#include "hc32f460_utility.h" + +#if (DDL_GPIO_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup GpioGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define GPIO_BASE (0x40053800ul) +#define PODR_BASE (0x0004ul) +#define POER_BASE (0x0006ul) +#define POSR_BASE (0x0008ul) +#define PORR_BASE (0x000Aul) +#define PCR_BASE (0x0400ul) +#define PFSR_BASE (0x0402ul) + +/*! Parameter validity check for port group. */ +#define IS_VALID_PORT(x) \ +( ((x) == PortA) || \ + ((x) == PortB) || \ + ((x) == PortC) || \ + ((x) == PortD) || \ + ((x) == PortE) || \ + ((x) == PortH)) + +/*! Parameter validity check for pin. */ +#define IS_VALID_PIN(x) \ +( ((x) == Pin00) || \ + ((x) == Pin01) || \ + ((x) == Pin02) || \ + ((x) == Pin03) || \ + ((x) == Pin04) || \ + ((x) == Pin05) || \ + ((x) == Pin06) || \ + ((x) == Pin07) || \ + ((x) == Pin08) || \ + ((x) == Pin09) || \ + ((x) == Pin10) || \ + ((x) == Pin11) || \ + ((x) == Pin12) || \ + ((x) == Pin13) || \ + ((x) == Pin14) || \ + ((x) == Pin15)) + +/*! Parameter validity check for debug pins. */ +#define IS_VALID_DEBUGPIN(x) ((x) <= 0x1Fu) + +/*! Parameter validity check for pin mode. */ +#define IS_VALID_PINMODE(x) \ +( ((x) == Pin_Mode_In) || \ + ((x) == Pin_Mode_Out) || \ + ((x) == Pin_Mode_Ana)) + +/*! Parameter validity check for pin drive capacity. */ +#define IS_VALID_PINDRV(x) \ +( ((x) == Pin_Drv_L) || \ + ((x) == Pin_Drv_M) || \ + ((x) == Pin_Drv_H)) + +/*! Parameter validity check for pin output type. */ +#define IS_VALID_PINTYPE(x) \ +( ((x) == Pin_OType_Cmos) || \ + ((x) == Pin_OType_Od)) + +/*! Parameter validity check for pin read wait cycle. */ +#define IS_VALID_READWAIT(x) \ +( ((x) == WaitCycle0) || \ + ((x) == WaitCycle1) || \ + ((x) == WaitCycle2) || \ + ((x) == WaitCycle3)) + +/*! Parameter validity check for pin function */ +#define IS_VALID_FUNC(x) \ +( ((x) == Func_Gpio) || \ + (((x) >= Func_Fcmref) && \ + ((x) <= Func_I2s)) || \ + ((x) == Func_Evnpt) || \ + ((x) == Func_Eventout) || \ + (((x) >= Func_Usart1_Tx) && \ + ((x) <= Func_I2s2_Ck))) + +/*! Parameter validity check for pin sub-function */ +#define IS_VALID_SUBFUNC(x) \ +( ((x) == Func_Gpio) || \ + ((x) == Func_Fcmref) || \ + ((x) == Func_Rtcout) || \ + ((x) == Func_Vcout) || \ + ((x) == Func_Adtrg) || \ + ((x) == Func_Mclkout) || \ + ((x) == Func_Tim4) || \ + ((x) == Func_Tim6) || \ + ((x) == Func_Tima0) || \ + ((x) == Func_Tima1) || \ + ((x) == Func_Tima2) || \ + ((x) == Func_Emb) || \ + ((x) == Func_Usart_Ck) || \ + ((x) == Func_Spi_Nss) || \ + ((x) == Func_Qspi) || \ + ((x) == Func_Key) || \ + ((x) == Func_Sdio) || \ + ((x) == Func_I2s) || \ + ((x) == Func_UsbF) || \ + ((x) == Func_Evnpt) || \ + ((x) == Func_Eventout)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Port init + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** \param [in] pstcPortInit Structure pointer of port configuration + ** + ** \retval Ok Port initial successful + ** + ******************************************************************************/ +en_result_t PORT_Init(en_port_t enPort, uint16_t u16Pin, const stc_port_init_t *pstcPortInit) +{ + stc_port_pcr_field_t *PCRx; + stc_port_pfsr_field_t * PFSRx; + uint8_t u8PinPos = 0u; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + DDL_ASSERT(IS_VALID_PINMODE(pstcPortInit->enPinMode)); + DDL_ASSERT(IS_VALID_PINDRV(pstcPortInit->enPinDrv)); + DDL_ASSERT(IS_VALID_PINTYPE(pstcPortInit->enPinOType)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPortInit->enLatch)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPortInit->enExInt)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPortInit->enInvert)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPortInit->enPullUp)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPortInit->enPinSubFunc)); + + PORT_Unlock(); + for (u8PinPos = 0u; u8PinPos < 16u; u8PinPos ++) + { + if (u16Pin & (1ul<PCRA0) + \ + enPort * 0x40ul + u8PinPos * 0x04ul); + PFSRx = (stc_port_pfsr_field_t *)((uint32_t)(&M4_PORT->PFSRA0) + \ + enPort * 0x40ul + u8PinPos * 0x04ul); + + /* Input latch function setting */ + PCRx->LTE = pstcPortInit->enLatch; + + /* External interrupt input enable setting */ + PCRx->INTE = pstcPortInit->enExInt; + + /* In_Out invert setting */ + PCRx->INVE = pstcPortInit->enInvert; + + /* Pin pull-up setting */ + PCRx->PUU = pstcPortInit->enPullUp; + + /* CMOS/OD output setting */ + PCRx->NOD = pstcPortInit->enPinOType; + + /* Pin drive mode setting */ + PCRx->DRV = pstcPortInit->enPinDrv; + + /* Pin mode setting */ + switch (pstcPortInit->enPinMode) + { + case Pin_Mode_In: + PCRx->DDIS = 0u; + PCRx->POUTE = 0u; + break; + case Pin_Mode_Out: + PCRx->DDIS = 0u; + PCRx->POUTE = 1u; + break; + case Pin_Mode_Ana: + PCRx->DDIS = 1u; + break; + default: + break; + } + /* Sub function enable setting */ + PFSRx->BFE = pstcPortInit->enPinSubFunc; + } + } + PORT_Lock(); + return Ok; +} + +/** + ******************************************************************************* + ** \brief Port de-init + ** + ** \param None + ** + ** \retval Ok GPIO de-initial successful + ** + ******************************************************************************/ +en_result_t PORT_DeInit(void) +{ + uint8_t u8PortIdx, u8PinIdx; + PORT_Unlock(); + + for (u8PortIdx = (uint8_t)PortA; u8PortIdx <= (uint8_t)PortH; u8PortIdx++) + { + *(uint16_t *)(GPIO_BASE + PODR_BASE + u8PortIdx * 0x10ul) = 0u; + *(uint16_t *)(GPIO_BASE + POER_BASE + u8PortIdx * 0x10ul) = 0u; + *(uint16_t *)(GPIO_BASE + POSR_BASE + u8PortIdx * 0x10ul) = 0u; + *(uint16_t *)(GPIO_BASE + PORR_BASE + u8PortIdx * 0x10ul) = 0u; + for (u8PinIdx = 0u; u8PinIdx < 16u; u8PinIdx++) + { + if (((uint8_t)PortH == u8PortIdx) && (3u == u8PinIdx)) + { + break; + } + *(uint16_t *)(GPIO_BASE + PCR_BASE + u8PortIdx * 0x40ul + u8PinIdx * 0x4ul) = 0u; + *(uint16_t *)(GPIO_BASE + PFSR_BASE + u8PortIdx * 0x40ul + u8PinIdx * 0x4ul) = 0u; + } + } + M4_PORT->PCCR = 0u; + M4_PORT->PINAER = 0u; + M4_PORT->PSPCR = 0x1Fu; + + PORT_Lock(); + return Ok; +} + +/** + ******************************************************************************* + ** \brief Special control register Setting + ** + ** \param [in] u8DebugPort Debug port setting register, This parameter + ** can be any composed value of @ref en_debug_port_t + ** + ** \param [in] enFunc The new state of the debug ports. + ** \arg Enable Enable. + ** \arg Disable Disable. + ** + ** \retval Ok Debug port set successful + ** + ******************************************************************************/ +en_result_t PORT_DebugPortSetting(uint8_t u8DebugPort, en_functional_state_t enFunc) +{ + /* parameter check */ + DDL_ASSERT(IS_VALID_DEBUGPIN(u8DebugPort)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enFunc)); + + PORT_Unlock(); + + if (Enable == enFunc) + { + M4_PORT->PSPCR |= (uint16_t)(u8DebugPort & 0x1Ful); + } + else + { + M4_PORT->PSPCR &= (uint16_t)(~(u8DebugPort & 0x1Ful)); + } + + PORT_Lock(); + return Ok; +} + +/** + ******************************************************************************* + ** \brief Port Public Setting + ** + ** \param [in] pstcPortPubSet Structure pointer of public setting (PCCR) + ** + ** \retval Ok Port public register set successful + ** + ******************************************************************************/ +en_result_t PORT_PubSetting(const stc_port_pub_set_t *pstcPortPubSet) +{ + DDL_ASSERT(IS_VALID_FUNC(pstcPortPubSet->enSubFuncSel)); + DDL_ASSERT(IS_VALID_READWAIT(pstcPortPubSet->enReadWait)); + PORT_Unlock(); + + /* PCCR setting */ + /* Sub function setting */ + M4_PORT->PCCR_f.BFSEL = pstcPortPubSet->enSubFuncSel; + + /* PIDRx, PCRxy read wait cycle setting */ + M4_PORT->PCCR_f.RDWT = pstcPortPubSet->enReadWait; + + PORT_Lock(); + return Ok; +} + + +/** + ******************************************************************************* + ** \brief PSPCR, PCCR, PINAER, PCRxy, PFSRxy write enable + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +void PORT_Unlock(void) +{ + M4_PORT->PWPR = 0xA501u; +} + +/** + ******************************************************************************* + ** \brief SPCR, PCCR, PINAER, PCRxy, PFSRxy write disable + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +void PORT_Lock(void) +{ + M4_PORT->PWPR = 0xA500u; +} + +/** + ******************************************************************************* + ** \brief Read Port value + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** + ** \retval uint16_t The output port value + ** + ******************************************************************************/ +uint16_t PORT_GetData(en_port_t enPort) +{ + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + uint32_t *PIDRx; + PIDRx = (uint32_t *)((uint32_t)(&M4_PORT->PIDRA) + 0x10u * enPort); + return (uint16_t)(*PIDRx); +} + +/** + ******************************************************************************* + ** \brief Read Pin value + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] enPin GPIO pin index, This parameter can be + ** any value of @ref en_pin_t + ** \retval en_flag_status_t The output port pin value + ** + ******************************************************************************/ +en_flag_status_t PORT_GetBit(en_port_t enPort, en_pin_t enPin) +{ + uint32_t *PIDRx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + DDL_ASSERT(IS_VALID_PIN(enPin)); + + PIDRx = (uint32_t *)((uint32_t)(&M4_PORT->PIDRA) + 0x10u * enPort); + return (en_flag_status_t)((bool)(!!(*PIDRx & (enPin)))); +} + +/** + ******************************************************************************* + ** \brief Set Port value + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** + ** \retval Ok Data be set to corresponding port + ** + ******************************************************************************/ +en_result_t PORT_SetPortData(en_port_t enPort, uint16_t u16Pin) +{ + uint16_t *PODRx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + PODRx = (uint16_t *)((uint32_t)(&M4_PORT->PODRA) + 0x10u * enPort); + *PODRx |= u16Pin; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Set Port value + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** + ** \retval Ok Data be reset to corresponding port + ** + ******************************************************************************/ +en_result_t PORT_ResetPortData(en_port_t enPort, uint16_t u16Pin) +{ + uint16_t *PODRx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + PODRx = (uint16_t *)((uint32_t)(&M4_PORT->PODRA) + 0x10u * enPort); + *PODRx &= (uint16_t)(~u16Pin); + return Ok; +} + +/** + ******************************************************************************* + ** \brief Port Pin Output enable + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** \param [in] enNewState The new state of pin direction setting + ** \retval Ok Set successful to corresponding port/pin + ** + ******************************************************************************/ +en_result_t PORT_OE(en_port_t enPort, uint16_t u16Pin, en_functional_state_t enNewState) +{ + uint16_t *POERx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + POERx = (uint16_t *)((uint32_t)(&M4_PORT->POERA) + 0x10ul * enPort); + if (Enable == enNewState) + { + *POERx |= u16Pin; + } + else + { + *POERx &= (uint16_t)(~u16Pin); + } + return Ok; + +} + +/** + ******************************************************************************* + ** \brief Set Port Pin + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** \retval Ok Set successful to corresponding pins + ** + ******************************************************************************/ +en_result_t PORT_SetBits(en_port_t enPort, uint16_t u16Pin) +{ + uint16_t *POSRx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + POSRx = (uint16_t *)((uint32_t)(&M4_PORT->POSRA) + 0x10u * enPort); + *POSRx |= u16Pin; + return Ok; + +} + +/** + ******************************************************************************* + ** \brief Reset Port Pin + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** \retval Ok Set successful to corresponding pins + ** + ******************************************************************************/ +en_result_t PORT_ResetBits(en_port_t enPort, uint16_t u16Pin) +{ + uint16_t *PORRx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + PORRx = (uint16_t *)((uint32_t)(&M4_PORT->PORRA) + 0x10u * enPort); + *PORRx |= u16Pin; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Toggle Port Pin + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any composed value of @ref en_pin_t + ** \retval Ok Set successful to corresponding pins + ** + ******************************************************************************/ +en_result_t PORT_Toggle(en_port_t enPort, uint16_t u16Pin) +{ + uint16_t *POTRx; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + + POTRx = (uint16_t *)((uint32_t)(&M4_PORT->POTRA) + 0x10u * enPort); + *POTRx |= u16Pin; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Set port always ON + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] enNewState The new state of the port always ON function. + ** \arg Enable Enable. + ** \arg Disable Disable. + ** + ** \retval Ok Set successful to corresponding pins + ** + ******************************************************************************/ +en_result_t PORT_AlwaysOn(en_port_t enPort, en_functional_state_t enNewState) +{ + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + PORT_Unlock(); + + if (Enable == enNewState) + { + M4_PORT->PINAER |= Enable << (uint8_t)enPort; + } + else + { + M4_PORT->PINAER &= (uint16_t)(~(((1ul << (uint8_t)enPort)) & 0x1Ful)); + } + + PORT_Lock(); + return Ok; +} + +/** + ******************************************************************************* + ** \brief Set Port Pin function + ** + ** \param [in] enPort GPIO port index, This parameter can be + ** any value of @ref en_port_t + ** \param [in] u16Pin GPIO pin index, This parameter can be + ** any value of @ref en_pin_t + ** \param [in] enFuncSel Function selection, This parameter can be + ** any value of @ref en_port_func_t + ** + ** \param [in] enSubFunc The new state of the gpio sub-function. + ** \arg Enable Enable. + ** \arg Disable Disable. + ** + ** \retval Ok Set successful to corresponding pins + ** + ******************************************************************************/ +en_result_t PORT_SetFunc(en_port_t enPort, uint16_t u16Pin, en_port_func_t enFuncSel, \ + en_functional_state_t enSubFunc) +{ + stc_port_pfsr_field_t *PFSRx; + uint8_t u8PinPos = 0u; + + /* parameter check */ + DDL_ASSERT(IS_VALID_PORT(enPort)); + DDL_ASSERT(IS_VALID_FUNC(enFuncSel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enSubFunc)); + + PORT_Unlock(); + + for (u8PinPos = 0u; u8PinPos < 16u; u8PinPos ++) + { + if (u16Pin & (uint16_t)(1ul<PFSRA0) \ + + 0x40ul * enPort + 0x4ul * u8PinPos); + + /* main function setting */ + PFSRx->FSEL = enFuncSel; + + /* sub function enable setting */ + PFSRx->BFE = (Enable == enSubFunc ? Enable : Disable); + } + } + + PORT_Lock(); + return Ok; +} + +/** + ******************************************************************************* + ** \brief Set global sub-function + ** + ** \param [in] enFuncSel Function selection, This parameter can be + ** some values of @ref en_port_func_t, cannot + ** large than 15u + ** + ** \retval Ok Set successful to corresponding pins + ** + ******************************************************************************/ +en_result_t PORT_SetSubFunc(en_port_func_t enFuncSel) +{ + /* parameter check */ + DDL_ASSERT(IS_VALID_SUBFUNC(enFuncSel)); + + PORT_Unlock(); + + M4_PORT->PCCR_f.BFSEL = enFuncSel; + + PORT_Lock(); + return Ok; +} + +//@} // GpioGroup + +#endif /* DDL_GPIO_ENABLE */ + +/****************************************************************************** + * EOF (not truncated) + *****************************************************************************/ diff --git a/driver/src/hc32f460_hash.c b/driver/src/hc32f460_hash.c new file mode 100644 index 0000000..393736b --- /dev/null +++ b/driver/src/hc32f460_hash.c @@ -0,0 +1,301 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_hash.c + ** + ** A detailed description is available at + ** @link HashGroup HASH description @endlink + ** + ** - 2018-10-18 CDT First version for Device Driver Library of HASH. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_hash.h" +#include "hc32f460_utility.h" + +#if (DDL_HASH_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup HashGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* Constants definitions. */ +#define HASH_GROUP_LEN (64u) +#define LAST_GROUP_MAX_LEN (56u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static void HASH_WriteData(const uint8_t *pu8SrcData); +static void HASH_GetMsgDigest(uint8_t *pu8MsgDigest); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initialize the HASH. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +void HASH_Init(void) +{ + /* Stop hash calculating */ + bM4_HASH_CR_START = 0u; +} + +/** + ******************************************************************************* + ** \brief DeInitialize the HASH. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +void HASH_DeInit(void) +{ + /* Stop hash calculating */ + bM4_HASH_CR_START = 0u; + + /* Reset register CR. */ + M4_HASH->CR = 0u; +} + +/** + ******************************************************************************* + ** \brief HASH(SHA256) processes pu8SrcData. + ** + ** \param [in] pu8SrcData Pointer to the source data buffer (buffer to + ** be hashed). + ** + ** \param [in] u32SrcDataSize Length of the input buffer in bytes. + ** + ** \param [out] pu8MsgDigest Pointer to the computed digest. Its size + ** must be 32 bytes. + ** + ** \param [in] u32Timeout Timeout value. + ** + ** \retval Ok No error occurred. + ** \retval ErrorTimeout HASH works timeout. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t HASH_Start(const uint8_t *pu8SrcData, + uint32_t u32SrcDataSize, + uint8_t *pu8MsgDigest, + uint32_t u32Timeout) +{ + en_result_t enRet = ErrorInvalidParameter; + uint8_t u8FillBuffer[HASH_GROUP_LEN]; + uint8_t u8FirstGroup = 0u; + uint8_t u8HashEnd = 0u; + uint8_t u8DataEndMark = 0u; + uint32_t u32Index = 0u; + uint32_t u32BitLenHi; + uint32_t u32BitLenLo; + uint32_t u32HashTimeout; + __IO uint32_t u32TimeCount; + + if ((NULL != pu8SrcData) && + (0u != u32SrcDataSize) && + (NULL != pu8MsgDigest) && + (0u != u32Timeout)) + { + /* 10 is the number of required instructions cycles for the below loop statement. */ + u32HashTimeout = u32Timeout * (SystemCoreClock / 10u / 1000u); + u32BitLenHi = (u32SrcDataSize >> 29u) & 0x7u; + u32BitLenLo = (u32SrcDataSize << 3u); + + while (1u) + { + /* Stop hash calculating. */ + bM4_HASH_CR_START = 0u; + + if (u32SrcDataSize >= HASH_GROUP_LEN) + { + HASH_WriteData(&pu8SrcData[u32Index]); + u32SrcDataSize -= HASH_GROUP_LEN; + u32Index += HASH_GROUP_LEN; + } + else if (u32SrcDataSize >= LAST_GROUP_MAX_LEN) + { + memset(u8FillBuffer, 0, HASH_GROUP_LEN); + memcpy(u8FillBuffer, &pu8SrcData[u32Index], u32SrcDataSize); + u8FillBuffer[u32SrcDataSize] = 0x80u; + u8DataEndMark = 1u; + HASH_WriteData(u8FillBuffer); + u32SrcDataSize = 0u; + } + else + { + u8HashEnd = 1u; + } + + if (u8HashEnd != 0u) + { + memset(u8FillBuffer, 0, HASH_GROUP_LEN); + if (u32SrcDataSize > 0u) + { + memcpy(u8FillBuffer, &pu8SrcData[u32Index], u32SrcDataSize); + } + if (u8DataEndMark == 0u) + { + u8FillBuffer[u32SrcDataSize] = 0x80u; + } + u8FillBuffer[63u] = (uint8_t)(u32BitLenLo); + u8FillBuffer[62u] = (uint8_t)(u32BitLenLo >> 8u); + u8FillBuffer[61u] = (uint8_t)(u32BitLenLo >> 16u); + u8FillBuffer[60u] = (uint8_t)(u32BitLenLo >> 24u); + u8FillBuffer[59u] = (uint8_t)(u32BitLenHi); + u8FillBuffer[58u] = (uint8_t)(u32BitLenHi >> 8u); + u8FillBuffer[57u] = (uint8_t)(u32BitLenHi >> 16u); + u8FillBuffer[56u] = (uint8_t)(u32BitLenHi >> 24u); + HASH_WriteData(u8FillBuffer); + } + + /* check if first group */ + if (0u == u8FirstGroup) + { + u8FirstGroup = 1u; + /* Set first group. */ + bM4_HASH_CR_FST_GRP = 1u; + } + else + { + /* Set continuous group. */ + bM4_HASH_CR_FST_GRP = 0u; + } + + /* Start hash calculating. */ + bM4_HASH_CR_START = 1u; + + u32TimeCount = 0u; + enRet = ErrorTimeout; + while (u32TimeCount < u32HashTimeout) + { + if (bM4_HASH_CR_START == 0u) + { + enRet = Ok; + break; + } + u32TimeCount++; + } + + if ((ErrorTimeout == enRet) || (u8HashEnd != 0u)) + { + break; + } + } + + if (Ok == enRet) + { + /* HASH calculated done */ + HASH_GetMsgDigest(pu8MsgDigest); + } + + /* Stop hash calculating. */ + bM4_HASH_CR_START = 0u; + } + + return enRet; +} + +/******************************************************************************* + * Function implementation - local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Writes the input buffer in data register. + ** + ** \param [in] pu8SrcData Pointer to source data buffer. + ** + ** \retval None + ** + ******************************************************************************/ +static void HASH_WriteData(const uint8_t *pu8SrcData) +{ + uint8_t i; + uint8_t j; + uint32_t u32Temp; + __IO uint32_t *io32HashDr = &(M4_HASH->DR15); + + for (i = 0u; i < 16u; i++) + { + j = i * 4u + 3u; + u32Temp = (uint32_t)pu8SrcData[j]; + u32Temp |= ((uint32_t)pu8SrcData[j-1u]) << 8u; + u32Temp |= ((uint32_t)pu8SrcData[j-2u]) << 16u; + u32Temp |= ((uint32_t)pu8SrcData[j-3u]) << 24u; + + *io32HashDr = u32Temp; + io32HashDr++; + } +} + +/** + ******************************************************************************* + ** \brief Provides the message digest result. + ** + ** \param [out] pu8MsgDigest Pointer to the message digest. + ** + ** \retval None + ** + ******************************************************************************/ +static void HASH_GetMsgDigest(uint8_t *pu8MsgDigest) +{ + uint8_t i; + uint8_t j; + uint32_t u32Temp; + __IO uint32_t *io32HashHr = &(M4_HASH->HR7); + + for (i = 0u; i < 8u; i++) + { + j = i * 4u + 3u; + u32Temp = *io32HashHr; + + pu8MsgDigest[j] = (uint8_t)u32Temp; + pu8MsgDigest[j-1u] = (uint8_t)(u32Temp >> 8u); + pu8MsgDigest[j-2u] = (uint8_t)(u32Temp >> 16u); + pu8MsgDigest[j-3u] = (uint8_t)(u32Temp >> 24u); + + io32HashHr++; + } +} + +//@} // HashGroup + +#endif /* DDL_HASH_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_i2c.c b/driver/src/hc32f460_i2c.c new file mode 100644 index 0000000..f5b4fdd --- /dev/null +++ b/driver/src/hc32f460_i2c.c @@ -0,0 +1,1318 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_i2c.c + ** + ** A detailed description is available at + ** @link I2cGroup Inter-Integrated Circuit(I2C) description @endlink + ** + ** - 2018-10-16 CDT First version for Device Driver Library of I2C. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_i2c.h" +#include "hc32f460_utility.h" + +#if (DDL_I2C_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup I2cGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* Config I2C peripheral */ +#define I2C_SRC_CLK (SystemCoreClock >> M4_SYSREG->CMU_SCFGR_f.PCLK3S) +#define I2C_ANA_FILTER_VALID (1U) +#define I2C_CLK_TIMEOUT_VALID (1U) + +#define I2C_BAUDRATE_MAX (400000ul) + +/*! Parameter validity check for unit. */ +#define IS_VALID_UNIT(x) \ +( ((x) == M4_I2C1) || \ + ((x) == M4_I2C2) || \ + ((x) == M4_I2C3)) + +/*! Parameter check for I2C baudrate value !*/ +#define IS_VALID_SPEED(speed) ((speed) <= (I2C_BAUDRATE_MAX)) + +/*! Parameter check for I2C baudrate calculate prccess !*/ +#define IS_VALID_FDIV(x) \ +( ((x) == I2C_CLK_DIV1) || \ + ((x) == I2C_CLK_DIV2) || \ + ((x) == I2C_CLK_DIV4) || \ + ((x) == I2C_CLK_DIV8) || \ + ((x) == I2C_CLK_DIV16) || \ + ((x) == I2C_CLK_DIV32) || \ + ((x) == I2C_CLK_DIV64) || \ + ((x) == I2C_CLK_DIV128)) + +#define IS_VALID_BAUDWIDTH(result) ((result) == true) + +/*! Parameter check for Digital filter config !*/ +#define IS_VALID_DIGITAL_FILTER(x) \ +( ((x) == Filter1BaseCycle) || \ + ((x) == Filter2BaseCycle) || \ + ((x) == Filter3BaseCycle) || \ + ((x) == Filter4BaseCycle)) + +/*! Parameter check for address mode !*/ +#define IS_VALID_ADRMODE(x) \ +( ((x) == Adr7bit) || \ + ((x) == Adr10bit)) + +/*! Parameter check for I2C transfer direction !*/ +#define IS_VALID_TRANS_DIR(x) \ +( ((x) == I2CDirReceive) || \ + ((x) == I2CDirTrans)) + +/*! Parameter check for Time out control switch !*/ +#define IS_VALID_TIMOUT_SWITCH(x) \ +( ((x) == TimeoutFunOff) || \ + ((x) == LowTimerOutOn) || \ + ((x) == HighTimeOutOn) || \ + ((x) == BothTimeOutOn)) + +/*! Parameter check for I2C 7 bit address range !*/ +#define IS_VALID_7BIT_ADR(x) ((x) <= 0x7F) + +/*! Parameter check for I2C 10 bit address range !*/ +#define IS_VALID_10BIT_ADR(x) ((x) <= 0x3FF) + +/*! Parameter check for readable I2C status bit !*/ +#define IS_VALID_RD_STATUS_BIT(x) \ +( ((x) == I2C_SR_STARTF) || \ + ((x) == I2C_SR_SLADDR0F) || \ + ((x) == I2C_SR_SLADDR1F) || \ + ((x) == I2C_SR_TENDF) || \ + ((x) == I2C_SR_STOPF) || \ + ((x) == I2C_SR_RFULLF) || \ + ((x) == I2C_SR_TEMPTYF) || \ + ((x) == I2C_SR_ARLOF) || \ + ((x) == I2C_SR_ACKRF) || \ + ((x) == I2C_SR_NACKF) || \ + ((x) == I2C_SR_TMOUTF) || \ + ((x) == I2C_SR_MSL) || \ + ((x) == I2C_SR_BUSY) || \ + ((x) == I2C_SR_TRA) || \ + ((x) == I2C_SR_GENCALLF) || \ + ((x) == I2C_SR_SMBDEFAULTF) || \ + ((x) == I2C_SR_SMBHOSTF) || \ + ((x) == I2C_SR_SMBALRTF)) + +#define IS_VALID_ACK_CONFIG(x) \ +( ((x) == I2c_ACK) || \ + ((x) == I2c_NACK)) + +#define I2C_SCL_HIGHT_LOW_LVL_SUM_MAX ((float32_t)0x1F * (float32_t)2) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Try to wait a status of specified flags + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32Flag specifies the flag to check, + ** This parameter can be one of the following values: + ** I2C_SR_STARTF + ** I2C_SR_SLADDR0F + ** I2C_SR_SLADDR1F + ** I2C_SR_TENDF + ** I2C_SR_STOPF + ** I2C_SR_RFULLF + ** I2C_SR_TEMPTYF + ** I2C_SR_ARLOF + ** I2C_SR_ACKRF: ACK status + ** I2C_SR_NACKF: NACK Flag + ** I2C_SR_TMOUTF + ** I2C_SR_MSL + ** I2C_SR_BUSY + ** I2C_SR_TRA + ** I2C_SR_GENCALLF + ** I2C_SR_SMBDEFAULTF + ** I2C_SR_SMBHOSTF + ** I2C_SR_SMBALRTF + ** \param [in] enStatus Expected status, This parameter can be one of + ** the following values: + ** Set + ** Reset + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok Successfully gotten the expected status of the specified flags + ** \retval ErrorTimeout Failed to get expected status of specified flags. + ******************************************************************************/ +en_result_t I2C_WaitStatus(const M4_I2C_TypeDef *pstcI2Cx, uint32_t u32Flag, en_flag_status_t enStatus, uint32_t u32Timeout) +{ + en_result_t enRet = ErrorTimeout; + uint32_t u32RegStatusBit; + + for(;;) + { + u32RegStatusBit = (pstcI2Cx->SR & u32Flag); + if(((enStatus == Set) && (u32Flag == u32RegStatusBit)) + || ((enStatus == Reset) && (0UL == u32RegStatusBit))) + { + enRet = Ok; + } + + if((Ok == enRet) || (0UL == u32Timeout)) + { + break; + } + else + { + u32Timeout--; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2C generate start condition + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState new state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_GenerateStart(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.START = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C generate restart condition + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_GenerateReStart(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.RESTART = enNewState; + +} + +/** + ******************************************************************************* + ** \brief I2C generate stop condition + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_GenerateStop(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.STOP = enNewState; +} + +/** + ******************************************************************************* + ** \brief Set the baudrate for I2C peripheral. + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] pstcI2cInit Pointer to I2C config structure @ref stc_i2c_init_t + ** 1. pstcI2cInit->u32ClockDiv: Division of i2c source clock, reference as: + ** step1: calculate div = (I2cSrcClk/Baudrate/(68+2*dnfsum+SclTime) + ** I2cSrcClk -- I2c source clock + ** Baudrate -- baudrate of i2c + ** SclTime -- =(SCL rising time + SCL falling time)/period of i2c clock + ** according to i2c bus hardware parameter. + ** dnfsum -- 0 if digital filter off; + ** Filter capacity if digital filter on(1 ~ 4) + ** step2: chose a division item which is similar and bigger than div + ** from @ref I2C_Clock_Division. + ** 2. pstcI2cInit->u32Baudrate : Baudrate configuration + ** 3. pstcI2cInit->u32SclTime : Indicate SCL pin rising and falling + ** time, should be number of T(i2c clock period time) + ** @param [out] pf32Error Baudrate error + ** @retval en_result_t Enumeration value: + ** @arg Ok: Configurate success + ** @arg ErrorInvalidParameter: Invalid parameter + ******************************************************************************/ +en_result_t I2C_BaudrateConfig(M4_I2C_TypeDef* pstcI2Cx, const stc_i2c_init_t* pstcI2cInit, float32_t *pf32Error) +{ + en_result_t enRet = Ok; + uint32_t I2cSrcClk; + uint32_t I2cDivClk; + uint32_t SclCnt; + uint32_t Baudrate; + uint32_t dnfsum = 0UL; + uint32_t divsum = 2UL; + uint32_t TheoryBaudrate; + float32_t WidthTotal; + float32_t SumTotal; + float32_t WidthHL; + float32_t fErr = 0.0F; + + if ((NULL == pstcI2cInit) || (NULL == pf32Error)) + { + enRet = ErrorInvalidParameter; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_SPEED(pstcI2cInit->u32Baudrate)); + DDL_ASSERT(IS_VALID_FDIV(pstcI2cInit->u32ClockDiv)); + + /* Get configuration for i2c */ + I2cSrcClk = I2C_SRC_CLK; + I2cDivClk = 1ul << pstcI2cInit->u32ClockDiv; + SclCnt = pstcI2cInit->u32SclTime; + Baudrate = pstcI2cInit->u32Baudrate; + + /* Judge digital filter status */ + if(1u == pstcI2Cx->FLTR_f.DNFEN) + { + dnfsum = pstcI2Cx->FLTR_f.DNF+1ul; + } + + /* Judge if clock divider on*/ + if(I2C_CLK_DIV1 == pstcI2cInit->u32ClockDiv) + { + divsum = 3ul; + } + + WidthTotal = (float32_t)I2cSrcClk / (float32_t)Baudrate / (float32_t)I2cDivClk; + SumTotal = (2.0F*(float32_t)divsum) + (2.0F*(float32_t)dnfsum) + (float32_t)SclCnt; + WidthHL = WidthTotal - SumTotal; + + /* Integer for WidthTotal, rounding off */ + if ((WidthTotal - (float32_t)((uint32_t)WidthTotal)) >= 0.5F) + { + WidthTotal = (float32_t)((uint32_t)WidthTotal) + 1.0F; + } + else + { + WidthTotal = (float32_t)((uint32_t)WidthTotal); + } + + if(WidthTotal <= SumTotal) + { + /* Err, Should set a smaller division value for pstcI2cInit->u32ClockDiv */ + enRet = ErrorInvalidParameter; + } + else + { + if(WidthHL > I2C_SCL_HIGHT_LOW_LVL_SUM_MAX) + { + /* Err, Should set a bigger division value for pstcI2cInit->u32ClockDiv */ + enRet = ErrorInvalidParameter; + } + else + { + TheoryBaudrate = I2cSrcClk / (uint32_t)WidthTotal / I2cDivClk; + fErr = ((float32_t)Baudrate - (float32_t)TheoryBaudrate) / (float32_t)TheoryBaudrate; + + /* Write register */ + pstcI2Cx->CCR_f.FREQ = pstcI2cInit->u32ClockDiv; + pstcI2Cx->CCR_f.SLOWW = (uint32_t)WidthHL/2u; + pstcI2Cx->CCR_f.SHIGHW = (uint32_t)WidthHL - ((uint32_t)WidthHL)/2u; + } + } + } + + if((NULL != pf32Error) && (Ok == enRet)) + { + *pf32Error = fErr; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-initialize I2C unit + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \retval Ok Process finished. + ******************************************************************************/ +en_result_t I2C_DeInit(M4_I2C_TypeDef* pstcI2Cx) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + /* Reset peripheral register and internal status*/ + pstcI2Cx->CR1_f.PE = 0u; + pstcI2Cx->CR1_f.SWRST = 1u; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Initialize I2C peripheral according to the structure + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] pstcI2cInit Pointer to I2C config structure @ref stc_i2c_init_t + ** 1. pstcI2cInit->u32ClockDiv: Division of i2c source clock, reference as: + ** step1: calculate div = (I2cSrcClk/Baudrate/(68+2*dnfsum+SclTime) + ** I2cSrcClk -- I2c source clock + ** Baudrate -- baudrate of i2c + ** SclTime -- =(SCL rising time + SCL falling time)/period of i2c clock + ** according to i2c bus hardware parameter. + ** dnfsum -- 0 if digital filter off; + ** Filter capacity if digital filter on(1 ~ 4) + ** step2: chose a division item which is similar and bigger than div + ** from @ref I2C_Clock_Division. + ** 2. pstcI2cInit->u32Baudrate : Baudrate configuration + ** 3. pstcI2cInit->u32SclTime : Indicate SCL pin rising and falling + ** time, should be number of T(i2c clock period time) + ** @param [out] pf32Error Baudrate error + ** @retval en_result_t Enumeration value: + ** @arg Ok: Configurate success + ** @arg ErrorInvalidParameter: Invalid parameter + ******************************************************************************/ +en_result_t I2C_Init(M4_I2C_TypeDef* pstcI2Cx, const stc_i2c_init_t* pstcI2cInit, float32_t *pf32Error) +{ + en_result_t enRes = Ok; + if((NULL == pstcI2cInit) || (NULL == pstcI2Cx)) + { + enRes = ErrorInvalidParameter; + } + else + { + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_SPEED(pstcI2cInit->u32Baudrate)); + DDL_ASSERT(IS_VALID_FDIV(pstcI2cInit->u32ClockDiv)); + + /* Register and internal status reset */ + pstcI2Cx->CR1_f.PE = 0u; + pstcI2Cx->CR1_f.SWRST = 1u; + + pstcI2Cx->CR1_f.PE = 1u; + + enRes = I2C_BaudrateConfig(pstcI2Cx, pstcI2cInit, pf32Error); + + pstcI2Cx->CR1_f.ENGC = 0u; + pstcI2Cx->CR1_f.SWRST = 0u; + pstcI2Cx->CR1_f.PE = 0u; + } + return enRes; +} + +/** + ******************************************************************************* + ** \brief I2C slave address0 config + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \param [in] enAdrMode Address mode,can be Adr7bit or Adr10bit + ** \param [in] u32Adr The slave address + ** \retval None + ******************************************************************************/ +void I2C_SlaveAdr0Config(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState, en_address_bit_t enAdrMode, uint32_t u32Adr) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + DDL_ASSERT(IS_VALID_ADRMODE(enAdrMode)); + + pstcI2Cx->SLR0_f.SLADDR0EN = enNewState; + pstcI2Cx->SLR0_f.ADDRMOD0 = enAdrMode; + if(Adr7bit == enAdrMode) + { + DDL_ASSERT(IS_VALID_7BIT_ADR(u32Adr)); + pstcI2Cx->SLR0_f.SLADDR0 = u32Adr << 1ul; + } + else + { + DDL_ASSERT(IS_VALID_10BIT_ADR(u32Adr)); + pstcI2Cx->SLR0_f.SLADDR0 = u32Adr; + } +} + +/** + ******************************************************************************* + ** \brief I2C slave address1 config + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \param [in] enAdrMode Address mode,can be Adr7bit or Adr10bit + ** \param [in] u32Adr The slave address + ** \retval None + ******************************************************************************/ +void I2C_SlaveAdr1Config(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState, en_address_bit_t enAdrMode, uint32_t u32Adr) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + DDL_ASSERT(IS_VALID_ADRMODE(enAdrMode)); + + pstcI2Cx->SLR1_f.SLADDR1EN = enNewState; + pstcI2Cx->SLR1_f.ADDRMOD1 = enAdrMode; + if(Adr7bit == enAdrMode) + { + DDL_ASSERT(IS_VALID_7BIT_ADR(u32Adr)); + pstcI2Cx->SLR1_f.SLADDR1 = u32Adr << 1ul; + } + else + { + DDL_ASSERT(IS_VALID_10BIT_ADR(u32Adr)); + pstcI2Cx->SLR1_f.SLADDR1 = u32Adr; + } +} + +/** + ******************************************************************************* + ** \brief I2C function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_Cmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.PE = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C fast ACK function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the fast ACK function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_FastAckCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + pstcI2Cx->CR3_f.FACKEN = 0ul; + } + else + { + pstcI2Cx->CR3_f.FACKEN = 1ul; + } +} + +/** + ******************************************************************************* + ** \brief I2C bus wait function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the fast ACK function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_BusWaitCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + uint32_t u32CR4_Reg = ((uint32_t)&pstcI2Cx->CR3) + 4ul; + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + *(__IO uint32_t *)u32CR4_Reg |= (1ul << 10ul); + } + else + { + *(__IO uint32_t *)u32CR4_Reg &= ~(1ul << 10ul); + } +} + +/** + ******************************************************************************* + ** \brief I2C SMBUS function configuration + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] pstcI2C_SmbusInitStruct + ** Pointer to I2C SMBUS configuration structure + ** \retval Ok Process finished. + ** \retval ErrorInvalidParameter Parameter error. + ******************************************************************************/ +en_result_t I2C_SmbusConfig(M4_I2C_TypeDef* pstcI2Cx, const stc_i2c_smbus_init_t* pstcI2C_SmbusInitStruct) +{ + en_result_t enRet = Ok; + if(NULL != pstcI2C_SmbusInitStruct) + { + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcI2C_SmbusInitStruct->enHostAdrMatchFunc)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcI2C_SmbusInitStruct->enDefaultAdrMatchFunc)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcI2C_SmbusInitStruct->enAlarmAdrMatchFunc)); + + pstcI2Cx->CR1_f.SMBHOSTEN = pstcI2C_SmbusInitStruct->enHostAdrMatchFunc; + pstcI2Cx->CR1_f.SMBDEFAULTEN = pstcI2C_SmbusInitStruct->enDefaultAdrMatchFunc; + pstcI2Cx->CR1_f.SMBALRTEN = pstcI2C_SmbusInitStruct->enAlarmAdrMatchFunc; + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2C SMBUS function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_SmBusCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.SMBUS = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C digital filter function configuration + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enDigiFilterMode Chose the digital filter mode, This parameter + ** can be one of the following values: + ** Filter1BaseCycle + ** Filter2BaseCycle + ** Filter3BaseCycle + ** Filter4BaseCycle + ** \retval None + ******************************************************************************/ +void I2C_DigitalFilterConfig(M4_I2C_TypeDef* pstcI2Cx, en_i2c_digital_filter_mode_t enDigiFilterMode) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_DIGITAL_FILTER(enDigiFilterMode)); + + pstcI2Cx->FLTR_f.DNF = enDigiFilterMode; +} + +/** + ******************************************************************************* + ** \brief I2C digital filter function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_DigitalFilterCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->FLTR_f.DNFEN = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C analog filter function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_AnalogFilterCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->FLTR_f.ANFEN = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C general call function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_GeneralCallCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.ENGC = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C status bit get + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32StatusBit specifies the flag to check, + ** This parameter can be one of the following values: + ** I2C_SR_STARTF + ** I2C_SR_SLADDR0F + ** I2C_SR_SLADDR1F + ** I2C_SR_TENDF + ** I2C_SR_STOPF + ** I2C_SR_RFULLF + ** I2C_SR_TEMPTYF + ** I2C_SR_ARLOF + ** I2C_SR_ACKRF: ACK status + ** I2C_SR_NACKF: NACK Flag + ** I2C_SR_TMOUTF + ** I2C_SR_MSL + ** I2C_SR_BUSY + ** I2C_SR_TRA + ** I2C_SR_GENCALLF + ** I2C_SR_SMBDEFAULTF + ** I2C_SR_SMBHOSTF + ** I2C_SR_SMBALRTF + ** \retval en_flag_status_t The status of the I2C status flag, may be Set or Reset. + ******************************************************************************/ +en_flag_status_t I2C_GetStatus(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32StatusBit) +{ + en_flag_status_t enRet = Reset; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_RD_STATUS_BIT(u32StatusBit)); + + if(0ul != (pstcI2Cx->SR & u32StatusBit)) + { + enRet = Set; + } + else + { + enRet = Reset; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Clear I2C status flag + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32StatusBit specifies the flag to clear, + ** This parameter can be any combination of the following values: + ** I2C_CLR_STARTFCLR + ** I2C_CLR_SLADDR0FCLR + ** I2C_CLR_SLADDR1FCLR + ** I2C_CLR_TENDFCLR + ** I2C_CLR_STOPFCLR + ** I2C_CLR_RFULLFCLR + ** I2C_CLR_TEMPTYFCLR + ** I2C_CLR_ARLOFCLR + ** I2C_CLR_NACKFCLR + ** I2C_CLR_TMOUTFCLR + ** I2C_CLR_GENCALLFCLR + ** I2C_CLR_SMBDEFAULTFCLR + ** I2C_CLR_SMBHOSTFCLR + ** I2C_CLR_SMBALRTFCLR + ** \retval None + ******************************************************************************/ +void I2C_ClearStatus(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32StatusBit) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + pstcI2Cx->CLR |= (u32StatusBit & I2C_CLR_MASK); +} + +/** + ******************************************************************************* + ** \brief I2C software reset function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_SoftwareResetCmd(M4_I2C_TypeDef* pstcI2Cx, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + pstcI2Cx->CR1_f.SWRST = enNewState; +} + +/** + ******************************************************************************* + ** \brief I2C interrupt function command + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32IntEn Specifies the I2C interrupts sources to be configuration + ** This parameter can be any combination of the following values: + ** I2C_CR2_STARTIE + ** I2C_CR2_SLADDR0EN + ** I2C_CR2_SLADDR1EN + ** I2C_CR2_TENDIE + ** I2C_CR2_STOPIE + ** I2C_CR2_RFULLIE + ** I2C_CR2_TEMPTYIE + ** I2C_CR2_ARLOIE + ** I2C_CR2_NACKIE + ** I2C_CR2_TMOURIE + ** I2C_CR2_GENCALLIE + ** I2C_CR2_SMBDEFAULTIE + ** I2C_CR2_SMBHOSTIE + ** I2C_CR2_SMBALRTIE + ** \param [in] enNewState New state of the I2Cx function, can be + ** Disable or Enable the function + ** \retval None + ******************************************************************************/ +void I2C_IntCmd(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32IntEn, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + pstcI2Cx->CR2 |= u32IntEn; + } + else + { + pstcI2Cx->CR2 &= ~u32IntEn; + } +} + +/** + ******************************************************************************* + ** \brief I2C write data register + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u8Data The data to be send + ** \retval None + ******************************************************************************/ +void I2C_WriteData(M4_I2C_TypeDef* pstcI2Cx, uint8_t u8Data) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + pstcI2Cx->DTR = u8Data; +} + +/** + ******************************************************************************* + ** \brief I2C read data register + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \retval uint8_t The value of the received data + ******************************************************************************/ +uint8_t I2C_ReadData(M4_I2C_TypeDef* pstcI2Cx) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + return pstcI2Cx->DRR; +} + +/** + ******************************************************************************* + ** \brief I2C ACK status configuration + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32AckConfig I2C ACK configurate. + ** I2c_ACK: Send ACK after date received. + ** I2c_NACK: Send NACK after date received. + ** \retval None + ******************************************************************************/ +void I2C_AckConfig(M4_I2C_TypeDef* pstcI2Cx, en_i2c_ack_config_t u32AckConfig) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_ACK_CONFIG(u32AckConfig)); + + pstcI2Cx->CR1_f.ACK = u32AckConfig; +} + +/** + ******************************************************************************* + ** \brief I2C clock timer out function config + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] pstcTimoutInit Pointer to I2C timeout function structure + ** \retval Ok Process finished. + ** \retval ErrorInvalidParameter Parameter error. + ******************************************************************************/ +en_result_t I2C_ClkTimeOutConfig(M4_I2C_TypeDef* pstcI2Cx, const stc_clock_timeout_init_t* pstcTimoutInit) +{ + en_result_t enRet = Ok; + if(NULL != pstcTimoutInit) + { + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_TIMOUT_SWITCH(pstcTimoutInit->enClkTimeOutSwitch)); + + pstcI2Cx->SLTR_f.TOUTHIGH = pstcTimoutInit->u16TimeOutHigh; + pstcI2Cx->SLTR_f.TOUTLOW = pstcTimoutInit->u16TimeOutLow; + + pstcI2Cx->CR3 &= ~0x00000007ul; + pstcI2Cx->CR3 |= pstcTimoutInit->enClkTimeOutSwitch; + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx start + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok Start success + ** \retval ErrorTimeout Start time out + ******************************************************************************/ +en_result_t I2C_Start(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32Timeout) +{ + en_result_t enRet; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_BUSY, Reset, u32Timeout); + + if(Ok == enRet) + { + /* generate start signal */ + I2C_GenerateStart(pstcI2Cx, Enable); + /* Judge if start success*/ + enRet = I2C_WaitStatus(pstcI2Cx, (I2C_SR_BUSY | I2C_SR_STARTF), Set, u32Timeout); + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx restart + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok Restart successfully + ** \retval ErrorTimeout Restart time out + ******************************************************************************/ +en_result_t I2C_Restart(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32Timeout) +{ + en_result_t enRet; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + /* Clear start status flag */ + I2C_ClearStatus(pstcI2Cx, I2C_CLR_STARTFCLR); + /* Send restart condition */ + I2C_GenerateReStart(pstcI2Cx, Enable); + /* Judge if start success*/ + enRet = I2C_WaitStatus(pstcI2Cx, (I2C_SR_BUSY | I2C_SR_STARTF), Set, u32Timeout); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx send address + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u8Addr The address to be sent + ** \param [in] enDir Can be I2CDirTrans or I2CDirReceive + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok: Send successfully + ** \retval Error: Send suscessfully and receive NACK + ** \retval ErrorTimeout: Send address time out + ******************************************************************************/ +en_result_t I2C_TransAddr(M4_I2C_TypeDef* pstcI2Cx, uint8_t u8Addr, en_trans_direction_t enDir, uint32_t u32Timeout) +{ + en_result_t enRet; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_7BIT_ADR(u8Addr)); + DDL_ASSERT(IS_VALID_TRANS_DIR(enDir)); + + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TEMPTYF, Set, u32Timeout); + + if(Ok == enRet) + { + /* Send I2C address */ + I2C_WriteData(pstcI2Cx, (u8Addr << 1u) | (uint8_t)enDir); + + if(I2CDirTrans == enDir) + { + /* If in master transfer process, Need wait transfer end */ + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TENDF, Set, u32Timeout); + } + else + { + /* If in master receive process, Need wait TRA flag */ + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TRA, Reset, u32Timeout); + } + + if(enRet == Ok) + { + /* If receive NACK */ + if(I2C_GetStatus(pstcI2Cx, I2C_SR_ACKRF) == Set) + { + enRet = Error; + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx send address 10 bit + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u16Addr The address to be sent + ** \param [in] enDir Can be I2CDirTrans or I2CDirReceive + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok: Send successfully + ** \retval Error: Send suscessfully and receive NACK + ** \retval ErrorTimeout: Send address time out + ******************************************************************************/ +en_result_t I2C_Trans10BitAddr(M4_I2C_TypeDef* pstcI2Cx, uint16_t u16Addr, en_trans_direction_t enDir, uint32_t u32Timeout) +{ + en_result_t enRet; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + DDL_ASSERT(IS_VALID_10BIT_ADR(u16Addr)); + DDL_ASSERT(IS_VALID_TRANS_DIR(enDir)); + + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TEMPTYF, Set, u32Timeout); + if(Ok == enRet) + { + /* Write 11110 + SLA(bit9:8) + W#(1bit) */ + I2C_WriteData(pstcI2Cx, (uint8_t)((u16Addr>>7u) & 0x06u) | 0xF0u | (uint8_t)I2CDirTrans); + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TENDF, Set, u32Timeout); + + if(Ok == enRet) + { + /* If receive ACK */ + if(I2C_GetStatus(pstcI2Cx, I2C_SR_ACKRF) == Reset) + { + /* Write SLA(bit7:0)*/ + I2C_WriteData(pstcI2Cx, (uint8_t)(u16Addr & 0xFFu)); + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TENDF, Set, u32Timeout); + + if(Ok == enRet) + { + if(I2C_GetStatus(pstcI2Cx, I2C_SR_ACKRF) != Reset) + { + enRet = Error; + } + } + } + else + { + enRet = Error; + } + } + } + + if((I2CDirReceive == enDir) && (Ok == enRet)) + { + /* Restart */ + I2C_ClearStatus(pstcI2Cx, I2C_CLR_STARTFCLR); + I2C_GenerateReStart(pstcI2Cx, Enable); + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_STARTF, Set, u32Timeout); + + if(Ok == enRet) + { + /* Write 11110 + SLA(bit9:8) + R(1bit) */ + I2C_WriteData(pstcI2Cx, (uint8_t)((u16Addr>>7u) & 0x06u) | 0xF0u | (uint8_t)I2CDirReceive); + /* If in master receive process, Need wait TRA flag */ + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TRA, Reset, u32Timeout); + + if(Ok == enRet) + { + /* If receive NACK */ + if(I2C_GetStatus(pstcI2Cx, I2C_SR_ACKRF) != Reset) + { + enRet = Error; + } + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx send data + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] au8TxData The data array to be sent + ** \param [in] u32Size Number of data in array pau8TxData + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok: Send successfully + ** \retval ErrorTimeout: Send data time out + ** \retval ErrorInvalidParameter: au8TxData is NULL + ******************************************************************************/ +en_result_t I2C_TransData(M4_I2C_TypeDef* pstcI2Cx, uint8_t const au8TxData[], uint32_t u32Size, uint32_t u32Timeout) +{ + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + en_result_t enRet = Ok; + __IO uint32_t u32Cnt = 0ul; + + if(au8TxData != NULL) + { + while((u32Cnt != u32Size) && (enRet == Ok)) + { + /* Wait tx buffer empty */ + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TEMPTYF, Set, u32Timeout); + + if(enRet == Ok) + { + /* Send one byte data */ + I2C_WriteData(pstcI2Cx, au8TxData[u32Cnt]); + + /* Wait transfer end */ + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_TENDF, Set, u32Timeout); + + /* If receive NACK in slave tx mode */ + if(I2C_GetStatus(pstcI2Cx, I2C_SR_NACKF) == Set) + { + I2C_ClearStatus(pstcI2Cx, I2C_CLR_NACKFCLR); + /* Exit data transfer */ + break; + } + + u32Cnt++; + } + } + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx receive data + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [out] au8RxData Array to hold the received data + ** \param [in] u32Size Number of data to be received + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok: Receive successfully + ** \retval ErrorTimeout: Receive data time out + ** \retval ErrorInvalidParameter: au8RxData is NULL + ******************************************************************************/ +en_result_t I2C_ReceiveData(M4_I2C_TypeDef* pstcI2Cx, uint8_t au8RxData[], uint32_t u32Size, uint32_t u32Timeout) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + if(au8RxData != NULL) + { + uint32_t u32FastAckDis = (pstcI2Cx->CR3_f.FACKEN); + for(uint32_t i=0ul; i= 2ul) && (i == (u32Size - 2ul))) + { + I2C_AckConfig(pstcI2Cx, I2c_NACK); + } + } + else + { + if(i != (u32Size - 1ul)) + { + I2C_AckConfig(pstcI2Cx, I2c_ACK); + } + else + { + I2C_AckConfig(pstcI2Cx, I2c_NACK); + } + } + + if(enRet == Ok) + { + /* read data from register */ + au8RxData[i] = I2C_ReadData(pstcI2Cx); + } + else + { + break; + } + } + I2C_AckConfig(pstcI2Cx, I2c_ACK); + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx master receive data and stop + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [out] au8RxData Array to hold the received data + ** \param [in] u32Size Number of data to be received + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok: Receive successfully + ** \retval ErrorTimeout: Receive data time out + ** \retval ErrorInvalidParameter: au8RxData is NULL + ******************************************************************************/ +en_result_t I2C_MasterDataReceiveAndStop(M4_I2C_TypeDef* pstcI2Cx, uint8_t au8RxData[], uint32_t u32Size, uint32_t u32Timeout) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + if(au8RxData != NULL) + { + uint32_t u32FastAckDis = (pstcI2Cx->CR3_f.FACKEN); + for(uint32_t i=0ul; i= 2ul) && (i == (u32Size - 2ul))) + { + I2C_AckConfig(pstcI2Cx, I2c_NACK); + } + } + else + { + if(i != (u32Size - 1ul)) + { + I2C_AckConfig(pstcI2Cx, I2c_ACK); + } + else + { + I2C_AckConfig(pstcI2Cx, I2c_NACK); + } + } + + if(enRet == Ok) + { + /* Stop before read last data */ + if(i == (u32Size - 1ul)) + { + I2C_ClearStatus(pstcI2Cx, I2C_CLR_STOPFCLR); + I2C_GenerateStop(pstcI2Cx, Enable); + } + + /* read data from register */ + au8RxData[i] = I2C_ReadData(pstcI2Cx); + + /* Wait stop flag after DRR read */ + if(i == (u32Size - 1ul)) + { + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_STOPF, Set, u32Timeout); + } + } + else + { + break; + } + } + I2C_AckConfig(pstcI2Cx, I2c_ACK); + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief I2Cx stop + ** \param [in] pstcI2Cx Pointer to the I2C peripheral register, can + ** be M4_I2C1,M4_I2C2 or M4_I2C3. + ** \param [in] u32Timeout Maximum count of trying to get a status of a + ** flag in status register + ** \retval Ok: Receive successfully + ** \retval ErrorTimeout: Receive data time out + ******************************************************************************/ +en_result_t I2C_Stop(M4_I2C_TypeDef* pstcI2Cx, uint32_t u32Timeout) +{ + en_result_t enRet; + + DDL_ASSERT(IS_VALID_UNIT(pstcI2Cx)); + + /* Clear stop flag */ + while((Set == I2C_GetStatus(pstcI2Cx, I2C_SR_STOPF)) && (u32Timeout > 0ul)) + { + I2C_ClearStatus(pstcI2Cx, I2C_CLR_STOPFCLR); + u32Timeout--; + } + I2C_GenerateStop(pstcI2Cx, Enable); + /* Wait stop flag */ + enRet = I2C_WaitStatus(pstcI2Cx, I2C_SR_STOPF, Set, u32Timeout); + + return enRet; +} + +//@} // I2cGroup + +#endif /* DDL_I2C_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_i2s.c b/driver/src/hc32f460_i2s.c new file mode 100644 index 0000000..ab18d3a --- /dev/null +++ b/driver/src/hc32f460_i2s.c @@ -0,0 +1,437 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_i2s.c + ** + ** A detailed description is available at + ** @link I2sGroup Inter-IC Sound Bus description @endlink + ** + ** - 2018-10-28 CDT First version for Device Driver Library of I2S. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_i2s.h" +#include "hc32f460_utility.h" + +#if (DDL_I2S_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup I2sGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for I2S register pointer */ +#define IS_VALID_I2S_REG(x) \ +( (M4_I2S1 == (x)) || \ + (M4_I2S2 == (x)) || \ + (M4_I2S3 == (x)) || \ + (M4_I2S4 == (x))) + +/*!< Parameter valid check for I2S function */ +#define IS_VALID_I2S_FUNCTION(x) \ +( (TxEn == (x)) || \ + (TxIntEn == (x)) || \ + (RxEn == (x)) || \ + (RxIntEn == (x)) || \ + (ErrIntEn == (x))) + +/*!< Parameter valid check for I2S status bits */ +#define IS_VALID_I2S_STATUS(x) \ +( (TxBufAlarmFlag == (x)) || \ + (RxBufAlarmFlag == (x)) || \ + (TxBufEmptFlag == (x)) || \ + (TxBufFullFlag == (x)) || \ + (RxBufEmptFlag == (x)) || \ + (RxBufFullFlag == (x))) + +/*!< Parameter valid check for I2S error flag */ +#define IS_VALID_I2S_ERR_FLAG(x) \ +( (ClrTxErrFlag == (x)) || \ + (ClrRxErrFlag == (x))) + +/*!< Parameter valid check for I2S mode */ +#define IS_VALID_I2S_MODE(x) \ +( (I2sMaster == (x)) || \ + (I2sSlave == (x))) + +/*!< Parameter valid check for I2S full duplex mode */ +#define IS_VALID_I2S_DUPLEX_MODE(x) \ +( (I2s_HalfDuplex == (x)) || \ + (I2s_FullDuplex == (x))) + +/*!< Parameter valid check for I2S standard */ +#define IS_VALID_I2S_STANDARD(x) \ +( (Std_Philips == (x)) || \ + (Std_MSBJust == (x)) || \ + (Std_LSBJust == (x)) || \ + (Std_PCM == (x))) + +/*!< Parameter valid check for I2S data length */ +#define IS_VALID_I2S_DATA_LEN(x) \ +( (I2s_DataLen_16Bit == (x)) || \ + (I2s_DataLen_24Bit == (x)) || \ + (I2s_DataLen_32Bit == (x))) + +/*!< Parameter valid check for I2S channel data length */ +#define IS_VALID_I2S_CHANNEL_LEN(x) \ +( (I2s_ChLen_16Bit == (x)) || \ + (I2s_ChLen_32Bit == (x))) + +/*!< Parameter valid check for I2S MCK output config */ +#define IS_VALID_I2S_MCKOUT(x) \ +( (Disable == (x)) || \ + (Enable == (x))) + +/*!< Parameter valid check for I2S EXCK config */ +#define IS_VALID_I2S_EXCK(x) \ +( (Disable == (x)) || \ + (Enable == (x))) + +/*!< Parameter valid check for I2S audio frequecy */ +#define IS_I2S_AUDIO_FREQ(FREQ) \ +( (((FREQ) >= I2S_AudioFreq_8k) && ((FREQ) <= I2S_AudioFreq_192k)) || \ + ((FREQ) == I2S_AudioFreq_Default)) + +/*! I2S registers reset value */ +#define I2S_REG_CTRL_RESET_VALUE (0x00002200ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief I2S function command + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \param [in] enFunc I2S function + ** \arg Refer @ref en_i2s_func_t + ** \param [in] enNewState New status + ** \arg Refer @ref en_functional_state_t + ** + ** \retval None + ** + ******************************************************************************/ +void I2S_FuncCmd(M4_I2S_TypeDef* pstcI2sReg, en_i2s_func_t enFunc, + en_functional_state_t enNewState) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + DDL_ASSERT(IS_VALID_I2S_FUNCTION(enFunc)); + + if(Enable == enNewState) + { + if(0ul == (pstcI2sReg->CTRL & (1ul << enFunc))) + { + pstcI2sReg->CTRL |= (1ul << enFunc); + } + } + else + { + if(0ul != (pstcI2sReg->CTRL & (1ul << enFunc))) + { + pstcI2sReg->CTRL &= ~(1ul << (uint8_t)enFunc); + } + } +} + +/** + ******************************************************************************* + ** \brief Get I2S status bit + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \param [in] enStd I2S status bit + ** \arg Refer @ref en_i2s_std_t + ** + ** \retval Set flag is set + ** \retval Reset flag is reset + ** + ******************************************************************************/ +en_flag_status_t I2S_GetStatus(M4_I2S_TypeDef* pstcI2sReg, en_i2s_std_t enStd) +{ + en_flag_status_t enRet = Reset; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + DDL_ASSERT(IS_VALID_I2S_STATUS(enStd)); + + if (0ul != ((uint32_t)(pstcI2sReg->SR & (1ul << (uint8_t)enStd)))) + { + enRet = Set; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Clear I2S error flag + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \param [in] enErrFlag I2S Error flag + ** \arg Refer @ref en_i2s_err_flag_t + ** + ** \retval None + ** + ******************************************************************************/ +void I2S_ClrErrFlag(M4_I2S_TypeDef* pstcI2sReg, en_i2s_err_flag_t enErrFlag) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + DDL_ASSERT(IS_VALID_I2S_ERR_FLAG(enErrFlag)); + + pstcI2sReg->ER |= (1ul << (uint8_t)enErrFlag); +} + +/** + ******************************************************************************* + ** \brief Get I2S error flag + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \param [in] enErrFlag I2S Error flag + ** \arg Refer @ref en_i2s_err_flag_t + ** + ** \retval Set flag is set + ** \retval Reset flag is reset + ** + ******************************************************************************/ +en_flag_status_t I2S_GetErrFlag(M4_I2S_TypeDef* pstcI2sReg, + en_i2s_err_flag_t enErrFlag) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + DDL_ASSERT(IS_VALID_I2S_ERR_FLAG(enErrFlag)); + + return (en_flag_status_t)((uint32_t)(pstcI2sReg->ER | (1ul << (uint8_t)enErrFlag))); +} + +/** + ******************************************************************************* + ** \brief Write data to I2s data send register + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \param [in] u32Data Data to be send + ** + ** \retval None + ** + ******************************************************************************/ +void I2S_SendData(M4_I2S_TypeDef* pstcI2sReg, uint32_t u32Data) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + + pstcI2sReg->TXBUF = u32Data; +} + +/** + ******************************************************************************* + ** \brief Read data from I2s data receive register + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** + ** \retval uint32_t The data read out + ** + ******************************************************************************/ +uint32_t I2S_RevData(const M4_I2S_TypeDef* pstcI2sReg) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + + return pstcI2sReg->RXBUF; +} + +/** + ******************************************************************************* + ** \brief Initialize I2S module + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \arg M4_I2S1 I2s channel 1 + ** \arg M4_I2S2 I2s channel 2 + ** \arg M4_I2S3 I2s channel 3 + ** \arg M4_I2S4 I2s channel 4 + ** \param [in] pstcI2sCfg Pointer to I2S configuration structure + ** + ** \retval Ok Initialize successfully done + ** + ******************************************************************************/ +en_result_t I2s_Init(M4_I2S_TypeDef* pstcI2sReg, const stc_i2s_config_t* pstcI2sCfg) +{ + uint32_t i2sclk = 0ul, tmp=0ul; + uint8_t u8ChanelDataBit,u8ChanMul; + uint16_t i2sdiv, i2sodd; + stc_i2s_cfgr_field_t stcCFGR_Tmp = {0}; + stc_i2s_ctrl_field_t stcCTRL_Tmp = {0}; + en_result_t enRes = Ok; + uint32_t u32AdrTmp = 0ul; + + if((NULL == pstcI2sReg)||(NULL == pstcI2sCfg)) + { + enRes = ErrorInvalidParameter; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + DDL_ASSERT(IS_VALID_I2S_MODE(pstcI2sCfg->enMode)); + DDL_ASSERT(IS_VALID_I2S_DUPLEX_MODE(pstcI2sCfg->enFullDuplexMode)); + DDL_ASSERT(IS_VALID_I2S_STANDARD(pstcI2sCfg->enStandrad)); + DDL_ASSERT(IS_VALID_I2S_DATA_LEN(pstcI2sCfg->enDataBits)); + DDL_ASSERT(IS_VALID_I2S_CHANNEL_LEN(pstcI2sCfg->enChanelLen)); + DDL_ASSERT(IS_VALID_I2S_MCKOUT(pstcI2sCfg->enMcoOutEn)); + DDL_ASSERT(IS_VALID_I2S_EXCK(pstcI2sCfg->enExckEn)); + DDL_ASSERT(IS_I2S_AUDIO_FREQ(pstcI2sCfg->u32AudioFreq)); + + /* Set config register to default value*/ + pstcI2sReg->CTRL = I2S_REG_CTRL_RESET_VALUE; + /* Clear status register*/ + pstcI2sReg->ER_f.TXERR = 1ul; + pstcI2sReg->ER_f.RXERR = 1ul; + + //*(uint32_t*)&stcCTRL_Tmp = pstcI2sReg->CTRL; + u32AdrTmp = (uint32_t)&stcCTRL_Tmp; + *(uint32_t*)u32AdrTmp = pstcI2sReg->CTRL; + + /* ---- config I2s clock source---- */ + if(Enable == pstcI2sCfg->enExckEn) + { + /* Set external clock as I2S clock source */ + stcCTRL_Tmp.CLKSEL = 1ul; + stcCTRL_Tmp.I2SPLLSEL = 0ul; + /* Set the I2S clock to the external clock value */ + i2sclk = I2S_EXTERNAL_CLOCK_VAL; + } + else + { + /* Set internal clock as I2S clock source */ + stcCTRL_Tmp.CLKSEL = 0ul; + stcCTRL_Tmp.I2SPLLSEL = 1ul; + /* Get i2s clock internal frequency */ + i2sclk = pstcI2sCfg->u32I2sInterClkFreq; + } + /* config audio sampple rate */ + if(I2s_ChLen_16Bit == pstcI2sCfg->enChanelLen) + { + u8ChanelDataBit = 16u; + u8ChanMul = 8u; + } + else + { + u8ChanelDataBit = 32u; + u8ChanMul = 4u; + } + + /*config I2S clock*/ + if(true == pstcI2sCfg->enMcoOutEn) + { + /* MCLK output is enabled */ + tmp = i2sclk/(pstcI2sCfg->u32AudioFreq * u8ChanelDataBit * 2ul * u8ChanMul); + } + else + { + /* MCLK output is disabled */ + tmp = i2sclk/(pstcI2sCfg->u32AudioFreq * u8ChanelDataBit * 2ul); + } + i2sodd = (uint16_t)(tmp & 0x0001ul); + i2sdiv = (uint16_t)((tmp - (uint32_t)i2sodd) / 2ul); + + /* Test if the divider is 1 or 0 or greater than 0xFF */ + if ((i2sdiv < 2u) || (i2sdiv > 0xFFu)) + { + /* Set the default values */ + i2sdiv = 2u; + i2sodd = 0u; + } + + /* Write I2SPR register */ + pstcI2sReg->PR_f.I2SDIV = (uint8_t)i2sdiv; + + /* Config and write I2S_CFGR */ + stcCFGR_Tmp.CHLEN = pstcI2sCfg->enChanelLen; + stcCFGR_Tmp.DATLEN = pstcI2sCfg->enDataBits; + stcCFGR_Tmp.I2SSTD = pstcI2sCfg->enStandrad; + stcCFGR_Tmp.PCMSYNC = PCM_SYNC_FRAME; + pstcI2sReg->CFGR_f = stcCFGR_Tmp; + + /* Config CTRL register */ + stcCTRL_Tmp.WMS = pstcI2sCfg->enMode; + stcCTRL_Tmp.DUPLEX = pstcI2sCfg->enFullDuplexMode; + if(I2sMaster == pstcI2sCfg->enMode) + { + stcCTRL_Tmp.CKOE = 1u; + stcCTRL_Tmp.LRCKOE = 1u; + } + stcCTRL_Tmp.SDOE = 1u; + stcCTRL_Tmp.MCKOE = pstcI2sCfg->enMcoOutEn; + stcCTRL_Tmp.ODD = (uint8_t)i2sodd; + stcCTRL_Tmp.RXBIRQWL = RXBUF_IRQ_WL; + stcCTRL_Tmp.TXBIRQWL = TXBUF_IRQ_WL; + //pstcI2sReg->CTRL = *(uint32_t*)&stcCTRL_Tmp; + u32AdrTmp = (uint32_t)&stcCTRL_Tmp; + pstcI2sReg->CTRL = *(uint32_t*)u32AdrTmp; + } + return enRes; +} + +/** + ******************************************************************************* + ** \brief De-Initialize I2S module + ** + ** \param [in] pstcI2sReg Pointer to I2S register + ** \arg M4_I2S1 I2s channel 1 + ** \arg M4_I2S2 I2s channel 2 + ** \arg M4_I2S3 I2s channel 3 + ** \arg M4_I2S4 I2s channel 4 + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t I2s_DeInit(M4_I2S_TypeDef* pstcI2sReg) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_I2S_REG(pstcI2sReg)); + + /* Set config register to default value*/ + pstcI2sReg->CTRL = I2S_REG_CTRL_RESET_VALUE; + /* Clear status register*/ + pstcI2sReg->ER_f.TXERR = 1u; + pstcI2sReg->ER_f.RXERR = 1u; + + return Ok; +} + +//@} // I2sGroup + +#endif /* DDL_I2S_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_icg.c b/driver/src/hc32f460_icg.c new file mode 100644 index 0000000..a3033d0 --- /dev/null +++ b/driver/src/hc32f460_icg.c @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_icg.c + ** + ** A detailed description is available at + ** @link IcgGroup Initialize Configure description @endlink + ** + ** - 2018-10-15 CDT First version for Device Driver Library of ICG. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_icg.h" + +#if (DDL_ICG_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup IcgGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ +#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ +const uint32_t u32ICG[] __attribute__((section(".icg_sec"))) = +#elif defined (__CC_ARM) +const uint32_t u32ICG[] __attribute__((at(0x400))) = +#elif defined (__ICCARM__) +__root const uint32_t u32ICG[] @ 0x400 = +#else +#error "unsupported compiler!!" +#endif +{ + /* ICG 0~ 3 */ + ICG0_REGISTER_CONSTANT, + ICG1_REGISTER_CONSTANT, + ICG2_REGISTER_CONSTANT, + ICG3_REGISTER_CONSTANT, + /* ICG 4~ 7 */ + ICG4_REGISTER_CONSTANT, + ICG5_REGISTER_CONSTANT, + ICG6_REGISTER_CONSTANT, + ICG7_REGISTER_CONSTANT, +}; + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +//@} // IcgGroup + +#endif /* DDL_ICG_ENABLE */ + +/****************************************************************************** + * EOF (not truncated) + *****************************************************************************/ diff --git a/driver/src/hc32f460_interrupts.c b/driver/src/hc32f460_interrupts.c new file mode 100644 index 0000000..4cd1bbd --- /dev/null +++ b/driver/src/hc32f460_interrupts.c @@ -0,0 +1,3783 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/*****************************************************************************/ +/** \file hc32f460_interrupts.c + ** + ** A detailed description is available at + ** @link InterruptGroup Interrupt description @endlink + ** + ** - 2018-10-12 CDT First version for Device Driver Library of interrupt. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_interrupts.h" +#include "hc32f460_utility.h" + +#if (DDL_INTERRUPTS_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup InterruptGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Parameter validity check for null pointer. */ +#define IS_NULL_POINT(x) (NULL != (x)) + +/*! Max IRQ Handler. */ +#define IRQ_NUM_MAX (128u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +func_ptr_t IrqHandler[IRQ_NUM_MAX] = {NULL}; + +/** + ******************************************************************************* + ** \brief IRQ Registration + ** + ** param [in] pstcIrqRegiConf, IRQ registration + ** configure structure + ** + ** retval Ok, IRQ register successfully. + ** ErrorInvalidParameter, IRQ No. and + ** Vector No. are not match. + ** ErrorUninitialized, Make sure the + ** Interrupt select register (INTSEL) is + ** default value (0x1FFu) before setting. + ** + *****************************************************************************/ +en_result_t enIrqRegistration(const stc_irq_regi_conf_t *pstcIrqRegiConf) +{ + // todo, assert ... + stc_intc_sel_field_t *stcIntSel; + en_result_t enRet = Ok; + + //DDL_ASSERT(NULL != pstcIrqRegiConf->pfnCallback); + DDL_ASSERT(IS_NULL_POINT(pstcIrqRegiConf->pfnCallback)); + + /* IRQ032~127 whether out of range */ + if (((((pstcIrqRegiConf->enIntSrc/32)*6 + 32) > pstcIrqRegiConf->enIRQn) || \ + (((pstcIrqRegiConf->enIntSrc/32)*6 + 37) < pstcIrqRegiConf->enIRQn)) && \ + (pstcIrqRegiConf->enIRQn >= 32)) + { + enRet = ErrorInvalidParameter; + } + else + { + stcIntSel = (stc_intc_sel_field_t *)((uint32_t)(&M4_INTC->SEL0) + \ + (4u * pstcIrqRegiConf->enIRQn)); + if (0x1FFu == stcIntSel->INTSEL) + { + stcIntSel->INTSEL = pstcIrqRegiConf->enIntSrc; + IrqHandler[pstcIrqRegiConf->enIRQn] = pstcIrqRegiConf->pfnCallback; + } + else + { + enRet = ErrorUninitialized; + } + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief IRQ Resign + ** + ** param [in] enIRQn, IRQ enumunation (Int000_IRQn ~ + ** Int127_IRQn + ** + ** retval Ok, IRQ resign sucessfully. + ** ErrorInvalidParameter, IRQ No. is out + ** of range + ** + *****************************************************************************/ +en_result_t enIrqResign(IRQn_Type enIRQn) +{ + stc_intc_sel_field_t *stcIntSel; + en_result_t enRet = Ok; + + if ((enIRQn < Int000_IRQn) || (enIRQn > Int127_IRQn)) + { + enRet = ErrorInvalidParameter; + } + else + { + stcIntSel = (stc_intc_sel_field_t *)((uint32_t)(&M4_INTC->SEL0) + (4ul * enIRQn)); + stcIntSel->INTSEL = 0x1FFu; + IrqHandler[enIRQn] = NULL; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Share IRQ handler enable + ** + ** param [in] enIntSrc, interrupt souce, This parameter + ** can be any value of @ref en_int_src_t + ** + ** retval Ok + ** + ******************************************************************************/ +en_result_t enShareIrqEnable(en_int_src_t enIntSrc) +{ + uint32_t *VSSELx; + + //todo assert + + VSSELx = (uint32_t *)(((uint32_t)&M4_INTC->VSSEL128) + (4u * (enIntSrc/32u))); + *VSSELx |= (uint32_t)(1ul << (enIntSrc & 0x1Fu)); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Share IRQ handler disable + ** + ** param [in] enIntSrc, interrupt souce, This parameter + ** can be any value of @ref en_int_src_t + ** + ** retval Ok + ** + ******************************************************************************/ +en_result_t enShareIrqDisable(en_int_src_t enIntSrc) +{ + uint32_t *VSSELx; + + //todo assert + + VSSELx = (uint32_t *)(((uint32_t)&M4_INTC->VSSEL128) + (4u * (enIntSrc/32u))); + *VSSELx &= ~(uint32_t)(1ul << (enIntSrc & 0x1Fu)); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Enable stop mode wakeup source + ** + ** param [in] u32WakeupSrc, This parameter can be any + ** composed value of @ref en_int_wkup_src_t + ** + ** retval Ok, corresponding wakeup source be enabled + ** ErrorInvalidParameter, parameter with + ** non-definition bits + ** + ******************************************************************************/ +en_result_t enIntWakeupEnable(uint32_t u32WakeupSrc) +{ + en_result_t enRet = Ok; + if (0ul != (u32WakeupSrc & 0xFD000000ul)) + { + enRet = ErrorInvalidParameter; + } + else + { + M4_INTC->WUPEN |= u32WakeupSrc; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Disable stop mode wakeup source + ** + ** param [in] u32WakeupSrc, This parameter can be any + ** composed value of @ref en_int_wkup_src_t + ** + ** retval Ok, corresponding wakeup source be disabled + ** ErrorInvalidParameter, parameter with + ** non-definition bits + ** + ******************************************************************************/ +en_result_t enIntWakeupDisable(uint32_t u32WakeupSrc) +{ + en_result_t enRet = Ok; + if (0ul != (u32WakeupSrc & 0xFD000000u)) + { + enRet = ErrorInvalidParameter; + } + else + { + M4_INTC->WUPEN &= ~u32WakeupSrc; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Event enable + ** + ** param [in] u32Event, This parameter can be + ** any composed value of @ref en_evt_t + ** + ** retval Ok, corresponding event Ch. be enabled + ** + ******************************************************************************/ +en_result_t enEventEnable(uint32_t u32Event) +{ + M4_INTC->EVTER |= u32Event; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Event enable + ** + ** param [in] u32Event, This parameter can be + ** any composed value of @ref en_evt_t + ** + ** retval Ok, corresponding event Ch. be disabled + ** + ******************************************************************************/ +en_result_t enEventDisable(uint32_t u32Event) +{ + M4_INTC->EVTER &= ~u32Event; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Interrupt enable + ** + * param [in] u32Int, This parameter can be any composed + * value of @ref en_int_t + ** + ** retval Ok, corresponding interrupt vector be enabled + ** + ******************************************************************************/ +en_result_t enIntEnable(uint32_t u32Int) +{ + M4_INTC->IER |= u32Int; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Interrupt disable + ** + * param [in] u32Int, This parameter can be any composed + * value of @ref en_int_t + ** + ** retval Ok, corresponding interrupt vector be disabled + ** + ******************************************************************************/ +en_result_t enIntDisable(uint32_t u32Int) +{ + M4_INTC->IER &= ~u32Int; + return Ok; +} + +/** + ******************************************************************************* + ** \brief NMI IRQ handler + ** + ******************************************************************************/ +void NMI_Handler(void) +{ + NMI_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief Hard Fault IRQ handler + ** + ******************************************************************************/ +//void HardFault_Handler(void) +//{ +// HardFault_IrqHandler(); +//} + +/** + ******************************************************************************* + ** \brief MPU Fault IRQ handler + ** + ******************************************************************************/ +void MemManage_Handler(void) +{ + MemManage_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief Bus Fault IRQ handler + ** + ******************************************************************************/ +void BusFault_Handler(void) +{ + BusFault_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief Usage Fault IRQ handler + ** + ******************************************************************************/ +void UsageFault_Handler(void) +{ + UsageFault_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief SVCall IRQ handler + ** + ******************************************************************************/ +void SVC_Handler(void) +{ + SVC_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief DebugMon IRQ handler + ** + ******************************************************************************/ +void DebugMon_Handler(void) +{ + DebugMon_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief PendSV IRQ handler + ** + ******************************************************************************/ +//void PendSV_Handler(void) +//{ +// PendSV_IrqHandler(); +//} + +/** + ******************************************************************************* + ** \brief Systick IRQ handler + ** + ******************************************************************************/ +void SysTick_Handler(void) +{ + SysTick_IrqHandler(); +} + +/** + ******************************************************************************* + ** \brief Int No.000 IRQ handler + ** + ******************************************************************************/ +void IRQ000_Handler(void) +{ + if (NULL != IrqHandler[Int000_IRQn]) + { + IrqHandler[Int000_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.001 IRQ handler + ** + ******************************************************************************/ +void IRQ001_Handler(void) +{ + if (NULL != IrqHandler[Int001_IRQn]) + { + IrqHandler[Int001_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.002 IRQ handler + ** + ******************************************************************************/ +void IRQ002_Handler(void) +{ + if (NULL != IrqHandler[Int002_IRQn]) + { + IrqHandler[Int002_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.003 IRQ handler + ** + ******************************************************************************/ +void IRQ003_Handler(void) +{ + if (NULL != IrqHandler[Int003_IRQn]) + { + IrqHandler[Int003_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.004 IRQ handler + ** + ******************************************************************************/ +void IRQ004_Handler(void) +{ + if (NULL != IrqHandler[Int004_IRQn]) + { + IrqHandler[Int004_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.005 IRQ handler + ** + ******************************************************************************/ +void IRQ005_Handler(void) +{ + if (NULL != IrqHandler[Int005_IRQn]) + { + IrqHandler[Int005_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.006 IRQ handler + ** + ******************************************************************************/ +void IRQ006_Handler(void) +{ + if (NULL != IrqHandler[Int006_IRQn]) + { + IrqHandler[Int006_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.007 IRQ handler + ** + ******************************************************************************/ +void IRQ007_Handler(void) +{ + if (NULL != IrqHandler[Int007_IRQn]) + { + IrqHandler[Int007_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.008 IRQ handler + ** + ******************************************************************************/ +void IRQ008_Handler(void) +{ + if (NULL != IrqHandler[Int008_IRQn]) + { + IrqHandler[Int008_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.009 IRQ handler + ** + ******************************************************************************/ +void IRQ009_Handler(void) +{ + if (NULL != IrqHandler[Int009_IRQn]) + { + IrqHandler[Int009_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.010 IRQ handler + ** + ******************************************************************************/ +void IRQ010_Handler(void) +{ + if (NULL != IrqHandler[Int010_IRQn]) + { + IrqHandler[Int010_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.011 IRQ handler + ** + ******************************************************************************/ +void IRQ011_Handler(void) +{ + if (NULL != IrqHandler[Int011_IRQn]) + { + IrqHandler[Int011_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.012 IRQ handler + ** + ******************************************************************************/ +void IRQ012_Handler(void) +{ + if (NULL != IrqHandler[Int012_IRQn]) + { + IrqHandler[Int012_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.013 IRQ handler + ** + ******************************************************************************/ +void IRQ013_Handler(void) +{ + if (NULL != IrqHandler[Int013_IRQn]) + { + IrqHandler[Int013_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.014 IRQ handler + ** + ******************************************************************************/ +void IRQ014_Handler(void) +{ + if (NULL != IrqHandler[Int014_IRQn]) + { + IrqHandler[Int014_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.015 IRQ handler + ** + ******************************************************************************/ +void IRQ015_Handler(void) +{ + if (NULL != IrqHandler[Int015_IRQn]) + { + IrqHandler[Int015_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.016 IRQ handler + ** + ******************************************************************************/ +void IRQ016_Handler(void) +{ + if (NULL != IrqHandler[Int016_IRQn]) + { + IrqHandler[Int016_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.017 IRQ handler + ** + ******************************************************************************/ +void IRQ017_Handler(void) +{ + if (NULL != IrqHandler[Int017_IRQn]) + { + IrqHandler[Int017_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.018 IRQ handler + ** + ******************************************************************************/ +void IRQ018_Handler(void) +{ + if (NULL != IrqHandler[Int018_IRQn]) + { + IrqHandler[Int018_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.019 IRQ handler + ** + ******************************************************************************/ +void IRQ019_Handler(void) +{ + if (NULL != IrqHandler[Int019_IRQn]) + { + IrqHandler[Int019_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.020 IRQ handler + ** + ******************************************************************************/ +void IRQ020_Handler(void) +{ + if (NULL != IrqHandler[Int020_IRQn]) + { + IrqHandler[Int020_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.021 IRQ handler + ** + ******************************************************************************/ +void IRQ021_Handler(void) +{ + if (NULL != IrqHandler[Int021_IRQn]) + { + IrqHandler[Int021_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.022 IRQ handler + ** + ******************************************************************************/ +void IRQ022_Handler(void) +{ + if (NULL != IrqHandler[Int022_IRQn]) + { + IrqHandler[Int022_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.023 IRQ handler + ** + ******************************************************************************/ +void IRQ023_Handler(void) +{ + if (NULL != IrqHandler[Int023_IRQn]) + { + IrqHandler[Int023_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.024 IRQ handler + ** + ******************************************************************************/ +void IRQ024_Handler(void) +{ + if (NULL != IrqHandler[Int024_IRQn]) + { + IrqHandler[Int024_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.025 IRQ handler + ** + ******************************************************************************/ +void IRQ025_Handler(void) +{ + if (NULL != IrqHandler[Int025_IRQn]) + { + IrqHandler[Int025_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.026 IRQ handler + ** + ******************************************************************************/ +void IRQ026_Handler(void) +{ + if (NULL != IrqHandler[Int026_IRQn]) + { + IrqHandler[Int026_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.027 IRQ handler + ** + ******************************************************************************/ +void IRQ027_Handler(void) +{ + if (NULL != IrqHandler[Int027_IRQn]) + { + IrqHandler[Int027_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.028 IRQ handler + ** + ******************************************************************************/ +void IRQ028_Handler(void) +{ + if (NULL != IrqHandler[Int028_IRQn]) + { + IrqHandler[Int028_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.029 IRQ handler + ** + ******************************************************************************/ +void IRQ029_Handler(void) +{ + if (NULL != IrqHandler[Int029_IRQn]) + { + IrqHandler[Int029_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.030 IRQ handler + ** + ******************************************************************************/ +void IRQ030_Handler(void) +{ + if (NULL != IrqHandler[Int030_IRQn]) + { + IrqHandler[Int030_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.031 IRQ handler + ** + ******************************************************************************/ +void IRQ031_Handler(void) +{ + if (NULL != IrqHandler[Int031_IRQn]) + { + IrqHandler[Int031_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.032 IRQ handler + ** + ******************************************************************************/ +void IRQ032_Handler(void) +{ + if (NULL != IrqHandler[Int032_IRQn]) + { + IrqHandler[Int032_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.033 IRQ handler + ** + ******************************************************************************/ +void IRQ033_Handler(void) +{ + if (NULL != IrqHandler[Int033_IRQn]) + { + IrqHandler[Int033_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.034 IRQ handler + ** + ******************************************************************************/ +void IRQ034_Handler(void) +{ + if (NULL != IrqHandler[Int034_IRQn]) + { + IrqHandler[Int034_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.035 IRQ handler + ** + ******************************************************************************/ +void IRQ035_Handler(void) +{ + if (NULL != IrqHandler[Int035_IRQn]) + { + IrqHandler[Int035_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.036 IRQ handler + ** + ******************************************************************************/ +void IRQ036_Handler(void) +{ + if (NULL != IrqHandler[Int036_IRQn]) + { + IrqHandler[Int036_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.037 IRQ handler + ** + ******************************************************************************/ +void IRQ037_Handler(void) +{ + if (NULL != IrqHandler[Int037_IRQn]) + { + IrqHandler[Int037_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.038 IRQ handler + ** + ******************************************************************************/ +void IRQ038_Handler(void) +{ + if (NULL != IrqHandler[Int038_IRQn]) + { + IrqHandler[Int038_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.039 IRQ handler + ** + ******************************************************************************/ +void IRQ039_Handler(void) +{ + if (NULL != IrqHandler[Int039_IRQn]) + { + IrqHandler[Int039_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.040 IRQ handler + ** + ******************************************************************************/ +void IRQ040_Handler(void) +{ + if (NULL != IrqHandler[Int040_IRQn]) + { + IrqHandler[Int040_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.041 IRQ handler + ** + ******************************************************************************/ +void IRQ041_Handler(void) +{ + if (NULL != IrqHandler[Int041_IRQn]) + { + IrqHandler[Int041_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.042 IRQ handler + ** + ******************************************************************************/ +void IRQ042_Handler(void) +{ + if (NULL != IrqHandler[Int042_IRQn]) + { + IrqHandler[Int042_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.043 IRQ handler + ** + ******************************************************************************/ +void IRQ043_Handler(void) +{ + if (NULL != IrqHandler[Int043_IRQn]) + { + IrqHandler[Int043_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.044 IRQ handler + ** + ******************************************************************************/ +void IRQ044_Handler(void) +{ + if (NULL != IrqHandler[Int044_IRQn]) + { + IrqHandler[Int044_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.045 IRQ handler + ** + ******************************************************************************/ +void IRQ045_Handler(void) +{ + if (NULL != IrqHandler[Int045_IRQn]) + { + IrqHandler[Int045_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.046 IRQ handler + ** + ******************************************************************************/ +void IRQ046_Handler(void) +{ + if (NULL != IrqHandler[Int046_IRQn]) + { + IrqHandler[Int046_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.047 IRQ handler + ** + ******************************************************************************/ +void IRQ047_Handler(void) +{ + if (NULL != IrqHandler[Int047_IRQn]) + { + IrqHandler[Int047_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.048 IRQ handler + ** + ******************************************************************************/ +void IRQ048_Handler(void) +{ + if (NULL != IrqHandler[Int048_IRQn]) + { + IrqHandler[Int048_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.049 IRQ handler + ** + ******************************************************************************/ +void IRQ049_Handler(void) +{ + if (NULL != IrqHandler[Int049_IRQn]) + { + IrqHandler[Int049_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.050 IRQ handler + ** + ******************************************************************************/ +void IRQ050_Handler(void) +{ + if (NULL != IrqHandler[Int050_IRQn]) + { + IrqHandler[Int050_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.051 IRQ handler + ** + ******************************************************************************/ +void IRQ051_Handler(void) +{ + if (NULL != IrqHandler[Int051_IRQn]) + { + IrqHandler[Int051_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.052 IRQ handler + ** + ******************************************************************************/ +void IRQ052_Handler(void) +{ + if (NULL != IrqHandler[Int052_IRQn]) + { + IrqHandler[Int052_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.053 IRQ handler + ** + ******************************************************************************/ +void IRQ053_Handler(void) +{ + if (NULL != IrqHandler[Int053_IRQn]) + { + IrqHandler[Int053_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.054 IRQ handler + ** + ******************************************************************************/ +void IRQ054_Handler(void) +{ + if (NULL != IrqHandler[Int054_IRQn]) + { + IrqHandler[Int054_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.055 IRQ handler + ** + ******************************************************************************/ +void IRQ055_Handler(void) +{ + if (NULL != IrqHandler[Int055_IRQn]) + { + IrqHandler[Int055_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.056 IRQ handler + ** + ******************************************************************************/ +void IRQ056_Handler(void) +{ + if (NULL != IrqHandler[Int056_IRQn]) + { + IrqHandler[Int056_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.057 IRQ handler + ** + ******************************************************************************/ +void IRQ057_Handler(void) +{ + if (NULL != IrqHandler[Int057_IRQn]) + { + IrqHandler[Int057_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.058 IRQ handler + ** + ******************************************************************************/ +void IRQ058_Handler(void) +{ + if (NULL != IrqHandler[Int058_IRQn]) + { + IrqHandler[Int058_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.059 IRQ handler + ** + ******************************************************************************/ +void IRQ059_Handler(void) +{ + if (NULL != IrqHandler[Int059_IRQn]) + { + IrqHandler[Int059_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.060 IRQ handler + ** + ******************************************************************************/ +void IRQ060_Handler(void) +{ + if (NULL != IrqHandler[Int060_IRQn]) + { + IrqHandler[Int060_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.061 IRQ handler + ** + ******************************************************************************/ +void IRQ061_Handler(void) +{ + if (NULL != IrqHandler[Int061_IRQn]) + { + IrqHandler[Int061_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.062 IRQ handler + ** + ******************************************************************************/ +void IRQ062_Handler(void) +{ + if (NULL != IrqHandler[Int062_IRQn]) + { + IrqHandler[Int062_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.063 IRQ handler + ** + ******************************************************************************/ +void IRQ063_Handler(void) +{ + if (NULL != IrqHandler[Int063_IRQn]) + { + IrqHandler[Int063_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.064 IRQ handler + ** + ******************************************************************************/ +void IRQ064_Handler(void) +{ + if (NULL != IrqHandler[Int064_IRQn]) + { + IrqHandler[Int064_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.065 IRQ handler + ** + ******************************************************************************/ +void IRQ065_Handler(void) +{ + if (NULL != IrqHandler[Int065_IRQn]) + { + IrqHandler[Int065_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.066 IRQ handler + ** + ******************************************************************************/ +void IRQ066_Handler(void) +{ + if (NULL != IrqHandler[Int066_IRQn]) + { + IrqHandler[Int066_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.067 IRQ handler + ** + ******************************************************************************/ +void IRQ067_Handler(void) +{ + if (NULL != IrqHandler[Int067_IRQn]) + { + IrqHandler[Int067_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.068 IRQ handler + ** + ******************************************************************************/ +void IRQ068_Handler(void) +{ + if (NULL != IrqHandler[Int068_IRQn]) + { + IrqHandler[Int068_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.069 IRQ handler + ** + ******************************************************************************/ +void IRQ069_Handler(void) +{ + if (NULL != IrqHandler[Int069_IRQn]) + { + IrqHandler[Int069_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.070 IRQ handler + ** + ******************************************************************************/ +void IRQ070_Handler(void) +{ + if (NULL != IrqHandler[Int070_IRQn]) + { + IrqHandler[Int070_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.071 IRQ handler + ** + ******************************************************************************/ +void IRQ071_Handler(void) +{ + if (NULL != IrqHandler[Int071_IRQn]) + { + IrqHandler[Int071_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.072 IRQ handler + ** + ******************************************************************************/ +void IRQ072_Handler(void) +{ + if (NULL != IrqHandler[Int072_IRQn]) + { + IrqHandler[Int072_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.073 IRQ handler + ** + ******************************************************************************/ +void IRQ073_Handler(void) +{ + if (NULL != IrqHandler[Int073_IRQn]) + { + IrqHandler[Int073_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.074 IRQ handler + ** + ******************************************************************************/ +void IRQ074_Handler(void) +{ + if (NULL != IrqHandler[Int074_IRQn]) + { + IrqHandler[Int074_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.075 IRQ handler + ** + ******************************************************************************/ +void IRQ075_Handler(void) +{ + if (NULL != IrqHandler[Int075_IRQn]) + { + IrqHandler[Int075_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.076 IRQ handler + ** + ******************************************************************************/ +void IRQ076_Handler(void) +{ + if (NULL != IrqHandler[Int076_IRQn]) + { + IrqHandler[Int076_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.077 IRQ handler + ** + ******************************************************************************/ +void IRQ077_Handler(void) +{ + if (NULL != IrqHandler[Int077_IRQn]) + { + IrqHandler[Int077_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.078 IRQ handler + ** + ******************************************************************************/ +void IRQ078_Handler(void) +{ + if (NULL != IrqHandler[Int078_IRQn]) + { + IrqHandler[Int078_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.079 IRQ handler + ** + ******************************************************************************/ +void IRQ079_Handler(void) +{ + if (NULL != IrqHandler[Int079_IRQn]) + { + IrqHandler[Int079_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.080 IRQ handler + ** + ******************************************************************************/ +void IRQ080_Handler(void) +{ + if (NULL != IrqHandler[Int080_IRQn]) + { + IrqHandler[Int080_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.081 IRQ handler + ** + ******************************************************************************/ +void IRQ081_Handler(void) +{ + if (NULL != IrqHandler[Int081_IRQn]) + { + IrqHandler[Int081_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.082 IRQ handler + ** + ******************************************************************************/ +void IRQ082_Handler(void) +{ + if (NULL != IrqHandler[Int082_IRQn]) + { + IrqHandler[Int082_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.083 IRQ handler + ** + ******************************************************************************/ +void IRQ083_Handler(void) +{ + if (NULL != IrqHandler[Int083_IRQn]) + { + IrqHandler[Int083_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.084 IRQ handler + ** + ******************************************************************************/ +void IRQ084_Handler(void) +{ + if (NULL != IrqHandler[Int084_IRQn]) + { + IrqHandler[Int084_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.085 IRQ handler + ** + ******************************************************************************/ +void IRQ085_Handler(void) +{ + if (NULL != IrqHandler[Int085_IRQn]) + { + IrqHandler[Int085_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.086 IRQ handler + ** + ******************************************************************************/ +void IRQ086_Handler(void) +{ + if (NULL != IrqHandler[Int086_IRQn]) + { + IrqHandler[Int086_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.087 IRQ handler + ** + ******************************************************************************/ +void IRQ087_Handler(void) +{ + if (NULL != IrqHandler[Int087_IRQn]) + { + IrqHandler[Int087_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.088 IRQ handler + ** + ******************************************************************************/ +void IRQ088_Handler(void) +{ + if (NULL != IrqHandler[Int088_IRQn]) + { + IrqHandler[Int088_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.089 IRQ handler + ** + ******************************************************************************/ +void IRQ089_Handler(void) +{ + if (NULL != IrqHandler[Int089_IRQn]) + { + IrqHandler[Int089_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.090 IRQ handler + ** + ******************************************************************************/ +void IRQ090_Handler(void) +{ + if (NULL != IrqHandler[Int090_IRQn]) + { + IrqHandler[Int090_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.091 IRQ handler + ** + ******************************************************************************/ +void IRQ091_Handler(void) +{ + if (NULL != IrqHandler[Int091_IRQn]) + { + IrqHandler[Int091_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.092 IRQ handler + ** + ******************************************************************************/ +void IRQ092_Handler(void) +{ + if (NULL != IrqHandler[Int092_IRQn]) + { + IrqHandler[Int092_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.093 IRQ handler + ** + ******************************************************************************/ +void IRQ093_Handler(void) +{ + if (NULL != IrqHandler[Int093_IRQn]) + { + IrqHandler[Int093_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.094 IRQ handler + ** + ******************************************************************************/ +void IRQ094_Handler(void) +{ + if (NULL != IrqHandler[Int094_IRQn]) + { + IrqHandler[Int094_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.095 IRQ handler + ** + ******************************************************************************/ +void IRQ095_Handler(void) +{ + if (NULL != IrqHandler[Int095_IRQn]) + { + IrqHandler[Int095_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.096 IRQ handler + ** + ******************************************************************************/ +void IRQ096_Handler(void) +{ + if (NULL != IrqHandler[Int096_IRQn]) + { + IrqHandler[Int096_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.097 IRQ handler + ** + ******************************************************************************/ +void IRQ097_Handler(void) +{ + if (NULL != IrqHandler[Int097_IRQn]) + { + IrqHandler[Int097_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.098 IRQ handler + ** + ******************************************************************************/ +void IRQ098_Handler(void) +{ + if (NULL != IrqHandler[Int098_IRQn]) + { + IrqHandler[Int098_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.099 IRQ handler + ** + ******************************************************************************/ +void IRQ099_Handler(void) +{ + if (NULL != IrqHandler[Int099_IRQn]) + { + IrqHandler[Int099_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.100 IRQ handler + ** + ******************************************************************************/ +void IRQ100_Handler(void) +{ + if (NULL != IrqHandler[Int100_IRQn]) + { + IrqHandler[Int100_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.101 IRQ handler + ** + ******************************************************************************/ +void IRQ101_Handler(void) +{ + if (NULL != IrqHandler[Int101_IRQn]) + { + IrqHandler[Int101_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.102 IRQ handler + ** + ******************************************************************************/ +void IRQ102_Handler(void) +{ + if (NULL != IrqHandler[Int102_IRQn]) + { + IrqHandler[Int102_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.103 IRQ handler + ** + ******************************************************************************/ +void IRQ103_Handler(void) +{ + if (NULL != IrqHandler[Int103_IRQn]) + { + IrqHandler[Int103_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.104 IRQ handler + ** + ******************************************************************************/ +void IRQ104_Handler(void) +{ + if (NULL != IrqHandler[Int104_IRQn]) + { + IrqHandler[Int104_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.105 IRQ handler + ** + ******************************************************************************/ +void IRQ105_Handler(void) +{ + if (NULL != IrqHandler[Int105_IRQn]) + { + IrqHandler[Int105_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.106 IRQ handler + ** + ******************************************************************************/ +void IRQ106_Handler(void) +{ + if (NULL != IrqHandler[Int106_IRQn]) + { + IrqHandler[Int106_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.107 IRQ handler + ** + ******************************************************************************/ +void IRQ107_Handler(void) +{ + if (NULL != IrqHandler[Int107_IRQn]) + { + IrqHandler[Int107_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.108 IRQ handler + ** + ******************************************************************************/ +void IRQ108_Handler(void) +{ + if (NULL != IrqHandler[Int108_IRQn]) + { + IrqHandler[Int108_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.109 IRQ handler + ** + ******************************************************************************/ +void IRQ109_Handler(void) +{ + if (NULL != IrqHandler[Int109_IRQn]) + { + IrqHandler[Int109_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.110 IRQ handler + ** + ******************************************************************************/ +void IRQ110_Handler(void) +{ + if (NULL != IrqHandler[Int110_IRQn]) + { + IrqHandler[Int110_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.111 IRQ handler + ** + ******************************************************************************/ +void IRQ111_Handler(void) +{ + if (NULL != IrqHandler[Int111_IRQn]) + { + IrqHandler[Int111_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.112 IRQ handler + ** + ******************************************************************************/ +void IRQ112_Handler(void) +{ + if (NULL != IrqHandler[Int112_IRQn]) + { + IrqHandler[Int112_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.113 IRQ handler + ** + ******************************************************************************/ +void IRQ113_Handler(void) +{ + if (NULL != IrqHandler[Int113_IRQn]) + { + IrqHandler[Int113_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.114 IRQ handler + ** + ******************************************************************************/ +void IRQ114_Handler(void) +{ + if (NULL != IrqHandler[Int114_IRQn]) + { + IrqHandler[Int114_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.115 IRQ handler + ** + ******************************************************************************/ +void IRQ115_Handler(void) +{ + if (NULL != IrqHandler[Int115_IRQn]) + { + IrqHandler[Int115_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.116 IRQ handler + ** + ******************************************************************************/ +void IRQ116_Handler(void) +{ + if (NULL != IrqHandler[Int116_IRQn]) + { + IrqHandler[Int116_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.117 IRQ handler + ** + ******************************************************************************/ +void IRQ117_Handler(void) +{ + if (NULL != IrqHandler[Int117_IRQn]) + { + IrqHandler[Int117_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.118 IRQ handler + ** + ******************************************************************************/ +void IRQ118_Handler(void) +{ + if (NULL != IrqHandler[Int118_IRQn]) + { + IrqHandler[Int118_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.119 IRQ handler + ** + ******************************************************************************/ +void IRQ119_Handler(void) +{ + if (NULL != IrqHandler[Int119_IRQn]) + { + IrqHandler[Int119_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.120 IRQ handler + ** + ******************************************************************************/ +void IRQ120_Handler(void) +{ + if (NULL != IrqHandler[Int120_IRQn]) + { + IrqHandler[Int120_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.121 IRQ handler + ** + ******************************************************************************/ +void IRQ121_Handler(void) +{ + if (NULL != IrqHandler[Int121_IRQn]) + { + IrqHandler[Int121_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.122 IRQ handler + ** + ******************************************************************************/ +void IRQ122_Handler(void) +{ + if (NULL != IrqHandler[Int122_IRQn]) + { + IrqHandler[Int122_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.123 IRQ handler + ** + ******************************************************************************/ +void IRQ123_Handler(void) +{ + if (NULL != IrqHandler[Int123_IRQn]) + { + IrqHandler[Int123_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.124 IRQ handler + ** + ******************************************************************************/ +void IRQ124_Handler(void) +{ + if (NULL != IrqHandler[Int124_IRQn]) + { + IrqHandler[Int124_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.125 IRQ handler + ** + ******************************************************************************/ +void IRQ125_Handler(void) +{ + if (NULL != IrqHandler[Int125_IRQn]) + { + IrqHandler[Int125_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.126 IRQ handler + ** + ******************************************************************************/ +void IRQ126_Handler(void) +{ + if (NULL != IrqHandler[Int126_IRQn]) + { + IrqHandler[Int126_IRQn](); + } +} + +/** + ******************************************************************************* + ** \brief Int No.127 IRQ handler + ** + ******************************************************************************/ +void IRQ127_Handler(void) +{ + if (NULL != IrqHandler[Int127_IRQn]) + { + IrqHandler[Int127_IRQn](); + } +} + +#if (DDL_INTERRUPTS_SHARE_ENABLE == DDL_ON) +/** + ******************************************************************************* + ** \brief Int No.128 share IRQ handler + ** + ******************************************************************************/ +void IRQ128_Handler(void) +{ + uint32_t VSSEL128 = M4_INTC->VSSEL128; + + /* external interrupt 00 */ + if ((1ul == bM4_INTC_EIFR_EIFR0) && (VSSEL128 & BIT_MASK_00)) + { + Extint00_IrqHandler(); + } + /* external interrupt 01 */ + if ((1ul == bM4_INTC_EIFR_EIFR1) && (VSSEL128 & BIT_MASK_01)) + { + Extint01_IrqHandler(); + } + /* external interrupt 02 */ + if ((1ul == bM4_INTC_EIFR_EIFR2) && (VSSEL128 & BIT_MASK_02)) + { + Extint02_IrqHandler(); + } + /* external interrupt 03 */ + if ((1ul == bM4_INTC_EIFR_EIFR3) && (VSSEL128 & BIT_MASK_03)) + { + Extint03_IrqHandler(); + } + /* external interrupt 04 */ + if ((1ul == bM4_INTC_EIFR_EIFR4) && (VSSEL128 & BIT_MASK_04)) + { + Extint04_IrqHandler(); + } + /* external interrupt 05 */ + if ((1ul == bM4_INTC_EIFR_EIFR5) && (VSSEL128 & BIT_MASK_05)) + { + Extint05_IrqHandler(); + } + /* external interrupt 06 */ + if ((1ul == bM4_INTC_EIFR_EIFR6) && (VSSEL128 & BIT_MASK_06)) + { + Extint06_IrqHandler(); + } + /* external interrupt 07 */ + if ((1ul == bM4_INTC_EIFR_EIFR7) && (VSSEL128 & BIT_MASK_07)) + { + Extint07_IrqHandler(); + } + /* external interrupt 08 */ + if ((1ul == bM4_INTC_EIFR_EIFR8) && (VSSEL128 & BIT_MASK_08)) + { + Extint08_IrqHandler(); + } + /* external interrupt 09 */ + if ((1ul == bM4_INTC_EIFR_EIFR9) && (VSSEL128 & BIT_MASK_09)) + { + Extint09_IrqHandler(); + } + /* external interrupt 10 */ + if ((1ul == bM4_INTC_EIFR_EIFR10) && (VSSEL128 & BIT_MASK_10)) + { + Extint10_IrqHandler(); + } + /* external interrupt 11 */ + if ((1ul == bM4_INTC_EIFR_EIFR11) && (VSSEL128 & BIT_MASK_11)) + { + Extint11_IrqHandler(); + } + /* external interrupt 12 */ + if ((1ul == bM4_INTC_EIFR_EIFR12) && (VSSEL128 & BIT_MASK_12)) + { + Extint12_IrqHandler(); + } + /* external interrupt 13 */ + if ((1ul == bM4_INTC_EIFR_EIFR13) && (VSSEL128 & BIT_MASK_13)) + { + Extint13_IrqHandler(); + } + /* external interrupt 14 */ + if ((1ul == bM4_INTC_EIFR_EIFR14) && (VSSEL128 & BIT_MASK_14)) + { + Extint14_IrqHandler(); + } + /* external interrupt 15 */ + if ((1ul == bM4_INTC_EIFR_EIFR15) && (VSSEL128 & BIT_MASK_15)) + { + Extint15_IrqHandler(); + } +} + + +/** + ******************************************************************************* + ** \brief Int No.129 share IRQ handler + ** + ******************************************************************************/ +void IRQ129_Handler(void) +{ + uint32_t VSSEL129 =M4_INTC->VSSEL129; + uint32_t u32Tmp1 = 0ul; + uint32_t u32Tmp2 = 0ul; + + if (1ul == bM4_DMA1_CH0CTL_IE) + { + /* DMA1 ch.0 Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKTC0) + { + if ((1ul == bM4_DMA1_INTSTAT1_TC0) && (VSSEL129 & BIT_MASK_00)) + { + Dma1Tc0_IrqHandler(); + } + } + /* DMA1 ch.0 Block Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKBTC0) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC0) && (VSSEL129 & BIT_MASK_08)) + { + Dma1Btc0_IrqHandler(); + } + } + /* DMA1 ch.0 Transfer/Request Error */ + u32Tmp1 = M4_DMA1->INTSTAT0 & 0x00010001ul; + u32Tmp2 = (uint32_t)(~(M4_DMA1->INTMASK0) & 0x00010001ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_16)) + { + Dma1Err0_IrqHandler(); + } + } + if (1ul == bM4_DMA1_CH1CTL_IE) + { + /* DMA1 ch.1 Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKTC1) + { + if ((1ul == bM4_DMA1_INTSTAT1_TC1) && (VSSEL129 & BIT_MASK_01)) + { + Dma1Tc1_IrqHandler(); + } + } + /* DMA1 ch.1 Block Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKBTC1) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC1) && (VSSEL129 & BIT_MASK_09)) + { + Dma1Btc1_IrqHandler(); + } + } + /* DMA1 ch.1 Transfer/Request Error */ + u32Tmp1 = M4_DMA1->INTSTAT0 & 0x00020002ul; + u32Tmp2 = (uint32_t)(~(M4_DMA1->INTMASK0) & 0x00020002ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_16)) + { + Dma1Err1_IrqHandler(); + } + } + if (1ul == bM4_DMA1_CH2CTL_IE) + { + /* DMA1 ch.2 Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKTC2) + { + if ((1ul == bM4_DMA1_INTSTAT1_TC2) && (VSSEL129 & BIT_MASK_02)) + { + Dma1Tc2_IrqHandler(); + } + } + /* DMA1 ch.2 Block Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKBTC2) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC2) && (VSSEL129 & BIT_MASK_10)) + { + Dma1Btc2_IrqHandler(); + } + } + /* DMA1 ch.2 Transfer/Request Error */ + u32Tmp1 = M4_DMA1->INTSTAT0 & 0x00040004ul; + u32Tmp2 = (uint32_t)(~(M4_DMA1->INTMASK0) & 0x00040004ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_16)) + { + Dma1Err2_IrqHandler(); + } + } + if (1ul == bM4_DMA1_CH3CTL_IE) + { + /* DMA1 ch.3 Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKTC3) + { + if ((1ul == bM4_DMA1_INTSTAT1_TC3) && (VSSEL129 & BIT_MASK_03)) + { + Dma1Tc3_IrqHandler(); + } + } + /* DMA1 ch.3 Block Tx completed */ + if (0ul == bM4_DMA1_INTMASK1_MSKBTC3) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC3) && (VSSEL129 & BIT_MASK_11)) + { + Dma1Btc3_IrqHandler(); + } + } + /* DMA1 ch.3 Transfer/Request Error */ + u32Tmp1 = M4_DMA1->INTSTAT0 & 0x00080008ul; + u32Tmp2 = (uint32_t)(~(M4_DMA1->INTMASK0) & 0x00080008ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_16)) + { + Dma1Err3_IrqHandler(); + } + } + if (1ul == bM4_DMA2_CH0CTL_IE) + { + /* DMA2 ch.0 Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKTC0) + { + if ((1ul == bM4_DMA2_INTSTAT1_TC0) && (VSSEL129 & BIT_MASK_04)) + { + Dma2Tc0_IrqHandler(); + } + } + /* DMA2 ch.0 Block Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKBTC0) + { + if ((1ul == bM4_DMA2_INTSTAT1_BTC0) && (VSSEL129 & BIT_MASK_12)) + { + Dma2Btc0_IrqHandler(); + } + } + /* DMA2 Ch.0 Transfer/Request Error */ + u32Tmp1 = M4_DMA2->INTSTAT0 & 0x00010001ul; + u32Tmp2 = (uint32_t)(~(M4_DMA2->INTMASK0) & 0x00010001ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_17)) + { + Dma2Err0_IrqHandler(); + } + } + if (1ul == bM4_DMA2_CH1CTL_IE) + { + /* DMA2 ch.1 Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKTC1) + { + if ((1ul == bM4_DMA2_INTSTAT1_TC1) && (VSSEL129 & BIT_MASK_05)) + { + Dma2Tc1_IrqHandler(); + } + } + /* DMA2 ch.1 Block Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKBTC1) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC1) && (VSSEL129 & BIT_MASK_13)) + { + Dma2Btc1_IrqHandler(); + } + } + /* DMA2 Ch.1 Transfer/Request Error */ + u32Tmp1 = M4_DMA2->INTSTAT0 & 0x00020002ul; + u32Tmp2 = (uint32_t)(~(M4_DMA2->INTMASK0) & 0x00020002ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_17)) + { + Dma2Err1_IrqHandler(); + } + } + if (1ul == bM4_DMA2_CH2CTL_IE) + { + /* DMA2 ch.2 Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKTC2) + { + if ((1ul == bM4_DMA2_INTSTAT1_TC2) && (VSSEL129 & BIT_MASK_06)) + { + Dma2Tc2_IrqHandler(); + } + } + /* DMA2 ch.2 Block Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKBTC2) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC2) && (VSSEL129 & BIT_MASK_14)) + { + Dma2Btc2_IrqHandler(); + } + } + /* DMA2 Ch.2 Transfer/Request Error */ + u32Tmp1 = M4_DMA2->INTSTAT0 & 0x00040004ul; + u32Tmp2 = (uint32_t)(~(M4_DMA2->INTMASK0) & 0x00040004ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_17)) + { + Dma2Err2_IrqHandler(); + } + } + if (1ul == bM4_DMA2_CH3CTL_IE) + { + /* DMA2 ch.3 Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKTC3) + { + if ((1ul == bM4_DMA2_INTSTAT1_TC3) && (VSSEL129 & BIT_MASK_07)) + { + Dma2Tc3_IrqHandler(); + } + } + /* DMA2 ch.3 Block Tx completed */ + if (0ul == bM4_DMA2_INTMASK1_MSKBTC3) + { + if ((1ul == bM4_DMA1_INTSTAT1_BTC3) && (VSSEL129 & BIT_MASK_15)) + { + Dma2Btc3_IrqHandler(); + } + } + /* DMA2 Ch.3 Transfer/Request Error */ + u32Tmp1 = M4_DMA2->INTSTAT0 & 0x00080008ul; + u32Tmp2 = (uint32_t)(~(M4_DMA2->INTMASK0) & 0x00080008ul); + if ((u32Tmp1 & u32Tmp2) && (VSSEL129 & BIT_MASK_17)) + { + Dma2Err3_IrqHandler(); + } + } + /* EFM program/erase Error */ + if (1ul == bM4_EFM_FITE_PEERRITE) + { + if ((M4_EFM->FSR & 0x0Fu) && (VSSEL129 & BIT_MASK_18)) + { + EfmPgmEraseErr_IrqHandler(); + } + } + /* EFM collision Error */ + if (1ul == bM4_EFM_FITE_COLERRITE) + { + if ((1ul == bM4_EFM_FSR_COLERR) && (VSSEL129 & BIT_MASK_19)) + { + EfmColErr_IrqHandler(); + } + } + /* EFM operate end */ + if (1ul == bM4_EFM_FITE_OPTENDITE) + { + if ((1ul == bM4_EFM_FSR_OPTEND) && (VSSEL129 & BIT_MASK_20)) + { + EfmOpEnd_IrqHandler(); + } + } + /* QSPI interrupt */ + if ((1ul == M4_QSPI->SR_f.RAER) && (VSSEL129 & BIT_MASK_22)) + { + QspiInt_IrqHandler(); + } + /* DCU ch.1 */ + u32Tmp1 = M4_DCU1->INTSEL; + u32Tmp2 = M4_DCU1->FLAG; + if ((u32Tmp1 & u32Tmp2 & 0x7Ful) && (VSSEL129 & BIT_MASK_23)) + { + Dcu1_IrqHandler(); + } + /* DCU ch.2 */ + u32Tmp1 = M4_DCU2->INTSEL; + u32Tmp2 = M4_DCU2->FLAG; + if ((u32Tmp1 & u32Tmp2 & 0x7Ful) && (VSSEL129 & BIT_MASK_24)) + { + Dcu2_IrqHandler(); + } + /* DCU ch.3 */ + u32Tmp1 = M4_DCU3->INTSEL; + u32Tmp2 = M4_DCU3->FLAG; + if ((u32Tmp1 & u32Tmp2 & 0x7Ful) && (VSSEL129 & BIT_MASK_25)) + { + Dcu3_IrqHandler(); + } + /* DCU ch.4 */ + u32Tmp1 = M4_DCU4->INTSEL; + u32Tmp2 = M4_DCU4->FLAG; + if ((u32Tmp1 & u32Tmp2 & 0x7Ful) && (VSSEL129 & BIT_MASK_26)) + { + Dcu4_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.130 share IRQ handler + ** + ******************************************************************************/ +void IRQ130_Handler(void) +{ + uint32_t VSSEL130 = M4_INTC->VSSEL130; + /* Timer0 Ch. 1 A compare match */ + if (1ul == bM4_TMR01_BCONR_INTENA) + { + if ((1ul == bM4_TMR01_STFLR_CMAF) && (VSSEL130 & BIT_MASK_00)) + { + Timer01GCMA_IrqHandler(); + } + } + /* Timer0 Ch. 1 B compare match */ + if (1ul == bM4_TMR01_BCONR_INTENB) + { + if ((1ul == bM4_TMR01_STFLR_CMBF) && (VSSEL130 & BIT_MASK_01)) + { + Timer01GCMB_IrqHandler(); + } + } + /* Timer0 Ch. 2 A compare match */ + if (1ul == bM4_TMR02_BCONR_INTENA) + { + if ((1ul == bM4_TMR02_STFLR_CMAF) && (VSSEL130 & BIT_MASK_02)) + { + Timer02GCMA_IrqHandler(); + } + } + /* Timer0 Ch. 2 B compare match */ + if (1ul == bM4_TMR02_BCONR_INTENB) + { + if ((1ul == bM4_TMR02_STFLR_CMBF) && (VSSEL130 & BIT_MASK_03)) + { + Timer02GCMB_IrqHandler(); + } + } + /* Main-OSC stop */ + if (1ul == bM4_SYSREG_CMU_XTALSTDCR_XTALSTDIE) + { + if ((1ul == bM4_SYSREG_CMU_XTALSTDSR_XTALSTDF) && (VSSEL130 & BIT_MASK_21)) + { + MainOscStop_IrqHandler(); + } + } + /* Wakeup timer */ + if ((1ul == bM4_WKTM_CR_WKOVF) && (VSSEL130 & BIT_MASK_22)) + { + WakeupTimer_IrqHandler(); + } + /* SWDT */ + if ((M4_SWDT->SR & (BIT_MASK_16 | BIT_MASK_17)) && (VSSEL130 & BIT_MASK_23)) + { + Swdt_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.131 share IRQ handler + ** + ******************************************************************************/ +void IRQ131_Handler(void) +{ + uint32_t VSSEL131 = M4_INTC->VSSEL131; + uint32_t u32Tmp1 = 0ul; + uint32_t u32Tmp2 = 0ul; + /* Timer6 Ch.1 A compare match */ + if (1ul == bM4_TMR61_ICONR_INTENA) + { + if ((1ul == bM4_TMR61_STFLR_CMAF) && (VSSEL131 & BIT_MASK_00)) + { + Timer61GCMA_IrqHandler(); + } + } + /* Timer6 Ch.1 B compare match */ + if (1ul == bM4_TMR61_ICONR_INTENB) + { + if ((1ul == bM4_TMR61_STFLR_CMBF) && (VSSEL131 & BIT_MASK_01)) + { + Timer61GCMB_IrqHandler(); + } + } + /* Timer6 Ch.1 C compare match */ + if (1ul == bM4_TMR61_ICONR_INTENC) + { + if ((1ul == bM4_TMR61_STFLR_CMCF) && (VSSEL131 & BIT_MASK_02)) + { + Timer61GCMC_IrqHandler(); + } + } + /* Timer6 Ch.1 D compare match */ + if (1ul == bM4_TMR61_ICONR_INTEND) + { + if ((1ul == bM4_TMR61_STFLR_CMDF) && (VSSEL131 & BIT_MASK_03)) + { + Timer61GCMD_IrqHandler(); + } + } + /* Timer6 Ch.1 E compare match */ + if (1ul == bM4_TMR61_ICONR_INTENE) + { + if ((1ul == bM4_TMR61_STFLR_CMEF) && (VSSEL131 & BIT_MASK_04)) + { + Timer61GCME_IrqHandler(); + } + } + /* Timer6 Ch.1 F compare match */ + if (1ul == bM4_TMR61_ICONR_INTENF) + { + if ((1ul == bM4_TMR61_STFLR_CMFF) && (VSSEL131 & BIT_MASK_05)) + { + Timer61GCMF_IrqHandler(); + } + } + /* Timer6 Ch.1 overflow */ + if (1ul == bM4_TMR61_ICONR_INTENOVF) + { + if ((1ul == bM4_TMR61_STFLR_OVFF) && (VSSEL131 & BIT_MASK_06)) + { + Timer61GOV_IrqHandler(); + } + } + /* Timer6 Ch.1 underflow */ + if (1ul == bM4_TMR61_ICONR_INTENUDF) + { + if ((1ul == bM4_TMR61_STFLR_UDFF) && (VSSEL131 & BIT_MASK_07)) + { + Timer61GUD_IrqHandler(); + } + } + /* Timer6 Ch.1 dead time */ + if (1ul == bM4_TMR61_ICONR_INTENDTE) + { + if (((1ul == bM4_TMR61_STFLR_DTEF)) && (VSSEL131 & BIT_MASK_08)) + { + Timer61GDT_IrqHandler(); + } + } + /* Timer6 Ch.1 A up-down compare match */ + u32Tmp1 = (M4_TMR61->ICONR & (BIT_MASK_16 | BIT_MASK_17)) >> 7u; + u32Tmp2 = M4_TMR61->STFLR & (BIT_MASK_09 | BIT_MASK_10); + if ((u32Tmp1 & u32Tmp2) && (VSSEL131 & BIT_MASK_11)) + { + Timer61SCMA_IrqHandler(); + } + /* Timer6 Ch.1 B up-down compare match */ + u32Tmp1 = (M4_TMR61->ICONR & (BIT_MASK_18 | BIT_MASK_19)) >> 7u; + u32Tmp2 = M4_TMR61->STFLR & (BIT_MASK_11 | BIT_MASK_12); + if ((u32Tmp1 & u32Tmp2) && (VSSEL131 & BIT_MASK_12)) + { + Timer61SCMB_IrqHandler(); + } + /* Timer6 Ch.2 A compare match */ + if (1ul == bM4_TMR62_ICONR_INTENA) + { + if ((1ul == bM4_TMR62_STFLR_CMAF) && (VSSEL131 & BIT_MASK_16)) + { + Timer62GCMA_IrqHandler(); + } + } + /* Timer6 Ch.2 B compare match */ + if (1ul == bM4_TMR62_ICONR_INTENB) + { + if ((1ul == bM4_TMR62_STFLR_CMBF) && (VSSEL131 & BIT_MASK_17)) + { + Timer62GCMB_IrqHandler(); + } + } + /* Timer6 Ch.2 C compare match */ + if (1ul == bM4_TMR62_ICONR_INTENC) + { + if ((1ul == bM4_TMR62_STFLR_CMCF) && (VSSEL131 & BIT_MASK_18)) + { + Timer62GCMC_IrqHandler(); + } + } + /* Timer6 Ch.2 D compare match */ + if (1ul == bM4_TMR62_ICONR_INTEND) + { + if ((1ul == bM4_TMR62_STFLR_CMDF) && (VSSEL131 & BIT_MASK_19)) + { + Timer62GCMD_IrqHandler(); + } + } + /* Timer6 Ch.2 E compare match */ + if (1ul == bM4_TMR62_ICONR_INTENE) + { + if ((1ul == bM4_TMR62_STFLR_CMEF) && (VSSEL131 & BIT_MASK_20)) + { + Timer62GCME_IrqHandler(); + } + } + /* Timer6 Ch.2 F compare match */ + if (1ul == bM4_TMR62_ICONR_INTENF) + { + if ((1ul == bM4_TMR62_STFLR_CMFF) && (VSSEL131 & BIT_MASK_21)) + { + Timer62GCMF_IrqHandler(); + } + } + /* Timer6 Ch.2 overflow */ + if (1ul == bM4_TMR62_ICONR_INTENOVF) + { + if ((1ul == bM4_TMR62_STFLR_OVFF) && (VSSEL131 & BIT_MASK_22)) + { + Timer62GOV_IrqHandler(); + } + } + /* Timer6 Ch.2 underflow */ + if (1ul == bM4_TMR62_ICONR_INTENUDF) + { + if ((1ul == bM4_TMR62_STFLR_UDFF) && (VSSEL131 & BIT_MASK_23)) + { + Timer62GUD_IrqHandler(); + } + } + /* Timer6 Ch.2 dead time */ + if (1ul == bM4_TMR62_ICONR_INTENDTE) + { + if (((1ul == bM4_TMR62_STFLR_DTEF)) && (VSSEL131 & BIT_MASK_24)) + { + Timer62GDT_IrqHandler(); + } + } + /* Timer6 Ch.2 A up-down compare match */ + u32Tmp1 = (M4_TMR62->ICONR & (BIT_MASK_16 | BIT_MASK_17)) >> 7u; + u32Tmp2 = M4_TMR62->STFLR & (BIT_MASK_09 | BIT_MASK_10); + if ((u32Tmp1 & u32Tmp2) && (VSSEL131 & BIT_MASK_27)) + { + Timer62SCMA_IrqHandler(); + } + /* Timer6 Ch.2 B up-down compare match */ + u32Tmp1 = (M4_TMR62->ICONR & (BIT_MASK_18 | BIT_MASK_19)) >> 7u; + u32Tmp2 = M4_TMR62->STFLR & (BIT_MASK_11 | BIT_MASK_12); + if ((u32Tmp1 & u32Tmp2) && (VSSEL131 & BIT_MASK_28)) + { + Timer62SCMB_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.132 share IRQ handler + ** + ******************************************************************************/ +void IRQ132_Handler(void) +{ + uint32_t VSSEL132 = M4_INTC->VSSEL132; + uint32_t u32Tmp1 = 0ul; + uint32_t u32Tmp2 = 0ul; + /* Timer6 Ch.3 A compare match */ + if (1ul == bM4_TMR63_ICONR_INTENA) + { + if ((1ul == bM4_TMR63_STFLR_CMAF) && (VSSEL132 & BIT_MASK_00)) + { + Timer63GCMA_IrqHandler(); + } + } + /* Timer6 Ch.3 B compare match */ + if (1ul == bM4_TMR63_ICONR_INTENB) + { + if ((1ul == bM4_TMR63_STFLR_CMBF) && (VSSEL132 & BIT_MASK_01)) + { + Timer63GCMB_IrqHandler(); + } + } + /* Timer6 Ch.3 C compare match */ + if (1ul == bM4_TMR63_ICONR_INTENC) + { + if ((1ul == bM4_TMR63_STFLR_CMCF) && (VSSEL132 & BIT_MASK_02)) + { + Timer63GCMC_IrqHandler(); + } + } + /* Timer6 Ch.3 D compare match */ + if (1ul == bM4_TMR63_ICONR_INTEND) + { + if ((1ul == bM4_TMR63_STFLR_CMDF) && (VSSEL132 & BIT_MASK_03)) + { + Timer63GCMD_IrqHandler(); + } + } + /* Timer6 Ch.3 E compare match */ + if (1ul == bM4_TMR63_ICONR_INTENE) + { + if ((1ul == bM4_TMR63_STFLR_CMEF) && (VSSEL132 & BIT_MASK_04)) + { + Timer63GCME_IrqHandler(); + } + } + /* Timer6 Ch.3 F compare match */ + if (1ul == bM4_TMR63_ICONR_INTENF) + { + if ((1ul == bM4_TMR63_STFLR_CMFF) && (VSSEL132 & BIT_MASK_05)) + { + Timer63GCMF_IrqHandler(); + } + } + /* Timer6 Ch.3 overflow */ + if (1ul == bM4_TMR63_ICONR_INTENOVF) + { + if ((1ul == bM4_TMR63_STFLR_OVFF) && (VSSEL132 & BIT_MASK_06)) + { + Timer63GOV_IrqHandler(); + } + } + /* Timer6 Ch.3 underflow */ + if (1ul == bM4_TMR63_ICONR_INTENUDF) + { + if ((1ul == bM4_TMR63_STFLR_UDFF) && (VSSEL132 & BIT_MASK_07)) + { + Timer63GUD_IrqHandler(); + } + } + /* Timer6 Ch.3 dead time */ + if (1ul == bM4_TMR63_ICONR_INTENDTE) + { + if (((1ul == bM4_TMR63_STFLR_DTEF)) && (VSSEL132 & BIT_MASK_08)) + { + Timer63GDT_IrqHandler(); + } + } + /* Timer6 Ch.3 A up-down compare match */ + u32Tmp1 = (M4_TMR63->ICONR & (BIT_MASK_16 | BIT_MASK_17)) >> 7u; + u32Tmp2 = M4_TMR63->STFLR & (BIT_MASK_09 | BIT_MASK_10); + if ((u32Tmp1 & u32Tmp2) && (VSSEL132 & BIT_MASK_11)) + { + Timer63SCMA_IrqHandler(); + } + /* Timer6 Ch.3 B up-down compare match */ + u32Tmp1 = (M4_TMR63->ICONR & (BIT_MASK_18 | BIT_MASK_19)) >> 7u; + u32Tmp2 = M4_TMR63->STFLR & (BIT_MASK_11 | BIT_MASK_12); + if ((u32Tmp1 & u32Tmp2) && (VSSEL132 & BIT_MASK_12)) + { + Timer63SCMB_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.136 share IRQ handler + ** + ******************************************************************************/ +void IRQ136_Handler(void) +{ + uint32_t u32Tmp1 = 0ul; + uint32_t u32Tmp2 = 0ul; + uint32_t VSSEL136 = M4_INTC->VSSEL136; + + u32Tmp1 = M4_TMRA1->BCSTR; + /* TimerA Ch.1 overflow */ + if ((u32Tmp1 & BIT_MASK_12) && (u32Tmp1 & BIT_MASK_14) && (VSSEL136 & BIT_MASK_00)) + { + TimerA1OV_IrqHandler(); + } + /* TimerA Ch.1 underflow */ + if ((u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_15) && (VSSEL136 & BIT_MASK_01)) + { + TimerA1UD_IrqHandler(); + } + u32Tmp1 = M4_TMRA1->ICONR; + u32Tmp2 = M4_TMRA1->STFLR; + /* TimerA Ch.1 compare match */ + if ((u32Tmp1 & u32Tmp2 & 0xFFul) && (VSSEL136 & BIT_MASK_02)) + { + TimerA1CMP_IrqHandler(); + } + + u32Tmp1 = M4_TMRA2->BCSTR; + /* TimerA Ch.2 overflow */ + if ((u32Tmp1 & BIT_MASK_12) && (u32Tmp1 & BIT_MASK_14) && (VSSEL136 & BIT_MASK_03)) + { + TimerA2OV_IrqHandler(); + } + /* TimerA Ch.2 underflow */ + if ((u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_15) && (VSSEL136 & BIT_MASK_04)) + { + TimerA2UD_IrqHandler(); + } + u32Tmp1 = M4_TMRA2->ICONR; + u32Tmp2 = M4_TMRA2->STFLR; + /* TimerA Ch.2 compare match */ + if ((u32Tmp1 & u32Tmp2 & 0xFFul) && (VSSEL136 & BIT_MASK_05)) + { + TimerA2CMP_IrqHandler(); + } + + u32Tmp1 = M4_TMRA3->BCSTR; + /* TimerA Ch.3 overflow */ + if ((u32Tmp1 & BIT_MASK_12) && (u32Tmp1 & BIT_MASK_14) && (VSSEL136 & BIT_MASK_06)) + { + TimerA3OV_IrqHandler(); + } + /* TimerA Ch.3 underflow */ + if ((u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_15) && (VSSEL136 & BIT_MASK_07)) + { + TimerA3UD_IrqHandler(); + } + u32Tmp1 = M4_TMRA3->ICONR; + u32Tmp2 = M4_TMRA3->STFLR; + /* TimerA Ch.3 compare match */ + if ((u32Tmp1 & u32Tmp2 & 0xFFul) && (VSSEL136 & BIT_MASK_08)) + { + TimerA3CMP_IrqHandler(); + } + + u32Tmp1 = M4_TMRA4->BCSTR; + /* TimerA Ch.4 overflow */ + if ((u32Tmp1 & BIT_MASK_12) && (u32Tmp1 & BIT_MASK_14) && (VSSEL136 & BIT_MASK_09)) + { + TimerA4OV_IrqHandler(); + } + /* TimerA Ch.4 underflow */ + if ((u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_15) && (VSSEL136 & BIT_MASK_10)) + { + TimerA4UD_IrqHandler(); + } + u32Tmp1 = M4_TMRA4->ICONR; + u32Tmp2 = M4_TMRA4->STFLR; + /* TimerA Ch.4 compare match */ + if ((u32Tmp1 & u32Tmp2 & 0xFFul) && (VSSEL136 & BIT_MASK_11)) + { + TimerA4CMP_IrqHandler(); + } + + u32Tmp1 = M4_TMRA5->BCSTR; + /* TimerA Ch.5 overflow */ + if ((u32Tmp1 & BIT_MASK_12) && (u32Tmp1 & BIT_MASK_14) && (VSSEL136 & BIT_MASK_12)) + { + TimerA5OV_IrqHandler(); + } + /* TimerA Ch.5 underflow */ + if ((u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_15) && (VSSEL136 & BIT_MASK_13)) + { + TimerA5UD_IrqHandler(); + } + u32Tmp1 = M4_TMRA5->ICONR; + u32Tmp2 = M4_TMRA5->STFLR; + /* TimerA Ch.5 compare match */ + if ((u32Tmp1 & u32Tmp2 & 0xFFul) && (VSSEL136 & BIT_MASK_14)) + { + TimerA5CMP_IrqHandler(); + } + + u32Tmp1 = M4_TMRA6->BCSTR; + /* TimerA Ch.6 overflow */ + if ((u32Tmp1 & BIT_MASK_12) && (u32Tmp1 & BIT_MASK_14) && (VSSEL136 & BIT_MASK_16)) + { + TimerA6OV_IrqHandler(); + } + /* TimerA Ch.6 underflow */ + if ((u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_15) && (VSSEL136 & BIT_MASK_17)) + { + TimerA6UD_IrqHandler(); + } + u32Tmp1 = M4_TMRA6->ICONR; + u32Tmp2 = M4_TMRA6->STFLR; + /* TimerA Ch.6 compare match */ + if ((u32Tmp1 & u32Tmp2 & 0xFFul) && (VSSEL136 & BIT_MASK_18)) + { + TimerA6CMP_IrqHandler(); + } + /* USBFS global interrupt */ + if(1ul == bM4_USBFS_GAHBCFG_GINTMSK) + { + u32Tmp1 = M4_USBFS->GINTMSK & 0xF77CFCFBul; + u32Tmp2 = M4_USBFS->GINTSTS & 0xF77CFCFBul; + if ((u32Tmp1 & u32Tmp2) && (VSSEL136 & BIT_MASK_19)) + { + UsbGlobal_IrqHandler(); + } + } + + u32Tmp1 = M4_USART1->SR; + u32Tmp2 = M4_USART1->CR1; + /* USART Ch.1 Receive error */ + if ((u32Tmp2 & BIT_MASK_05) && (u32Tmp1 & (BIT_MASK_00 | BIT_MASK_01 | BIT_MASK_03)) && (VSSEL136 & BIT_MASK_22)) + { + Usart1RxErr_IrqHandler(); + } + /* USART Ch.1 Receive completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_05) && (VSSEL136 & BIT_MASK_23)) + { + Usart1RxEnd_IrqHandler(); + } + /* USART Ch.1 Transmit data empty */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_07) && (VSSEL136 & BIT_MASK_24)) + { + Usart1TxEmpty_IrqHandler(); + } + /* USART Ch.1 Transmit completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_06) && (VSSEL136 & BIT_MASK_25)) + { + Usart1TxEnd_IrqHandler(); + } + /* USART Ch.1 Receive timeout */ + if ((u32Tmp2 & BIT_MASK_01) && (u32Tmp1 & BIT_MASK_08) && (VSSEL136 & BIT_MASK_26)) + { + Usart1RxTO_IrqHandler(); + } + + u32Tmp1 = M4_USART2->SR; + u32Tmp2 = M4_USART2->CR1; + /* USART Ch.2 Receive error */ + if ((u32Tmp2 & BIT_MASK_05) && (u32Tmp1 & (BIT_MASK_00 | BIT_MASK_01 | BIT_MASK_03)) && (VSSEL136 & BIT_MASK_27)) + { + Usart2RxErr_IrqHandler(); + } + /* USART Ch.2 Receive completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_05) && (VSSEL136 & BIT_MASK_28)) + { + Usart2RxEnd_IrqHandler(); + } + /* USART Ch.2 Transmit data empty */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_07) && (VSSEL136 & BIT_MASK_29)) + { + Usart2TxEmpty_IrqHandler(); + } + /* USART Ch.2 Transmit completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_06) && (VSSEL136 & BIT_MASK_30)) + { + Usart2TxEnd_IrqHandler(); + } + /* USART Ch.2 Receive timeout */ + if ((u32Tmp2 & BIT_MASK_01) && (u32Tmp1 & BIT_MASK_08) && (VSSEL136 & BIT_MASK_31)) + { + Usart2RxTO_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.137 share IRQ handler + ** + ******************************************************************************/ +void IRQ137_Handler(void) +{ + uint32_t u32Tmp1 = 0ul; + uint32_t u32Tmp2 = 0ul; + uint32_t VSSEL137 = M4_INTC->VSSEL137; + + u32Tmp1 = M4_USART3->SR; + u32Tmp2 = M4_USART3->CR1; + /* USART Ch.3 Receive error */ + if ((u32Tmp2 & BIT_MASK_05) && (u32Tmp1 & (BIT_MASK_00 | BIT_MASK_01 | BIT_MASK_03)) && (VSSEL137 & BIT_MASK_00)) + { + Usart3RxErr_IrqHandler(); + } + /* USART Ch.3 Receive completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_05) && (VSSEL137 & BIT_MASK_01)) + { + Usart3RxEnd_IrqHandler(); + } + /* USART Ch.3 Transmit data empty */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_07) && (VSSEL137 & BIT_MASK_02)) + { + Usart3TxEmpty_IrqHandler(); + } + /* USART Ch.3 Transmit completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_06) && (VSSEL137 & BIT_MASK_03)) + { + Usart3TxEnd_IrqHandler(); + } + /* USART Ch.3 Receive timeout */ + if ((u32Tmp2 & BIT_MASK_01) && (u32Tmp1 & BIT_MASK_08) && (VSSEL137 & BIT_MASK_04)) + { + Usart3RxTO_IrqHandler(); + } + + u32Tmp1 = M4_USART4->SR; + u32Tmp2 = M4_USART4->CR1; + /* USART Ch.4 Receive error */ + if ((u32Tmp2 & BIT_MASK_05) && (u32Tmp1 & (BIT_MASK_00 | BIT_MASK_01 | BIT_MASK_03)) && (VSSEL137 & BIT_MASK_05)) + { + Usart4RxErr_IrqHandler(); + } + /* USART Ch.4 Receive completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_05) && (VSSEL137 & BIT_MASK_06)) + { + Usart4RxEnd_IrqHandler(); + } + /* USART Ch.4 Transmit data empty */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_07) && (VSSEL137 & BIT_MASK_07)) + { + Usart4TxEmpty_IrqHandler(); + } + /* USART Ch.4 Transmit completed */ + if ((u32Tmp2 & u32Tmp1 & BIT_MASK_06) && (VSSEL137 & BIT_MASK_08)) + { + Usart4TxEnd_IrqHandler(); + } + /* USART Ch.4 Receive timeout */ + if ((u32Tmp2 & BIT_MASK_01) && (u32Tmp1 & BIT_MASK_08) && (VSSEL137 & BIT_MASK_09)) + { + Usart4RxTO_IrqHandler(); + } + + u32Tmp1 = M4_SPI1->CR1; + u32Tmp2 = M4_SPI1->SR; + /* SPI Ch.1 Receive completed */ + if ((u32Tmp1 & BIT_MASK_10) && (u32Tmp2 & BIT_MASK_07) && (VSSEL137 & BIT_MASK_11)) + { + Spi1RxEnd_IrqHandler(); + } + /* SPI Ch.1 Transmit buf empty */ + if ((u32Tmp1 & BIT_MASK_09) && (u32Tmp2 & BIT_MASK_05) && (VSSEL137 & BIT_MASK_12)) + { + Spi1TxEmpty_IrqHandler(); + } + /* SPI Ch.1 bus idle */ + if ((u32Tmp1 & BIT_MASK_11) && (!(u32Tmp2 & BIT_MASK_01)) && (VSSEL137 & BIT_MASK_13)) + { + Spi1Idle_IrqHandler(); + } + /* SPI Ch.1 parity/overflow/underflow/mode error */ + if ((u32Tmp1 & BIT_MASK_08) && \ + ((u32Tmp2 & (BIT_MASK_00 | BIT_MASK_02 | BIT_MASK_03 | BIT_MASK_04))) && \ + (VSSEL137 & BIT_MASK_14)) + { + Spi1Err_IrqHandler(); + } + + u32Tmp1 = M4_SPI2->CR1; + u32Tmp2 = M4_SPI2->SR; + /* SPI Ch.2 Receive completed */ + if ((u32Tmp1 & BIT_MASK_10) && (u32Tmp2 & BIT_MASK_07) && (VSSEL137 & BIT_MASK_16)) + { + Spi2RxEnd_IrqHandler(); + } + /* SPI Ch.2 Transmit buf empty */ + if ((u32Tmp1 & BIT_MASK_09) && (u32Tmp2 & BIT_MASK_05) && (VSSEL137 & BIT_MASK_17)) + { + Spi2TxEmpty_IrqHandler(); + } + /* SPI Ch.2 bus idle */ + if ((u32Tmp1 & BIT_MASK_11) && (!(u32Tmp2 & BIT_MASK_01)) && (VSSEL137 & BIT_MASK_18)) + { + Spi2Idle_IrqHandler(); + } + /* SPI Ch.2 parity/overflow/underflow/mode error */ + if ((u32Tmp1 & BIT_MASK_08) && \ + ((u32Tmp2 & (BIT_MASK_00 | BIT_MASK_02 | BIT_MASK_03 | BIT_MASK_04))) && \ + (VSSEL137 & BIT_MASK_19)) + { + Spi2Err_IrqHandler(); + } + + u32Tmp1 = M4_SPI3->CR1; + u32Tmp2 = M4_SPI3->SR; + /* SPI Ch.3 Receive completed */ + if ((u32Tmp1 & BIT_MASK_10) && (u32Tmp2 & BIT_MASK_07) && (VSSEL137 & BIT_MASK_21)) + { + Spi3RxEnd_IrqHandler(); + } + /* SPI Ch.3 Transmit buf empty */ + if ((u32Tmp1 & BIT_MASK_09) && (u32Tmp2 & BIT_MASK_05) && (VSSEL137 & BIT_MASK_22)) + { + Spi3TxEmpty_IrqHandler(); + } + /* SPI Ch.3 bus idle */ + if ((u32Tmp1 & BIT_MASK_11) && (!(u32Tmp2 & BIT_MASK_01)) && (VSSEL137 & BIT_MASK_23)) + { + Spi3Idle_IrqHandler(); + } + /* SPI Ch.3 parity/overflow/underflow/mode error */ + if ((u32Tmp1 & BIT_MASK_08) && \ + ((u32Tmp2 & (BIT_MASK_00 | BIT_MASK_02 | BIT_MASK_03 | BIT_MASK_04))) && \ + (VSSEL137 & BIT_MASK_24)) + { + Spi3Err_IrqHandler(); + } + + u32Tmp1 = M4_SPI4->CR1; + u32Tmp2 = M4_SPI4->SR; + /* SPI Ch.4 Receive completed */ + if ((u32Tmp1 & BIT_MASK_10) && (u32Tmp2 & BIT_MASK_07) && (VSSEL137 & BIT_MASK_26)) + { + Spi4RxEnd_IrqHandler(); + } + /* SPI Ch.4 Transmit buf empty */ + if ((u32Tmp1 & BIT_MASK_09) && (u32Tmp2 & BIT_MASK_05) && (VSSEL137 & BIT_MASK_27)) + { + Spi4TxEmpty_IrqHandler(); + } + /* SPI Ch.4 bus idle */ + if ((u32Tmp1 & BIT_MASK_11) && (!(u32Tmp2 & BIT_MASK_01)) && (VSSEL137 & BIT_MASK_28)) + { + Spi4Idle_IrqHandler(); + } + /* SPI Ch.4 parity/overflow/underflow/mode error */ + if ((u32Tmp1 & BIT_MASK_08) && \ + ((u32Tmp2 & (BIT_MASK_00 | BIT_MASK_02 | BIT_MASK_03 | BIT_MASK_04))) && \ + (VSSEL137 & BIT_MASK_29)) + { + Spi4Err_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.138 share IRQ handler + ** + ******************************************************************************/ +void IRQ138_Handler(void) +{ + uint32_t u32Tmp1 = 0u; + uint32_t VSSEL138 = M4_INTC->VSSEL138; + + u32Tmp1 = M4_TMR41->OCSRU; + /* Timer4 Ch.1 U phase higher compare match */ + if ((VSSEL138 & BIT_MASK_00) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer41GCMUH_IrqHandler(); + } + /* Timer4 Ch.1 U phase lower compare match */ + if ((VSSEL138 & BIT_MASK_01) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer41GCMUL_IrqHandler(); + } + + u32Tmp1 = M4_TMR41->OCSRV; + /* Timer4 Ch.1 V phase higher compare match */ + if ((VSSEL138 & BIT_MASK_02) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer41GCMVH_IrqHandler(); + } + /* Timer4 Ch.1 V phase lower compare match */ + if ((VSSEL138 & BIT_MASK_03) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer41GCMVL_IrqHandler(); + } + + u32Tmp1 = M4_TMR41->OCSRW; + /* Timer4 Ch.1 W phase higher compare match */ + if ((VSSEL138 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer41GCMWH_IrqHandler(); + } + /* Timer4 Ch.1 W phase lower compare match */ + if ((VSSEL138 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer41GCMWL_IrqHandler(); + } + + u32Tmp1 = M4_TMR41->CCSR; + /* Timer4 Ch.1 overflow */ + if ((VSSEL138 & BIT_MASK_06) && (u32Tmp1 & BIT_MASK_08) && (u32Tmp1 & BIT_MASK_09)) + { + Timer41GOV_IrqHandler(); + } + /* Timer4 Ch.1 underflow */ + if ((VSSEL138 & BIT_MASK_07) && (u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_14)) + { + Timer41GUD_IrqHandler(); + } + + u32Tmp1 = M4_TMR41->RCSR; + /* Timer4 Ch.1 U phase reload */ + if ((VSSEL138 & BIT_MASK_08) && (~(u32Tmp1 & BIT_MASK_00)) && (u32Tmp1 & BIT_MASK_04)) + { + Timer41ReloadU_IrqHandler(); + } + /* Timer4 Ch.1 V phase reload */ + if ((VSSEL138 & BIT_MASK_09) && (~(u32Tmp1 & BIT_MASK_01)) && (u32Tmp1 & BIT_MASK_08)) + { + Timer41ReloadV_IrqHandler(); + } + /* Timer4 Ch.1 W phase reload */ + if ((VSSEL138 & BIT_MASK_10) && (~(u32Tmp1 & BIT_MASK_02)) && (u32Tmp1 & BIT_MASK_12)) + { + Timer41ReloadW_IrqHandler(); + } + + u32Tmp1 = M4_TMR42->OCSRU; + /* Timer4 Ch.2 U phase higher compare match */ + if ((VSSEL138 & BIT_MASK_16) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer41GCMUH_IrqHandler(); + } + /* Timer4 Ch.2 U phase lower compare match */ + if ((VSSEL138 & BIT_MASK_17) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer41GCMUL_IrqHandler(); + } + + u32Tmp1 = M4_TMR42->OCSRV; + /* Timer4 Ch.2 V phase higher compare match */ + if ((VSSEL138 & BIT_MASK_18) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer42GCMVH_IrqHandler(); + } + /* Timer4 Ch.2 V phase lower compare match */ + if ((VSSEL138 & BIT_MASK_19) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer42GCMVL_IrqHandler(); + } + + u32Tmp1 = M4_TMR42->OCSRW; + /* Timer4 Ch.2 W phase higher compare match */ + if ((VSSEL138 & BIT_MASK_20) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer42GCMWH_IrqHandler(); + } + /* Timer4 Ch.2 W phase lower compare match */ + if ((VSSEL138 & BIT_MASK_21) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer42GCMWL_IrqHandler(); + } + + u32Tmp1 = M4_TMR42->CCSR; + /* Timer4 Ch.2 overflow */ + if ((VSSEL138 & BIT_MASK_22) && (u32Tmp1 & BIT_MASK_08) && (u32Tmp1 & BIT_MASK_09)) + { + Timer42GOV_IrqHandler(); + } + /* Timer4 Ch.2 underflow */ + if ((VSSEL138 & BIT_MASK_23) && (u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_14)) + { + Timer42GUD_IrqHandler(); + } + + u32Tmp1 = M4_TMR42->RCSR; + /* Timer4 Ch.2 U phase reload */ + if ((VSSEL138 & BIT_MASK_24) && (~(u32Tmp1 & BIT_MASK_00)) && (u32Tmp1 & BIT_MASK_04)) + { + Timer42ReloadU_IrqHandler(); + } + /* Timer4 Ch.2 V phase reload */ + if ((VSSEL138 & BIT_MASK_25) && (~(u32Tmp1 & BIT_MASK_01)) && (u32Tmp1 & BIT_MASK_08)) + { + Timer42ReloadV_IrqHandler(); + } + /* Timer4 Ch.2 W phase reload */ + if ((VSSEL138 & BIT_MASK_26) && (~(u32Tmp1 & BIT_MASK_02)) && (u32Tmp1 & BIT_MASK_12)) + { + Timer42ReloadW_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.139 share IRQ handler + ** + ******************************************************************************/ +void IRQ139_Handler(void) +{ + uint32_t u32Tmp1 = 0u; + uint32_t VSSEL139 = M4_INTC->VSSEL139; + + u32Tmp1 = M4_TMR43->OCSRU; + /* Timer4 Ch.3 U phase higher compare match */ + if ((VSSEL139 & BIT_MASK_00) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer43GCMUH_IrqHandler(); + } + /* Timer4 Ch.3 U phase lower compare match */ + if ((VSSEL139 & BIT_MASK_01) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer43GCMUL_IrqHandler(); + } + + u32Tmp1 = M4_TMR43->OCSRV; + /* Timer4 Ch.3 V phase higher compare match */ + if ((VSSEL139 & BIT_MASK_02) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer43GCMVH_IrqHandler(); + } + /* Timer4 Ch.3 V phase lower compare match */ + if ((VSSEL139 & BIT_MASK_03) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer43GCMVL_IrqHandler(); + } + + u32Tmp1 = M4_TMR43->OCSRW; + /* Timer4 Ch.3 W phase higher compare match */ + if ((VSSEL139 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_04) && (u32Tmp1 & BIT_MASK_06)) + { + Timer43GCMWH_IrqHandler(); + } + /* Timer4 Ch.3 W phase lower compare match */ + if ((VSSEL139 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_05) && (u32Tmp1 & BIT_MASK_07)) + { + Timer43GCMWL_IrqHandler(); + } + + u32Tmp1 = M4_TMR43->CCSR; + /* Timer4 Ch.3 overflow */ + if ((VSSEL139 & BIT_MASK_06) && (u32Tmp1 & BIT_MASK_08) && (u32Tmp1 & BIT_MASK_09)) + { + Timer43GOV_IrqHandler(); + } + /* Timer4 Ch.3 underflow */ + if ((VSSEL139 & BIT_MASK_07) && (u32Tmp1 & BIT_MASK_13) && (u32Tmp1 & BIT_MASK_14)) + { + Timer43GUD_IrqHandler(); + } + + u32Tmp1 = M4_TMR43->RCSR; + /* Timer4 Ch.3 U phase reload */ + if ((VSSEL139 & BIT_MASK_08) && (~(u32Tmp1 & BIT_MASK_00)) && (u32Tmp1 & BIT_MASK_04)) + { + Timer41ReloadU_IrqHandler(); + } + /* Timer4 Ch.3 V phase reload */ + if ((VSSEL139 & BIT_MASK_09) && (~(u32Tmp1 & BIT_MASK_01)) && (u32Tmp1 & BIT_MASK_08)) + { + Timer43ReloadV_IrqHandler(); + } + /* Timer4 Ch.3 W phase reload */ + if ((VSSEL139 & BIT_MASK_10) && (~(u32Tmp1 & BIT_MASK_02)) && (u32Tmp1 & BIT_MASK_12)) + { + Timer43ReloadW_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.140 share IRQ handler + ** + ******************************************************************************/ +void IRQ140_Handler(void) +{ + uint32_t VSSEL140 = M4_INTC->VSSEL140; + uint32_t u32Tmp1 = 0u; + uint32_t u32Tmp2 = 0u; + /* EMB1 */ + u32Tmp1 = M4_EMB1->STAT & 0x0000000Ful; + u32Tmp2 = M4_EMB1->INTEN & 0x0000000Ful; + if ((u32Tmp1 & u32Tmp2) && (VSSEL140 & BIT_MASK_06)) + { + Emb1_IrqHandler(); + } + /* EMB2 */ + u32Tmp1 = M4_EMB2->STAT & 0x0000000Ful; + u32Tmp2 = M4_EMB2->INTEN & 0x0000000Ful; + if ((u32Tmp1 & u32Tmp2) && (VSSEL140 & BIT_MASK_07)) + { + Emb2_IrqHandler(); + } + /* EMB3 */ + u32Tmp1 = M4_EMB3->STAT & 0x0000000Ful; + u32Tmp2 = M4_EMB3->INTEN & 0x0000000Ful; + if ((u32Tmp1 & u32Tmp2) && (VSSEL140 & BIT_MASK_08)) + { + Emb3_IrqHandler(); + } + /* EMB4*/ + u32Tmp1 = M4_EMB4->STAT & 0x0000000Ful; + u32Tmp2 = M4_EMB4->INTEN & 0x0000000Ful; + if ((u32Tmp1 & u32Tmp2) && (VSSEL140 & BIT_MASK_09)) + { + Emb4_IrqHandler(); + } + + /* I2S Ch.1 Transmit */ + if(1ul == bM4_I2S1_CTRL_TXIE) + { + if ((1ul == bM4_I2S1_SR_TXBA) && (VSSEL140 & BIT_MASK_16)) + { + I2s1Tx_IrqHandler(); + } + } + /* I2S Ch.1 Receive */ + if(1ul == bM4_I2S1_CTRL_RXIE) + { + if ((1ul == bM4_I2S1_SR_RXBA) && (VSSEL140 & BIT_MASK_17)) + { + I2s1Rx_IrqHandler(); + } + } + /* I2S Ch.1 Error */ + if(1ul == bM4_I2S1_CTRL_EIE) + { + if ((M4_I2S1->ER & (BIT_MASK_00 | BIT_MASK_01)) && (VSSEL140 & BIT_MASK_18)) + { + I2s1Err_IrqHandler(); + } + } + /* I2S Ch.2 Transmit */ + if(1ul == bM4_I2S2_CTRL_TXIE) + { + if ((1ul == bM4_I2S2_SR_TXBA) && (VSSEL140 & BIT_MASK_19)) + { + I2s2Tx_IrqHandler(); + } + } + /* I2S Ch.2 Receive */ + if(1ul == bM4_I2S2_CTRL_RXIE) + { + if ((1ul == bM4_I2S2_SR_RXBA) && (VSSEL140 & BIT_MASK_20)) + { + I2s2Rx_IrqHandler(); + } + } + /* I2S Ch.2 Error */ + if(1ul == bM4_I2S2_CTRL_EIE) + { + if ((M4_I2S2->ER & (BIT_MASK_00 | BIT_MASK_01)) && (VSSEL140 & BIT_MASK_21)) + { + I2s2Err_IrqHandler(); + } + } + /* I2S Ch.3 Transmit */ + if(1ul == bM4_I2S3_CTRL_TXIE) + { + if ((1ul == bM4_I2S3_SR_TXBA) && (VSSEL140 & BIT_MASK_22)) + { + I2s3Tx_IrqHandler(); + } + } + /* I2S Ch.3 Receive */ + if(1ul == bM4_I2S3_CTRL_RXIE) + { + if ((1ul == bM4_I2S3_SR_RXBA) && (VSSEL140 & BIT_MASK_23)) + { + I2s3Rx_IrqHandler(); + } + } + /* I2S Ch.3 Error */ + if(1ul == bM4_I2S3_CTRL_EIE) + { + if ((M4_I2S3->ER & (BIT_MASK_00 | BIT_MASK_01)) && (VSSEL140 & BIT_MASK_24)) + { + I2s3Err_IrqHandler(); + } + } + /* I2S Ch.4 Transmit */ + if(1ul == bM4_I2S4_CTRL_TXIE) + { + if ((1ul == bM4_I2S4_SR_TXBA) && (VSSEL140 & BIT_MASK_25)) + { + I2s4Tx_IrqHandler(); + } + } + /* I2S Ch.4 Receive */ + if(1ul == bM4_I2S4_CTRL_RXIE) + { + if ((1ul == bM4_I2S4_SR_RXBA) && (VSSEL140 & BIT_MASK_26)) + { + I2s4Rx_IrqHandler(); + } + } + /* I2S Ch.4 Error */ + if(1ul == bM4_I2S4_CTRL_EIE) + { + if ((M4_I2S4->ER & (BIT_MASK_00 | BIT_MASK_01)) && (VSSEL140 & BIT_MASK_27)) + { + I2s4Err_IrqHandler(); + } + } +} + +/** + ******************************************************************************* + ** \brief Int No.141 share IRQ handler + ** + ******************************************************************************/ +void IRQ141_Handler(void) +{ + uint32_t VSSEL141 = M4_INTC->VSSEL141; + uint32_t u32Tmp1 = 0ul; + uint32_t u32Tmp2 = 0ul; + /* I2C Ch.1 Receive completed */ + if(1ul == bM4_I2C1_CR2_RFULLIE) + { + if ((1ul == bM4_I2C1_SR_RFULLF) && (VSSEL141 & BIT_MASK_04)) + { + I2c1RxEnd_IrqHandler(); + } + } + /* I2C Ch.1 Transmit data empty */ + if(1ul == bM4_I2C1_CR2_TEMPTYIE) + { + if ((1ul == bM4_I2C1_SR_TEMPTYF) && (VSSEL141 & BIT_MASK_05)) + { + I2c1TxEmpty_IrqHandler(); + } + } + /* I2C Ch.1 Transmit completed */ + if(1ul == bM4_I2C1_CR2_TENDIE) + { + if ((1ul == bM4_I2C1_SR_TENDF) && (VSSEL141 & BIT_MASK_06)) + { + I2c1TxEnd_IrqHandler(); + } + } + /* I2C Ch.1 Error */ + u32Tmp1 = M4_I2C1->CR2 & 0x00F05217ul; + u32Tmp2 = M4_I2C1->SR & 0x00F05217ul; + if ((u32Tmp1 & u32Tmp2) && (VSSEL141 & BIT_MASK_07)) + { + I2c1Err_IrqHandler(); + } + /* I2C Ch.2 Receive completed */ + if(1ul == bM4_I2C2_CR2_RFULLIE) + { + if ((1ul == bM4_I2C2_SR_RFULLF) && (VSSEL141 & BIT_MASK_08)) + { + I2c2RxEnd_IrqHandler(); + } + } + /* I2C Ch.2 Transmit data empty */ + if(1ul == bM4_I2C2_CR2_TEMPTYIE) + { + if ((1ul == bM4_I2C2_SR_TEMPTYF) && (VSSEL141 & BIT_MASK_09)) + { + I2c2TxEmpty_IrqHandler(); + } + } + /* I2C Ch.2 Transmit completed */ + if(1ul == bM4_I2C2_CR2_TENDIE) + { + if ((1ul == bM4_I2C2_SR_TENDF) && (VSSEL141 & BIT_MASK_10)) + { + I2c2TxEnd_IrqHandler(); + } + } + /* I2C Ch.2 Error */ + u32Tmp1 = M4_I2C2->CR2 & 0x00F05217ul; + u32Tmp2 = M4_I2C2->SR & 0x00F05217ul; + if ((u32Tmp1 & u32Tmp2) && (VSSEL141 & BIT_MASK_11)) + { + I2c2Err_IrqHandler(); + } + /* I2C Ch.3 Receive completed */ + if(1ul == bM4_I2C3_CR2_RFULLIE) + { + if ((1ul == bM4_I2C3_SR_RFULLF) && (VSSEL141 & BIT_MASK_12)) + { + I2c3RxEnd_IrqHandler(); + } + } + /* I2C Ch.3 Transmit data empty */ + if(1ul == bM4_I2C3_CR2_TEMPTYIE) + { + if ((1ul == bM4_I2C3_SR_TEMPTYF) && (VSSEL141 & BIT_MASK_13)) + { + I2c3TxEmpty_IrqHandler(); + } + } + /* I2C Ch.3 Transmit completed */ + if(1ul == bM4_I2C3_CR2_TENDIE) + { + if ((1ul == bM4_I2C3_SR_TENDF) && (VSSEL141 & BIT_MASK_14)) + { + I2c3TxEnd_IrqHandler(); + } + } + /* I2C Ch.3 Error */ + u32Tmp1 = M4_I2C3->CR2 & 0x00F05217ul; + u32Tmp2 = M4_I2C3->SR & 0x00F05217ul; + if ((u32Tmp1 & u32Tmp2) && (VSSEL141 & BIT_MASK_15)) + { + I2c3Err_IrqHandler(); + } + /* PVD Ch.1 detected */ + if (1ul == M4_SYSREG->PWR_PVDDSR_f.PVD1DETFLG) + { + if((1ul == bM4_SYSREG_PWR_PVDDSR_PVD1DETFLG) && (VSSEL141 & BIT_MASK_17)) + { + Pvd1_IrqHandler(); + } + } + if (1ul == M4_SYSREG->PWR_PVDDSR_f.PVD2DETFLG) + { + /* PVD Ch.2 detected */ + if((1ul == bM4_SYSREG_PWR_PVDDSR_PVD2DETFLG) && (VSSEL141 & BIT_MASK_18)) + { + Pvd2_IrqHandler(); + } + } + /* Freq. calculate error detected */ + if(1ul == bM4_FCM_RIER_ERRIE) + { + if((1ul == bM4_FCM_SR_ERRF) && (VSSEL141 & BIT_MASK_20)) + { + FcmErr_IrqHandler(); + } + } + /* Freq. calculate completed */ + if(1ul == bM4_FCM_RIER_MENDIE) + { + if((1ul == bM4_FCM_SR_MENDF) && (VSSEL141 & BIT_MASK_21)) + { + FcmEnd_IrqHandler(); + } + } + /* Freq. calculate overflow */ + if(1ul == bM4_FCM_RIER_OVFIE) + { + if((1ul == bM4_FCM_SR_OVF) && (VSSEL141 & BIT_MASK_22)) + { + FcmOV_IrqHandler(); + } + } + + /* WDT */ + if ((M4_WDT->SR & (BIT_MASK_16 | BIT_MASK_17)) && (VSSEL141 & BIT_MASK_23)) + { + Wdt_IrqHandler(); + } +} + +/** + ******************************************************************************* + ** \brief Int No.142 share IRQ handler + ** + ******************************************************************************/ +void IRQ142_Handler(void) +{ + uint32_t u32VSSEL142 = M4_INTC->VSSEL142; + uint16_t u16Tmp = 0u; + /* ADC unit.1 seq. A */ + if (1ul == bM4_ADC1_ICR_EOCAIEN) + { + if ((1ul == bM4_ADC1_ISR_EOCAF) && (u32VSSEL142 & BIT_MASK_00)) + { + ADC1A_IrqHandler(); + } + } + /* ADC unit.1 seq. B */ + if (1ul == bM4_ADC1_ICR_EOCBIEN) + { + if ((1ul == bM4_ADC1_ISR_EOCBF) && (u32VSSEL142 & BIT_MASK_01)) + { + ADC1B_IrqHandler(); + } + } + /* ADC unit.1 seq. A */ + u16Tmp = M4_ADC1->AWDSR0; + if (1ul == bM4_ADC1_AWDCR_AWDIEN) + { + if (((1ul == bM4_ADC1_AWDSR1_AWDF16) || (u16Tmp)) && (u32VSSEL142 & BIT_MASK_02)) + { + ADC1ChCmp_IrqHandler(); + } + } + /* ADC unit.1 seq. cmp */ + if (1ul == bM4_ADC1_AWDCR_AWDIEN) + { + if (((1ul == bM4_ADC1_AWDSR1_AWDF16) || (u16Tmp)) && (u32VSSEL142 & BIT_MASK_03)) + { + ADC1SeqCmp_IrqHandler(); + } + } + + /* ADC unit.2 seq. A */ + if (1ul == bM4_ADC2_ICR_EOCAIEN) + { + if ((1ul == bM4_ADC2_ISR_EOCAF) && (u32VSSEL142 & BIT_MASK_04)) + { + ADC2A_IrqHandler(); + } + } + /* ADC unit.2 seq. B */ + if (1ul == bM4_ADC2_ICR_EOCBIEN) + { + if ((1ul == bM4_ADC2_ISR_EOCBF) && (u32VSSEL142 & BIT_MASK_05)) + { + ADC2B_IrqHandler(); + } + } + /* ADC unit.2 seq. A */ + if (1ul == bM4_ADC2_AWDCR_AWDIEN) + { + if ((M4_ADC2->AWDSR0 & 0x1FFu) && (u32VSSEL142 & BIT_MASK_06)) + { + ADC2ChCmp_IrqHandler(); + } + } + /* ADC unit.2 seq. cmp */ + if (1ul == bM4_ADC2_AWDCR_AWDIEN) + { + if ((M4_ADC2->AWDSR0 & 0x1FFu) && (u32VSSEL142 & BIT_MASK_07)) + { + ADC2SeqCmp_IrqHandler(); + } + } +} + +/** + ******************************************************************************* + ** \brief Int No.143 share IRQ handler + ** + ******************************************************************************/ +void IRQ143_Handler(void) +{ + uint8_t RTIF = 0u; + uint8_t RTIE = 0u; + uint8_t ERRINT = 0u; + uint8_t TTCFG = 0u; + uint16_t NORINTST = 0u; + uint16_t NORINTSGEN = 0u; + uint16_t ERRINTST = 0u; + uint16_t ERRINTSGEN = 0u; + + /* SDIO Ch.1 */ + if (1ul == bM4_INTC_VSSEL143_VSEL2) + { + NORINTST = M4_SDIOC1->NORINTST; + NORINTSGEN = M4_SDIOC1->NORINTSGEN; + ERRINTST = M4_SDIOC1->ERRINTST; + ERRINTSGEN = M4_SDIOC1->ERRINTSGEN; + + if ((NORINTST & NORINTSGEN & 0x1F7u) || (ERRINTST & ERRINTSGEN & 0x017Fu)) + { + Sdio1_IrqHandler(); + } + } + + /* SDIO Ch.2 */ + if (1ul == bM4_INTC_VSSEL143_VSEL5) + { + NORINTST = M4_SDIOC2->NORINTST; + NORINTSGEN = M4_SDIOC2->NORINTSGEN; + ERRINTST = M4_SDIOC2->ERRINTST; + ERRINTSGEN = M4_SDIOC2->ERRINTSGEN; + + if ((NORINTST & NORINTSGEN & 0x1F7u) || (ERRINTST & ERRINTSGEN & 0x017Fu)) + { + Sdio2_IrqHandler(); + } + } + + /* CAN */ + if (1ul == bM4_INTC_VSSEL143_VSEL6) + { + RTIF = M4_CAN->RTIF; + RTIE = M4_CAN->RTIE; + ERRINT = M4_CAN->ERRINT; + TTCFG = M4_CAN->TTCFG; + if ( (TTCFG & BIT_MASK_05) || \ + (RTIF & BIT_MASK_00) || \ + (RTIF & RTIE & 0xFEu) || \ + ((ERRINT & BIT_MASK_00) && (ERRINT & BIT_MASK_01)) || \ + ((ERRINT & BIT_MASK_02) && (ERRINT & BIT_MASK_03)) || \ + ((ERRINT & BIT_MASK_04) && (ERRINT & BIT_MASK_05)) || \ + ((TTCFG & BIT_MASK_03) && (TTCFG & BIT_MASK_04)) || \ + ((TTCFG & BIT_MASK_06) && (TTCFG & BIT_MASK_07))) + { + Can_IrqHandler(); + } + } +} + +#endif + +//@} // InterruptGroup + +#endif /* DDL_INTERRUPTS_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_keyscan.c b/driver/src/hc32f460_keyscan.c new file mode 100644 index 0000000..43f2fab --- /dev/null +++ b/driver/src/hc32f460_keyscan.c @@ -0,0 +1,207 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_keyscan.c + ** + ** A detailed description is available at + ** @link KeyscanGroup Keyscan module description @endlink + ** + ** - 2018-10-17 CDT First version for Device Driver Library of keyscan. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_keyscan.h" +#include "hc32f460_utility.h" + +#if (DDL_KEYSCAN_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup KeyscanGroup + ******************************************************************************/ +//@{ +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Parameter validity check for Hiz cycle */ +#define IS_VALID_HIZ_CLCYE(x) \ +( ((x) == Hiz4) || \ + ((x) == Hiz8) || \ + ((x) == Hiz16) || \ + ((x) == Hiz32) || \ + ((x) == Hiz64) || \ + ((x) == Hiz256) || \ + ((x) == Hiz512) || \ + ((x) == Hiz1K)) + +/*! Parameter validity check for Low cycle */ +#define IS_VALID_LOW_CLCYE(x) \ +( ((x) == Low8) || \ + ((x) == Low16) || \ + ((x) == Low32) || \ + ((x) == Low64) || \ + ((x) == Low128) || \ + ((x) == Low256) || \ + ((x) == Low512) || \ + ((x) == Low1K) || \ + ((x) == Low2K) || \ + ((x) == Low4K) || \ + ((x) == Low8K) || \ + ((x) == Low16K) || \ + ((x) == Low32K) || \ + ((x) == Low64K) || \ + ((x) == Low128K) || \ + ((x) == Low256K) || \ + ((x) == Low512K) || \ + ((x) == Low1M) || \ + ((x) == Low2M) || \ + ((x) == Low4M) || \ + ((x) == Low8M) || \ + ((x) == Low16M)) + +/*! Parameter validity check for scan clock */ +#define IS_VALID_SCAN_CLK(x) \ +( ((x) == KeyscanHclk) || \ + ((x) == KeyscanLrc) || \ + ((x) == KeyscanXtal32)) + +/*! Parameter validity check for keyout selection */ +#define IS_VALID_KEY_OUT(x) \ +( ((x) == Keyout0To1) || \ + ((x) == Keyout0To2) || \ + ((x) == Keyout0To3) || \ + ((x) == Keyout0To4) || \ + ((x) == Keyout0To5) || \ + ((x) == Keyout0To6) || \ + ((x) == Keyout0To7)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief KEYSCAN initialization + ** + ** \param [in] pstcKeyscanConfig KEYSCAN configure structure + ** + ** \retval Ok KEYSCAN initialized + ** ErrorInvalidMode Uninitialized, cannot configure it properly + ** + ******************************************************************************/ +en_result_t KEYSCAN_Init(const stc_keyscan_config_t *pstcKeyscanConfig) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_HIZ_CLCYE(pstcKeyscanConfig->enHizCycle)); + DDL_ASSERT(IS_VALID_LOW_CLCYE(pstcKeyscanConfig->enLowCycle)); + DDL_ASSERT(IS_VALID_SCAN_CLK(pstcKeyscanConfig->enKeyscanClk)); + DDL_ASSERT(IS_VALID_KEY_OUT(pstcKeyscanConfig->enKeyoutSel)); + + /* cannot configure keyscan control register when running */ + if (Set == M4_KEYSCAN->SER_f.SEN) + { + enRet = ErrorInvalidMode; + } + else + { + M4_KEYSCAN->SCR_f.T_HIZ = pstcKeyscanConfig->enHizCycle; + M4_KEYSCAN->SCR_f.T_LLEVEL = pstcKeyscanConfig->enLowCycle; + M4_KEYSCAN->SCR_f.CKSEL = pstcKeyscanConfig->enKeyscanClk; + M4_KEYSCAN->SCR_f.KEYOUTSEL = pstcKeyscanConfig->enKeyoutSel; + M4_KEYSCAN->SCR_f.KEYINSEL = pstcKeyscanConfig->u16KeyinSel; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief KEYSCAN de-initialization + ** + ** \param None + ** + ** \retval Ok KEYSCAN de-initialized + ** + ******************************************************************************/ +en_result_t KEYSCAN_DeInit(void) +{ + M4_KEYSCAN->SER = 0ul; + M4_KEYSCAN->SCR = 0ul; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Start keyscan function + ** + ** \param None + ** + ** \retval Ok Keyscan function started + ** + ******************************************************************************/ +en_result_t KEYSCAN_Start(void) +{ + M4_KEYSCAN->SER_f.SEN = Set; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Stop keyscan function + ** + ** \param None + ** + ** \retval Ok Keyscan function stopped + ** + ******************************************************************************/ +en_result_t KEYSCAN_Stop(void) +{ + M4_KEYSCAN->SER_f.SEN = Reset; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get Key column index + ** + ** \param None + ** + ** \retval uint8_t Index of KEYOUT + ** + ******************************************************************************/ +uint8_t KEYSCAN_GetColIdx(void) +{ + return (uint8_t)(M4_KEYSCAN->SSR_f.INDEX); +} + +//@} // KeyscanGroup + +#endif /* DDL_KEYSCAN_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_mpu.c b/driver/src/hc32f460_mpu.c new file mode 100644 index 0000000..d0b3940 --- /dev/null +++ b/driver/src/hc32f460_mpu.c @@ -0,0 +1,1057 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_mpu.c + ** + ** A detailed description is available at + ** @link MpuGroup MPU description @endlink + ** + ** - 2018-10-20 CDT First version for Device Driver Library of MPU. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_mpu.h" +#include "hc32f460_utility.h" + +#if (DDL_MPU_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup MpuGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter valid check for MPU region number. */ +#define IS_VALID_MPU_REGION_NUM(x) \ +( (MpuRegionNum0 == (x)) || \ + (MpuRegionNum1 == (x)) || \ + (MpuRegionNum2 == (x)) || \ + (MpuRegionNum3 == (x)) || \ + (MpuRegionNum4 == (x)) || \ + (MpuRegionNum5 == (x)) || \ + (MpuRegionNum6 == (x)) || \ + (MpuRegionNum7 == (x)) || \ + (MpuRegionNum8 == (x)) || \ + (MpuRegionNum9 == (x)) || \ + (MpuRegionNum10 == (x)) || \ + (MpuRegionNum11 == (x)) || \ + (MpuRegionNum12 == (x)) || \ + (MpuRegionNum13 == (x)) || \ + (MpuRegionNum14 == (x)) || \ + (MpuRegionNum15 == (x))) + +/*!< Parameter valid check for MPU region size. */ +#define IS_VALID_MPU_REGION_SIZE(x) \ +( (MpuRegionSize32Byte == (x)) || \ + (MpuRegionSize64Byte == (x)) || \ + (MpuRegionSize128Byte == (x)) || \ + (MpuRegionSize256Byte == (x)) || \ + (MpuRegionSize512Byte == (x)) || \ + (MpuRegionSize1KByte == (x)) || \ + (MpuRegionSize2KByte == (x)) || \ + (MpuRegionSize4KByte == (x)) || \ + (MpuRegionSize8KByte == (x)) || \ + (MpuRegionSize16KByte == (x)) || \ + (MpuRegionSize32KByte == (x)) || \ + (MpuRegionSize64KByte == (x)) || \ + (MpuRegionSize128KByte == (x)) || \ + (MpuRegionSize256KByte == (x)) || \ + (MpuRegionSize512KByte == (x)) || \ + (MpuRegionSize1MByte == (x)) || \ + (MpuRegionSize2MByte == (x)) || \ + (MpuRegionSize4MByte == (x)) || \ + (MpuRegionSize8MByte == (x)) || \ + (MpuRegionSize16MByte == (x)) || \ + (MpuRegionSize32MByte == (x)) || \ + (MpuRegionSize64MByte == (x)) || \ + (MpuRegionSize128MByte == (x)) || \ + (MpuRegionSize256MByte == (x)) || \ + (MpuRegionSize512MByte == (x)) || \ + (MpuRegionSize1GByte == (x)) || \ + (MpuRegionSize2GByte == (x)) || \ + (MpuRegionSize4GByte == (x))) + +/*!< Parameter valid check for MPU region type. */ +#define IS_VALID_MPU_REGION_TYPE(x) \ +( (SMPU1Region == (x)) || \ + (SMPU2Region == (x)) || \ + (FMPURegion == (x))) + +/*!< Parameter valid check for MPU action. */ +#define IS_VALID_MPU_ACTION(x) \ +( (MpuTrigNmi == (x)) || \ + (MpuTrigReset == (x)) || \ + (MpuNoneAction == (x)) || \ + (MpuTrigBusError == (x))) + +/******************************************************************************/ +/* MPU */ +/******************************************************************************/ +/*!< Get the RGD register address of the specified MPU region */ +#define MPU_RGDx(__REGION_NUM__) ((uint32_t)(&M4_MPU->RGD0) + ((uint32_t)(__REGION_NUM__)) * 4u) + +/*!< Get the RGCR register address of the specified MPU region */ +#define MPU_RGCRx(__REGION_NUM__) ((uint32_t)(&M4_MPU->RGCR0) + ((uint32_t)(__REGION_NUM__)) * 4u) + +/*!< MPU RGD register: RGADDR position */ +#define MPU_RGD_RGADDR_Pos (5u) /*!< MPU_RGD: RGADDR Position */ + +/*!< MPU write protection key */ +#define MPU_WRITE_PROT_KEY (0x96A4ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Configure MPU protect region. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] pstcInitCfg Pointer to MPU protection region configuration structure + ** \arg the structure detail refer @ref stc_mpu_prot_region_init_t + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - pstcInitCfg == NULL + ** - pstcInitCfg->u32RegionBaseAddress is invalid + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t MPU_ProtRegionInit(en_mpu_region_num_t enRegionNum, + const stc_mpu_prot_region_init_t *pstcInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + uint32_t u32WriteProt = M4_MPU->WP; + stc_mpu_rgd0_field_t *RGD_f = NULL; + stc_mpu_rgcr0_field_t *RGCR_f = NULL; + + /* Check pointer parameters */ + if (NULL != pstcInitCfg) + { + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_SIZE(pstcInitCfg->enRegionSize)); + DDL_ASSERT(IS_VALID_MPU_ACTION(pstcInitCfg->stcSMPU1Permission.enAction)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU1Permission.enRegionEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU1Permission.enWriteEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU1Permission.enReadEnable)); + DDL_ASSERT(IS_VALID_MPU_ACTION(pstcInitCfg->stcSMPU2Permission.enAction)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU2Permission.enRegionEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU2Permission.enWriteEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU2Permission.enReadEnable)); + DDL_ASSERT(IS_VALID_MPU_ACTION(pstcInitCfg->stcFMPUPermission.enAction)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcFMPUPermission.enRegionEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcFMPUPermission.enWriteEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcFMPUPermission.enReadEnable)); + + /* Check base address and region size */ + if (!(pstcInitCfg->u32RegionBaseAddress & (~ (0xFFFFFFFFUL << ((uint32_t)pstcInitCfg->enRegionSize + 1UL))))) + { + /* Disable write protection of MPU register */ + M4_MPU->WP = (MPU_WRITE_PROT_KEY | 1ul); + + /* Get RGD && RGCR register address */ + RGD_f = (stc_mpu_rgd0_field_t *)MPU_RGDx(enRegionNum); + RGCR_f = (stc_mpu_rgcr0_field_t *)MPU_RGCRx(enRegionNum); + + /* Disable region protection function */ + RGCR_f->FRG0E = (uint32_t)0ul; + RGCR_f->S1RG0E = (uint32_t)0ul; + RGCR_f->S2RG0E = (uint32_t)0ul; + + /* Set region size */ + RGD_f->MPURG0SIZE = (uint32_t)(pstcInitCfg->enRegionSize); + + /* Set region base address */ + RGD_f->MPURG0ADDR = (pstcInitCfg->u32RegionBaseAddress >> MPU_RGD_RGADDR_Pos); + + /* Set region FMPU */ + RGCR_f->FRG0RP = (pstcInitCfg->stcFMPUPermission.enReadEnable) ? 0ul : 1ul; + RGCR_f->FRG0WP = (pstcInitCfg->stcFMPUPermission.enWriteEnable) ? 0ul : 1ul; + RGCR_f->FRG0E = (uint32_t)(pstcInitCfg->stcFMPUPermission.enRegionEnable); + M4_MPU->CR_f.FMPUACT = (uint32_t)(pstcInitCfg->stcFMPUPermission.enAction); + + /* Set region SMPU1 */ + RGCR_f->S1RG0RP = (pstcInitCfg->stcSMPU1Permission.enReadEnable) ? 0ul : 1ul; + RGCR_f->S1RG0WP = (pstcInitCfg->stcSMPU1Permission.enWriteEnable) ? 0ul : 1ul; + RGCR_f->S1RG0E = (uint32_t)(pstcInitCfg->stcSMPU1Permission.enRegionEnable); + M4_MPU->CR_f.SMPU1ACT = (uint32_t)(pstcInitCfg->stcSMPU1Permission.enAction); + + /* Set region SMPU2 */ + RGCR_f->S2RG0RP = (pstcInitCfg->stcSMPU2Permission.enReadEnable) ? 0ul : 1ul; + RGCR_f->S2RG0WP = (pstcInitCfg->stcSMPU2Permission.enWriteEnable) ? 0ul : 1ul; + RGCR_f->S2RG0E = (uint32_t)(pstcInitCfg->stcSMPU2Permission.enRegionEnable); + M4_MPU->CR_f.SMPU2ACT = (uint32_t)(pstcInitCfg->stcSMPU2Permission.enAction); + + /* Recover write protection of MPU register */ + M4_MPU->WP = (MPU_WRITE_PROT_KEY | u32WriteProt); + enRet = Ok; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Configure MPU background region. + ** + ** \param [in] pstcInitCfg Pointer to MPU background region configuration structure + ** \arg the structure detail refer @ref stc_mpu_bkgd_region_init_t + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - pstcInitCfg == NULL + ** - pstcInitCfg->u32RegionBaseAddress is invalid + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t MPU_BkgdRegionInit(const stc_mpu_bkgd_region_init_t *pstcInitCfg) +{ + uint32_t u32WriteProt = M4_MPU->WP; + en_result_t enRet = ErrorInvalidParameter; + + /* Check pointer parameters */ + if (NULL != pstcInitCfg) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU1BkgdPermission.enWriteEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU1BkgdPermission.enReadEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU2BkgdPermission.enWriteEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcSMPU2BkgdPermission.enReadEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcFMPUBkgdPermission.enWriteEnable)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->stcFMPUBkgdPermission.enReadEnable)); + + /* Disable write protection of MPU register */ + M4_MPU->WP = (MPU_WRITE_PROT_KEY | 1ul); + + /* Set SMPU1 */ + M4_MPU->CR_f.SMPU1BWP = (pstcInitCfg->stcSMPU1BkgdPermission.enWriteEnable) ? 0ul : 1ul; + M4_MPU->CR_f.SMPU1BRP = (pstcInitCfg->stcSMPU1BkgdPermission.enReadEnable) ? 0ul : 1ul; + + /* Set SMPU2 */ + M4_MPU->CR_f.SMPU2BWP = (pstcInitCfg->stcSMPU2BkgdPermission.enWriteEnable) ? 0ul : 1ul; + M4_MPU->CR_f.SMPU2BRP = (pstcInitCfg->stcSMPU2BkgdPermission.enReadEnable) ? 0ul : 1ul; + + /* Set FMPU */ + M4_MPU->CR_f.FMPUBWP = (pstcInitCfg->stcFMPUBkgdPermission.enWriteEnable) ? 0ul : 1ul; + M4_MPU->CR_f.FMPUBRP = (pstcInitCfg->stcFMPUBkgdPermission.enReadEnable) ? 0ul : 1ul; + + /* Recover write protection of MPU register */ + M4_MPU->WP = (MPU_WRITE_PROT_KEY | u32WriteProt); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set MPU size of the specified region. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] enRegionSize MPU region size + ** \arg This parameter can be a value of @ref en_mpu_region_size_t + ** + ** \retval Ok Set successfully. + ** + ******************************************************************************/ +en_result_t MPU_SetRegionSize(en_mpu_region_num_t enRegionNum, + en_mpu_region_size_t enRegionSize) +{ + stc_mpu_rgd0_field_t *RGD_f = NULL; + + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_SIZE(enRegionSize)); + + RGD_f = (stc_mpu_rgd0_field_t *)MPU_RGDx(enRegionNum); + RGD_f->MPURG0SIZE = (uint32_t)enRegionSize; + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get MPU size of the specified region. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** + ** \retval MPU size of the specified region. + ** + ******************************************************************************/ +en_mpu_region_size_t MPU_GetRegionSize(en_mpu_region_num_t enRegionNum) +{ + stc_mpu_rgd0_field_t *RGD_f = NULL; + + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + + RGD_f = (stc_mpu_rgd0_field_t *)MPU_RGDx(enRegionNum); + + return (en_mpu_region_size_t)(RGD_f->MPURG0SIZE); +} + +/** + ******************************************************************************* + ** \brief Set MPU base address of the specified region. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] u32RegionBaseAddr the specified base address + ** + ** \retval Ok Set successfully. + ** + ******************************************************************************/ +en_result_t MPU_SetRegionBaseAddress(en_mpu_region_num_t enRegionNum, + uint32_t u32RegionBaseAddr) +{ + stc_mpu_rgd0_field_t *RGD_f = NULL; + + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + + RGD_f = (stc_mpu_rgd0_field_t *)MPU_RGDx(enRegionNum); + RGD_f->MPURG0ADDR = (u32RegionBaseAddr >> MPU_RGD_RGADDR_Pos); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get MPU base address of the specified region. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t +s ** + ** \retval MPU base address of the specified region. + ** + ******************************************************************************/ +uint32_t MPU_GetRegionBaseAddress(en_mpu_region_num_t enRegionNum) +{ + stc_mpu_rgd0_field_t *RGD_f = NULL; + + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + + RGD_f = (stc_mpu_rgd0_field_t *)MPU_RGDx(enRegionNum); + + return (RGD_f->MPURG0ADDR << MPU_RGD_RGADDR_Pos); +} + +/** + ******************************************************************************* + ** \brief Set the action of the specified MPU region type. + ** + ** \param [in] enMpuRegionType the specified region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enActionSel MPU action + ** \arg MpuNoneAction MPU don't action. + ** \arg MpuTrigBusError MPU trigger bus error + ** \arg MpuTrigNmi MPU trigger bus NMI interrupt + ** \arg MpuTrigReset MPU trigger reset + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - enActionSel is invalid + ** + ******************************************************************************/ +en_result_t MPU_SetNoPermissionAcessAction(en_mpu_region_type_t enMpuRegionType, + en_mpu_action_sel_t enActionSel) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_MPU_ACTION(enActionSel)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + M4_MPU->CR_f.SMPU1ACT = (uint32_t)enActionSel; + break; + case SMPU2Region: + M4_MPU->CR_f.SMPU2ACT = (uint32_t)enActionSel; + break; + case FMPURegion: + M4_MPU->CR_f.FMPUACT = (uint32_t)enActionSel; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the action of the specified MPU region type. + ** + ** \param [in] enMpuRegionType the specified region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval MpuNoneAction MPU don't action. + ** \retval MpuTrigBusError MPU trigger bus error + ** \retval MpuTrigNmi MPU trigger bus NMI interrupt + ** \retval MpuTrigReset MPU trigger reset + ** + ******************************************************************************/ +en_mpu_action_sel_t MPU_GetNoPermissionAcessAction(en_mpu_region_type_t enMpuRegionType) +{ + uint32_t u32ActionSel = 0u; + + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + u32ActionSel = M4_MPU->CR_f.SMPU1ACT; + break; + case SMPU2Region: + u32ActionSel = M4_MPU->CR_f.SMPU2ACT; + break; + case FMPURegion: + u32ActionSel = M4_MPU->CR_f.FMPUACT; + break; + default: + break; + } + + return (en_mpu_action_sel_t)(u32ActionSel); +} + +/** + ******************************************************************************* + ** \brief Set MPU function of the specified region and type. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] enMpuRegionType the specified region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enState MPU region state + ** \arg Enable Enable the specified MPU region function + ** \arg Disable Disable the specified MPU region function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_ProtRegionCmd(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState) +{ + en_result_t enRet = Ok; + stc_mpu_rgcr0_field_t *RGCR_f = NULL; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + RGCR_f = (stc_mpu_rgcr0_field_t *)MPU_RGCRx(enRegionNum); + + switch (enMpuRegionType) + { + case SMPU1Region: + RGCR_f->S1RG0E = (uint32_t)enState; + break; + case SMPU2Region: + RGCR_f->S2RG0E = (uint32_t)enState; + break; + case FMPURegion: + RGCR_f->FRG0E = (uint32_t)enState; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set MPU function of the specified region type. + ** + ** \param [in] enMpuRegionType the specified region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enState MPU region state + ** \arg Enable Enable the specified type region function of MPU + ** \arg Disable Disable the specified type region function of MPU + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_RegionTypeCmd(en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + M4_MPU->CR_f.SMPU1E = (uint32_t)enState; + break; + case SMPU2Region: + M4_MPU->CR_f.SMPU2E = (uint32_t)enState; + break; + case FMPURegion: + M4_MPU->CR_f.FMPUE = (uint32_t)enState; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get MPU status + ** + ** \param [in] enMpuRegionType the specified region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval Set Flag is set. + ** \retval Reset Flag is reset or enMpuRegionType is invalid. + ** + ******************************************************************************/ +en_flag_status_t MPU_GetStatus(en_mpu_region_type_t enMpuRegionType) +{ + uint32_t u32Flag = 0ul; + + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + u32Flag = M4_MPU->SR_f.SMPU1EAF; + break; + case SMPU2Region: + u32Flag = M4_MPU->SR_f.SMPU2EAF; + break; + case FMPURegion: + u32Flag = M4_MPU->SR_f.FMPUEAF; + break; + default: + break; + } + + return (en_flag_status_t)(u32Flag); +} + +/** + ******************************************************************************* + ** \brief Clear MPU status. + ** + ** \param [in] enMpuRegionType the specified region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval Ok Clear flag successfully. + ** \retval ErrorInvalidParameter enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_ClearStatus(en_mpu_region_type_t enMpuRegionType) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + M4_MPU->ECLR_f.SMPU1ECLR = 1u; + break; + case SMPU2Region: + M4_MPU->ECLR_f.SMPU2ECLR = 1u; + break; + case FMPURegion: + M4_MPU->ECLR_f.FMPUECLR = 1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set MPU read permission of the specified protection region and enMpuRegionType. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enState MPU region state + ** \arg Enable Enable the specified MPU region read permission + ** \arg Disable Disable the specified MPU region read permission + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_SetProtRegionReadPermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState) +{ + en_result_t enRet = Ok; + stc_mpu_rgcr0_field_t *RGCR_f = NULL; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + RGCR_f = (stc_mpu_rgcr0_field_t *)MPU_RGCRx(enRegionNum); + + switch (enMpuRegionType) + { + case SMPU1Region: + RGCR_f->S1RG0RP = (Enable == enState) ? 0ul : 1ul; + break; + case SMPU2Region: + RGCR_f->S2RG0RP = (Enable == enState) ? 0ul : 1ul; + break; + case FMPURegion: + RGCR_f->FRG0RP = (Enable == enState) ? 0ul : 1ul; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get MPU read permission of the specified protection region and enMpuRegionType. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval Enable Enable the specified MPU region read permission + ** \retval Disable Disable the specified MPU region read permission + ** + ******************************************************************************/ +en_functional_state_t MPU_GetProtRegionReadPermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType) +{ + uint32_t u32State = 0u; + stc_mpu_rgcr0_field_t *RGCR_f = NULL; + + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + RGCR_f = (stc_mpu_rgcr0_field_t *)MPU_RGCRx(enRegionNum); + + switch (enMpuRegionType) + { + case SMPU1Region: + u32State = RGCR_f->S1RG0RP; + break; + case SMPU2Region: + u32State = RGCR_f->S2RG0RP; + break; + case FMPURegion: + u32State = RGCR_f->FRG0RP; + break; + default: + break; + } + + return (u32State ? Disable : Enable); +} + +/** + ******************************************************************************* + ** \brief Set MPU write permission of the specified protection region and enMpuRegionType. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enState MPU region state + ** \arg Enable Enable the specified MPU region write permission + ** \arg Disable Disable the specified MPU region write permission + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_SetProtRegionWritePermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState) +{ + en_result_t enRet = Ok; + stc_mpu_rgcr0_field_t *RGCR_f = NULL; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + RGCR_f = (stc_mpu_rgcr0_field_t *)MPU_RGCRx(enRegionNum); + + switch (enMpuRegionType) + { + case SMPU1Region: + RGCR_f->S1RG0WP = ((Enable == enState) ? 0ul : 1ul); + break; + case SMPU2Region: + RGCR_f->S2RG0WP = ((Enable == enState) ? 0ul : 1ul); + break; + case FMPURegion: + RGCR_f->FRG0WP = ((Enable == enState) ? 0ul : 1ul); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get MPU write permission of the specified protection region and enMpuRegionType. + ** + ** \param [in] enRegionNum MPU region number + ** \arg This parameter can be a value of @ref en_mpu_region_num_t + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval Enable Enable the specified MPU region read permission + ** \retval Disable Disable the specified MPU region read permission + ** + ******************************************************************************/ +en_functional_state_t MPU_GetProtRegionWritePermission(en_mpu_region_num_t enRegionNum, + en_mpu_region_type_t enMpuRegionType) +{ + uint32_t u32State = 0u; + stc_mpu_rgcr0_field_t *RGCR_f = NULL; + + DDL_ASSERT(IS_VALID_MPU_REGION_NUM(enRegionNum)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + RGCR_f = (stc_mpu_rgcr0_field_t *)MPU_RGCRx(enRegionNum); + + switch (enMpuRegionType) + { + case SMPU1Region: + u32State = RGCR_f->S1RG0WP; + break; + case SMPU2Region: + u32State = RGCR_f->S2RG0WP; + break; + case FMPURegion: + u32State = RGCR_f->FRG0WP; + break; + default: + break; + } + + return (u32State ? Disable : Enable); +} + +/** + ******************************************************************************* + ** \brief Set MPU read permission of the specified background region and enMpuRegionType. + ** + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enState MPU region state + ** \arg Enable Enable the specified MPU region read permission + ** \arg Disable Disable the specified MPU region read permission + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_SetBkgdRegionReadPermission(en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + M4_MPU->CR_f.SMPU1BRP = ((Enable == enState) ? 0ul : 1ul); + break; + case SMPU2Region: + M4_MPU->CR_f.SMPU2BRP = ((Enable == enState) ? 0ul : 1ul); + break; + case FMPURegion: + M4_MPU->CR_f.FMPUBRP = ((Enable == enState) ? 0ul : 1ul); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get MPU read permission of the specified background region and enMpuRegionType. + ** + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval Enable Enable the specified MPU region read permission + ** \retval Disable Disable the specified MPU region read permission + ** + ******************************************************************************/ +en_functional_state_t MPU_GetBkgdRegionReadPermission(en_mpu_region_type_t enMpuRegionType) +{ + uint32_t u32State = 0u; + + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + u32State = M4_MPU->CR_f.SMPU1BRP; + break; + case SMPU2Region: + u32State = M4_MPU->CR_f.SMPU2BRP; + break; + case FMPURegion: + u32State = M4_MPU->CR_f.FMPUBRP; + break; + default: + break; + } + + return (u32State ? Disable : Enable); +} + +/** + ******************************************************************************* + ** \brief Set MPU write permission of the specified background region and enMpuRegionType. + ** + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** \param [in] enState MPU region state + ** \arg Enable Enable the specified MPU region write permission + ** \arg Disable Disable the specified MPU region write permission + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter enMpuRegionType is invalid + ** + ******************************************************************************/ +en_result_t MPU_SetBkgdRegionWritePermission(en_mpu_region_type_t enMpuRegionType, + en_functional_state_t enState) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + M4_MPU->CR_f.SMPU1BWP = ((Enable == enState) ? 0ul : 1ul); + break; + case SMPU2Region: + M4_MPU->CR_f.SMPU2BWP = ((Enable == enState) ? 0ul : 1ul); + break; + case FMPURegion: + M4_MPU->CR_f.FMPUBWP = ((Enable == enState) ? 0ul : 1ul); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get MPU write permission of the specified background region and enMpuRegionType. + ** + ** \param [in] enMpuRegionType MPU region type + ** \arg SMPU1Region System DMA_1 MPU + ** \arg SMPU2Region System DMA_2 MPU + ** \arg FMPURegion System USBFS_DMA MPU + ** + ** \retval Enable Enable the specified MPU region read permission + ** \retval Disable Disable the specified MPU region read permission + ** + ******************************************************************************/ +en_functional_state_t MPU_GetBkgdRegionWritePermission(en_mpu_region_type_t enMpuRegionType) +{ + uint32_t u32State = 0u; + + DDL_ASSERT(IS_VALID_MPU_REGION_TYPE(enMpuRegionType)); + + switch (enMpuRegionType) + { + case SMPU1Region: + u32State = M4_MPU->CR_f.SMPU1BWP; + break; + case SMPU2Region: + u32State = M4_MPU->CR_f.SMPU2BWP; + break; + case FMPURegion: + u32State = M4_MPU->CR_f.FMPUBWP; + break; + default: + break; + } + + return (u32State ? Disable : Enable); +} + +/** + ******************************************************************************* + ** \brief Set MPU function of the specified region and type. + ** + ** \param [in] enState MPU write protection state + ** \arg Enable Enable the write protection function + ** \arg Disable Disable the write protection function + ** + ** \retval Ok Set successfully. + ** + ******************************************************************************/ +en_result_t MPU_WriteProtCmd(en_functional_state_t enState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + M4_MPU->WP = (MPU_WRITE_PROT_KEY | ((Enable == enState) ? 0ul : 1ul)); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Enable the specified IP Write/Read protection. + ** + ** \param [in] u32ProtMode Ip protection mode + ** \arg AesReadProt AES read protection + ** \arg AesWriteProt AES write protection + ** \arg HashReadProt HASH read protection + ** \arg HashWriteProt HASH write protection + ** \arg TrngReadProt TRNG read protection + ** \arg TrngWriteProt TRNG write protection + ** \arg CrcReadProt CRC read protection + ** \arg CrcWriteProt CRC write protection + ** \arg FmcReadProt FMC read protection + ** \arg FmcWriteProt FMC write protection + ** \arg WdtReadProt WDT read protection + ** \arg WdtWriteProt WDT write protection + ** \arg SwdtReadProt WDT read protection + ** \arg SwdtWriteProt WDT write protection + ** \arg BksramReadProt BKSRAM read protection + ** \arg BksramWriteProt BKSRAM write protection + ** \arg RtcReadProt RTC read protection + ** \arg RtcWriteProt RTC write protection + ** \arg DmpuReadProt DMPU read protection + ** \arg DmpuWriteProt DMPU write protection + ** \arg SramcReadProt SRAMC read protection + ** \arg SramcWriteProt SRAMC write protection + ** \arg IntcReadProt INTC read protection + ** \arg IntcWriteProt INTC write protection + ** \arg SyscReadProt SYSC read protection + ** \arg SyscWriteProt SYSC write protection + ** \arg MstpWriteProt MSTP write protection + ** \arg MstpWriteProt MSTP write protection + ** \arg BusErrProt BUSERR write protection + ** \param [in] enState MPU IP protection state + ** \arg Enable Enable the IP protection function + ** \arg Disable Disable the IP protection function + ** + ** \retval Ok Set successfully. + ** + ******************************************************************************/ +en_result_t MPU_IpProtCmd(uint32_t u32ProtMode, + en_functional_state_t enState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if(Enable == enState) + { + M4_SYSREG->MPU_IPPR |= u32ProtMode; + } + else + { + M4_SYSREG->MPU_IPPR &= (~u32ProtMode); + } + + return Ok; +} + +//@} // MpuGroup + +#endif /* DDL_MPU_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_ots.c b/driver/src/hc32f460_ots.c new file mode 100644 index 0000000..74ddaba --- /dev/null +++ b/driver/src/hc32f460_ots.c @@ -0,0 +1,386 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_ots.c + ** + ** A detailed description is available at + ** @link OtsGroup Ots description @endlink + ** + ** - 2018-10-26 CDT First version for Device Driver Library of Ots. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_ots.h" +#include "hc32f460_utility.h" + +#if (DDL_OTS_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup OtsGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Parameter validity check for OTS auto off configuration value. */ +#define IS_OTS_AUTO_OFF(EN) \ +( ((EN) == OtsAutoOff_Disable) || \ + ((EN) == OtsAutoOff_Enable)) + +/*! Parameter validity check for OTS interrupt enable/disable. */ +#define IS_OTS_IE(IE) \ +( ((IE) == OtsInt_Disable) || \ + ((IE) == OtsInt_Enable)) + +/*! Parameter validity check for OTS clock selection configuration value. */ +#define IS_OTS_CLK_SEL(CLK) \ +( ((CLK) == OtsClkSel_Xtal) || \ + ((CLK) == OtsClkSel_Hrc)) + +/*! Parameter validity check for OTS trigger source event . */ +#define IS_OTS_TRIG_SRC_EVENT(x) \ +( (((x) >= EVT_PORT_EIRQ0) && ((x) <= EVT_PORT_EIRQ15)) || \ + (((x) >= EVT_DMA1_TC0) && ((x) <= EVT_DMA2_BTC3)) || \ + (((x) >= EVT_EFM_OPTEND) && ((x) <= EVT_USBFS_SOF)) || \ + (((x) >= EVT_DCU1) && ((x) <= EVT_DCU4)) || \ + (((x) >= EVT_TMR01_GCMA) && ((x) <= EVT_TMR02_GCMB)) || \ + (((x) >= EVT_RTC_ALM) && ((x) <= EVT_RTC_PRD)) || \ + (((x) >= EVT_TMR61_GCMA) && ((x) <= EVT_TMR61_GUDF)) || \ + (((x) >= EVT_TMR61_SCMA) && ((x) <= EVT_TMR61_SCMB)) || \ + (((x) >= EVT_TMR62_GCMA) && ((x) <= EVT_TMR62_GUDF)) || \ + (((x) >= EVT_TMR62_SCMA) && ((x) <= EVT_TMR62_SCMB)) || \ + (((x) >= EVT_TMR63_GCMA) && ((x) <= EVT_TMR63_GUDF)) || \ + (((x) >= EVT_TMR63_SCMA) && ((x) <= EVT_TMR63_SCMB)) || \ + (((x) >= EVT_TMRA1_OVF) && ((x) <= EVT_TMRA5_CMP)) || \ + (((x) >= EVT_TMRA6_OVF) && ((x) <= EVT_TMRA6_CMP)) || \ + (((x) >= EVT_USART1_EI) && ((x) <= EVT_USART4_RTO)) || \ + (((x) >= EVT_SPI1_SPRI) && ((x) <= EVT_AOS_STRG)) || \ + (((x) >= EVT_TMR41_SCMUH) && ((x) <= EVT_TMR42_SCMWL)) || \ + (((x) >= EVT_TMR43_SCMUH) && ((x) <= EVT_TMR43_SCMWL)) || \ + (((x) >= EVT_EVENT_PORT1) && ((x) <= EVT_EVENT_PORT4)) || \ + (((x) >= EVT_I2S1_TXIRQOUT) && ((x) <= EVT_I2S1_RXIRQOUT)) || \ + (((x) >= EVT_I2S2_TXIRQOUT) && ((x) <= EVT_I2S2_RXIRQOUT)) || \ + (((x) >= EVT_I2S3_TXIRQOUT) && ((x) <= EVT_I2S3_RXIRQOUT)) || \ + (((x) >= EVT_I2S4_TXIRQOUT) && ((x) <= EVT_I2S4_RXIRQOUT)) || \ + (((x) >= EVT_ACMP1) && ((x) <= EVT_ACMP3)) || \ + (((x) >= EVT_I2C1_RXI) && ((x) <= EVT_I2C3_EEI)) || \ + (((x) >= EVT_PVD_PVD1) && ((x) <= EVT_OTS)) || \ + ((x) == EVT_WDT_REFUDF) || \ + (((x) >= EVT_ADC1_EOCA) && ((x) <= EVT_TRNG_END)) || \ + (((x) >= EVT_SDIOC1_DMAR) && ((x) <= EVT_SDIOC1_DMAW)) || \ + (((x) >= EVT_SDIOC2_DMAR) && ((x) <= EVT_SDIOC2_DMAW)) || \ + ((x) == EVT_MAX)) + +/*! Parameter validity check for OTS common trigger. */ +#define IS_OTS_COM_TRIGGER(x) \ +( ((x) == OtsComTrigger_1) || \ + ((x) == OtsComTrigger_2) || \ + ((x) == OtsComTrigger_1_2)) + +#define EXPERIMENT_COUNT ((uint8_t)10) + + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ +static float32_t m_f32SlopeK = 0.0f; +static float32_t m_f32OffsetM = 0.0f; + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + /** + ******************************************************************************* + ** \brief Initializes the OTS. + ** + ** \param [in] pstcInit See @ref stc_ots_init_t for details. + ** + ** \retval Ok No error occurred. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t OTS_Init(const stc_ots_init_t *pstcInit) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != pstcInit) + { + DDL_ASSERT(IS_OTS_AUTO_OFF(pstcInit->enAutoOff)); + DDL_ASSERT(IS_OTS_CLK_SEL(pstcInit->enClkSel)); + + /* Stop ots sampling. */ + bM4_OTS_CTL_OTSST = 0u; + /* Disable OTS interrupt default. */ + bM4_OTS_CTL_OTSIE = OtsInt_Disable; + + bM4_OTS_CTL_TSSTP = pstcInit->enAutoOff; + bM4_OTS_CTL_OTSCK = pstcInit->enClkSel; + m_f32SlopeK = pstcInit->f32SlopeK; + m_f32OffsetM = pstcInit->f32OffsetM; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Deinitializes the TRNG. + ** + ** \param None. + ** + ** \retval None. + ** + ******************************************************************************/ +void OTS_DeInit(void) +{ + /* Stop ots sampling. */ + bM4_OTS_CTL_OTSST = 0u; + + /* Set the value of all registers to the reset value. */ + M4_OTS->CTL = 0u; + M4_OTS->DR1 = 0u; + M4_OTS->DR2 = 0u; + M4_OTS->ECR = 0u; +} + +/** + ******************************************************************************* + ** \brief Get temperature via normal mode. + ** + ** \param [out] pf32Temp The address to store the temperature value. + ** + ** \param [in] u32Timeout Timeout value. + ** + ** \retval Ok No error occurred. + ** \retval ErrorTimeout OTS works timeout. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t OTS_Polling(float32_t *pf32Temp, uint32_t u32Timeout) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (pf32Temp != NULL) + { + enRet = ErrorTimeout; + + OTS_Start(); + do + { + if (bM4_OTS_CTL_OTSST == 0ul) + { + *pf32Temp = OTS_CalculateTemp(); + enRet = Ok; + break; + } + } while (u32Timeout-- != 0ul); + OTS_Stop(); + } + + return enRet; +} +/** + ******************************************************************************* + ** \brief Enable or disable OTS interrupt. + ** + ** \param [in] enState Enable or disable OTS interrupt. + ** + ** \retval None. + ** + ******************************************************************************/ +void OTS_IntCmd(en_functional_state_t enState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + bM4_OTS_CTL_OTSIE = (uint32_t)enState; +} + +/** + ******************************************************************************* + ** \brief Set OTS AOS trigger source. + ** + ** \param [in] enEvent See @ref en_event_src_t for details. + ** + ** \retval None. + ** + ******************************************************************************/ +void OTS_SetTriggerSrc(en_event_src_t enEvent) +{ + uint32_t u32OtrTrg = M4_AOS->OTS_TRG; + + DDL_ASSERT(IS_OTS_TRIG_SRC_EVENT(enEvent) && (EVT_OTS != enEvent)); + + u32OtrTrg &= ~0x1FFul; + u32OtrTrg |= enEvent; + + M4_AOS->OTS_TRG = u32OtrTrg; +} + +/** + ******************************************************************************* + ** \brief Enable or disable OTS common trigger. + ** + ** \param [in] enComTrigger OTS common trigger selection. See @ref en_ots_com_trigger_t for details. + ** + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None. + ** + ******************************************************************************/ +void OTS_ComTriggerCmd(en_ots_com_trigger_t enComTrigger, en_functional_state_t enState) +{ + uint32_t u32ComTrig = enComTrigger; + + DDL_ASSERT(IS_OTS_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + u32ComTrig <<= 30u; + + if (enState == Enable) + { + M4_AOS->OTS_TRG |= u32ComTrig; + } + else + { + M4_AOS->OTS_TRG &= ~u32ComTrig; + } +} + +/** +******************************************************************************* +** \brief OTS scaling experiment. If you want to get a more accurate temperature value, +** you need to do a calibration experiment. +** +** \param [out] pu16Dr1 Address to store OTS data register 1. +** +** \param [out] pu16Dr2 Address to store OTS data register 2. +** +** \param [out] pu16Ecr Address to store OTS error compensation register. +** +** \param [out] pf32A Address to store parameter A(for calibration experiments). +** +** \param [in] u32Timeout Timeout value. +** +** \retval Ok No error occurred. +** \retval ErrorTimeout OTS works timeout. +** \retval ErrorInvalidParameter Parameter error. +******************************************************************************/ +en_result_t OTS_ScalingExperiment(uint16_t *pu16Dr1, uint16_t *pu16Dr2, \ + uint16_t *pu16Ecr, float32_t *pf32A, \ + uint32_t u32Timeout) +{ + float32_t f32Dr1; + float32_t f32Dr2; + float32_t f32Ecr; + en_result_t enRet = ErrorInvalidParameter; + + if ((NULL != pu16Dr1) && (NULL != pu16Dr2) && \ + (NULL != pu16Ecr) && (NULL != pf32A)) + { + enRet = ErrorTimeout; + OTS_Start(); + do + { + if (bM4_OTS_CTL_OTSST == 0ul) + { + enRet = Ok; + break; + } + } while (u32Timeout-- != 0ul); + OTS_Stop(); + + if (enRet == Ok) + { + *pu16Dr1 = M4_OTS->DR1; + *pu16Dr2 = M4_OTS->DR2; + + f32Dr1 = (float32_t)(*pu16Dr1); + f32Dr2 = (float32_t)(*pu16Dr2); + + if (bM4_OTS_CTL_OTSCK == OtsClkSel_Hrc) + { + *pu16Ecr = M4_OTS->ECR; + f32Ecr = (float32_t)(*pu16Ecr); + } + else + { + *pu16Ecr = 1U; + f32Ecr = 1.0f; + } + + if ((*pu16Dr1 != 0U) && (*pu16Dr2 != 0U) && (*pu16Ecr != 0U)) + { + *pf32A = ((1.0f / f32Dr1) - (1.0f / f32Dr2)) * f32Ecr; + } + } + } + + return enRet; +} + + +/** +******************************************************************************* +** \brief Calculate the value of temperature. +** +** \retval A float32_t type value of temperature value. +******************************************************************************/ +float OTS_CalculateTemp(void) +{ + float32_t f32Ret = 0.0f; + uint16_t u16Dr1 = M4_OTS->DR1; + uint16_t u16Dr2 = M4_OTS->DR2; + uint16_t u16Ecr = M4_OTS->ECR; + float32_t f32Dr1 = (float32_t)u16Dr1; + float32_t f32Dr2 = (float32_t)u16Dr2; + float32_t f32Ecr = (float32_t)u16Ecr; + + if (bM4_OTS_CTL_OTSCK == OtsClkSel_Xtal) + { + f32Ecr = 1.0f; + } + + if ((u16Dr1 != 0U) && (u16Dr2 != 0U) && (u16Ecr != 0U)) + { + f32Ret = m_f32SlopeK * ((1.0f / f32Dr1) - (1.0f / f32Dr2)) * f32Ecr + m_f32OffsetM; + } + + return f32Ret; +} + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +//@} // OtsGroup + +#endif /* DDL_OTS_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_pwc.c b/driver/src/hc32f460_pwc.c new file mode 100644 index 0000000..9d0bb35 --- /dev/null +++ b/driver/src/hc32f460_pwc.c @@ -0,0 +1,2025 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_pwc.c + ** + ** A detailed description is available at + ** @link PwcGroup PWC description @endlink + ** + ** - 2018-10-28 CDT First version for Device Driver Library of PWC. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_pwc.h" +#include "hc32f460_utility.h" + +#if (DDL_PWC_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup PwcGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define ENABLE_FCG0_REG_WRITE() (M4_MSTP->FCG0PC = 0xa5a50001u) +#define DISABLE_FCG0_REG_WRITE() (M4_MSTP->FCG0PC = 0xa5a50000u) + +#define ENABLE_PWR_REG0_WRITE() (M4_SYSREG->PWR_FPRC |= 0xa503u) +#define DISABLE_PWR_REG0_WRITE() (M4_SYSREG->PWR_FPRC = (0xa500u | (M4_SYSREG->PWR_FPRC & (uint16_t)(~3u)))) + +#define ENABLE_PWR_REG_WRITE() (M4_SYSREG->PWR_FPRC |= 0xa502u) +#define DISABLE_PWR_REG_WRITE() (M4_SYSREG->PWR_FPRC = (0xa500u | (M4_SYSREG->PWR_FPRC & (uint16_t)(~2u)))) + +#define ENABLE_PVD_REG_WRITE() (M4_SYSREG->PWR_FPRC |= 0xa508u) +#define DISABLE_PVD_REG_WRITE() (M4_SYSREG->PWR_FPRC = (0xa500u | (M4_SYSREG->PWR_FPRC & (uint16_t)(~8u)))) + +/*! Parameter validity check for wake up event. */ +#define IS_PWC_WKUP_EVENT(evt) ((0x00u) != ((evt) & (0xFF))) + +/*! Parameter validity check for wake up event. */ +#define IS_PWC_WKUP2_EVENT(evt) ((0x00u) != ((evt) & (0xB7))) + +#define IS_PWC_WKUP_EDGE_EVENT(evt) ((0x00u) != ((evt) & (0x7F))) + +/*! Parameter validity check for wake up flag. */ +#define IS_PWC_WKUP0_FLAG(flag) ((0x00u) != ((flag) & (0x7F))) + +/*! Parameter validity check for wake up flag. */ +#define IS_PWC_WKUP1_FLAG(flag) ((0x07u) != ((flag) & (0xB8))) + +/*! Parameter validity check for power down mode. */ +#define IS_PWC_PWR_DOWN_MODE(md) \ +( ((md) == PowerDownMd1) || \ + ((md) == PowerDownMd2) || \ + ((md) == PowerDownMd3) || \ + ((md) == PowerDownMd4)) + +/*! Parameter validity check for power down wake_up time control. */ +#define IS_PWC_PWR_DOWN_WKUP_TIM(x) \ +( ((x) == Vcap01) || \ + ((x) == Vcap0047)) + +/*! Parameter validity check for IO retain state while power down. */ +#define IS_PWC_PWR_DWON_IO_STATE(x) \ +( ((x) == IoPwrDownRetain) || \ + ((x) == IoPwrRstRetain) || \ + ((x) == IoHighImp)) + +/*! Parameter validity check for driver ability while enter stop mode. */ +#define IS_PWC_STP_DRIVER_ABILITY(x) \ +( ((x) == StopHighspeed) || \ + ((x) == StopUlowspeed)) + +/*! Parameter validity check for driver ability. */ +#define IS_PWC_DRIVER_ABILITY(x) \ +( ((x) == Ulowspeed) || \ + ((x) == HighSpeed)) + +/*! Parameter validity check for dynamic voltage. */ +#define IS_PWC_DYNAMIC_VOLTAGE(val) \ +( ((val) == RunUHighspeed) || \ + ((val) == RunUlowspeed) || \ + ((val) == RunHighspeed)) + +/*! Parameter validity check for wake_up edge. */ +#define IS_PWC_EDGE_SEL(edg) \ +( ((edg) == EdgeFalling) || \ + ((edg) == EdgeRising)) + +/*! Parameter validity check for peripheral in fcg0. */ +#define IS_PWC_FCG0_PERIPH(per) \ +( (((per) & (0x700C3AEEu)) == (0x00u)) && \ + ((0x00u) != (per))) + +/*! Parameter validity check for peripheral in fcg1. */ +#define IS_PWC_FCG1_PERIPH(per) \ +( (((per) & (0xF0F00286u)) == (0x00u)) && \ + ((0x00u) != (per))) + +/*! Parameter validity check for peripheral in fcg2. */ +#define IS_PWC_FCG2_PERIPH(per) \ +( (((per) & (0xFFF87800u)) == (0x00u)) && \ + ((0x00u) != (per))) + +/*! Parameter validity check for peripheral in fcg3. */ +#define IS_PWC_FCG3_PERIPH(per) \ +( (((per) & (0xFFFFEEECu)) == (0x00u)) && \ + ((0x00u) != (per))) + +/*! Parameter validity check for clock value while stop mode mode. */ +#define IS_PWC_STOP_MODE_CLK(clk) \ +( ((clk) == ClkFix) || \ + ((clk) == ClkMrc)) + +/*! Parameter validity check for flash mode while stop mode mode. */ +#define IS_PWC_STOP_MODE_FLASH(x) \ +( ((x) == Wait) || \ + ((x) == NotWait)) + +/*! Parameter validity check for wake_up timer over flag. */ +#define IS_PWC_WKTMOVER_FLAG(flag) \ +( ((flag) == UnEqual) || \ + ((flag) == Equal)) + +/*! Parameter validity check for ram operate mode. */ +#define IS_PWC_RAM_OP_MD(x) \ +( ((x) == HighSpeedMd) || \ + ((x) == UlowSpeedMd)) + +/*! Parameter validity check for wake_up timer clock. */ +#define IS_PWC_WKTM_CLK(clk) \ +( ((clk) == Wk64hz) || \ + ((clk) == WkXtal32) || \ + ((clk) == WkLrc)) + + +/*! Parameter validity check for handle of pvd. */ +#define IS_PWC_PVD_MD(x) \ +( ((x) == PvdInt) || \ + ((x) == PvdReset)) + + +/*! Parameter validity check for pvd1 level. */ +#define IS_PWC_PVD_FILTER_CLK(clk) \ +( ((clk) == PvdLrc025) || \ + ((clk) == PvdLrc05) || \ + ((clk) == PvdLrc1) || \ + ((clk) == PvdLrc2)) + +/*! Parameter validity check for pvd2 level. */ +#define IS_PWC_PVD2_LEVEL(lvl) \ +( ((lvl) == Pvd2Level0) || \ + ((lvl) == Pvd2Level1) || \ + ((lvl) == Pvd2Level2) || \ + ((lvl) == Pvd2Level3) || \ + ((lvl) == Pvd2Level4) || \ + ((lvl) == Pvd2Level5) || \ + ((lvl) == Pvd2Level6) || \ + ((lvl) == Pvd2Level7)) + +/*! Parameter validity check for pvd1 level. */ +#define IS_PWC_PVD1_LEVEL(lvl) \ +( ((lvl) == Pvd1Level0) || \ + ((lvl) == Pvd1Level1) || \ + ((lvl) == Pvd1Level2) || \ + ((lvl) == Pvd1Level3) || \ + ((lvl) == Pvd1Level4) || \ + ((lvl) == Pvd1Level5) || \ + ((lvl) == Pvd1Level6) || \ + ((lvl) == Pvd1Level7)) + +/*! Parameter validity check for pvd interrupt. */ +#define IS_PWC_PVD_INT_SEL(x) \ +( ((x) == NonMskInt) || \ + ((x) == MskInt)) + +/*! Parameter validity check for valid wakeup source from stop mode. */ +#define IS_VALID_WKUP_SRC(x) \ +( ((x) == INT_USART1_WUPI) || \ + ((x) == INT_TMR01_GCMA) || \ + ((x) == INT_RTC_ALM) || \ + ((x) == INT_RTC_PRD) || \ + ((x) == INT_WKTM_PRD) || \ + ((x) == INT_ACMP1) || \ + ((x) == INT_PVD_PVD1) || \ + ((x) == INT_PVD_PVD2) || \ + ((x) == INT_SWDT_REFUDF) || \ + ((x) == INT_PORT_EIRQ0) || \ + ((x) == INT_PORT_EIRQ1) || \ + ((x) == INT_PORT_EIRQ2) || \ + ((x) == INT_PORT_EIRQ3) || \ + ((x) == INT_PORT_EIRQ4) || \ + ((x) == INT_PORT_EIRQ5) || \ + ((x) == INT_PORT_EIRQ6) || \ + ((x) == INT_PORT_EIRQ7) || \ + ((x) == INT_PORT_EIRQ8) || \ + ((x) == INT_PORT_EIRQ9) || \ + ((x) == INT_PORT_EIRQ10) || \ + ((x) == INT_PORT_EIRQ11) || \ + ((x) == INT_PORT_EIRQ12) || \ + ((x) == INT_PORT_EIRQ13) || \ + ((x) == INT_PORT_EIRQ14) || \ + ((x) == INT_PORT_EIRQ15)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ +uint32_t NVIC_ISER_BAK[5]; +uint8_t u8HrcState = 0u; +uint8_t u8MrcState = 0u; +uint8_t u8WkupIntCnt = 0u; +uint8_t u8StopFlag = 0u; +uint8_t u8SysClkSrc = 1u; + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief The power mode configuration. + ** + ** \param [in] pstcPwrMdCfg The power mode configuration. + ** \arg enPwrDownMd The power down mode. + ** \arg enRLdo Enable or disable RLDO. + ** \arg enRetSram Enable or disable RetSram. + ** \arg enIoRetain The IO state while power down. + ** \arg enPwrDWkupTm The wake_up timer while power down. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PowerModeCfg(const stc_pwc_pwr_mode_cfg_t* pstcPwrMdCfg) +{ + DDL_ASSERT(IS_PWC_PWR_DOWN_MODE(pstcPwrMdCfg->enPwrDownMd )); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPwrMdCfg->enRLdo)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPwrMdCfg->enRetSram)); + DDL_ASSERT(IS_PWC_PWR_DWON_IO_STATE(pstcPwrMdCfg->enIoRetain)); + DDL_ASSERT(IS_PWC_PWR_DOWN_WKUP_TIM(pstcPwrMdCfg->enPwrDWkupTm)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_PWRC0 = (pstcPwrMdCfg->enPwrDownMd | + (uint8_t)(((Enable == pstcPwrMdCfg->enRLdo) ? 0u : 1u) << 2u) | + (uint8_t)(((Enable == pstcPwrMdCfg->enRetSram) ? 0u : 1u) << 3u) | + (pstcPwrMdCfg->enIoRetain << 4u)); + + M4_SYSREG->PWR_PWRC3 = (pstcPwrMdCfg->enPwrDWkupTm | (0x03)); + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enter power down mode. + ** + ** \param None + ** + ** \retval None + ** + ** \note This function should be put ram + ** + ******************************************************************************/ +__RAM_FUNC void PWC_EnterPowerDownMd(void) +{ + ENABLE_PVD_REG_WRITE(); + + /* Reset PVD1IRS & PVD2IRS */ + M4_SYSREG->PWR_PVDCR1 &= 0xddu; + + DISABLE_PVD_REG_WRITE(); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_STPMCR_f.STOP = 1u; + + __disable_irq(); + M4_SYSREG->PWR_PWRC0_f.PWDN = 1u; + for(uint8_t i = 0u; i < 10u; i++) + { + __NOP(); + } + __enable_irq(); + + DISABLE_PWR_REG_WRITE(); + + __WFI(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the power down wake up event. + ** + ** \param [in] u32Wkup0Event The wake_up event in PDWKEN0. + ** \arg PWC_PDWKEN0_WKUP00 Wake_up 0_0 event + ** \arg PWC_PDWKEN0_WKUP01 Wake_up 0_1 event + ** \arg PWC_PDWKEN0_WKUP02 Wake_up 0_2 event + ** \arg PWC_PDWKEN0_WKUP03 Wake_up 0_3 event + ** \arg PWC_PDWKEN0_WKUP10 Wake_up 1_0 event + ** \arg PWC_PDWKEN0_WKUP11 Wake_up 1_1 event + ** \arg PWC_PDWKEN0_WKUP12 Wake_up 1_2 event + ** \arg PWC_PDWKEN0_WKUP13 Wake_up 1_3 event + ** + ** \param [in] enNewState The new state of the wake_up event. + ** \arg Enable Enable wake_up event. + ** \arg Disable Disable wake_up event. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PdWakeup0Cmd(uint32_t u32Wkup0Event, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_WKUP_EVENT(u32Wkup0Event)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + if(Enable == enNewState) + { + M4_SYSREG->PWR_PDWKE0 |= (uint8_t)u32Wkup0Event; + } + else + { + M4_SYSREG->PWR_PDWKE0 &= (uint8_t)(~u32Wkup0Event); + } + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the power down wake up event. + ** + ** \param [in] u32Wkup1Event The wake_up event in PDWKEN0. + ** \arg PWC_PDWKEN1_WKUP20 Wake_up 2_0 event + ** \arg PWC_PDWKEN1_WKUP21 Wake_up 2_1 event + ** \arg PWC_PDWKEN1_WKUP22 Wake_up 2_2 event + ** \arg PWC_PDWKEN1_WKUP23 Wake_up 2_3 event + ** \arg PWC_PDWKEN1_WKUP30 Wake_up 3_0 event + ** \arg PWC_PDWKEN1_WKUP31 Wake_up 3_1 event + ** \arg PWC_PDWKEN1_WKUP32 Wake_up 3_2 event + ** \arg PWC_PDWKEN1_WKUP33 Wake_up 3_3 event + ** + ** \param [in] enNewState The new state of the wake_up event. + ** \arg Enable Enable wake_up event. + ** \arg Disable Disable wake_up event. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PdWakeup1Cmd(uint32_t u32Wkup1Event, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_WKUP_EVENT(u32Wkup1Event)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + if(Enable == enNewState) + { + M4_SYSREG->PWR_PDWKE1 |= (uint8_t)u32Wkup1Event; + } + else + { + M4_SYSREG->PWR_PDWKE1 &= (uint8_t)(~u32Wkup1Event); + } + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the power down wake up event. + ** + ** \param [in] u32Wkup2Event The wake_up event in PDWKEN0. + ** \arg PWC_PDWKEN2_PVD1 Wake_up PVD1 event + ** \arg PWC_PDWKEN2_PVD2 Wake_up PVD2 event + ** \arg PWC_PDWKEN2_NMI Wake_up NMI event + ** \arg PWC_PDWKEN2_RTCPRD Wake_up RTCPRD event + ** \arg PWC_PDWKEN2_RTCAL Wake_up RTCAL event + ** \arg PWC_PDWKEN2_WKTM Wake_up WKTM event + ** + ** \param [in] enNewState The new state of the wake_up event. + ** \arg Enable Enable wake_up event. + ** \arg Disable Disable wake_up event. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PdWakeup2Cmd(uint32_t u32Wkup2Event, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_WKUP2_EVENT(u32Wkup2Event)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + if(Enable == enNewState) + { + M4_SYSREG->PWR_PDWKE2 |= (uint8_t)u32Wkup2Event; + } + else + { + M4_SYSREG->PWR_PDWKE2 &= (uint8_t)(~u32Wkup2Event); + } + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Configure the power down wake up event edge. + ** + ** \param [in] u8WkupEvent The wake_up event in PDWKEN0. + ** \arg PWC_PDWKUP_EDGE_WKP0 Wake_up WKP0 event + ** \arg PWC_PDWKUP_EDGE_WKP1 Wake_up WKP1 event + ** \arg PWC_PDWKUP_EDGE_WKP2 Wake_up WKP2 event + ** \arg PWC_PDWKUP_EDGE_WKP3 Wake_up WKP3 event + ** \arg PWC_PDWKUP_EDGE_PVD1 Wake_up PVD1 event + ** \arg PWC_PDWKUP_EDGE_PVD2 Wake_up PVD2 event + ** \arg PWC_PDWKUP_EDGE_NMI Wake_up NMI event + ** + ** \param [in] enEdge The wake_up event edge select. + ** \arg EdgeRising Wake_up event edge rising. + ** \arg EdgeFalling Wake_up event edge falling. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PdWakeupEvtEdgeCfg(uint8_t u8WkupEvent, en_pwc_edge_sel_t enEdge) +{ + DDL_ASSERT(IS_PWC_WKUP_EDGE_EVENT(u8WkupEvent)); + DDL_ASSERT(IS_PWC_EDGE_SEL(enEdge)); + + ENABLE_PWR_REG_WRITE(); + + if(EdgeRising == enEdge) + { + M4_SYSREG->PWR_PDWKES |= (uint8_t)u8WkupEvent; + } + else + { + M4_SYSREG->PWR_PDWKES &= (uint8_t)(~u8WkupEvent); + } + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Get wake_up event in PDWKF0 flag. + ** + ** \param [in] u8WkupFlag The wake_up event in PDWKF0. + ** \arg PWC_PTWK0_WKUPFLAG Ptwk0 wake_up flag + ** \arg PWC_PTWK1_WKUPFLAG Ptwk1 wake_up flag + ** \arg PWC_PTWK2_WKUPFLAG Ptwk2 wake_up flag + ** \arg PWC_PTWK3_WKUPFLAG Ptwk3 wake_up flag + ** \arg PWC_PVD1_WKUPFLAG Pvd1 wake_up flag + ** \arg PWC_PVD2_WKUPFLAG Pvd2 wake_up flag + ** \arg PWC_NMI_WKUPFLAG Nmi wake_up flag + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t PWC_GetWakeup0Flag(uint8_t u8WkupFlag) +{ + uint8_t u8flag; + DDL_ASSERT(IS_PWC_WKUP0_FLAG(u8WkupFlag)); + + u8flag = (M4_SYSREG->PWR_PDWKF0 & u8WkupFlag); + + return ((0u == u8flag) ? Reset : Set); +} + +/** + ******************************************************************************* + ** \brief Get wake_up event in PDWKF1 flag. + ** + ** \param [in] u8WkupFlag The wake_up event in PDWKF1. + ** \arg PWC_RTCPRD_WKUPFALG Rtcprd wake_up flag + ** \arg PWC_RTCAL_WKUPFLAG Rtcal wake_up flag + ** \arg PWC_WKTM_WKUPFLAG Wktm wake_up flag + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t PWC_GetWakeup1Flag(uint8_t u8WkupFlag) +{ + uint8_t u8flag; + DDL_ASSERT(IS_PWC_WKUP1_FLAG(u8WkupFlag)); + + u8flag = (M4_SYSREG->PWR_PDWKF1 & u8WkupFlag); + + return ((0u == u8flag) ? Reset : Set); +} + +/** + ******************************************************************************* + ** \brief clear wake_up event in PDWKF0 flag. + ** + ** \param [in] u8WkupFlag The wake_up event in PDWKF0. + ** \arg PWC_PTWK0_WKUPFLAG Ptwk0 wake_up flag + ** \arg PWC_PTWK1_WKUPFLAG Ptwk1 wake_up flag + ** \arg PWC_PTWK2_WKUPFLAG Ptwk2 wake_up flag + ** \arg PWC_PTWK3_WKUPFLAG Ptwk3 wake_up flag + ** \arg PWC_PVD1_WKUPFLAG Pvd1 wake_up flag + ** \arg PWC_PVD2_WKUPFLAG Pvd2 wake_up flag + ** \arg PWC_NMI_WKUPFLAG Nmi wake_up flag + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +void PWC_ClearWakeup0Flag(uint8_t u8WkupFlag) +{ + DDL_ASSERT(IS_PWC_WKUP0_FLAG(u8WkupFlag)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_PDWKF0 &= (uint8_t)(~u8WkupFlag); + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief clear wake_up event in PDWKF1 flag. + ** + ** \param [in] u8WkupFlag The wake_up event in PDWKF1. + ** \arg PWC_RTCPRD_WKUPFALG Rtcprd wake_up flag + ** \arg PWC_RTCAL_WKUPFLAG Rtcal wake_up flag + ** \arg PWC_WKTM_WKUPFLAG Wktm wake_up flag + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +void PWC_ClearWakeup1Flag(uint8_t u8WkupFlag) +{ + DDL_ASSERT(IS_PWC_WKUP1_FLAG(u8WkupFlag)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_PDWKF1 &= (uint8_t)(~u8WkupFlag); + + DISABLE_PWR_REG_WRITE(); +} +/** + ******************************************************************************* + ** \brief Enable or disable power monitor . + ** + ** \param [in] enNewState The power monitor state. + ** \arg Enable Enable power monitor. + ** \arg Disable Disable power monitor. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PwrMonitorCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_PWCMR_f.ADBUFE = ((Enable == enNewState) ? 1u : 0u); + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the FCG0 peripheral clock. + ** + ** \note After reset,the peripheral clock is disabled and the application + ** software has to enable this clock before using it. + ** + ** \param [in] u32Fcg0Periph The peripheral in FCG0. + ** \arg PWC_FCG0_PERIPH_SRAMH RAMHS clock + ** \arg PWC_FCG0_PERIPH_SRAM12 RAM0 clock + ** \arg PWC_FCG0_PERIPH_SRAM3 ECCRAM clock + ** \arg PWC_FCG0_PERIPH_SRAMRET RetRAM clock + ** \arg PWC_FCG0_PERIPH_DMA1 DMA1 clock + ** \arg PWC_FCG0_PERIPH_DMA2 DMA2 clock + ** \arg PWC_FCG0_PERIPH_FCM FCM clock + ** \arg PWC_FCG0_PERIPH_AOS PTDIS clock + ** \arg PWC_FCG0_PERIPH_AES AES clock + ** \arg PWC_FCG0_PERIPH_HASH HASH clock + ** \arg PWC_FCG0_PERIPH_TRNG TRNG clock + ** \arg PWC_FCG0_PERIPH_CRC CRC clock + ** \arg PWC_FCG0_PERIPH_DCU1 DCU1 clock + ** \arg PWC_FCG0_PERIPH_DCU2 DCU2 clock + ** \arg PWC_FCG0_PERIPH_DCU3 DCU3 clock + ** \arg PWC_FCG0_PERIPH_DCU4 DCU4 clock + ** \arg PWC_FCG0_PERIPH_KEY KEY clock + + ** \param [in] enNewState The new state of the clock output. + ** \arg Enable Enable clock output. + ** \arg Disable Disable clock output. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Fcg0PeriphClockCmd(uint32_t u32Fcg0Periph, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_FCG0_PERIPH(u32Fcg0Periph)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_FCG0_REG_WRITE(); + + if(Enable == enNewState) + { + M4_MSTP->FCG0 &= ~u32Fcg0Periph; + } + else + { + M4_MSTP->FCG0 |= u32Fcg0Periph; + } + + DISABLE_FCG0_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable the FCG1 peripheral clock. + ** + ** \note After reset,the peripheral clock is disabled and the application + ** software has to enable this clock before using it. + ** + ** \param [in] u32Fcg1Periph The peripheral in FCG1. + ** \arg PWC_FCG1_PERIPH_CAN CAN clock + ** \arg PWC_FCG1_PERIPH_QSPI QSPI clock + ** \arg PWC_FCG1_PERIPH_I2C1 I2C1 clock + ** \arg PWC_FCG1_PERIPH_I2C2 I2C2 clock + ** \arg PWC_FCG1_PERIPH_I2C3 I2C3 clock + ** \arg PWC_FCG1_PERIPH_USBFS USBFS clock + ** \arg PWC_FCG1_PERIPH_SDIOC1 SDIOC1 clock + ** \arg PWC_FCG1_PERIPH_SDIOC2 SDIOC2 clock + ** \arg PWC_FCG1_PERIPH_I2S1 I2S1 clock + ** \arg PWC_FCG1_PERIPH_I2S2 I2S2 clock + ** \arg PWC_FCG1_PERIPH_I2S3 I2S3 clock + ** \arg PWC_FCG1_PERIPH_I2S4 I2S4 clock + ** \arg PWC_FCG1_PERIPH_SPI1 SPI1 clock + ** \arg PWC_FCG1_PERIPH_SPI2 SPI2 clock + ** \arg PWC_FCG1_PERIPH_SPI3 SPI3 clock + ** \arg PWC_FCG1_PERIPH_SPI4 SPI4 clock + ** \arg PWC_FCG1_PERIPH_USART1 USART1 clock + ** \arg PWC_FCG1_PERIPH_USART2 USART2 clock + ** \arg PWC_FCG1_PERIPH_USART3 USART3 clock + ** \arg PWC_FCG1_PERIPH_USART4 USART4 clock + ** + ** \param [in] enNewState The new state of the clock output. + ** \arg Enable Enable clock output. + ** \arg Disable Disable clock output. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Fcg1PeriphClockCmd(uint32_t u32Fcg1Periph, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_FCG1_PERIPH(u32Fcg1Periph)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + M4_MSTP->FCG1 &= ~u32Fcg1Periph; + } + else + { + M4_MSTP->FCG1 |= u32Fcg1Periph; + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the FCG2 peripheral clock. + ** + ** \note After reset,the peripheral clock is disabled and the application + ** software has to enable this clock before using it. + ** + ** \param [in] u32Fcg2Periph The peripheral in FCG2. + ** \arg PWC_FCG2_PERIPH_TIM01 TIM01 clock + ** \arg PWC_FCG2_PERIPH_TIM02 TIM02 clock + ** \arg PWC_FCG2_PERIPH_TIMA1 TIMA1 clock + ** \arg PWC_FCG2_PERIPH_TIMA2 TIMA2 clock + ** \arg PWC_FCG2_PERIPH_TIMA3 TIMA3 clock + ** \arg PWC_FCG2_PERIPH_TIMA4 TIMA4 clock + ** \arg PWC_FCG2_PERIPH_TIMA5 TIMA5 clock + ** \arg PWC_FCG2_PERIPH_TIMA6 TIMA6 clock + ** \arg PWC_FCG2_PERIPH_TIM41 TIM41 clock + ** \arg PWC_FCG2_PERIPH_TIM42 TIM42 clock + ** \arg PWC_FCG2_PERIPH_TIM43 TIM43 clock + ** \arg PWC_FCG2_PERIPH_EMB EMB clock + ** \arg PWC_FCG2_PERIPH_TIM61 TIM61 clock + ** \arg PWC_FCG2_PERIPH_TIM62 TIM62 clock + ** \arg PWC_FCG2_PERIPH_TIM63 TIM63 clock + + ** + ** \param [in] enNewState The new state of the clock output. + ** \arg Enable Enable clock output. + ** \arg Disable Disable clock output. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Fcg2PeriphClockCmd(uint32_t u32Fcg2Periph, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_FCG2_PERIPH(u32Fcg2Periph)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + M4_MSTP->FCG2 &= ~u32Fcg2Periph; + } + else + { + M4_MSTP->FCG2 |= u32Fcg2Periph; + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable the FCG3 peripheral clock. + ** + ** \note After reset,the peripheral clock is disabled and the application + ** software has to enable this clock before using it. + ** + ** \param [in] u32Fcg3Periph The peripheral in FCG3. + ** \arg PWC_FCG3_PERIPH_ADC1 ADC1 clock + ** \arg PWC_FCG3_PERIPH_ADC2 ADC2 clock + ** \arg PWC_FCG3_PERIPH_CMP CMP clock + ** \arg PWC_FCG3_PERIPH_OTS OTS clock + ** + ** \param [in] enNewState The new state of the clock output. + ** \arg Enable Enable clock output. + ** \arg Disable Disable clock output. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Fcg3PeriphClockCmd(uint32_t u32Fcg3Periph, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_PWC_FCG3_PERIPH(u32Fcg3Periph)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + M4_MSTP->FCG3 &= ~u32Fcg3Periph; + } + else + { + M4_MSTP->FCG3 |= u32Fcg3Periph; + } +} + +/** + ******************************************************************************* + ** \brief The stop mode configuration. + ** + ** \param [in] pstcStpMdCfg Pointer to stop mode configuration structure. + ** \arg Enable Enable stop mode. + ** \arg Disable Disable stop mode. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +en_result_t PWC_StopModeCfg(const stc_pwc_stop_mode_cfg_t* pstcStpMdCfg) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_PWC_STOP_MODE_FLASH(pstcStpMdCfg->enStopFlash)); + DDL_ASSERT(IS_PWC_STOP_MODE_CLK(pstcStpMdCfg->enStopClk)); + + ENABLE_PWR_REG0_WRITE(); + + M4_SYSREG->PWR_STPMCR = (pstcStpMdCfg->enStopFlash | + (pstcStpMdCfg->enStopClk << 1u) | + (1u << 14u)); + + /* if should close HRC & PLL while stop mode, please disable before modifying the register */ + if(Disable == pstcStpMdCfg->enPll) + { + /* PLL is system clock */ + if(5u == M4_SYSREG->CMU_CKSWR_f.CKSW) + { + enRet = ErrorInvalidParameter; + } + else + { + /* Disable PLL */ + M4_SYSREG->CMU_PLLCR_f.MPLLOFF = 1u; + } + } + + /* Hrc power should be enable. */ + M4_SYSREG->PWR_PWRC1_f.VHRCSD = 0u; + M4_SYSREG->PWR_PWRC1_f.VPLLSD = ((Enable == pstcStpMdCfg->enPll) ? 0u : 1u); + M4_SYSREG->PWR_PWRC1_f.STPDAS = pstcStpMdCfg->enStpDrvAbi; + + DISABLE_PWR_REG0_WRITE(); + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable the power down wake up event. + ** + ** \param [in] u32Wkup0Event The wake_up event in PDWKEN0. + ** \arg PWC_STOPWKUPEN_EIRQ0 EIRQ0 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ1 EIRQ1 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ2 EIRQ2 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ3 EIRQ3 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ4 EIRQ4 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ5 EIRQ5 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ6 EIRQ6 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ7 EIRQ7 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ8 EIRQ8 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ9 EIRQ9 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ10 EIRQ10 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ11 EIRQ11 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ12 EIRQ12 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ13 EIRQ13 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ14 EIRQ14 wake_up event + ** \arg PWC_STOPWKUPEN_EIRQ15 EIRQ15 wake_up event + ** \arg PWC_STOPWKUPEN_SWDT SWDT wake_up event + ** \arg PWC_STOPWKUPEN_VDU1 VDU1 wake_up event + ** \arg PWC_STOPWKUPEN_VDU2 VDU2 wake_up event + ** \arg PWC_STOPWKUPEN_CMPI0 CMPI0 wake_up event + ** \arg PWC_STOPWKUPEN_WKTM WKTM wake_up event + ** \arg PWC_STOPWKUPEN_RTCAL RTCAL wake_up event + ** \arg PWC_STOPWKUPEN_RTCPRD RTCPRD wake_up event + ** \arg PWC_STOPWKUPEN_TMR0 TMR0 wake_up event + ** \arg PWC_STOPWKUPEN_USARTRXD USARTRXD wake_up event + ** + ** \param [in] enNewState The new state of the wake_up event. + ** \arg Enable Enable wake_up event. + ** \arg Disable Disable wake_up event. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_StopWkupCmd(uint32_t u32Wkup0Event, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + if(Enable == enNewState) + { + M4_INTC->WUPEN |= u32Wkup0Event; + } + else + { + M4_INTC->WUPEN &= ~u32Wkup0Event; + } +} + +/** + ******************************************************************************* + ** \brief Enter sleep mode. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +void PWC_EnterSleepMd(void) +{ + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_STPMCR_f.STOP = 0u; + M4_SYSREG->PWR_PWRC0_f.PWDN = 0u; + + DISABLE_PWR_REG_WRITE(); + + __WFI(); +} +/** + ******************************************************************************* + ** \brief Ram area power down commond. + ** + ** \param [in] u32RamCtlBit The ram area contol. + ** \arg PWC_RAMPWRDOWN_SRAM1 Ram0(0x20000000-0x2000FFFF) power down control. + ** \arg PWC_RAMPWRDOWN_SRAM2 Ram1(0x20010000-0x2001FFFF) power down control. + ** \arg PWC_RAMPWRDOWN_SRAM3 Ram2(0x20020000-0x20026FFF) power down control. + ** \arg PWC_RAMPWRDOWN_SRAMH Ram3(0x1FFF8000-0x1FFFFFFF) power down control. + ** \arg PWC_RAMPWRDOWN_USBFS Usbfs power down control. + ** \arg PWC_RAMPWRDOWN_SDIOC0 Sdioc0 power down control. + ** \arg PWC_RAMPWRDOWN_SDIOC1 Sdioc1 power down control. + ** \arg PWC_RAMPWRDOWN_CAN Can power down control. + ** \arg PWC_RAMPWRDOWN_CACHE Cache power down control. + ** \arg PWC_RAMPWRDOWN_FULL Full. + ** + ** \param [in] enNewState The new state of the Ram area. + ** \arg Enable Ten ram area run. + ** \arg Disable The ram area power down. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_RamPwrdownCmd(uint32_t u32RamCtlBit, en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + if(Enable == enNewState) + { + M4_SYSREG->PWR_RAMPC0 &= ~u32RamCtlBit; + } + else + { + M4_SYSREG->PWR_RAMPC0 |= u32RamCtlBit; + } + + DISABLE_PWR_REG_WRITE(); +} + +void PWC_RamOpMdConfig(en_pwc_ram_op_md_t enRamOpMd) +{ + DDL_ASSERT(IS_PWC_RAM_OP_MD(enRamOpMd)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_RAMOPM = enRamOpMd; + + DISABLE_PWR_REG_WRITE(); +} +/** + ******************************************************************************* + ** \brief Enable or disable XTAL/RTC/WKTM bias current. + ** + ** \param [in] enNewState The XTAL/RTC/WKTM bias current state. + ** \arg Enable Enable XTAL/RTC/WKTM bias current. + ** \arg Disable Disable XTAL/RTC/WKTM bias current. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Xtal32CsCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG0_WRITE(); + + M4_SYSREG->PWR_XTAL32CS_f.CSDIS = ((Enable == enNewState) ? 0u : 1u); + + DISABLE_PWR_REG0_WRITE(); +} + +/** + ******************************************************************************* + ** \brief wake_up timer control. + ** + ** \param [in] pstcWktmCtl The wake_up timer configuration. + ** \arg enWktmEn Enable or disable wake_up timer. + ** \arg enWkclk The wake_up timer clock. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_WktmControl(const stc_pwc_wktm_ctl_t* pstcWktmCtl) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcWktmCtl->enWktmEn)); + DDL_ASSERT(IS_PWC_WKTM_CLK(pstcWktmCtl->enWkclk)); + DDL_ASSERT(IS_PWC_WKTMOVER_FLAG(pstcWktmCtl->enWkOverFlag)); + + ENABLE_PWR_REG_WRITE(); + + M4_WKTM->CR = ((pstcWktmCtl->u16WktmCmp & PWC_WKTMCMP_MSK) | + (pstcWktmCtl->enWkOverFlag << 12) | + (pstcWktmCtl->enWkclk << 13) | + (pstcWktmCtl->enWktmEn << 15)); + + DISABLE_PWR_REG_WRITE(); +} +/** + ******************************************************************************* + ** \brief The pvd configuration. + ** + ** \param [in] pstcPvdCfg The pvd configuration. + ** \arg enPtwk0Edge Ptwk0 edge + ** \arg enPtwk1Edge Ptwk1 edge + ** \arg enPtwk2Edge Ptwk2 edge + ** \arg enPtwk3Edge Ptwk3 edge + ** \arg enPvd1Edge Pvd1 edge + ** \arg enPvd1Edge Pvd2 edge + ** \arg enNmiEdge Nmi edge + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_PvdCfg(const stc_pwc_pvd_cfg_t* pstcPvdCfg) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPvdCfg->stcPvd1Ctl.enPvdIREn)); + DDL_ASSERT(IS_PWC_PVD_MD(pstcPvdCfg->stcPvd1Ctl.enPvdMode)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPvdCfg->stcPvd1Ctl.enPvdCmpOutEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPvdCfg->stcPvd2Ctl.enPvdIREn)); + DDL_ASSERT(IS_PWC_PVD_MD(pstcPvdCfg->stcPvd2Ctl.enPvdMode)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPvdCfg->stcPvd2Ctl.enPvdCmpOutEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPvdCfg->enPvd1FilterEn)); + DDL_ASSERT(IS_PWC_PVD_FILTER_CLK(pstcPvdCfg->enPvd1Filtclk)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcPvdCfg->enPvd2FilterEn)); + DDL_ASSERT(IS_PWC_PVD_FILTER_CLK(pstcPvdCfg->enPvd2Filtclk)); + DDL_ASSERT(IS_PWC_PVD1_LEVEL(pstcPvdCfg->enPvd1Level)); + DDL_ASSERT(IS_PWC_PVD2_LEVEL(pstcPvdCfg->enPvd2Level)); + DDL_ASSERT(IS_PWC_PVD_INT_SEL(pstcPvdCfg->enPvd1Int)); + DDL_ASSERT(IS_PWC_PVD_INT_SEL(pstcPvdCfg->enPvd2Int)); + + ENABLE_PVD_REG_WRITE(); + + /* Config Pvd control. */ + M4_SYSREG->PWR_PVDCR1 = (pstcPvdCfg->stcPvd1Ctl.enPvdIREn | + (pstcPvdCfg->stcPvd1Ctl.enPvdMode << 1) | + (pstcPvdCfg->stcPvd1Ctl.enPvdCmpOutEn << 2) | + (pstcPvdCfg->stcPvd2Ctl.enPvdIREn<< 4) | + (pstcPvdCfg->stcPvd2Ctl.enPvdMode << 5) | + (pstcPvdCfg->stcPvd2Ctl.enPvdCmpOutEn << 6)); + /* Set pvd filter sampling. */ + M4_SYSREG->PWR_PVDFCR = (~(pstcPvdCfg->enPvd1FilterEn) | + (pstcPvdCfg->enPvd1Filtclk << 1) | + ((~pstcPvdCfg->enPvd2FilterEn) << 4) | + (pstcPvdCfg->enPvd2Filtclk << 5)); + /* Set pvd level. */ + M4_SYSREG->PWR_PVDLCR = (pstcPvdCfg->enPvd1Level | + (pstcPvdCfg->enPvd2Level << 4)); + /* Set pvd interrupt(non_maskable or maskable). */ + M4_SYSREG->PWR_PVDICR = (pstcPvdCfg->enPvd1Int | + (pstcPvdCfg->enPvd2Int << 4)); + + DISABLE_PVD_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable pvd1. + ** + ** \param [in] enNewState The pvd1 state. + ** \arg Enable Enable pvd1. + ** \arg Disable Disable pvd1. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Pvd1Cmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PVD_REG_WRITE(); + + M4_SYSREG->PWR_PVDCR0_f.PVD1EN = ((Enable == enNewState) ? 1u : 0u); + + DISABLE_PVD_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable pvd2. + ** + ** \param [in] enNewState The pvd2 state. + ** \arg Enable Enable pvd2. + ** \arg Disable Disable pvd2. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_Pvd2Cmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PVD_REG_WRITE(); + + M4_SYSREG->PWR_PVDCR0_f.PVD2EN = ((Enable == enNewState) ? 1u : 0u); + + DISABLE_PVD_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable external vcc. + ** + ** \param [in] enNewState The external vcc state. + ** \arg Enable Enable external vcc. + ** \arg Disable Disable external vcc. + ** + ** \retval None + ** + ** \note None + ** + ******************************************************************************/ +void PWC_ExVccCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PVD_REG_WRITE(); + + M4_SYSREG->PWR_PVDCR0_f.EXVCCINEN = ((Enable == enNewState) ? 1u : 0u); + + DISABLE_PVD_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Get pvd detection status. + ** + ** \param [in] enPvd The unit of pvd detection. + ** \arg PvdU1 The unit1 of pvd detection. + ** \arg PvdU2 The unit2 of pvd detection. + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t PWC_GetPvdStatus(en_pwc_pvd_t enPvd) +{ + uint8_t u8flag = 0u; + + switch(enPvd) + { + case PvdU1: + u8flag = M4_SYSREG->PWR_PVDDSR_f.PVD1MON; + break; + case PvdU2: + u8flag = M4_SYSREG->PWR_PVDDSR_f.PVD2MON; + break; + default: + break; + } + + return ((1u == u8flag) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Get pvd detection flag. + ** + ** \param [in] enPvd The unit of pvd detection. + ** \arg PvdU1 The unit1 of pvd detection. + ** \arg PvdU2 The unit2 of pvd detection. + ** + ** \retval en_flag_status_t + ** + ** \note None + ** + ******************************************************************************/ +en_flag_status_t PWC_GetPvdFlag(en_pwc_pvd_t enPvd) +{ + uint8_t u8flag = 0u; + + switch(enPvd) + { + case PvdU1: + u8flag = M4_SYSREG->PWR_PVDDSR_f.PVD1DETFLG; + break; + case PvdU2: + u8flag = M4_SYSREG->PWR_PVDDSR_f.PVD2DETFLG; + break; + default: + break; + } + + return ((1u == u8flag) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Clear pvd detection flag. + ** + ** \param [in] enPvd The unit of pvd detection. + ** \arg PvdU1 The unit1 of pvd detection. + ** \arg PvdU2 The unit2 of pvd detection. + ** + ** \note None + ** + ******************************************************************************/ +void PWC_ClearPvdFlag(en_pwc_pvd_t enPvd) +{ + ENABLE_PVD_REG_WRITE(); + switch(enPvd) + { + case PvdU1: + M4_SYSREG->PWR_PVDDSR_f.PVD1MON = 0u; + break; + case PvdU2: + M4_SYSREG->PWR_PVDDSR_f.PVD2MON = 0u; + break; + default: + break; + } + DISABLE_PVD_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable HRC power. + ** + ** \param [in] enNewState The HRC power state. + ** \arg Enable Enable HRC power. + ** \arg Disable Disable HRC power. + ** + ** \retval None + ** + ******************************************************************************/ +void PWC_HrcPwrCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_PWRC1_f.VHRCSD = ((Enable == enNewState) ? 0u : 1u); + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Enable or disable PLL power. + ** + ** \param [in] enNewState The PLL power state. + ** \arg Enable Enable PLL power. + ** \arg Disable Disable PLL power. + ** + ** \retval None + ** + ******************************************************************************/ +void PWC_PllPwrCmd(en_functional_state_t enNewState) +{ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState)); + + ENABLE_PWR_REG_WRITE(); + + M4_SYSREG->PWR_PWRC1_f.VPLLSD = ((Enable == enNewState) ? 0u : 1u); + + DISABLE_PWR_REG_WRITE(); +} + +/** + ******************************************************************************* + ** \brief NVIC backup and disable before entry from stop mode + ** + ** param None + ** + ** retval None + ** + *****************************************************************************/ +void PWC_enNvicBackup(void) +{ + uint8_t u8Cnt; + stc_intc_sel_field_t *stcIntSel; + uint32_t u32WakeupSrc = INT_MAX; + + /* Backup NVIC set enable register for IRQ0~143*/ + for (u8Cnt = 0u; u8Cnt < sizeof(NVIC_ISER_BAK)/sizeof(uint32_t); u8Cnt++) + { + NVIC_ISER_BAK[u8Cnt] = NVIC->ISER[u8Cnt]; + } + + /* Disable share vector */ + for (u8Cnt = 128u; u8Cnt < 144u; u8Cnt++) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + + for (u8Cnt = 0u; u8Cnt < 128u; u8Cnt++) + { + stcIntSel = (stc_intc_sel_field_t *)((uint32_t)(&M4_INTC->SEL0) + (4ul * u8Cnt)); + /* Disable NVIC if it is the wakeup-able source from stop mode */ + u32WakeupSrc = stcIntSel->INTSEL; + if (IS_VALID_WKUP_SRC(u32WakeupSrc)) + { + switch (stcIntSel->INTSEL) + { + case INT_USART1_WUPI: + if (Reset == bM4_INTC_WUPEN_RXWUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_TMR01_GCMA: + if (Reset == bM4_INTC_WUPEN_TMR0WUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_RTC_ALM: + if (Reset == bM4_INTC_WUPEN_RTCALMWUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_RTC_PRD: + if (Reset == bM4_INTC_WUPEN_RTCPRDWUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_WKTM_PRD: + if (Reset == bM4_INTC_WUPEN_WKTMWUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_ACMP1: + if (Reset == bM4_INTC_WUPEN_CMPI0WUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PVD_PVD1: + if (Reset == bM4_INTC_WUPEN_PVD1WUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PVD_PVD2: + if (Reset == bM4_INTC_WUPEN_PVD2WUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_SWDT_REFUDF: + if (Reset == bM4_INTC_WUPEN_SWDTWUEN) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ0: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN0) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ1: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN1) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ2: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN2) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ3: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN3) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ4: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN4) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ5: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN5) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ6: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN6) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ7: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN7) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ8: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN8) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ9: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN9) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ10: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN10) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ11: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN11) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ12: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN12) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ13: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN13) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ14: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN14) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + case INT_PORT_EIRQ15: + if (Reset == bM4_INTC_WUPEN_EIRQWUEN15) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + break; + default: + break; + } + } + /* Disable NVIC for all none-wakeup source */ + else if (INT_MAX != stcIntSel->INTSEL) + { + NVIC_DisableIRQ((IRQn_Type)u8Cnt); + } + else + { + ; + } + } +} + +/** + ******************************************************************************* + ** \brief NVIC recover after wakeup from stop mode + ** + ** param None + ** + ** retval None + ** + *****************************************************************************/ +void PWC_enNvicRecover(void) +{ + uint8_t u8Cnt; + + for (u8Cnt = 0u; u8Cnt < sizeof(NVIC_ISER_BAK)/sizeof(uint32_t); u8Cnt++) + { + NVIC->ISER[u8Cnt] = NVIC_ISER_BAK[u8Cnt]; + } +} + +/** + ******************************************************************************* + ** \brief Select system clock source. + ** + ** \param [in] u8SysSrc The system clock source. + ** + ** \retval None + ** + ** \note Must close all of the fcg register before switch system clock source. + ** This function only be called in func. PWC_enClockBackup and + ** PWC_enClockRecover. + ** If need to switch system clock please call CLK_SetSysClkSource. + ** + ******************************************************************************/ +static void PWC_SetSysClk(uint8_t u8SysSrc) +{ + __IO uint32_t fcg0 = M4_MSTP->FCG0; + __IO uint32_t fcg1 = M4_MSTP->FCG1; + __IO uint32_t fcg2 = M4_MSTP->FCG2; + __IO uint32_t fcg3 = M4_MSTP->FCG3; + + /* Only current system clock source or target system clock source is MPLL + need to close fcg0~fcg3 and open fcg0~fcg3 during switch system clock source. + We need to backup fcg0~fcg3 before close them. */ + if((5u == M4_SYSREG->CMU_CKSWR_f.CKSW) || (5u == u8SysSrc)) + { + /* Close fcg0~fcg3. */ + M4_MSTP->FCG0 = 0xFFFFFAEEul; + M4_MSTP->FCG1 = 0xFFFFFFFFul; + M4_MSTP->FCG2 = 0xFFFFFFFFul; + M4_MSTP->FCG3 = 0xFFFFFFFFul; + + Ddl_Delay1us(1ul); + } + + /* Switch to target system clock source. */ + ENABLE_PWR_REG0_WRITE(); + + M4_SYSREG->CMU_CKSWR_f.CKSW = u8SysSrc; + + DISABLE_PWR_REG0_WRITE(); + + /* update system clock frequency. */ + SystemCoreClockUpdate(); + + Ddl_Delay1us(1ul); + + /* Open fcg0~fcg3. */ + M4_MSTP->FCG0 = fcg0; + M4_MSTP->FCG1 = fcg1; + M4_MSTP->FCG2 = fcg2; + M4_MSTP->FCG3 = fcg3; + + Ddl_Delay1us(1ul); +} +/** + ******************************************************************************* + ** \brief Backup HRC/MRC state and system clock , enable HRC/MRC ,set MRC as + ** system clock before enter stop mode. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +static void PWC_enClockBackup(void) +{ + __IO uint32_t timeout = 0ul; + en_flag_status_t status = Reset; + + /* HRC state backup. */ + u8HrcState = (uint8_t)bM4_SYSREG_CMU_HRCCR_HRCSTP; + /* System clock backup*/ + u8SysClkSrc = M4_SYSREG->CMU_CKSWR_f.CKSW; + + ENABLE_PWR_REG0_WRITE(); + + /* Enable HRC before enter stop mode. */ + if(0u != u8HrcState) + { + bM4_SYSREG_CMU_HRCCR_HRCSTP = 0u; + do + { + status = (en_flag_status_t)M4_SYSREG->CMU_OSCSTBSR_f.HRCSTBF; + timeout++; + }while((timeout < 0x1000ul) && (status != Set)); + } + else + { + /* code */ + } + /* When system clock source is HRC and MPLL, set MRC as system clock. . */ + if((0u == u8SysClkSrc) || (5u == u8SysClkSrc)) + { + /* MRC state backup. */ + u8MrcState = (uint8_t)bM4_SYSREG_CMU_MRCCR_MRCSTP; + if(0u != u8MrcState) + { + bM4_SYSREG_CMU_MRCCR_MRCSTP = 0u; + __NOP(); + __NOP(); + __NOP(); + __NOP(); + __NOP(); + } + PWC_SetSysClk(1u); + } + else + { + /* code */ + } + + DISABLE_PWR_REG0_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Recover HRC/MRC state and system clock after wakeup stop mode. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +static void PWC_enClockRecover(void) +{ + ENABLE_PWR_REG0_WRITE(); + + if((0u == u8SysClkSrc) || (5u == u8SysClkSrc)) + { + /* Recover MRC state & system clock source. */ + M4_SYSREG->CMU_MRCCR_f.MRCSTP = u8MrcState; + PWC_SetSysClk(u8SysClkSrc); + } + /* Recover HRC state after wakeup stop mode. */ + M4_SYSREG->CMU_HRCCR_f.HRCSTP = u8HrcState; + + DISABLE_PWR_REG0_WRITE(); +} + +/** + ******************************************************************************* + ** \brief Clock backup before enter stop mode and mark it. + ** + ** \param None + ** + ** \retval None + ** + ** \note This function should be called before func. PWC_EnterStopMd. + ******************************************************************************/ +void PWC_ClkBackup(void) +{ + /* Disable all interrupt to ensure the following operation continued. */ + __disable_irq(); + + /* HRC/MRC backup and switch system clock as MRC before entry from stop mode. */ + PWC_enClockBackup(); + + /* Mark the system clock has been switch as MRC, and will enter the stop mode. */ + u8StopFlag = 1u; + + /* Enable all interrupt. */ + __enable_irq(); +} + +/** + ******************************************************************************* + ** \brief Clock recover after wakeup stop mode. + ** + ** \param None + ** + ** \retval None + ** + ** \note This function should be called after func. PWC_EnterStopMd. + ******************************************************************************/ +void PWC_ClkRecover(void) +{ + /* Disable all interrupt to ensure the following operation continued. */ + __disable_irq(); + + /* Mark the system clock will be switch as MRC, and has waked_up from stop mode. */ + u8StopFlag = 0u; + + /* Recover HRC/MRC state and system clock after wakeup stop mode. */ + PWC_enClockRecover(); + + /* Enable all interrupt. */ + __enable_irq(); +} + +/** + ******************************************************************************* + ** \brief Clock backup before exit wakup interrupt. + ** + ** \param None + ** + ** \retval None + ** + ** \note This function should be called before exit wakup interrput. + ******************************************************************************/ +void PWC_IrqClkBackup(void) +{ + if((1ul == u8StopFlag) && (1ul == u8WkupIntCnt)) + { + /* HRC/MRC backup and switch system clock as MRC. */ + PWC_enClockBackup(); + } + u8WkupIntCnt--; +} + +/** + ******************************************************************************* + ** \brief Clock recover after enter wakeup interrupt. + ** + ** \param None + ** + ** \retval None + ** +** \note This function should be called after enter wakup interrput. + ******************************************************************************/ +void PWC_IrqClkRecover(void) +{ + /* The varibale to display how many waked_up interrupt has been occured + simultaneously and to decided whether backup clock before exit wake_up + interrupt. */ + u8WkupIntCnt++; + + if(1ul == u8StopFlag) + { + /* Recover HRC/MRC state and system clock. */ + PWC_enClockRecover(); + } +} + +/** + ******************************************************************************* + ** \brief Enter stop mode. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +void PWC_EnterStopMd(void) +{ + /* NVIC backup and disable before entry from stop mode.*/ + PWC_enNvicBackup(); + /* Clock backup and switch system clock as MRC before entry from stop mode. */ + PWC_ClkBackup(); + + ENABLE_PWR_REG0_WRITE(); + + M4_SYSREG->PWR_STPMCR_f.STOP = 1u; + M4_SYSREG->PWR_PWRC0_f.PWDN = 0u; + + DISABLE_PWR_REG0_WRITE(); + + __WFI(); + + /* Recover HRC/MRC state and system clock after wakeup from stop mode. */ + PWC_ClkRecover(); + /* NVIC recover after wakeup from stop mode. */ + PWC_enNvicRecover(); +} + +/** + ******************************************************************************* + ** \brief Switch MCU from low_speed (HCLK < 8MHz) to high-speed (HCLK > 8MHz) mode. + ** + ** \param None + ** + ** \retval Ok: Mode switch sucessfully. + ** + ** \note Called after clock is ready. + ******************************************************************************/ +en_result_t PWC_HS2LS(void) +{ + uint32_t u32To = 10000ul; + + if(0ul == M4_EFM->FAPRT) + { + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x3210ul; + M4_EFM->FRMC_f.LVM = 1u; + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x0123ul; + } + else + { + M4_EFM->FRMC_f.LVM = 1u; + } + + ENABLE_PWR_REG_WRITE(); + M4_SYSREG->PWR_RAMOPM = 0x9062u; + while((0x9062 != M4_SYSREG->PWR_RAMOPM) || (1u != M4_EFM->FRMC_f.LVM)) + { + if (0ul == u32To--) + { + return Error; + } + } + M4_SYSREG->PWR_PWRC2 = 0xE1U; + M4_SYSREG->PWR_MDSWCR = 0x10U; + DISABLE_PWR_REG_WRITE(); + + Ddl_Delay1ms(1ul); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Switch MCU from high-speed (HCLK > 8MHz) to low_speed (HCLK < 8MHz) mode. + ** + ** \param None + ** + ** \retval Ok: Mode switch sucessfully. + ** Error: Mode switch failure. + ** + ** \note Called before clock is ready. + ******************************************************************************/ +en_result_t PWC_LS2HS(void) +{ + uint32_t u32To = 10000ul; + + ENABLE_PWR_REG_WRITE(); + M4_SYSREG->PWR_PWRC2 = 0xFFU; + M4_SYSREG->PWR_MDSWCR = 0x10U; + + Ddl_Delay1ms(1ul); + + if(0ul == M4_EFM->FAPRT) + { + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x3210ul; + M4_EFM->FRMC_f.LVM = 0u; + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x0123ul; + } + else + { + M4_EFM->FRMC_f.LVM = 0u; + } + + M4_SYSREG->PWR_RAMOPM = 0x8043u; + while((0x8043 != M4_SYSREG->PWR_RAMOPM) || (0u != M4_EFM->FRMC_f.LVM)) + { + if (0ul == u32To--) + { + return Error; + } + } + + DISABLE_PWR_REG_WRITE(); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Switch MCU from high-speed (HCLK > 8MHz) to high-performance mode. + ** + ** \param None + ** + ** \retval Ok: Mode switch sucessfully. + ** Error: Mode switch failure. + ** + ** \note Called before clock is ready. + ******************************************************************************/ +en_result_t PWC_HS2HP(void) +{ + ENABLE_PWR_REG_WRITE(); + M4_SYSREG->PWR_PWRC2 = 0xCFU; + M4_SYSREG->PWR_MDSWCR = 0x10U; + DISABLE_PWR_REG_WRITE(); + Ddl_Delay1ms(1ul); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Switch MCU from high-performance to high-speed (HCLK > 8MHz) mode. + ** + ** \param None + ** + ** \retval Ok: Mode switch sucessfully. + ** Error: Mode switch failure. + ** + ** \note Called after clock is ready. + ******************************************************************************/ +en_result_t PWC_HP2HS(void) +{ + ENABLE_PWR_REG_WRITE(); + M4_SYSREG->PWR_PWRC2 = 0xFFU; + M4_SYSREG->PWR_MDSWCR = 0x10U; + DISABLE_PWR_REG_WRITE(); + Ddl_Delay1ms(1ul); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Switch MCU from low-speed (HCLK <= 8MHz) to high-performance mode. + ** + ** \param None + ** + ** \retval Ok: Mode switch sucessfully. + ** Error: Mode switch failure. + ** + ** \note Called before clock is ready. + ******************************************************************************/ +en_result_t PWC_LS2HP(void) +{ + uint32_t u32To = 10000ul; + + ENABLE_PWR_REG_WRITE(); + M4_SYSREG->PWR_PWRC2 = 0xCFU; + M4_SYSREG->PWR_MDSWCR = 0x10U; + + Ddl_Delay1ms(1); + + if(0ul == M4_EFM->FAPRT) + { + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x3210ul; + M4_EFM->FRMC_f.LVM = 0u; + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x0123ul; + } + else + { + M4_EFM->FRMC_f.LVM = 0u; + } + + M4_SYSREG->PWR_RAMOPM = 0x8043u; + while((0x8043 != M4_SYSREG->PWR_RAMOPM) || (0u != M4_EFM->FRMC_f.LVM)) + { + if (0ul == u32To--) + { + return Error; + } + } + + DISABLE_PWR_REG_WRITE(); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Switch MCU from high-performance to low-speed (HCLK <= 8MHz) mode. + ** + ** \param None + ** + ** \retval Ok: Mode switch sucessfully. + ** Error: Mode switch failure. + ** + ** \note Called after clock is ready. + ******************************************************************************/ +en_result_t PWC_HP2LS(void) +{ + uint32_t u32To = 10000ul; + + if(0ul == M4_EFM->FAPRT) + { + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x3210ul; + M4_EFM->FRMC_f.LVM = 1u; + M4_EFM->FAPRT = 0x0123ul; + M4_EFM->FAPRT = 0x0123ul; + } + else + { + M4_EFM->FRMC_f.LVM = 1u; + } + + ENABLE_PWR_REG_WRITE(); + M4_SYSREG->PWR_RAMOPM = 0x9062u; + u32To = 10000ul; + while((0x9062 != M4_SYSREG->PWR_RAMOPM) || (1u != M4_EFM->FRMC_f.LVM)) + { + if (0ul == u32To--) + { + return Error; + } + } + + M4_SYSREG->PWR_PWRC2 = 0xD1U; + M4_SYSREG->PWR_MDSWCR = 0x10U; + + DISABLE_PWR_REG_WRITE(); + + Ddl_Delay1ms(1); + + return Ok; +} + +#endif /* DDL_PWC_ENABLE */ + +//@} // PwcGroup + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_qspi.c b/driver/src/hc32f460_qspi.c new file mode 100644 index 0000000..1f471aa --- /dev/null +++ b/driver/src/hc32f460_qspi.c @@ -0,0 +1,756 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_qspi.c + ** + ** A detailed description is available at + ** @link QspiGroup Queued SPI description @endlink + ** + ** - 2018-11-20 CDT First version for Device Driver Library of Qspi. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_qspi.h" +#include "hc32f460_utility.h" + +#if (DDL_QSPI_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup QspiGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for clock division */ +#define IS_VALID_CLK_DIV(x) \ +( ((x) == QspiHclkDiv2) || \ + (((x) >= QspiHclkDiv3) && ((x) <= QspiHclkDiv64))) + +/*!< Parameter valid check for spi mode */ +#define IS_VALID_SPI_MODE(x) \ +( (QspiSpiMode0 == (x)) || \ + (QspiSpiMode3 == (x))) + +/*!< Parameter valid check for bus communication mode */ +#define IS_VALID_BUS_COMM_MODE(x) \ +( (QspiBusModeRomAccess == (x)) || \ + (QspiBusModeDirectAccess == (x))) + +/*!< Parameter valid check for prefetch stop location */ +#define IS_VALID_PREFETCH_STOP_LOCATION(x) \ +( (QspiPrefetchStopComplete == (x)) || \ + (QspiPrefetchStopImmediately == (x))) + +/*!< Parameter valid check for receive data protocol */ +#define IS_VALID_RECE_DATA_PROTOCOL(x) \ +( (QspiProtocolExtendSpi == (x)) || \ + (QspiProtocolTwoWiresSpi == (x)) || \ + (QspiProtocolFourWiresSpi == (x))) + +/*!< Parameter valid check for transmit address protocol */ +#define IS_VALID_TRANS_ADDR_PROTOCOL(x) \ +( (QspiProtocolExtendSpi == (x)) || \ + (QspiProtocolTwoWiresSpi == (x)) || \ + (QspiProtocolFourWiresSpi == (x))) + +/*!< Parameter valid check for transmit instruction protocol */ +#define IS_VALID_TRANS_INSTRUCT_PROTOCOL(x) \ +( (QspiProtocolExtendSpi == (x)) || \ + (QspiProtocolTwoWiresSpi == (x)) || \ + (QspiProtocolFourWiresSpi == (x))) + +/*!< Parameter valid check for serial interface read mode */ +#define IS_VALID_INTERFACE_READ_MODE(x) \ +( (QspiReadModeStandard == (x)) || \ + (QspiReadModeFast == (x)) || \ + (QspiReadModeTwoWiresOutput == (x)) || \ + (QspiReadModeTwoWiresIO == (x)) || \ + (QspiReadModeFourWiresOutput == (x)) || \ + (QspiReadModeFourWiresIO == (x)) || \ + (QspiReadModeCustomStandard == (x)) || \ + (QspiReadModeCustomFast == (x))) + +/*!< Parameter valid check for QSSN valid extend delay time */ +#define IS_VALID_QSSN_VALID_EXTEND_TIME(x) \ +( (QspiQssnValidExtendNot == (x)) || \ + (QspiQssnValidExtendSck32 == (x)) || \ + (QspiQssnValidExtendSck128 == (x)) || \ + (QspiQssnValidExtendSckEver == (x))) + +/*!< Parameter valid check for QSSN minimum interval time */ +#define IS_VALID_QSSN_INTERVAL_TIME(x) \ +( (QspiQssnIntervalQsck1 == (x)) || \ + (QspiQssnIntervalQsck2 == (x)) || \ + (QspiQssnIntervalQsck3 == (x)) || \ + (QspiQssnIntervalQsck4 == (x)) || \ + (QspiQssnIntervalQsck5 == (x)) || \ + (QspiQssnIntervalQsck6 == (x)) || \ + (QspiQssnIntervalQsck7 == (x)) || \ + (QspiQssnIntervalQsck8 == (x)) || \ + (QspiQssnIntervalQsck9 == (x)) || \ + (QspiQssnIntervalQsck10 == (x)) || \ + (QspiQssnIntervalQsck11 == (x)) || \ + (QspiQssnIntervalQsck12 == (x)) || \ + (QspiQssnIntervalQsck13 == (x)) || \ + (QspiQssnIntervalQsck14 == (x)) || \ + (QspiQssnIntervalQsck15 == (x)) || \ + (QspiQssnIntervalQsck16 <= (x))) + +/*!< Parameter valid check for QSCK duty correction */ +#define IS_VALID_QSCK_DUTY_CORR(x) \ +( (QspiQsckDutyCorrNot == (x)) || \ + (QspiQsckDutyCorrHalfHclk == (x))) + +/*!< Parameter valid check for virtual cycles */ +#define IS_VALID_VIRTUAL_CYCLES(x) \ +( (QspiVirtualPeriodQsck3 == (x)) || \ + (QspiVirtualPeriodQsck4 == (x)) || \ + (QspiVirtualPeriodQsck5 == (x)) || \ + (QspiVirtualPeriodQsck6 == (x)) || \ + (QspiVirtualPeriodQsck7 == (x)) || \ + (QspiVirtualPeriodQsck8 == (x)) || \ + (QspiVirtualPeriodQsck9 == (x)) || \ + (QspiVirtualPeriodQsck10 == (x)) || \ + (QspiVirtualPeriodQsck11 == (x)) || \ + (QspiVirtualPeriodQsck12 == (x)) || \ + (QspiVirtualPeriodQsck13 == (x)) || \ + (QspiVirtualPeriodQsck14 == (x)) || \ + (QspiVirtualPeriodQsck15 == (x)) || \ + (QspiVirtualPeriodQsck16 == (x)) || \ + (QspiVirtualPeriodQsck17 == (x)) || \ + (QspiVirtualPeriodQsck18 == (x))) + +/*!< Parameter valid check for WP pin output level */ +#define IS_VALID_WP_OUTPUT_LEVEL(x) \ +( (QspiWpPinOutputLow == (x)) || \ + (QspiWpPinOutputHigh == (x))) + +/*!< Parameter valid check for QSSN setup delay time */ +#define IS_VALID_QSSN_SETUP_DELAY(x) \ +( (QspiQssnSetupDelayHalfQsck == (x)) || \ + (QspiQssnSetupDelay1Dot5Qsck == (x))) + +/*!< Parameter valid check for QSSN hold delay time */ +#define IS_VALID_QSSN_HOLD_TIME(x) \ +( (QspiQssnHoldDelayHalfQsck == (x)) || \ + (QspiQssnHoldDelay1Dot5Qsck == (x))) + +/*!< Parameter valid check for interface address width */ +#define IS_VALID_INTERFACE_ADDR_WIDTH(x) \ +( (QspiAddressByteOne == (x)) || \ + (QspiAddressByteTwo == (x)) || \ + (QspiAddressByteThree == (x)) || \ + (QspiAddressByteFour == (x))) + +/*!< Parameter valid check for extend address */ +#define IS_VALID_SET_EXTEND_ADDR(x) ((x) <= 0x3Fu) + +/*!< Parameter valid check for get flag type */ +#define IS_VALID_GET_FLAG_TYPE(x) \ +( (QspiFlagBusBusy == (x)) || \ + (QspiFlagXipMode == (x)) || \ + (QspiFlagRomAccessError == (x)) || \ + (QspiFlagPrefetchBufferFull == (x)) || \ + (QspiFlagPrefetchStop == (x))) + +/*!< Parameter valid check for clear flag type */ +#define IS_VALID_CLEAR_FLAG_TYPE(x) (QspiFlagRomAccessError == (x)) + +/*!< QSPI registers reset value */ +#define QSPI_REG_CR_RESET_VALUE (0x003F0000ul) +#define QSPI_REG_CSCR_RESET_VALUE (0x0000000Ful) +#define QSPI_REG_FCR_RESET_VALUE (0x000080B3ul) +#define QSPI_REG_SR_RESET_VALUE (0x00008000ul) +#define QSPI_REG_CCMD_RESET_VALUE (0x00000000ul) +#define QSPI_REG_XCMD_RESET_VALUE (0x000000FFul) +#define QSPI_REG_EXAR_RESET_VALUE (0x00000000ul) +#define QSPI_REG_SR2_RESET_VALUE (0x00000000ul) +#define QSPI_REG_DCOM_RESET_VALUE (0x00000000ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief De-Initialize QSPI unit + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_DeInit(void) +{ + en_result_t enRet = Ok; + + M4_QSPI->CR = QSPI_REG_CR_RESET_VALUE; + if (1u == M4_QSPI->SR_f.RAER) + { + M4_QSPI->SR2_f.RAERCLR = 1u; + } + M4_QSPI->CSCR = QSPI_REG_CSCR_RESET_VALUE; + M4_QSPI->FCR = QSPI_REG_FCR_RESET_VALUE; + M4_QSPI->EXAR = QSPI_REG_EXAR_RESET_VALUE; + M4_QSPI->SR = QSPI_REG_SR_RESET_VALUE; + M4_QSPI->CCMD = QSPI_REG_CCMD_RESET_VALUE; + M4_QSPI->XCMD = QSPI_REG_XCMD_RESET_VALUE; + M4_QSPI->DCOM = QSPI_REG_DCOM_RESET_VALUE; + M4_QSPI->SR2 = QSPI_REG_SR2_RESET_VALUE; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize QSPI unit + ** + ** \param [in] pstcQspiInitCfg Pointer to qspi configuration + ** \arg See the struct #stc_qspi_init_t + ** + ** \retval Ok Process successfully done + ** \retval Error Parameter error + ** + ******************************************************************************/ +en_result_t QSPI_Init(const stc_qspi_init_t *pstcQspiInitCfg) +{ + en_result_t enRet = Ok; + + if (NULL == pstcQspiInitCfg) + { + enRet = Error; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CLK_DIV(pstcQspiInitCfg->enClkDiv)); + DDL_ASSERT(IS_VALID_SPI_MODE(pstcQspiInitCfg->enSpiMode)); + DDL_ASSERT(IS_VALID_BUS_COMM_MODE(pstcQspiInitCfg->enBusCommMode)); + DDL_ASSERT(IS_VALID_PREFETCH_STOP_LOCATION(pstcQspiInitCfg->enPrefetchMode)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcQspiInitCfg->enPrefetchFuncEn)); + DDL_ASSERT(IS_VALID_RECE_DATA_PROTOCOL(pstcQspiInitCfg->stcCommProtocol.enReceProtocol)); + DDL_ASSERT(IS_VALID_TRANS_ADDR_PROTOCOL(pstcQspiInitCfg->stcCommProtocol.enTransAddrProtocol)); + DDL_ASSERT(IS_VALID_TRANS_INSTRUCT_PROTOCOL(pstcQspiInitCfg->stcCommProtocol.enTransInstrProtocol)); + DDL_ASSERT(IS_VALID_INTERFACE_READ_MODE(pstcQspiInitCfg->stcCommProtocol.enReadMode)); + DDL_ASSERT(IS_VALID_QSSN_VALID_EXTEND_TIME(pstcQspiInitCfg->enQssnValidExtendTime)); + DDL_ASSERT(IS_VALID_QSSN_INTERVAL_TIME(pstcQspiInitCfg->enQssnIntervalTime)); + DDL_ASSERT(IS_VALID_QSCK_DUTY_CORR(pstcQspiInitCfg->enQsckDutyCorr)); + DDL_ASSERT(IS_VALID_VIRTUAL_CYCLES(pstcQspiInitCfg->enVirtualPeriod)); + DDL_ASSERT(IS_VALID_WP_OUTPUT_LEVEL(pstcQspiInitCfg->enWpPinLevel)); + DDL_ASSERT(IS_VALID_QSSN_SETUP_DELAY(pstcQspiInitCfg->enQssnSetupDelayTime)); + DDL_ASSERT(IS_VALID_QSSN_HOLD_TIME(pstcQspiInitCfg->enQssnHoldDelayTime)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcQspiInitCfg->enFourByteAddrReadEn)); + DDL_ASSERT(IS_VALID_INTERFACE_ADDR_WIDTH(pstcQspiInitCfg->enAddrWidth)); + + /* Configure control register */ + M4_QSPI->CR_f.DIV = pstcQspiInitCfg->enClkDiv; + M4_QSPI->CR_f.SPIMD3 = pstcQspiInitCfg->enSpiMode; + M4_QSPI->CR_f.PFE = pstcQspiInitCfg->enPrefetchFuncEn; + M4_QSPI->CR_f.PFSAE = pstcQspiInitCfg->enPrefetchMode; + M4_QSPI->CR_f.MDSEL = pstcQspiInitCfg->stcCommProtocol.enReadMode; + + /* Custom read mode */ + if ((QspiReadModeCustomFast == pstcQspiInitCfg->stcCommProtocol.enReadMode) || + (QspiReadModeCustomStandard == pstcQspiInitCfg->stcCommProtocol.enReadMode)) + { + M4_QSPI->CR_f.IPRSL = pstcQspiInitCfg->stcCommProtocol.enTransInstrProtocol; + M4_QSPI->CR_f.APRSL = pstcQspiInitCfg->stcCommProtocol.enTransAddrProtocol; + M4_QSPI->CR_f.DPRSL = pstcQspiInitCfg->stcCommProtocol.enReceProtocol; + } + else + { + M4_QSPI->CR_f.IPRSL = QspiProtocolExtendSpi; + M4_QSPI->CR_f.APRSL = QspiProtocolExtendSpi; + M4_QSPI->CR_f.DPRSL = QspiProtocolExtendSpi; + } + + /* Configure chip select control register */ + M4_QSPI->CSCR_f.SSNW = pstcQspiInitCfg->enQssnValidExtendTime; + M4_QSPI->CSCR_f.SSHW = pstcQspiInitCfg->enQssnIntervalTime; + + /* Configure format control register */ + if (((pstcQspiInitCfg->enClkDiv % 2) != 0) && + (pstcQspiInitCfg->enQsckDutyCorr != QspiQsckDutyCorrNot)) + { + M4_QSPI->FCR_f.DUTY = QspiQsckDutyCorrNot; + } + else + { + M4_QSPI->FCR_f.DUTY = pstcQspiInitCfg->enQsckDutyCorr; + } + M4_QSPI->FCR_f.DMCYCN = pstcQspiInitCfg->enVirtualPeriod; + M4_QSPI->FCR_f.WPOL = pstcQspiInitCfg->enWpPinLevel; + M4_QSPI->FCR_f.SSNLD = pstcQspiInitCfg->enQssnSetupDelayTime; + M4_QSPI->FCR_f.SSNHD = pstcQspiInitCfg->enQssnHoldDelayTime; + M4_QSPI->FCR_f.FOUR_BIC = pstcQspiInitCfg->enFourByteAddrReadEn; + M4_QSPI->FCR_f.AWSL = pstcQspiInitCfg->enAddrWidth; + M4_QSPI->CR_f.DCOME = pstcQspiInitCfg->enBusCommMode; + + /* Configure ROM access instruction */ + M4_QSPI->CCMD = pstcQspiInitCfg->u8RomAccessInstr; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Config communication protocol structure + ** + ** \param [in] pstcCommProtocol Pointer to qspi communication protocol configuration + ** \arg See the struct #stc_qspi_comm_protocol_t + ** + ** \retval Ok Process successfully done + ** \retval Error Parameter error + ** + ******************************************************************************/ +en_result_t QSPI_CommProtocolConfig(const stc_qspi_comm_protocol_t *pstcCommProtocol) +{ + en_result_t enRet = Ok; + + if (NULL == pstcCommProtocol) + { + enRet = Error; + } + else + { + DDL_ASSERT(IS_VALID_RECE_DATA_PROTOCOL(pstcCommProtocol->enReceProtocol)); + DDL_ASSERT(IS_VALID_TRANS_ADDR_PROTOCOL(pstcCommProtocol->enTransAddrProtocol)); + DDL_ASSERT(IS_VALID_TRANS_INSTRUCT_PROTOCOL(pstcCommProtocol->enTransInstrProtocol)); + DDL_ASSERT(IS_VALID_INTERFACE_READ_MODE(pstcCommProtocol->enReadMode)); + + M4_QSPI->CR_f.MDSEL = pstcCommProtocol->enReadMode; + /* Custom read mode */ + if ((QspiReadModeCustomFast == pstcCommProtocol->enReadMode) || + (QspiReadModeCustomStandard == pstcCommProtocol->enReadMode)) + { + M4_QSPI->CR_f.IPRSL = pstcCommProtocol->enTransInstrProtocol; + M4_QSPI->CR_f.APRSL = pstcCommProtocol->enTransAddrProtocol; + M4_QSPI->CR_f.DPRSL = pstcCommProtocol->enReceProtocol; + } + else + { + M4_QSPI->CR_f.IPRSL = QspiProtocolExtendSpi; + M4_QSPI->CR_f.APRSL = QspiProtocolExtendSpi; + M4_QSPI->CR_f.DPRSL = QspiProtocolExtendSpi; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable prefetch function + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable prefetch function + ** \arg Enable Enable prefetch function + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_PrefetchCmd(en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + M4_QSPI->CR_f.PFE = enNewSta; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set clock division + ** + ** \param [in] enClkDiv Clock division + ** \arg QspiHclkDiv2 Clock source: HCLK/2 + ** \arg QspiHclkDiv3 Clock source: HCLK/3 + ** \arg QspiHclkDiv4 Clock source: HCLK/4 + ** \arg QspiHclkDiv5 Clock source: HCLK/5 + ** \arg QspiHclkDiv6 Clock source: HCLK/6 + ** \arg QspiHclkDiv7 Clock source: HCLK/7 + ** \arg QspiHclkDiv8 Clock source: HCLK/8 + ** \arg QspiHclkDiv9 Clock source: HCLK/9 + ** \arg QspiHclkDiv10 Clock source: HCLK/10 + ** \arg QspiHclkDiv11 Clock source: HCLK/11 + ** \arg QspiHclkDiv12 Clock source: HCLK/12 + ** \arg QspiHclkDiv13 Clock source: HCLK/13 + ** \arg QspiHclkDiv14 Clock source: HCLK/14 + ** \arg QspiHclkDiv15 Clock source: HCLK/15 + ** \arg QspiHclkDiv16 Clock source: HCLK/16 + ** \arg QspiHclkDiv17 Clock source: HCLK/17 + ** \arg QspiHclkDiv18 Clock source: HCLK/18 + ** \arg QspiHclkDiv19 Clock source: HCLK/19 + ** \arg QspiHclkDiv20 Clock source: HCLK/20 + ** \arg QspiHclkDiv21 Clock source: HCLK/21 + ** \arg QspiHclkDiv22 Clock source: HCLK/22 + ** \arg QspiHclkDiv23 Clock source: HCLK/23 + ** \arg QspiHclkDiv24 Clock source: HCLK/24 + ** \arg QspiHclkDiv25 Clock source: HCLK/25 + ** \arg QspiHclkDiv26 Clock source: HCLK/26 + ** \arg QspiHclkDiv27 Clock source: HCLK/27 + ** \arg QspiHclkDiv28 Clock source: HCLK/28 + ** \arg QspiHclkDiv29 Clock source: HCLK/29 + ** \arg QspiHclkDiv30 Clock source: HCLK/30 + ** \arg QspiHclkDiv31 Clock source: HCLK/31 + ** \arg QspiHclkDiv32 Clock source: HCLK/32 + ** \arg QspiHclkDiv33 Clock source: HCLK/33 + ** \arg QspiHclkDiv34 Clock source: HCLK/34 + ** \arg QspiHclkDiv35 Clock source: HCLK/35 + ** \arg QspiHclkDiv36 Clock source: HCLK/36 + ** \arg QspiHclkDiv37 Clock source: HCLK/37 + ** \arg QspiHclkDiv38 Clock source: HCLK/38 + ** \arg QspiHclkDiv39 Clock source: HCLK/39 + ** \arg QspiHclkDiv40 Clock source: HCLK/40 + ** \arg QspiHclkDiv41 Clock source: HCLK/41 + ** \arg QspiHclkDiv42 Clock source: HCLK/42 + ** \arg QspiHclkDiv43 Clock source: HCLK/43 + ** \arg QspiHclkDiv44 Clock source: HCLK/44 + ** \arg QspiHclkDiv45 Clock source: HCLK/45 + ** \arg QspiHclkDiv46 Clock source: HCLK/46 + ** \arg QspiHclkDiv47 Clock source: HCLK/47 + ** \arg QspiHclkDiv48 Clock source: HCLK/48 + ** \arg QspiHclkDiv49 Clock source: HCLK/49 + ** \arg QspiHclkDiv50 Clock source: HCLK/50 + ** \arg QspiHclkDiv51 Clock source: HCLK/51 + ** \arg QspiHclkDiv52 Clock source: HCLK/52 + ** \arg QspiHclkDiv53 Clock source: HCLK/53 + ** \arg QspiHclkDiv54 Clock source: HCLK/54 + ** \arg QspiHclkDiv55 Clock source: HCLK/55 + ** \arg QspiHclkDiv56 Clock source: HCLK/56 + ** \arg QspiHclkDiv57 Clock source: HCLK/57 + ** \arg QspiHclkDiv58 Clock source: HCLK/58 + ** \arg QspiHclkDiv59 Clock source: HCLK/59 + ** \arg QspiHclkDiv60 Clock source: HCLK/60 + ** \arg QspiHclkDiv61 Clock source: HCLK/61 + ** \arg QspiHclkDiv62 Clock source: HCLK/62 + ** \arg QspiHclkDiv63 Clock source: HCLK/63 + ** \arg QspiHclkDiv64 Clock source: HCLK/64 + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_SetClockDiv(en_qspi_clk_div_t enClkDiv) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_CLK_DIV(enClkDiv)); + + M4_QSPI->CR_f.DIV = enClkDiv; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set WP Pin level + ** + ** \param [in] enWpLevel WP pin level + ** \arg QspiWpPinOutputLow WP pin(QIO2) output low level + ** \arg QspiWpPinOutputHigh WP pin(QIO2) output high level + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_SetWPPinLevel(en_qspi_wp_pin_level_t enWpLevel) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_WP_OUTPUT_LEVEL(enWpLevel)); + + M4_QSPI->FCR_f.WPOL = enWpLevel; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set communication address width + ** + ** \param [in] enAddrWidth Communication address width + ** \arg QspiAddressByteOne One byte address + ** \arg QspiAddressByteTwo Two byte address + ** \arg QspiAddressByteThree Three byte address + ** \arg QspiAddressByteFour Four byte address + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_SetAddrWidth(en_qspi_addr_width_t enAddrWidth) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_INTERFACE_ADDR_WIDTH(enAddrWidth)); + + M4_QSPI->FCR_f.AWSL = enAddrWidth; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set extend address value + ** + ** \param [in] u8Addr Extend address value + ** \arg 0~0x3F + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_SetExtendAddress(uint8_t u8Addr) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_SET_EXTEND_ADDR(u8Addr)); + + M4_QSPI->EXAR_f.EXADR = u8Addr; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set rom access instruction + ** + ** \param [in] u8Instr Rom access instruction + ** \arg 0~0xFF + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_SetRomAccessInstruct(uint8_t u8Instr) +{ + en_result_t enRet = Ok; + + M4_QSPI->CCMD = u8Instr; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Write direct communication value + ** + ** \param [in] u8Val Direct communication value + ** \arg 0~0xFF + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_WriteDirectCommValue(uint8_t u8Val) +{ + en_result_t enRet = Ok; + + M4_QSPI->DCOM = u8Val; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Read direct communication value + ** + ** \param [in] None + ** + ** \retval uint8_t Direct communication read value + ** + ******************************************************************************/ +uint8_t QSPI_ReadDirectCommValue(void) +{ + return ((uint8_t)M4_QSPI->DCOM); +} + +/** + ******************************************************************************* + ** \brief Enable or disable xip mode + ** + ** \param [in] u8Instr Enable or disable xip mode instruction + ** \arg 0~0xFF + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable xip mode + ** \arg Enable Enable xip mode + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_XipModeCmd(uint8_t u8Instr, en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + M4_QSPI->XCMD = u8Instr; + if (Enable == enNewSta) + { + M4_QSPI->CR_f.XIPE = 1u; + } + else + { + M4_QSPI->CR_f.XIPE = 0u; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enter direct communication mode + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** + ** \note If you are in XIP mode, you need to exit XIP mode and then start direct communication mode. + ** + ******************************************************************************/ +en_result_t QSPI_EnterDirectCommMode(void) +{ + en_result_t enRet = Ok; + + M4_QSPI->CR_f.DCOME = 1u; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Exit direct communication mode + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t QSPI_ExitDirectCommMode(void) +{ + en_result_t enRet = Ok; + + M4_QSPI->CR_f.DCOME = 0u; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get prefetch buffer current byte number + ** + ** \param [in] None + ** + ** \retval uint8_t Current buffer byte number + ** + ******************************************************************************/ +uint8_t QSPI_GetPrefetchBufferNum(void) +{ + return ((uint8_t)M4_QSPI->SR_f.PFNUM); +} + +/** + ******************************************************************************* + ** \brief Get flag status + ** + ** \param [in] enFlag Choose need get status's flag + ** \arg QspiFlagBusBusy QSPI bus work status flag in direct communication mode + ** \arg QspiFlagXipMode XIP mode status signal + ** \arg QspiFlagRomAccessError Trigger rom access error flag in direct communication mode + ** \arg QspiFlagPrefetchBufferFull Prefetch buffer area status signal + ** \arg QspiFlagPrefetchStop Prefetch action status signal + ** + ** \retval Set Flag is set + ** \retval Reset Flag is reset + ** + ******************************************************************************/ +en_flag_status_t QSPI_GetFlag(en_qspi_flag_type_t enFlag) +{ + en_flag_status_t enFlagSta = Reset; + + DDL_ASSERT(IS_VALID_GET_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case QspiFlagBusBusy: + enFlagSta = (en_flag_status_t)M4_QSPI->SR_f.BUSY; + break; + case QspiFlagXipMode: + enFlagSta = (en_flag_status_t)M4_QSPI->SR_f.XIPF; + break; + case QspiFlagRomAccessError: + enFlagSta = (en_flag_status_t)M4_QSPI->SR_f.RAER; + break; + case QspiFlagPrefetchBufferFull: + enFlagSta = (en_flag_status_t)M4_QSPI->SR_f.PFFUL; + break; + case QspiFlagPrefetchStop: + enFlagSta = (en_flag_status_t)M4_QSPI->SR_f.PFAN; + break; + default: + break; + } + + return enFlagSta; +} + +/** + ******************************************************************************* + ** \brief Clear flag status + ** + ** \param [in] enFlag Choose need get status's flag + ** \arg QspiFlagRomAccessError Trigger rom access error flag in direct communication mode + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter Parameter error + ** + ******************************************************************************/ +en_result_t QSPI_ClearFlag(en_qspi_flag_type_t enFlag) +{ + en_result_t enRet = Ok; + + if (QspiFlagRomAccessError == enFlag) + { + M4_QSPI->SR2_f.RAERCLR = 1u; + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +//@} // QspiGroup + +#endif /* DDL_QSPI_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_rmu.c b/driver/src/hc32f460_rmu.c new file mode 100644 index 0000000..301f462 --- /dev/null +++ b/driver/src/hc32f460_rmu.c @@ -0,0 +1,143 @@ +/****************************************************************************** + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_rmu.c + ** + ** A detailed description is available at + ** @link RmuGroup RMU description @endlink + ** + ** - 2018-10-28 CDT First version for Device Driver Library of RMU. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_rmu.h" +#include "hc32f460_utility.h" + +#if (DDL_RMU_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup RmuGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#define ENABLE_RMU_REG_WRITE() (M4_SYSREG->PWR_FPRC = 0xa502u) +#define DISABLE_RMU_REG_WRITE() (M4_SYSREG->PWR_FPRC = 0xa500u) + +#define RMU_FLAG_TIM ((uint16_t)0x1000u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Get the chip reset cause. + ** + ** \param [in] pstcData Pointer to return reset cause structure. + ** + ** \retval Ok Get successfully. + ** + ******************************************************************************/ +en_result_t RMU_GetResetCause(stc_rmu_rstcause_t *pstcData) +{ + uint16_t u16RstCause = 0u; + stc_sysreg_rmu_rstf0_field_t *RMU_RSTF0_f = NULL; + + if(NULL == pstcData) + { + return ErrorInvalidParameter; + } + + u16RstCause = M4_SYSREG->RMU_RSTF0; + RMU_RSTF0_f = (stc_sysreg_rmu_rstf0_field_t *)(&u16RstCause); + + pstcData->enMultiRst = (en_flag_status_t)(RMU_RSTF0_f->MULTIRF == 1u); + pstcData->enXtalErr = (en_flag_status_t)(RMU_RSTF0_f->XTALERF == 1u); + pstcData->enClkFreqErr = (en_flag_status_t)(RMU_RSTF0_f->CKFERF == 1u); + pstcData->enRamEcc = (en_flag_status_t)(RMU_RSTF0_f->RAECRF == 1u); + pstcData->enRamParityErr = (en_flag_status_t)(RMU_RSTF0_f->RAPERF == 1u); + pstcData->enMpuErr = (en_flag_status_t)(RMU_RSTF0_f->MPUERF == 1u); + pstcData->enSoftware = (en_flag_status_t)(RMU_RSTF0_f->SWRF == 1u); + pstcData->enPowerDown = (en_flag_status_t)(RMU_RSTF0_f->PDRF == 1u); + pstcData->enSwdt = (en_flag_status_t)(RMU_RSTF0_f->SWDRF == 1u); + pstcData->enWdt = (en_flag_status_t)(RMU_RSTF0_f->WDRF == 1u); + pstcData->enPvd2 = (en_flag_status_t)(RMU_RSTF0_f->PVD2RF == 1u); + pstcData->enPvd1 = (en_flag_status_t)(RMU_RSTF0_f->PVD2RF == 1u); + pstcData->enBrownOut = (en_flag_status_t)(RMU_RSTF0_f->BORF == 1u); + pstcData->enRstPin = (en_flag_status_t)(RMU_RSTF0_f->PINRF == 1u); + pstcData->enPowerOn = (en_flag_status_t)(RMU_RSTF0_f->PORF == 1u); + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Clear the reset flag. + ** + ** \param None + ** + ** \retval Ok Clear successfully. + ** + ** \note clear reset flag should be done after read RMU_RSTF0 register. + ******************************************************************************/ +en_result_t RMU_ClrResetFlag(void) +{ + uint16_t u16status = 0u; + uint32_t u32timeout = 0u; + + ENABLE_RMU_REG_WRITE(); + + do + { + u32timeout++; + M4_SYSREG->RMU_RSTF0_f.CLRF = 1u; + u16status = M4_SYSREG->RMU_RSTF0; + }while((u32timeout != RMU_FLAG_TIM) && u16status); + + DISABLE_RMU_REG_WRITE(); + + if(u32timeout >= RMU_FLAG_TIM) + { + return ErrorTimeout; + } + + return Ok; +} + + +//@} // RmuGroup + +#endif /* DDL_RMU_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ + diff --git a/driver/src/hc32f460_rtc.c b/driver/src/hc32f460_rtc.c new file mode 100644 index 0000000..577f46f --- /dev/null +++ b/driver/src/hc32f460_rtc.c @@ -0,0 +1,978 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_rtc.c + ** + ** A detailed description is available at + ** @link RtcGroup Real-Time Clock description @endlink + ** + ** - 2018-11-22 CDT First version for Device Driver Library of RTC. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_rtc.h" +#include "hc32f460_utility.h" + +#if (DDL_RTC_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup RtcGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for clock source type */ +#define IS_VALID_CLK_SOURCE_TYPE(x) \ +( (RtcClkXtal32 == (x)) || \ + (RtcClkLrc == (x))) + +/*!< Parameter valid check for period interrupt condition */ +#define IS_VALID_PERIOD_INT_CONDITION(x) \ +( (RtcPeriodIntInvalid == (x)) || \ + (RtcPeriodIntHalfSec == (x)) || \ + (RtcPeriodIntOneSec == (x)) || \ + (RtcPeriodIntOneMin == (x)) || \ + (RtcPeriodIntOneHour == (x)) || \ + (RtcPeriodIntOneDay == (x)) || \ + (RtcPeriodIntOneMon == (x))) + +/*!< Parameter valid check for time format */ +#define IS_VALID_TIME_FORMAT(x) \ +( (RtcTimeFormat12Hour == (x)) || \ + (RtcTimeFormat24Hour == (x))) + +/*!< Parameter valid check for compensation way */ +#define IS_VALID_COMPEN_WAY(x) \ +( (RtcOutputCompenDistributed == (x)) || \ + (RtcOutputCompenUniform == (x))) + +/*!< Parameter valid check for compensation value range */ +#define IS_VALID_COMPEN_VALUE_RANGE(x) ((x) <= 0x1FFu) + +/*!< Parameter valid check for data format */ +#define IS_VALID_DATA_FORMAT(x) \ +( (RtcDataFormatDec == (x)) || \ + (RtcDataFormatBcd == (x))) + +/*!< Parameter valid check for time second */ +#define IS_VALID_TIME_SECOND(x) ((x) <= 59u) + +/*!< Parameter valid check for time minute */ +#define IS_VALID_TIME_MINUTE(x) ((x) <= 59u) + +/*!< Parameter valid check for time hour */ +#define IS_VALID_TIME_HOUR12(x) (((x) >= 1u) && ((x) <= 12u)) +#define IS_VALID_TIME_HOUR24(x) ((x) <= 23u) + +/*!< Parameter valid check for date weekday */ +#define IS_VALID_DATE_WEEKDAY(x) ((x) <= 6u) + +/*!< Parameter valid check for date day */ +#define IS_VALID_DATE_DAY(x) (((x) >= 1u) && ((x) <= 31u)) + +/*!< Parameter valid check for date month */ +#define IS_VALID_DATE_MONTH(x) (((x) >= 1u) && ((x) <= 12u)) + +/*!< Parameter valid check for date year */ +#define IS_VALID_DATE_YEAR(x) ((x) <= 99u) + +/*!< Parameter valid check for hour12 am/pm */ +#define IS_VALID_HOUR12_AMPM(x) \ +( (RtcHour12Am == (x)) || \ + (RtcHour12Pm == (x))) + +/*!< Parameter valid check for alarm weekday */ +#define IS_VALID_ALARM_WEEKDAY(x) (((x) >= 1u) && ((x) <= 0x7Fu)) + +/*!< Parameter valid check for interrupt request type */ +#define IS_VALID_IRQ_TYPE(x) \ +( (RtcIrqPeriod == (x)) || \ + (RtcIrqAlarm == (x))) + +/*!< 12 hour format am/pm status bit */ +#define RTC_HOUR12_AMPM_MASK (0x20u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief De-Initialize RTC + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** \retval ErrorTimeout De-Initialize timeout + ** + ******************************************************************************/ +en_result_t RTC_DeInit(void) +{ + uint8_t u8RegSta; + uint32_t u32Timeout, u32TimeCnt = 0u; + en_result_t enRet = Ok; + + M4_RTC->CR0_f.RESET = 0u; + /* Waiting for normal count status or end of RTC software reset */ + u32Timeout = SystemCoreClock >> 8u; + do + { + u8RegSta = (uint8_t)M4_RTC->CR0_f.RESET; + u32TimeCnt++; + } while ((u32TimeCnt < u32Timeout) && (u8RegSta == 1u)); + + if (1u == u8RegSta) + { + enRet = ErrorTimeout; + } + else + { + /* Initialize all RTC registers */ + M4_RTC->CR0_f.RESET = 1u; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize RTC + ** + ** \param [in] pstcRtcInit Pointer to RTC init configuration + ** \arg See the struct #stc_rtc_init_t + ** + ** \retval Ok Process successfully done + ** \retval Error Parameter error + ** + ******************************************************************************/ +en_result_t RTC_Init(const stc_rtc_init_t *pstcRtcInit) +{ + en_result_t enRet = Ok; + + if (NULL == pstcRtcInit) + { + enRet = Error; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CLK_SOURCE_TYPE(pstcRtcInit->enClkSource)); + DDL_ASSERT(IS_VALID_PERIOD_INT_CONDITION(pstcRtcInit->enPeriodInt)); + DDL_ASSERT(IS_VALID_TIME_FORMAT(pstcRtcInit->enTimeFormat)); + DDL_ASSERT(IS_VALID_COMPEN_WAY(pstcRtcInit->enCompenWay)); + DDL_ASSERT(IS_VALID_COMPEN_VALUE_RANGE(pstcRtcInit->u16CompenVal)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcRtcInit->enCompenEn)); + + /* Configure clock */ + if (RtcClkLrc == pstcRtcInit->enClkSource) + { + M4_RTC->CR3_f.LRCEN = 1u; + } + M4_RTC->CR3_f.RCKSEL = pstcRtcInit->enClkSource; + + /* Configure control register */ + M4_RTC->CR1_f.PRDS = pstcRtcInit->enPeriodInt; + M4_RTC->CR1_f.AMPM = pstcRtcInit->enTimeFormat; + M4_RTC->CR1_f.ONEHZSEL = pstcRtcInit->enCompenWay; + + /* Configure clock error compensation register */ + M4_RTC->ERRCRH_f.COMP8 = ((uint32_t)pstcRtcInit->u16CompenVal >> 8u) & 0x01u; + M4_RTC->ERRCRL = (uint32_t)pstcRtcInit->u16CompenVal & 0x00FFu; + M4_RTC->ERRCRH_f.COMPEN = pstcRtcInit->enCompenEn; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enter RTC read/write mode + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** \retval ErrorTimeout Enter mode timeout + ** + ******************************************************************************/ +en_result_t RTC_EnterRwMode(void) +{ + uint8_t u8RegSta; + uint32_t u32Timeout, u32TimeCnt = 0u; + en_result_t enRet = Ok; + + /* Mode switch when RTC is running */ + if (0u != M4_RTC->CR1_f.START) + { + M4_RTC->CR2_f.RWREQ = 1u; + /* Waiting for RWEN bit set */ + u32Timeout = SystemCoreClock >> 8u; + do + { + u8RegSta = (uint8_t)M4_RTC->CR2_f.RWEN; + u32TimeCnt++; + } while ((u32TimeCnt < u32Timeout) && (u8RegSta == 0u)); + + if (0u == u8RegSta) + { + enRet = ErrorTimeout; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Exit RTC read/write mode + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** \retval ErrorTimeout Exit mode timeout + ** + ******************************************************************************/ +en_result_t RTC_ExitRwMode(void) +{ + uint8_t u8RegSta; + uint32_t u32Timeout, u32TimeCnt = 0u; + en_result_t enRet = Ok; + + /* Mode switch when RTC is running */ + if (0u != M4_RTC->CR1_f.START) + { + M4_RTC->CR2_f.RWREQ = 0u; + /* Waiting for RWEN bit reset */ + u32Timeout = SystemCoreClock >> 8u; + do + { + u8RegSta = (uint8_t)M4_RTC->CR2_f.RWEN; + u32TimeCnt++; + } while ((u32TimeCnt < u32Timeout) && (u8RegSta == 1u)); + + if (1u == u8RegSta) + { + enRet = ErrorTimeout; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable RTC count + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable RTC count + ** \arg Enable Enable RTC count + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_Cmd(en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + M4_RTC->CR1_f.START = enNewSta; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief RTC period interrupt config + ** + ** \param [in] enIntType Period interrupt request type + ** \arg RtcPeriodIntInvalid Period interrupt invalid + ** \arg RtcPeriodIntHalfSec 0.5 second period interrupt + ** \arg RtcPeriodIntOneSec 1 second period interrupt + ** \arg RtcPeriodIntOneMin 1 minute period interrupt + ** \arg RtcPeriodIntOneHour 1 hour period interrupt + ** \arg RtcPeriodIntOneDay 1 day period interrupt + ** \arg RtcPeriodIntOneMon 1 month period interrupt + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_PeriodIntConfig(en_rtc_period_int_type_t enIntType) +{ + uint8_t u8RtcSta; + uint8_t u8IntSta; + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_PERIOD_INT_CONDITION(enIntType)); + + u8RtcSta = (uint8_t)M4_RTC->CR1_f.START; + u8IntSta = (uint8_t)M4_RTC->CR2_f.PRDIE; + /* Disable period interrupt when START=1 and PRDIE=1 */ + if ((1u == u8IntSta) && (1u == u8RtcSta)) + { + M4_RTC->CR2_f.PRDIE = 0u; + } + M4_RTC->CR1_f.PRDS = enIntType; + + if ((1u == u8IntSta) && (1u == u8RtcSta)) + { + M4_RTC->CR2_f.PRDIE = 1u; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief RTC switch to low power mode + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidMode RTC count not start + ** \retval ErrorTimeout Switch timeout + ** + ******************************************************************************/ +en_result_t RTC_LowPowerSwitch(void) +{ + uint8_t u8RegSta; + uint32_t u32Timeout, u32TimeCnt = 0u; + en_result_t enRet = ErrorInvalidMode; + + /* Check RTC work status */ + if (0u != M4_RTC->CR1_f.START) + { + M4_RTC->CR2_f.RWREQ = 1u; + /* Waiting for RTC RWEN bit set */ + u32Timeout = SystemCoreClock / 100u; + do + { + u8RegSta = (uint8_t)M4_RTC->CR2_f.RWEN; + u32TimeCnt++; + } while ((u32TimeCnt < u32Timeout) && (u8RegSta == 0u)); + + if (0u == u8RegSta) + { + enRet = ErrorTimeout; + } + else + { + M4_RTC->CR2_f.RWREQ = 0u; + /* Waiting for RTC RWEN bit reset */ + u32TimeCnt = 0u; + do + { + u8RegSta = (uint8_t)M4_RTC->CR2_f.RWEN; + u32TimeCnt++; + } while ((u32TimeCnt < u32Timeout) && (u8RegSta == 1u)); + + if (1u == u8RegSta) + { + enRet = ErrorTimeout; + } + else + { + enRet = Ok; + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set RTC 1hz output compensation value + ** + ** \param [in] u16CompenVal Clock compensation value + ** \arg 0~0x1FF + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_SetClkCompenValue(uint16_t u16CompenVal) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_COMPEN_VALUE_RANGE(u16CompenVal)); + + M4_RTC->ERRCRH_f.COMP8 = ((uint32_t)u16CompenVal >> 8u) & 0x01u; + M4_RTC->ERRCRL = (uint32_t)u16CompenVal & 0x00FFu; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable clock compensation + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable RTC clock compensation + ** \arg Enable Enable RTC clock compensation + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_ClkCompenCmd(en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + M4_RTC->ERRCRH_f.COMPEN = enNewSta; + + return enRet; +} + + +/** + ******************************************************************************* + ** \brief Enable or disable RTC 1hz output + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable RTC 1hz output + ** \arg Enable Enable RTC 1hz output + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_OneHzOutputCmd(en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + M4_RTC->CR1_f.ONEHZOE = enNewSta; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set RTC current date and time + ** + ** \param [in] enFormat Date and time data format + ** \arg RtcDataFormatDec Decimal format + ** \arg RtcDataFormatBcd BCD format + ** + ** \param [in] pstcRtcDateTime Pointer to RTC date and time configuration + ** \arg See the struct #stc_rtc_date_time_t + ** + ** \param [in] enUpdateDateEn The function new state(Contain year/month/day/weekday) + ** \arg Disable Disable update RTC date + ** \arg Enable Enable update RTC date + ** + ** \param [in] enUpdateTimeEn The function new state(Contain hour/minute/second) + ** \arg Disable Disable update RTC time + ** \arg Enable Enable update RTC time + ** + ** \retval Ok Process successfully done + ** \retval Error Enter or exit read/write mode failed + ** \retval ErrorInvalidParameter Parameter enUpdateDateEn or enUpdateTimeEn invalid + ** + ******************************************************************************/ +en_result_t RTC_SetDateTime(en_rtc_data_format_t enFormat, const stc_rtc_date_time_t *pstcRtcDateTime, + en_functional_state_t enUpdateDateEn, en_functional_state_t enUpdateTimeEn) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_DATA_FORMAT(enFormat)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enUpdateDateEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enUpdateTimeEn)); + + /* Check update status */ + if (((Disable == enUpdateDateEn) && (Disable == enUpdateTimeEn)) || (NULL == pstcRtcDateTime)) + { + enRet = ErrorInvalidParameter; + } + else + { + /* Check the date parameters */ + if (Enable == enUpdateDateEn) + { + if (RtcDataFormatDec == enFormat) + { + DDL_ASSERT(IS_VALID_DATE_YEAR(pstcRtcDateTime->u8Year)); + DDL_ASSERT(IS_VALID_DATE_MONTH(pstcRtcDateTime->u8Month)); + DDL_ASSERT(IS_VALID_DATE_DAY(pstcRtcDateTime->u8Day)); + } + else + { + DDL_ASSERT(IS_VALID_DATE_YEAR(BCD2DEC(pstcRtcDateTime->u8Year))); + DDL_ASSERT(IS_VALID_DATE_MONTH(BCD2DEC(pstcRtcDateTime->u8Month))); + DDL_ASSERT(IS_VALID_DATE_DAY(BCD2DEC(pstcRtcDateTime->u8Day))); + } + DDL_ASSERT(IS_VALID_DATE_WEEKDAY(pstcRtcDateTime->u8Weekday)); + } + /* Check the time parameters */ + if (Enable == enUpdateTimeEn) + { + if (RtcDataFormatDec == enFormat) + { + if (RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) + { + DDL_ASSERT(IS_VALID_TIME_HOUR12(pstcRtcDateTime->u8Hour)); + DDL_ASSERT(IS_VALID_HOUR12_AMPM(pstcRtcDateTime->enAmPm)); + } + else + { + DDL_ASSERT(IS_VALID_TIME_HOUR24(pstcRtcDateTime->u8Hour)); + } + DDL_ASSERT(IS_VALID_TIME_MINUTE(pstcRtcDateTime->u8Minute)); + DDL_ASSERT(IS_VALID_TIME_SECOND(pstcRtcDateTime->u8Second)); + } + else + { + if (RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) + { + DDL_ASSERT(IS_VALID_TIME_HOUR12(BCD2DEC(pstcRtcDateTime->u8Hour))); + DDL_ASSERT(IS_VALID_HOUR12_AMPM(pstcRtcDateTime->enAmPm)); + } + else + { + DDL_ASSERT(IS_VALID_TIME_HOUR24(BCD2DEC(pstcRtcDateTime->u8Hour))); + } + DDL_ASSERT(IS_VALID_TIME_MINUTE(BCD2DEC(pstcRtcDateTime->u8Minute))); + DDL_ASSERT(IS_VALID_TIME_SECOND(BCD2DEC(pstcRtcDateTime->u8Second))); + } + } + + /* Enter read/write mode */ + if (RTC_EnterRwMode() == ErrorTimeout) + { + enRet = Error; + } + else + { + /* Update date */ + if (Enable == enUpdateDateEn) + { + if (RtcDataFormatDec == enFormat) + { + M4_RTC->YEAR = DEC2BCD((uint32_t)pstcRtcDateTime->u8Year); + M4_RTC->MON = DEC2BCD((uint32_t)pstcRtcDateTime->u8Month); + M4_RTC->DAY = DEC2BCD((uint32_t)pstcRtcDateTime->u8Day); + } + else + { + M4_RTC->YEAR = pstcRtcDateTime->u8Year; + M4_RTC->MON = pstcRtcDateTime->u8Month; + M4_RTC->DAY = pstcRtcDateTime->u8Day; + } + M4_RTC->WEEK = pstcRtcDateTime->u8Weekday; + } + /* Update time */ + if (Enable == enUpdateTimeEn) + { + if (RtcDataFormatDec == enFormat) + { + if ((RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) && + (RtcHour12Pm == pstcRtcDateTime->enAmPm)) + { + M4_RTC->HOUR = DEC2BCD((uint32_t)pstcRtcDateTime->u8Hour) | RTC_HOUR12_AMPM_MASK; + } + else + { + M4_RTC->HOUR = DEC2BCD((uint32_t)pstcRtcDateTime->u8Hour); + } + M4_RTC->MIN = DEC2BCD((uint32_t)pstcRtcDateTime->u8Minute); + M4_RTC->SEC = DEC2BCD((uint32_t)pstcRtcDateTime->u8Second); + } + else + { + if ((RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) && + (RtcHour12Pm == pstcRtcDateTime->enAmPm)) + { + M4_RTC->HOUR = (uint32_t)pstcRtcDateTime->u8Hour | RTC_HOUR12_AMPM_MASK; + } + else + { + M4_RTC->HOUR = (uint32_t)pstcRtcDateTime->u8Hour; + } + M4_RTC->MIN = pstcRtcDateTime->u8Minute; + M4_RTC->SEC = pstcRtcDateTime->u8Second; + } + } + /* Exit read/write mode */ + if (RTC_ExitRwMode() == ErrorTimeout) + { + enRet = Error; + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get RTC current date and time + ** + ** \param [in] enFormat Date and time data format + ** \arg RtcDataFormatDec Decimal format + ** \arg RtcDataFormatBcd BCD format + ** + ** \param [out] pstcRtcDateTime Pointer to RTC date and time configuration + ** \arg See the struct #stc_rtc_date_time_t + ** + ** \retval Ok Process successfully done + ** \retval Error Enter or exit read/write mode failed + ** + ******************************************************************************/ +en_result_t RTC_GetDateTime(en_rtc_data_format_t enFormat, stc_rtc_date_time_t *pstcRtcDateTime) +{ + en_result_t enRet = Ok; + + if(NULL == pstcRtcDateTime) + { + enRet = Error; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_DATA_FORMAT(enFormat)); + + /* Enter read/write mode */ + if (RTC_EnterRwMode() == ErrorTimeout) + { + enRet = Error; + } + else + { + /* Get RTC date and time registers */ + pstcRtcDateTime->u8Year = (uint8_t)(M4_RTC->YEAR); + pstcRtcDateTime->u8Month = (uint8_t)(M4_RTC->MON); + pstcRtcDateTime->u8Day = (uint8_t)(M4_RTC->DAY); + pstcRtcDateTime->u8Weekday = (uint8_t)(M4_RTC->WEEK); + pstcRtcDateTime->u8Hour = (uint8_t)(M4_RTC->HOUR); + pstcRtcDateTime->u8Minute = (uint8_t)(M4_RTC->MIN); + pstcRtcDateTime->u8Second = (uint8_t)(M4_RTC->SEC); + if (RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) + { + if (RTC_HOUR12_AMPM_MASK == (pstcRtcDateTime->u8Hour & RTC_HOUR12_AMPM_MASK)) + { + pstcRtcDateTime->u8Hour &= (uint8_t)(~RTC_HOUR12_AMPM_MASK); + pstcRtcDateTime->enAmPm = RtcHour12Pm; + } + else + { + pstcRtcDateTime->enAmPm = RtcHour12Am; + } + } + + /* Check decimal format*/ + if (RtcDataFormatDec == enFormat) + { + pstcRtcDateTime->u8Year = BCD2DEC(pstcRtcDateTime->u8Year); + pstcRtcDateTime->u8Month = BCD2DEC(pstcRtcDateTime->u8Month); + pstcRtcDateTime->u8Day = BCD2DEC(pstcRtcDateTime->u8Day); + pstcRtcDateTime->u8Hour = BCD2DEC(pstcRtcDateTime->u8Hour); + pstcRtcDateTime->u8Minute = BCD2DEC(pstcRtcDateTime->u8Minute); + pstcRtcDateTime->u8Second = BCD2DEC(pstcRtcDateTime->u8Second); + } + + /* exit read/write mode */ + if (RTC_ExitRwMode() == ErrorTimeout) + { + enRet = Error; + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set RTC alarm time + ** + ** \param [in] enFormat Date and time data format + ** \arg RtcDataFormatDec Decimal format + ** \arg RtcDataFormatBcd BCD format + ** + ** \param [in] pstcRtcAlarmTime Pointer to RTC alarm time configuration + ** \arg See the struct #stc_rtc_alarm_time_t + ** + ** \retval Ok Process successfully done + ** \retval Error Parameter error + ** + ******************************************************************************/ +en_result_t RTC_SetAlarmTime(en_rtc_data_format_t enFormat, const stc_rtc_alarm_time_t *pstcRtcAlarmTime) +{ + en_result_t enRet = Ok; + + if (NULL == pstcRtcAlarmTime) + { + enRet = Error; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_DATA_FORMAT(enFormat)); + + if (RtcDataFormatDec == enFormat) + { + if (RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) + { + DDL_ASSERT(IS_VALID_TIME_HOUR12(pstcRtcAlarmTime->u8Hour)); + DDL_ASSERT(IS_VALID_HOUR12_AMPM(pstcRtcAlarmTime->enAmPm)); + } + else + { + DDL_ASSERT(IS_VALID_TIME_HOUR24(pstcRtcAlarmTime->u8Hour)); + } + DDL_ASSERT(IS_VALID_TIME_MINUTE(pstcRtcAlarmTime->u8Minute)); + } + else + { + if (RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) + { + DDL_ASSERT(IS_VALID_TIME_HOUR12(BCD2DEC(pstcRtcAlarmTime->u8Hour))); + DDL_ASSERT(IS_VALID_HOUR12_AMPM(pstcRtcAlarmTime->enAmPm)); + } + else + { + DDL_ASSERT(IS_VALID_TIME_HOUR24(BCD2DEC(pstcRtcAlarmTime->u8Hour))); + } + DDL_ASSERT(IS_VALID_TIME_MINUTE(BCD2DEC(pstcRtcAlarmTime->u8Minute))); + } + DDL_ASSERT(IS_VALID_ALARM_WEEKDAY(pstcRtcAlarmTime->u8Weekday)); + + /* Configure alarm registers */ + if (RtcDataFormatDec == enFormat) + { + if ((RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) && + (RtcHour12Pm == pstcRtcAlarmTime->enAmPm)) + { + M4_RTC->ALMHOUR = DEC2BCD((uint32_t)pstcRtcAlarmTime->u8Hour) | RTC_HOUR12_AMPM_MASK; + } + else + { + M4_RTC->ALMHOUR = DEC2BCD((uint32_t)pstcRtcAlarmTime->u8Hour); + } + M4_RTC->ALMMIN = DEC2BCD((uint32_t)pstcRtcAlarmTime->u8Minute); + } + else + { + if ((RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) && + (RtcHour12Pm == pstcRtcAlarmTime->enAmPm)) + { + M4_RTC->ALMHOUR = (uint32_t)pstcRtcAlarmTime->u8Hour | RTC_HOUR12_AMPM_MASK; + } + else + { + M4_RTC->ALMHOUR = (uint32_t)pstcRtcAlarmTime->u8Hour; + } + M4_RTC->ALMMIN = pstcRtcAlarmTime->u8Minute; + } + M4_RTC->ALMWEEK = pstcRtcAlarmTime->u8Weekday; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get RTC alarm time + ** + ** \param [in] enFormat Date and time data format + ** \arg RtcDataFormatDec Decimal format + ** \arg RtcDataFormatBcd BCD format + ** + ** \param [out] pstcRtcAlarmTime Pointer to RTC alarm time configuration + ** \arg See the struct #stc_rtc_alarm_time_t + ** + ** \retval Ok Process successfully done + ** \retval Error Parameter error + ** + ******************************************************************************/ +en_result_t RTC_GetAlarmTime(en_rtc_data_format_t enFormat, stc_rtc_alarm_time_t *pstcRtcAlarmTime) +{ + en_result_t enRet = Ok; + + if(NULL == pstcRtcAlarmTime) + { + enRet = Error; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_DATA_FORMAT(enFormat)); + + /* Get RTC date and time register */ + pstcRtcAlarmTime->u8Weekday = (uint8_t)M4_RTC->ALMWEEK; + pstcRtcAlarmTime->u8Minute = (uint8_t)M4_RTC->ALMMIN; + pstcRtcAlarmTime->u8Hour = (uint8_t)M4_RTC->ALMHOUR; + if (RtcTimeFormat12Hour == M4_RTC->CR1_f.AMPM) + { + if ((pstcRtcAlarmTime->u8Hour & RTC_HOUR12_AMPM_MASK) == RTC_HOUR12_AMPM_MASK) + { + pstcRtcAlarmTime->u8Hour &= (uint8_t)(~RTC_HOUR12_AMPM_MASK); + pstcRtcAlarmTime->enAmPm = RtcHour12Pm; + } + else + { + pstcRtcAlarmTime->enAmPm = RtcHour12Am; + } + } + + /* Check decimal format*/ + if (RtcDataFormatDec == enFormat) + { + pstcRtcAlarmTime->u8Hour = BCD2DEC(pstcRtcAlarmTime->u8Hour); + pstcRtcAlarmTime->u8Minute = BCD2DEC(pstcRtcAlarmTime->u8Minute); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable RTC alarm function + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable RTC alarm function + ** \arg Enable Enable RTC alarm function + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_AlarmCmd(en_functional_state_t enNewSta) +{ + uint8_t u8RtcSta; + uint8_t u8IntSta; + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + u8RtcSta = (uint8_t)M4_RTC->CR1_f.START; + u8IntSta = (uint8_t)M4_RTC->CR2_f.ALMIE; + /* Disable alarm interrupt and clear alarm flag when START=1 and ALMIE=1 */ + if ((1u == u8IntSta) && (1u == u8RtcSta)) + { + M4_RTC->CR2_f.ALMIE = 0u; + } + M4_RTC->CR2_f.ALME = enNewSta; + + if ((1u == u8IntSta) && (1u == u8RtcSta)) + { + M4_RTC->CR1_f.ALMFCLR = 0u; + M4_RTC->CR2_f.ALMIE = u8IntSta; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable RTC interrupt request + ** + ** \param [in] enIrq RTC interrupt request type + ** \arg RtcIrqPeriod Period count interrupt request + ** \arg RtcIrqAlarm Alarm interrupt request + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable interrupt request + ** \arg Enable Enable interrupt request + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_IrqCmd(en_rtc_irq_type_t enIrq, en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_IRQ_TYPE(enIrq)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + /* enable/disable interrupt */ + switch (enIrq) + { + case RtcIrqPeriod: + M4_RTC->CR2_f.PRDIE = enNewSta; + break; + case RtcIrqAlarm: + M4_RTC->CR2_f.ALMIE = enNewSta; + break; + default: + break; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get RTC Alarm flag status + ** + ** \param [in] None + ** + ** \retval Set Flag is set + ** \retval Reset Flag is reset + ** + ******************************************************************************/ +en_flag_status_t RTC_GetAlarmFlag(void) +{ + return (en_flag_status_t)(M4_RTC->CR2_f.ALMF); +} + +/** + ******************************************************************************* + ** \brief Clear RTC Alarm flag status + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t RTC_ClearAlarmFlag(void) +{ + en_result_t enRet = Ok; + + M4_RTC->CR1_f.ALMFCLR = 0u; + + return enRet; +} + +//@} // RtcGroup + +#endif /* DDL_RTC_ENABLE */ + +/****************************************************************************** + * EOF (not truncated) + *****************************************************************************/ diff --git a/driver/src/hc32f460_sdioc.c b/driver/src/hc32f460_sdioc.c new file mode 100644 index 0000000..4a70252 --- /dev/null +++ b/driver/src/hc32f460_sdioc.c @@ -0,0 +1,2222 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_sdioc.c + ** + ** A detailed description is available at + ** @link SdiocGroup SDIOC description @endlink + ** + ** - 2018-11-11 CDT First version for Device Driver Library of SDIOC. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_sdioc.h" +#include "hc32f460_utility.h" + +#if (DDL_SDIOC_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup SdiocGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief SDIOC internal data + ** + ******************************************************************************/ +typedef struct stc_sdioc_intern_data +{ + stc_sdioc_normal_irq_cb_t stcNormalIrqCb; ///< Normal irq callback function structure + + stc_sdioc_error_irq_cb_t stcErrorIrqCb; ///< Error irq callback function structure +} stc_sdioc_intern_data_t; + +/** + ******************************************************************************* + ** \brief SDIOC instance data + ** + ******************************************************************************/ +typedef struct stc_sdioc_instance_data +{ + const M4_SDIOC_TypeDef *SDIOCx; ///< pointer to registers of an instance + + stc_sdioc_intern_data_t stcInternData; ///< module internal data of instance +} stc_sdioc_instance_data_t; + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter valid check for SDIOC Instances. */ +#define IS_VALID_SDIOC(__SDIOCx__) \ +( (M4_SDIOC1 == (__SDIOCx__)) || \ + (M4_SDIOC2 == (__SDIOCx__))) + +/*!< Parameter valid check for SDIOC mode. */ +#define IS_VALID_SDIOC_MODE(x) \ +( (SdiocModeSD == (x)) || \ + (SdiocModeMMC == (x))) + +/*!< Parameter valid check for SDIOC Response Register. */ +#define IS_VALID_SDIOC_RESP(x) \ +( (SdiocRegResp01 == (x)) || \ + (SdiocRegResp23 == (x)) || \ + (SdiocRegResp45 == (x)) || \ + (SdiocRegResp67 == (x))) + +/*!< Parameter valid check for SDIOC bus width. */ +#define IS_VALID_SDIOC_BUS_WIDTH(x) \ +( (SdiocBusWidth1Bit == (x)) || \ + (SdiocBusWidth4Bit == (x)) || \ + (SdiocBusWidth8Bit == (x))) + +/*!< Parameter valid check for SDIOC speed mode. */ +#define IS_VALID_SDIOC_SPEED_MODE(x) \ +( (SdiocHighSpeedMode == (x)) || \ + (SdiocNormalSpeedMode == (x))) + +/*!< Parameter valid check for SDIOC Clock division. */ +#define IS_VALID_SDIOC_CLK_DIV(x) \ +( (SdiocClkDiv_1 == (x)) || \ + (SdiocClkDiv_2 == (x)) || \ + (SdiocClkDiv_4 == (x)) || \ + (SdiocClkDiv_8 == (x)) || \ + (SdiocClkDiv_16 == (x)) || \ + (SdiocClkDiv_32 == (x)) || \ + (SdiocClkDiv_64 == (x)) || \ + (SdiocClkDiv_128 == (x)) || \ + (SdiocClkDiv_256 == (x))) + +/*!< Parameter valid check for SDIOC command type. */ +#define IS_VALID_SDIOC_CMD_TYPE(x) \ +( (SdiocCmdAbort == (x)) || \ + (SdiocCmdResume == (x)) || \ + (SdiocCmdNormal == (x)) || \ + (SdiocCmdSuspend == (x))) + +/*!< Parameter valid check for SDIOC data transfer direction. */ +#define IS_VALID_SDIOC_TRANSFER_DIR(x) \ +( (SdiocTransferToCard == (x)) || \ + (SdiocTransferToHost == (x))) + +/*!< Parameter valid check for SDIOC software reset type. */ +#define IS_VALID_SDIOC_SWRESETTYPE(x) \ +( (SdiocSwResetAll == (x)) || \ + (SdiocSwResetCmdLine == (x)) || \ + (SdiocSwResetDatLine == (x))) + +/*!< Parameter valid check for SDIOC data transfer mode. */ +#define IS_VALID_SDIOC_TRANSFER_MODE(x) \ +( (SdiocTransferSingle == (x)) || \ + (SdiocTransferInfinite == (x)) || \ + (SdiocTransferMultiple == (x)) || \ + (SdiocTransferStopMultiple == (x))) + +/*!< Parameter valid check for SDIOC data timeout. */ +#define IS_VALID_SDIOC_DATA_TIMEOUT(x) \ +( (SdiocDtoSdclk_2_13 == (x)) || \ + (SdiocDtoSdclk_2_14 == (x)) || \ + (SdiocDtoSdclk_2_15 == (x)) || \ + (SdiocDtoSdclk_2_16 == (x)) || \ + (SdiocDtoSdclk_2_17 == (x)) || \ + (SdiocDtoSdclk_2_18 == (x)) || \ + (SdiocDtoSdclk_2_19 == (x)) || \ + (SdiocDtoSdclk_2_20 == (x)) || \ + (SdiocDtoSdclk_2_21 == (x)) || \ + (SdiocDtoSdclk_2_22 == (x)) || \ + (SdiocDtoSdclk_2_23 == (x)) || \ + (SdiocDtoSdclk_2_24 == (x)) || \ + (SdiocDtoSdclk_2_25 == (x)) || \ + (SdiocDtoSdclk_2_26 == (x)) || \ + (SdiocDtoSdclk_2_27 == (x))) + +/*!< Parameter valid check for SDIOC Response type name. */ +#define IS_VALID_SDIOC_RESP_TYPE_NAME(x) \ +( (SdiocCmdRspR1 == (x)) || \ + (SdiocCmdRspR1b == (x)) || \ + (SdiocCmdRspR2 == (x)) || \ + (SdiocCmdRspR3 == (x)) || \ + (SdiocCmdRspR4 == (x)) || \ + (SdiocCmdRspR5 == (x)) || \ + (SdiocCmdRspR5b == (x)) || \ + (SdiocCmdRspR6 == (x)) || \ + (SdiocCmdRspR7 == (x)) || \ + (SdiocCmdNoRsp == (x))) + +/*!< Parameter valid check for SDIOC data timeout. */ +#define IS_VALID_SDIOC_HOST_STATUS(x) \ +( (SdiocCmdPinLvl == (x)) || \ + (SdiocData0PinLvl == (x)) || \ + (SdiocData1PinLvl == (x)) || \ + (SdiocData2PinLvl == (x)) || \ + (SdiocData3PinLvl == (x)) || \ + (SdiocCardInserted == (x)) || \ + (SdiocDataLineActive == (x)) || \ + (SdiocCardStateStable == (x)) || \ + (SdiocBufferReadEnble == (x)) || \ + (SdiocBufferWriteEnble == (x)) || \ + (SdiocCardDetectPinLvl == (x)) || \ + (SdiocCommandInhibitCmd == (x)) || \ + (SdiocWriteProtectPinLvl == (x)) || \ + (SdiocCommandInhibitData == (x)) || \ + (SdiocReadTransferActive == (x)) || \ + (SdiocWriteTransferActive == (x))) + +/*!< Parameter valid check for SDIOC normal interrupt. */ +#define IS_VALID_SDIOC_NOR_INT(x) \ +( (SdiocCardInt == (x)) || \ + (SdiocErrorInt == (x)) || \ + (SdiocCardRemoval == (x)) || \ + (SdiocBlockGapEvent == (x)) || \ + (SdiocCardInsertedInt == (x)) || \ + (SdiocCommandComplete == (x)) || \ + (SdiocBufferReadReady == (x)) || \ + (SdiocBufferWriteReady == (x)) || \ + (SdiocTransferComplete == (x))) + +/*!< Parameter valid check for SDIOC error interrupt. */ +#define IS_VALID_SDIOC_ERR_INT(x) \ +( (SdiocCmdCrcErr == (x)) || \ + (SdiocDataCrcErr == (x)) || \ + (SdiocCmdIndexErr == (x)) || \ + (SdiocCmdEndBitErr == (x)) || \ + (SdiocAutoCmd12Err == (x)) || \ + (SdiocCmdTimeoutErr == (x)) || \ + (SdiocDataEndBitErr == (x)) || \ + (SdiocDataTimeoutErr == (x))) + +/*!< Parameter valid check for SDIOC auto CMD12 error status. */ +#define IS_VALID_SDIOC_AUTOCMD_ERR(x) \ +( (SdiocCmdNotIssuedErr == (x)) || \ + (SdiocAutoCmd12CrcErr == (x)) || \ + (SdiocAutoCmd12Timeout == (x)) || \ + (SdiocAutoCmd12IndexErr == (x)) || \ + (SdiocAutoCmd12EndBitErr == (x)) || \ + (SdiocAutoCmd12NotExecuted == (x))) + +/*!< Parameter valid check for SDIOC detect card signal. */ +#define IS_VALID_SDIOC_DETECT_SIG(x) \ +( (SdiocSdcdPinLevel == (x)) || \ + (SdiocCardDetectTestLevel == (x))) + +/*!< Parameter valid check for SDIOC data block count value. */ +#define IS_VALID_SDIOC_BLKCNT(x) ((x) != 0u) + +/*!< Parameter valid check for SDIOC data block size value. */ +#define IS_VALID_SDIOC_BLKSIZE(x) (!((x) & 0xF000ul)) + +/*!< Parameter valid check for SDIOC command value. */ +#define IS_VALID_SDIOC_CMD_VAL(x) (!(0xC0u & (x))) + +/*!< Parameter valid check for buffer address. */ +#define IS_VALID_TRANSFER_BUF_ALIGN(x) (!((SDIOC_BUF_ALIGN_SIZE-1ul) & ((uint32_t)(x)))) + +/*!< Parameter valid check for SDIOC command value. */ +#define IS_VALID_TRANSFER_BUF_LEN(x) (!((SDIOC_BUF_ALIGN_SIZE-1ul) & ((uint32_t)(x)))) + +/*!< SDIOC unit max count value. */ +#define SDIOC_UNIT_MAX_CNT (ARRAY_SZ(m_astcSdiocInstanceDataLut)) + +/*!< SDIOC default sdclk frequency. */ +#define SDIOC_SDCLK_400K (400000ul) + +/*!< Get the specified register address of the specified SDIOC unit */ +#define SDIOC_ARG01(__SDIOCx__) ((uint32_t)(&((__SDIOCx__)->ARG0))) +#define SDIOC_BUF01(__SDIOCx__) ((uint32_t)(&((__SDIOCx__)->BUF0))) +#define SDIOC_RESPx(__SDIOCx__, RESP_REG) ((uint32_t)(&((__SDIOCx__)->RESP0)) + (uint32_t)(RESP_REG)) + +/* SDIOC buffer align size */ +#define SDIOC_BUF_ALIGN_SIZE (4ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static en_sdioc_clk_div_t SdiocGetClkDiv(uint32_t u32Exclk, + uint32_t u32SdiocClkFreq); +static stc_sdioc_intern_data_t* SdiocGetInternDataPtr(const M4_SDIOC_TypeDef *SDIOCx); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Get SDIOC clock division. + ** + ** \param [in] u32Exclk Exclk frequency + ** \param [in] u32ClkFreq SDIOC clock frequency + ** + ** \retval SdiocClkDiv_1 EXCLK/1 + ** \retval SdiocClkDiv_2 EXCLK/2 + ** \retval SdiocClkDiv_4 EXCLK/4 + ** \retval SdiocClkDiv_8 EXCLK/8 + ** \retval SdiocClkDiv_16 EXCLK/16 + ** \retval SdiocClkDiv_32 EXCLK/32 + ** \retval SdiocClkDiv_64 EXCLK/64 + ** \retval SdiocClkDiv_128 EXCLK/128 + ** \retval SdiocClkDiv_256 EXCLK/256 + ** + ******************************************************************************/ +static en_sdioc_clk_div_t SdiocGetClkDiv(uint32_t u32Exclk, + uint32_t u32ClkFreq) +{ + uint32_t u32SdClkDiv = 0ul; + en_sdioc_clk_div_t enClockDiv = SdiocClkDiv_256; + + if(0ul != u32ClkFreq) + { + u32SdClkDiv = u32Exclk / u32ClkFreq; + if (u32Exclk % u32ClkFreq) + { + u32SdClkDiv++; + } + + if ((128ul < u32SdClkDiv) && (u32SdClkDiv <= 256ul)) + { + enClockDiv = SdiocClkDiv_256; + } + else if ((64ul < u32SdClkDiv) && (u32SdClkDiv <= 128ul)) + { + enClockDiv = SdiocClkDiv_128; + } + else if ((32ul < u32SdClkDiv) && (u32SdClkDiv <= 64ul)) + { + enClockDiv = SdiocClkDiv_64; + } + else if ((16ul < u32SdClkDiv) && (u32SdClkDiv <= 32ul)) + { + enClockDiv = SdiocClkDiv_32; + } + else if ((16ul < u32SdClkDiv) && (u32SdClkDiv <= 32ul)) + { + enClockDiv = SdiocClkDiv_32; + } + else if ((8ul < u32SdClkDiv) && (u32SdClkDiv <= 16ul)) + { + enClockDiv = SdiocClkDiv_16; + } + else if ((4ul < u32SdClkDiv) && (u32SdClkDiv <= 8ul)) + { + enClockDiv = SdiocClkDiv_8; + } + else if ((2ul < u32SdClkDiv) && (u32SdClkDiv <= 4ul)) + { + enClockDiv = SdiocClkDiv_4; + } + else if ((1ul < u32SdClkDiv) && (u32SdClkDiv <= 2ul)) + { + enClockDiv = SdiocClkDiv_2; + } + else + { + enClockDiv = SdiocClkDiv_1; + } + } + + return enClockDiv; +} + +/** + ******************************************************************************* + ** \brief Return the internal data for a certain SDIOC instance. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval Pointer to internal data or NULL if instance is not enabled (or not known) + ** + ******************************************************************************/ +static stc_sdioc_intern_data_t* SdiocGetInternDataPtr(const M4_SDIOC_TypeDef *SDIOCx) +{ + uint8_t i; + stc_sdioc_intern_data_t *pstcInternData = NULL; + static stc_sdioc_instance_data_t m_astcSdiocInstanceDataLut[2]; + + m_astcSdiocInstanceDataLut[0].SDIOCx = M4_SDIOC1; + m_astcSdiocInstanceDataLut[1].SDIOCx = M4_SDIOC2; + + if (NULL != SDIOCx) + { + for (i = 0u; i < SDIOC_UNIT_MAX_CNT; i++) + { + if (SDIOCx == m_astcSdiocInstanceDataLut[i].SDIOCx) + { + pstcInternData = &m_astcSdiocInstanceDataLut[i].stcInternData; + break; + } + } + } + + return pstcInternData; +} + +/** + ******************************************************************************* + ** \brief SDIOC instance interrupt service routine + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval None + ** + ******************************************************************************/ +void SDIOC_IrqHandler(M4_SDIOC_TypeDef *SDIOCx) +{ + stc_sdioc_intern_data_t *pstcSdiocInternData = SdiocGetInternDataPtr(SDIOCx); + + /* Check for NULL pointer */ + if (NULL != pstcSdiocInternData) + { + /**************** Normal interrupt handler ****************/ + if (1u == SDIOCx->NORINTST_f.CC) /* Command complete */ + { + SDIOCx->NORINTST_f.CC = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnCommandCompleteIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnCommandCompleteIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.TC) /* Transfer complete */ + { + SDIOCx->NORINTST_f.TC = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnTransferCompleteIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnTransferCompleteIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.BGE) /* Block gap event */ + { + SDIOCx->NORINTST_f.BGE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnBlockGapIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnBlockGapIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.BWR) /* Buffer write ready */ + { + SDIOCx->NORINTST_f.BWR = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnBufferWriteReadyIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnBufferWriteReadyIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.BRR) /* Buffer read ready */ + { + SDIOCx->NORINTST_f.BRR = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnBufferReadReadyIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnBufferReadReadyIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.CIST) /* Card insertion */ + { + SDIOCx->NORINTST_f.CIST = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnCardInsertIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnCardInsertIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.CRM) /* Card removal */ + { + SDIOCx->NORINTST_f.CRM = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnCardRemovalIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnCardRemovalIrqCb(); + } + } + + if (1u == SDIOCx->NORINTST_f.CINT) /* Card interrupt */ + { + SDIOCx->NORINTST_f.CINT = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcNormalIrqCb.pfnCardIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnCardIrqCb(); + } + } + + /**************** Error interrupt handler ****************/ + if (1u == SDIOCx->ERRINTST_f.CTOE) /* Command timeout error */ + { + SDIOCx->ERRINTST_f.CTOE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnCmdTimeoutErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnCmdTimeoutErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.CCE) /* Command CRC error */ + { + SDIOCx->ERRINTST_f.CCE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnCmdCrcErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnCmdCrcErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.CEBE) /* Command end bit error */ + { + SDIOCx->ERRINTST_f.CEBE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnCmdEndBitErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnCmdEndBitErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.CIE) /* Command index error */ + { + SDIOCx->ERRINTST_f.CIE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnCmdIndexErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnCmdIndexErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.DTOE) /* Data timeout error */ + { + SDIOCx->ERRINTST_f.DTOE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnDataTimeoutErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnDataTimeoutErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.DEBE) /* Data end bit error */ + { + SDIOCx->ERRINTST_f.DEBE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnDataEndBitErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnDataEndBitErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.DCE) /* Data CRC error */ + { + SDIOCx->ERRINTST_f.DCE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnDataCrcErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnDataCrcErrIrqCb(); + } + } + + if (1u == SDIOCx->ERRINTST_f.ACE) /* Auto CMD12 error */ + { + SDIOCx->ERRINTST_f.ACE = 1u; /* Clear interrupt flag */ + if (NULL != pstcSdiocInternData->stcErrorIrqCb.pfnAutoCmdErrIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnAutoCmdErrIrqCb(); + } + } + } +} + +/** + ******************************************************************************* + ** \brief Initializes a SDIOC. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] pstcInitCfg Pointer to SDIOC configure structure + ** \arg This parameter detail refer @ref stc_sdioc_init_t + ** + ** \retval Ok SDIOC initialized normally + ** \retval ErrorTimeout SDIOCx reset timeout + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SDIOCx is invalid + ** - pstcInitCfg == NULL + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t SDIOC_Init(M4_SDIOC_TypeDef *SDIOCx, + const stc_sdioc_init_t *pstcInitCfg) +{ + __IO uint32_t i = 0ul; + uint32_t u32Exclk = 0ul; + uint32_t u32Cnt = SystemCoreClock / 100ul; + en_result_t enRet = ErrorInvalidParameter; + stc_sdioc_intern_data_t *pstcSdiocInternData = NULL; + + /* Get pointer to internal data structure. */ + pstcSdiocInternData = SdiocGetInternDataPtr(SDIOCx); + if (NULL != pstcSdiocInternData) /* Check for instance available or not */ + { + /* Reset all */ + SDIOCx->SFTRST_f.RSTA = 1u; + while (0u != SDIOCx->SFTRST_f.RSTA) /* Wait until reset finish */ + { + if (i++ > u32Cnt) + { + break; + } + } + + if (i < u32Cnt) + { + /* Get EXCLK frequency */ + u32Exclk = SystemCoreClock / (1ul << M4_SYSREG->CMU_SCFGR_f.EXCKS); + + SDIOCx->CLKCON_f.FS = SdiocGetClkDiv(u32Exclk, SdiocClk400K); + SDIOCx->CLKCON_f.CE = (uint16_t)1u; + SDIOCx->CLKCON_f.ICE = (uint16_t)1u; + SDIOCx->PWRCON_f.PWON = (uint8_t)1u; /* Power on */ + + /* Enable all status */ + SDIOCx->ERRINTST = (uint16_t)0x017Fu; /* Clear Error interrupt status */ + SDIOCx->ERRINTSTEN = (uint16_t)0x017Fu; /* Enable Error interrupt status */ + SDIOCx->NORINTST = (uint16_t)0x00F7u; /* Clear Normal interrupt status */ + SDIOCx->NORINTSTEN = (uint16_t)0x01F7u; /* Enable Normal interrupt status */ + + /* Enable normal interrupt signal */ + if (NULL != pstcInitCfg) + { + if (NULL != pstcInitCfg->pstcNormalIrqEn) + { + SDIOCx->NORINTSGEN = pstcInitCfg->pstcNormalIrqEn->u16NormalIntsgEn; + } + + /* Set normal interrupt callback functions */ + if (NULL != pstcInitCfg->pstcNormalIrqCb) + { + pstcSdiocInternData->stcNormalIrqCb.pfnCommandCompleteIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnCommandCompleteIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnTransferCompleteIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnTransferCompleteIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnBlockGapIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnBlockGapIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnBufferWriteReadyIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnBufferWriteReadyIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnBufferReadReadyIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnBufferReadReadyIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnCardInsertIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnCardInsertIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnCardRemovalIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnCardRemovalIrqCb; + pstcSdiocInternData->stcNormalIrqCb.pfnCardIrqCb = pstcInitCfg->pstcNormalIrqCb->pfnCardIrqCb; + } + + /* Enable error interrupt signal */ + if (NULL != pstcInitCfg->pstcErrorIrqEn) + { + SDIOCx->ERRINTSGEN = pstcInitCfg->pstcErrorIrqEn->u16ErrorIntsgEn; + } + + /* Set error interrupt callback functions */ + if (NULL != pstcInitCfg->pstcErrorIrqCb) + { + pstcSdiocInternData->stcErrorIrqCb.pfnCmdTimeoutErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnCmdTimeoutErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnCmdCrcErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnCmdCrcErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnCmdEndBitErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnCmdEndBitErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnCmdIndexErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnCmdIndexErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnDataTimeoutErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnDataTimeoutErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnDataEndBitErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnDataEndBitErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnDataCrcErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnDataCrcErrIrqCb; + pstcSdiocInternData->stcErrorIrqCb.pfnAutoCmdErrIrqCb = pstcInitCfg->pstcErrorIrqCb->pfnAutoCmdErrIrqCb; + } + } + enRet = Ok; + } + else + { + enRet = ErrorTimeout; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initializes the specified SDIOC unit. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval Ok De-Initialize successfully. + ** \retval ErrorTimeout SDIOCx reset timeout. + ** \retval ErrorInvalidParameter SDIOCx is invalid. + ** + ******************************************************************************/ +en_result_t SDIOC_DeInit(M4_SDIOC_TypeDef *SDIOCx) +{ + __IO uint32_t i = 0ul; + uint32_t u32Cnt = SystemCoreClock / 100ul; + en_result_t enRet = ErrorInvalidParameter; + stc_sdioc_intern_data_t *pstcSdiocInternData = NULL; + + /* Get pointer to internal data structure. */ + pstcSdiocInternData = SdiocGetInternDataPtr(SDIOCx); + if (NULL != pstcSdiocInternData) /* Check for instance available or not */ + { + /* Reset all */ + SDIOCx->SFTRST_f.RSTA = 1u; + while (0u != SDIOCx->SFTRST_f.RSTA) /* Wait until reset finish */ + { + if (i++ > u32Cnt) + { + break; + } + } + + if (i < u32Cnt) + { + /* Set normal interrupt callback functions */ + pstcSdiocInternData->stcNormalIrqCb.pfnCommandCompleteIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnTransferCompleteIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnBlockGapIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnBufferWriteReadyIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnBufferReadReadyIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnCardInsertIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnCardRemovalIrqCb = NULL; + pstcSdiocInternData->stcNormalIrqCb.pfnCardIrqCb = NULL; + + /* Set error interrupt callback functions */ + pstcSdiocInternData->stcErrorIrqCb.pfnCmdTimeoutErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnCmdCrcErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnCmdEndBitErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnCmdIndexErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnDataTimeoutErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnDataEndBitErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnDataCrcErrIrqCb = NULL; + pstcSdiocInternData->stcErrorIrqCb.pfnAutoCmdErrIrqCb = NULL; + enRet = Ok; + } + else + { + enRet = ErrorTimeout; + } + } + + return enRet; +} + +/** + * @brief Set SDIOC mode. + * @param [in] SDIOCx Pointer to SDIOC instance register base + * This parameter can be one of the following values: + * @arg M4_SDIOC1: SDIOC unit 1 instance register base + * @arg M4_SDIOC2: SDIOC unit 2 instance register base + * @param [in] enMode SDIOCx mode + * @arg SdiocModeSD: SD mode + * @arg SdiocModeMMC: MMC mode + */ +void SDIOC_SetMode(const M4_SDIOC_TypeDef *SDIOCx, en_sdioc_mode_t enMode) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + DDL_ASSERT(IS_VALID_SDIOC_MODE(enMode)); + + if (M4_SDIOC1 == SDIOCx) + { + M4_PERIC->SDIOC_SYCTLREG_f.SELMMC1 = (uint32_t)enMode; + } + else + { + M4_PERIC->SDIOC_SYCTLREG_f.SELMMC2 = (uint32_t)enMode; + } +} + +/** + ******************************************************************************* + ** \brief Send SD command + ** + ** This function sends command on CMD line + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] pstcCmdCfg Pointer to command transfer configuration structure. + ** \arg This parameter detail refer @ref stc_sdioc_cmd_cfg_t + ** + ** \retval Ok Command sent normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SDIOCx is invalid + ** - pstcCmdCfg == NULL + ** + ******************************************************************************/ +en_result_t SDIOC_SendCommand(M4_SDIOC_TypeDef *SDIOCx, + const stc_sdioc_cmd_cfg_t *pstcCmdCfg) +{ + uint32_t u32Addr; + stc_sdioc_cmd_field_t stcCmdField; + en_result_t enRet = ErrorInvalidParameter; + + /* Check for NULL pointer */ + if ((IS_VALID_SDIOC(SDIOCx)) && (NULL != pstcCmdCfg)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_CMD_VAL(pstcCmdCfg->u8CmdIndex)); + DDL_ASSERT(IS_VALID_SDIOC_CMD_TYPE(pstcCmdCfg->enCmdType)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCmdCfg->enDataPresentEnable)); + DDL_ASSERT(IS_VALID_SDIOC_RESP_TYPE_NAME(pstcCmdCfg->enRspIndex)); + + enRet = Ok; + switch (pstcCmdCfg->enRspIndex) + { + case SdiocCmdNoRsp: + stcCmdField.RESTYP = SdiocResponseNoneBit; + stcCmdField.CCE = 0u; + stcCmdField.ICE = 0u; + break; + case SdiocCmdRspR2: + stcCmdField.RESTYP = SdiocResponse136Bit; + stcCmdField.CCE = 1u; + stcCmdField.ICE = 0u; + break; + case SdiocCmdRspR3: + case SdiocCmdRspR4: + stcCmdField.RESTYP = SdiocResponse48Bit; + stcCmdField.CCE = 0u; + stcCmdField.ICE = 0u; + break; + case SdiocCmdRspR1: + case SdiocCmdRspR5: + case SdiocCmdRspR6: + case SdiocCmdRspR7: + stcCmdField.RESTYP = SdiocResponse48Bit; + stcCmdField.CCE = 1u; + stcCmdField.ICE = 1u; + break; + case SdiocCmdRspR1b: + case SdiocCmdRspR5b: + stcCmdField.RESTYP = SdiocResponse48BitCheckBusy; + stcCmdField.CCE = 1u; + stcCmdField.ICE = 1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + if (enRet == Ok) + { + stcCmdField.RESERVED2 = (uint16_t)0u; + stcCmdField.TYP = (uint16_t)pstcCmdCfg->enCmdType; + stcCmdField.IDX = (uint16_t)pstcCmdCfg->u8CmdIndex; + stcCmdField.DAT = (uint16_t)(pstcCmdCfg->enDataPresentEnable); + + u32Addr = SDIOC_ARG01(SDIOCx); + *(__IO uint32_t *)u32Addr = pstcCmdCfg->u32Argument; + + u32Addr = (uint32_t)&stcCmdField; + SDIOCx->CMD = *(uint16_t *)u32Addr; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the response received from the card for the last command + ** + ** This function sends command on CMD line + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enRespReg Response Specifies the SDIOC response register. + ** \arg SdiocRegResp01 Response0 and Response1 Register + ** \arg SdiocRegResp23 Response2 and Response3 Register + ** \arg SdiocRegResp45 Response4 and Response5 Register + ** \arg SdiocRegResp67 Response6 and Response7 Register + ** + ** \retval The Corresponding response register value + ** + ******************************************************************************/ +uint32_t SDIOC_GetResponse(const M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_response_reg_t enRespReg) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + DDL_ASSERT(IS_VALID_SDIOC_RESP(enRespReg)); + + return *(__IO uint32_t *)SDIOC_RESPx(SDIOCx, enRespReg) ; +} + +/** + ******************************************************************************* + ** \brief Read data from SDIOCx data buffer + ** + ** This function reads 32-bit data from data buffer + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] au8Data Buffer which will store SDIOC_BUFFER data + ** \param [in] u32Len Data length + ** + ** \retval Ok Data is read normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SDIOCx is invalid + ** - pu32Data == NULL + ** + ******************************************************************************/ +en_result_t SDIOC_ReadBuffer(M4_SDIOC_TypeDef *SDIOCx, + uint8_t au8Data[], + uint32_t u32Len) +{ + uint32_t i = 0ul; + uint32_t u32Temp = 0ul;; + __IO uint32_t *SDIO_BUF_REG = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx && pu8Data pointer */ + if ((NULL != au8Data) && \ + (IS_VALID_SDIOC(SDIOCx)) && \ + (IS_VALID_TRANSFER_BUF_LEN(u32Len))) + { + SDIO_BUF_REG = (__IO uint32_t *)SDIOC_BUF01(SDIOCx); + + while (i < u32Len) + { + u32Temp = *SDIO_BUF_REG; + au8Data[i++] = (uint8_t)((u32Temp >> 0ul) & 0x000000FF); + au8Data[i++] = (uint8_t)((u32Temp >> 8ul) & 0x000000FF); + au8Data[i++] = (uint8_t)((u32Temp >> 16ul) & 0x000000FF); + au8Data[i++] = (uint8_t)((u32Temp >> 24ul) & 0x000000FF); + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Write data to SDIOCx data buffer + ** + ** This function writes 32-bit data to data buffer + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] au8Data Buffer which will be wrote to SDIOC_BUFFER + ** \param [in] u32Len Data length + ** + ** \retval Ok Data is written normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SDIOCx is invalid + ** - pu8Data == NULL + ** + ******************************************************************************/ +en_result_t SDIOC_WriteBuffer(M4_SDIOC_TypeDef *SDIOCx, + uint8_t au8Data[], + uint32_t u32Len) +{ + uint32_t i = 0ul; + uint32_t u32Temp = 0ul; + __IO uint32_t *SDIO_BUF_REG = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx && pu8Data pointer */ + if ((NULL != au8Data) && \ + (IS_VALID_SDIOC(SDIOCx)) && \ + (IS_VALID_TRANSFER_BUF_LEN(u32Len))) + { + SDIO_BUF_REG = (__IO uint32_t *)SDIOC_BUF01(SDIOCx); + + while (i < u32Len) + { + u32Temp = (((uint32_t)au8Data[i++]) << 0ul) & 0x000000FFul; + u32Temp += (((uint32_t)au8Data[i++]) << 8ul) & 0x0000FF00ul; + u32Temp += (((uint32_t)au8Data[i++]) << 16ul) & 0x00FF0000ul; + u32Temp += (((uint32_t)au8Data[i++]) << 24ul) & 0xFF000000ul; + + *SDIO_BUF_REG = u32Temp; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Configure SDIOCx data parameters + ** + ** This function writes 32-bit data to data buffer + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] pstcDataCfg Pointer to SDIOC data transfer configuration structure + ** \arg This parameter detail refer @ref stc_sdioc_data_cfg_t + ** + ** \retval Ok configure normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SDIOCx is invalid + ** - pstcDataCfg == NULL + ** + ******************************************************************************/ +en_result_t SDIOC_ConfigData(M4_SDIOC_TypeDef *SDIOCx, + const stc_sdioc_data_cfg_t *pstcDataCfg) +{ + uint16_t u16BlkCnt = (uint16_t)0; + uint32_t u32Addr; + stc_sdioc_transmode_field_t stcTransModeField = {0}; + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx && pstcDataCfg pointer */ + if ((IS_VALID_SDIOC(SDIOCx)) && (NULL != pstcDataCfg)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_BLKCNT(pstcDataCfg->u16BlkCnt)); + DDL_ASSERT(IS_VALID_SDIOC_BLKSIZE(pstcDataCfg->u16BlkSize)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcDataCfg->enAutoCmd12Enable)); + DDL_ASSERT(IS_VALID_SDIOC_DATA_TIMEOUT(pstcDataCfg->enDataTimeOut)); + DDL_ASSERT(IS_VALID_SDIOC_TRANSFER_DIR(pstcDataCfg->enTransferDir)); + DDL_ASSERT(IS_VALID_SDIOC_TRANSFER_MODE(pstcDataCfg->enTransferMode)); + + enRet = Ok; + + switch (pstcDataCfg->enTransferMode) + { + case SdiocTransferSingle: + stcTransModeField.MULB = 0u; + stcTransModeField.BCE = 0u; + break; + case SdiocTransferInfinite: + stcTransModeField.MULB = 1u; + stcTransModeField.BCE = 0u; + break; + case SdiocTransferMultiple: + u16BlkCnt = pstcDataCfg->u16BlkCnt; + stcTransModeField.MULB = 1u; + stcTransModeField.BCE = 1u; + break; + case SdiocTransferStopMultiple: + stcTransModeField.MULB = 1u; + stcTransModeField.BCE = 1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + if (enRet == Ok) + { + stcTransModeField.RESERVED0 = (uint16_t)0u; + stcTransModeField.DDIR = (uint16_t)(pstcDataCfg->enTransferDir); + stcTransModeField.ATCEN = (uint16_t)(pstcDataCfg->enAutoCmd12Enable); + + /* Set the SDIOC Data Transfer Timeout value */ + SDIOCx->TOUTCON = (uint8_t)(pstcDataCfg->enDataTimeOut); + /* Set the SDIOC Block Count value */ + SDIOCx->BLKCNT = u16BlkCnt; + /* Set the SDIOC Block Size value */ + SDIOCx->BLKSIZE = pstcDataCfg->u16BlkSize; + /* Set the SDIOC Data Transfer Mode */ + u32Addr = (uint32_t)&stcTransModeField; + SDIOCx->TRANSMODE = *(uint16_t *)u32Addr; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable SDCLK output + ** + ** SD host drives SDCLK line. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enCmd The SDCLK functional state command + ** \arg Enable Enable SDCLK function + ** \arg Disable Disable SDCLK function + ** + ** \retval Ok SDCLK output of SDIOCx enabled normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SdclkCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + SDIOCx->CLKCON_f.CE = (uint16_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the clock division of SD clock + ** + ** This function changes the SD clock division. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enClkDiv SDIOC clock division value + ** \arg SdiocClkDiv_1 EXCLK/1 + ** \arg SdiocClkDiv_2 EXCLK/2 + ** \arg SdiocClkDiv_4 EXCLK/4 + ** \arg SdiocClkDiv_8 EXCLK/8 + ** \arg SdiocClkDiv_16 EXCLK/16 + ** \arg SdiocClkDiv_32 EXCLK/32 + ** \arg SdiocClkDiv_64 EXCLK/64 + ** \arg SdiocClkDiv_128 EXCLK/128 + ** \arg SdiocClkDiv_256 EXCLK/256 + ** + ** \retval Ok SDIOC clock division is changed normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SetClkDiv(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_clk_div_t enClkDiv) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_CLK_DIV(enClkDiv)); + + /* Set clock division */ + SDIOCx->CLKCON_f.FS = (uint16_t)enClkDiv; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the clock division of SD clock + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval SdiocClkDiv_1 EXCLK/1 + ** \retval SdiocClkDiv_2 EXCLK/2 + ** \retval SdiocClkDiv_4 EXCLK/4 + ** \retval SdiocClkDiv_8 EXCLK/8 + ** \retval SdiocClkDiv_16 EXCLK/16 + ** \retval SdiocClkDiv_32 EXCLK/32 + ** \retval SdiocClkDiv_64 EXCLK/64 + ** \retval SdiocClkDiv_128 EXCLK/128 + ** + ******************************************************************************/ +en_sdioc_clk_div_t SDIOC_GetClkDiv(M4_SDIOC_TypeDef *SDIOCx) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + + return ((en_sdioc_clk_div_t)SDIOCx->CLKCON_f.FS); +} + +/** + ******************************************************************************* + ** \brief Get the clock division of SD clock + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] u32ClkFreq SDIOC clock frequency + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SetClk(M4_SDIOC_TypeDef *SDIOCx, uint32_t u32ClkFreq) +{ + uint32_t u32Exclk = 0ul; + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Get EXCLK frequency */ + u32Exclk = SystemCoreClock / (1ul << M4_SYSREG->CMU_SCFGR_f.EXCKS); + + SDIOCx->CLKCON_f.CE = (uint16_t)0u; + SDIOCx->CLKCON_f.FS = (uint16_t)SdiocGetClkDiv(u32Exclk, u32ClkFreq); + SDIOCx->CLKCON_f.CE = (uint16_t)1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the bus width of SD Bus + ** + ** This function changes the SD bus width. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enBusWidth Bus width + ** \arg SdiocBusWidth1Bit The SDIOC bus width 1 bit + ** \arg SdiocBusWidth4Bit The SDIOC bus width 4 bit + ** \arg SdiocBusWidth8Bit The SDIOC bus width 8 bit + ** + ** \retval Ok Bus width is set normally + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - SDIOCx is invalid + ** - enBusWidth is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SetBusWidth(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_bus_width_t enBusWidth) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_BUS_WIDTH(enBusWidth)); + + enRet = Ok; + + switch (enBusWidth) + { + case SdiocBusWidth1Bit: + SDIOCx->HOSTCON_f.EXDW = 0u; + SDIOCx->HOSTCON_f.DW = 0u; + break; + case SdiocBusWidth4Bit: + SDIOCx->HOSTCON_f.EXDW = 0u; + SDIOCx->HOSTCON_f.DW = 1u; + break; + case SdiocBusWidth8Bit: + SDIOCx->HOSTCON_f.EXDW = 1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the bus width of SD Bus + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval SdiocBusWidth1Bit The SDIOC bus width 1 bit + ** \retval SdiocBusWidth4Bit The SDIOC bus width 4 bit + ** \retval SdiocBusWidth8Bit The SDIOC bus width 8 bit + ** + ******************************************************************************/ +en_sdioc_bus_width_t SDIOC_GetBusWidth(M4_SDIOC_TypeDef *SDIOCx) +{ + en_sdioc_bus_width_t enBusWidth = SdiocBusWidth4Bit; + + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + + if (0u == SDIOCx->HOSTCON_f.EXDW) + { + if (0u == SDIOCx->HOSTCON_f.DW) + { + enBusWidth = SdiocBusWidth1Bit; + } + } + else + { + enBusWidth = SdiocBusWidth8Bit; + } + + return enBusWidth; +} + +/** + ******************************************************************************* + ** \brief Set the bus speed mode of SD Bus + ** + ** This function changes the SD bus speed mode. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enSpeedMode Speed mode + ** \arg SdiocHighSpeedMode High speed mode + ** \arg SdiocNormalSpeedMode Normal speed mode + ** + ** \retval Ok Bus speed is set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SetSpeedMode(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_speed_mode_t enSpeedMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_SPEED_MODE(enSpeedMode)); + + /* Set high speed mode */ + SDIOCx->HOSTCON_f.HSEN = ((SdiocHighSpeedMode == enSpeedMode) ? 1u : 0u); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the bus speed mode of SD Bus + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval SdiocHighSpeedMode High speed mode + ** \retval SdiocNormalSpeedMode Normal speed mode + ** + ******************************************************************************/ +en_sdioc_speed_mode_t SDIOC_GetSpeedMode(M4_SDIOC_TypeDef *SDIOCx) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + + return ((SDIOCx->HOSTCON_f.HSEN) ? SdiocHighSpeedMode : SdiocNormalSpeedMode); +} + +/** + ******************************************************************************* + ** \brief Set data timeout counter value + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enTimeout Data timeout count value + ** \arg SdiocDtoSdclk_2_13 Timeout time: SDCLK*2^13 + ** \arg SdiocDtoSdclk_2_14 Timeout time: SDCLK*2^14 + ** \arg SdiocDtoSdclk_2_15 Timeout time: SDCLK*2^15 + ** \arg SdiocDtoSdclk_2_16 Timeout time: SDCLK*2^16 + ** \arg SdiocDtoSdclk_2_17 Timeout time: SDCLK*2^17 + ** \arg SdiocDtoSdclk_2_18 Timeout time: SDCLK*2^18 + ** \arg SdiocDtoSdclk_2_19 Timeout time: SDCLK*2^19 + ** \arg SdiocDtoSdclk_2_20 Timeout time: SDCLK*2^20 + ** \arg SdiocDtoSdclk_2_21 Timeout time: SDCLK*2^21 + ** \arg SdiocDtoSdclk_2_22 Timeout time: SDCLK*2^22 + ** \arg SdiocDtoSdclk_2_23 Timeout time: SDCLK*2^23 + ** \arg SdiocDtoSdclk_2_24 Timeout time: SDCLK*2^24 + ** \arg SdiocDtoSdclk_2_25 Timeout time: SDCLK*2^25 + ** \arg SdiocDtoSdclk_2_26 Timeout time: SDCLK*2^26 + ** \arg SdiocDtoSdclk_2_27 Timeout time: SDCLK*2^27 + ** + ** \retval Ok Bus speed is set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SetDataTimeout(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_data_timeout_t enTimeout) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_DATA_TIMEOUT(enTimeout)); + + /* Set data timeout */ + SDIOCx->TOUTCON_f.DTO = (uint8_t)enTimeout; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get data timeout counter value + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval SdiocDtoSdclk_2_13 Timeout time: SDCLK*2^13 + ** \retval SdiocDtoSdclk_2_14 Timeout time: SDCLK*2^14 + ** \retval SdiocDtoSdclk_2_15 Timeout time: SDCLK*2^15 + ** \retval SdiocDtoSdclk_2_16 Timeout time: SDCLK*2^16 + ** \retval SdiocDtoSdclk_2_17 Timeout time: SDCLK*2^17 + ** \retval SdiocDtoSdclk_2_18 Timeout time: SDCLK*2^18 + ** \retval SdiocDtoSdclk_2_19 Timeout time: SDCLK*2^19 + ** \retval SdiocDtoSdclk_2_20 Timeout time: SDCLK*2^20 + ** \retval SdiocDtoSdclk_2_21 Timeout time: SDCLK*2^21 + ** \retval SdiocDtoSdclk_2_22 Timeout time: SDCLK*2^22 + ** \retval SdiocDtoSdclk_2_23 Timeout time: SDCLK*2^23 + ** \retval SdiocDtoSdclk_2_24 Timeout time: SDCLK*2^24 + ** \retval SdiocDtoSdclk_2_25 Timeout time: SDCLK*2^25 + ** \retval SdiocDtoSdclk_2_26 Timeout time: SDCLK*2^26 + ** \retval SdiocDtoSdclk_2_27 Timeout time: SDCLK*2^27 + ** + ******************************************************************************/ +en_sdioc_data_timeout_t SDIOC_GetDataTimeout(M4_SDIOC_TypeDef *SDIOCx) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + + return (en_sdioc_data_timeout_t)(SDIOCx->TOUTCON_f.DTO); +} + +/** + ******************************************************************************* + ** \brief Set the card detect signal + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enDetectSignal Card detect signal + ** \arg SdiocSdcdPinLevel SDCD# is selected (for normal use) + ** \arg SdiocCardDetectTestLevel The Card Detect Test Level is selected(for test purpose) + ** + ** \retval Ok Set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SetCardDetectSignal(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_detect_signal_t enDetectSignal) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_DETECT_SIG(enDetectSignal)); + SDIOCx->HOSTCON_f.CDSS = (uint8_t)enDetectSignal; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get card inserted or not. + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval Set Card Inserted + ** \retval Reset No Card + ** + ** \note This bit is enabled while the Card Detect Signal Selection is set to 1 + ** and it indicates card inserted or not. + ** + ******************************************************************************/ +en_flag_status_t SDIOC_GetCardDetectTestLevel(M4_SDIOC_TypeDef *SDIOCx) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + + return (en_flag_status_t)(SDIOCx->HOSTCON_f.CDTL); +} + +/** + ******************************************************************************* + ** \brief Power on SD bus power + ** + ** This function starts power supply on SD bus + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval Ok Power on normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_BusPowerOn(M4_SDIOC_TypeDef *SDIOCx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + SDIOCx->PWRCON_f.PWON = 1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Power off SD bus power + ** + ** This function stops power supply on SD bus + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval Ok Power off normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_BusPowerOff(M4_SDIOC_TypeDef *SDIOCx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + SDIOCx->PWRCON_f.PWON = 0u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the function of Stop At Block Gap Request during block gap + ** + ** This function is used to stop data trasnfer of multi-block transfer + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enCmd SDIOC Stop At Block Gap Request functional state + ** \arg Enable Enable the function of Stop At Block Gap Request + ** \arg Disable Disable the function of Stop At Block Gap Request + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_StopAtBlockGapCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + SDIOCx->BLKGPCON_f.SABGR = (uint8_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Restart data transfer + ** + ** This function is used to restart data transfer when transfer is pending + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_RestartTransfer(M4_SDIOC_TypeDef *SDIOCx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + SDIOCx->BLKGPCON_f.CR = 1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the function of Read Wait Control + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enCmd SDIOC Read Wait Control functional state + ** \arg Enable Enable the Read Wait Control function + ** \arg Disable Disable the Read Wait Control function + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ReadWaitCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + SDIOCx->BLKGPCON_f.RWC = (uint8_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the function of Interrupt At Block Gap + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enCmd SDIOC Interrupt At Block Gap functional state + ** \arg Enable Enable the function of Interrupt At Block Gap + ** \arg Disable Disable the function of Interrupt At Block Gap + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_InterruptAtBlockGapCmd(M4_SDIOC_TypeDef *SDIOCx, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + SDIOCx->BLKGPCON_f.IABG = (uint8_t)(enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Generate software reset to SD card + ** + ** This function generates software reset all command to SD card + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enSwResetType Software reset type + ** \arg SdiocSwResetAll This reset affects the entire Host Controller except for the card detection circuit. + ** \arg SdiocSwResetCmdLine Only part of command circuit is reset. + ** \arg SdiocSwResetDataLine Only part of data circuit is reset. + ** + ** \retval Ok Software reset is done normally + ** \retval ErrorTimeout SDIOCx reset timeout + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - SDIOCx is invalid + ** - enSwResetType is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_SoftwareReset(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_sw_reset_t enSwResetType) +{ + __IO uint32_t i = 0ul; + uint32_t u32Cnt = SystemCoreClock / 100ul; + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_SWRESETTYPE(enSwResetType)); + + enRet = Ok; + switch (enSwResetType) + { + case SdiocSwResetAll: + SDIOCx->SFTRST_f.RSTA = (uint8_t)1u; + while(0u != SDIOCx->SFTRST_f.RSTA) /* Wait until reset finish */ + { + if (i++ > u32Cnt) + { + break; + } + } + break; + case SdiocSwResetCmdLine: + SDIOCx->SFTRST_f.RSTC = (uint8_t)1u; + while(0u != SDIOCx->SFTRST_f.RSTC) /* Wait until reset finish */ + { + if (i++ > u32Cnt) + { + break; + } + } + break; + case SdiocSwResetDatLine: + SDIOCx->SFTRST_f.RSTD = (uint8_t)1u; + while(0u != SDIOCx->SFTRST_f.RSTD) /* Wait until reset finish */ + { + if (i++ > u32Cnt) + { + break; + } + } + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + if (i > u32Cnt) + { + enRet = ErrorTimeout; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the status of SDIOC host controller + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enHostStatus SDIOC host status + ** \arg SdiocCommandInhibitCmd Command Inhibit(CMD). 1: Cannot issue command; 0:Can issue command using only CMD line + ** \arg SdiocCommandInhibitData Command Inhibit(DAT). 1: Cannot issue command which uses the DAT line; 0:Can issue command which uses the DAT line + ** \arg SdiocDataLineActive 1: DAT Line Active; 0: DAT Line Inactive + ** \arg SdiocWriteTransferActive Write Transfer Active.1: Transferring data; 0: No valid data + ** \arg SdiocReadTransferActive Read Transfer Active.1: Transferring data; 0: No valid data + ** \arg SdiocBufferWriteEnble 1: Write enable; 0: Write Disable + ** \arg SdiocBufferReadEnble 1: Read enable; 0: Read Disable + ** \arg SdiocCardInserted 1: Card Inserted; 0: Reset or Debouncing or No Card + ** \arg SdiocCardStateStable 1: No Card or Inserted; 0: Reset or Debouncing + ** \arg SdiocCardDetectPinLvl 1: Card present; 0: No card present + ** \arg SdiocWriteProtectPinLvl 1: Write enabled; 0: Write protected + ** \arg SdiocData0PinLvl 1: DAT0 line signal level high; 0: DAT0 line signal level low + ** \arg SdiocData1PinLvl 1: DAT1 line signal level high; 0: DAT1 line signal level low + ** \arg SdiocData2PinLvl 1: DAT2 line signal level high; 0: DAT2 line signal level low + ** \arg SdiocData3PinLvl 1: DAT3 line signal level high; 0: DAT3 line signal level low + ** \arg SdiocCmdPinLvl 1: CMD line signal level high; 0: CMD line signal level low + ** + ** \retval Set The specified status is set + ** \retval Reset The specified status is zero + ** + ******************************************************************************/ +en_flag_status_t SDIOC_GetStatus(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_host_status_t enHostStatus) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + DDL_ASSERT(IS_VALID_SDIOC_HOST_STATUS(enHostStatus)); + + return ((SDIOCx->PSTAT & ((uint32_t)enHostStatus)) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the specified signal of SDIOC normal interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enNorInt SDIOC normal interrupt + ** \arg SdiocCommandComplete Command Complete. 1: Command complete; 0:No command complete + ** \arg SdiocTransferComplete Transfer Complete. 1: Data transfer complete; 0:No transfer complete + ** \arg SdiocBlockGapEvent Block Gap Event. 1: Transaction stopped at block gap; 0: No Block Gap Event + ** \arg SdiocBufferWriteReady Buffer Write Ready. 1: Ready to Write buffer; 0: No ready to Write buffer + ** \arg SdiocBufferReadReady Buffer Read Ready. 1: Ready to read buffer; 0: No ready to read buffer + ** \arg SdiocCardInsertedInt Write Transfer Active.1: Transferring data; 0: No valid data + ** \arg SdiocCardRemoval Card Removal. 1: Card removed; 0: Card state stable or Debouncing + ** \arg SdiocCardInt Card Interrupt. 1: Generate Card Interrupt; 0: No Card Interrupt + ** \arg SdiocErrorInt Error Interrupt. 1: Error; 0: No Error + ** \param [in] enCmd SDIOC normal interrupt signal functional state + ** \arg Enable Enable the specified signal of SD normal interrupt + ** \arg Disable Disable the specified signal of SD normal interrupt + ** + ** \retval Ok Set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_NormalIrqSignalCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_sel_t enNorInt, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + DDL_ASSERT(IS_VALID_SDIOC_NOR_INT(enNorInt)); + + if (Enable == enCmd) + { + SDIOCx->NORINTSGEN |= (uint16_t)enNorInt; + } + else + { + SDIOCx->NORINTSGEN &= (uint16_t)(~((uint16_t)enNorInt)); + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the status of SDIOC normal interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enNorInt SDIOC normal interrupt + ** \arg SdiocCommandComplete Command Complete. 1: Command complete; 0:No command complete + ** \arg SdiocTransferComplete Transfer Complete. 1: Data transfer complete; 0:No transfer complete + ** \arg SdiocBlockGapEvent Block Gap Event. 1: Transaction stopped at block gap; 0: No Block Gap Event + ** \arg SdiocBufferWriteReady Buffer Write Ready. 1: Ready to Write buffer; 0: No ready to Write buffer + ** \arg SdiocBufferReadReady Buffer Read Ready. 1: Ready to read buffer; 0: No ready to read buffer + ** \arg SdiocCardInsertedInt Write Transfer Active.1: Transferring data; 0: No valid data + ** \arg SdiocCardRemoval Card Removal. 1: Card removed; 0: Card state stable or Debouncing + ** \arg SdiocCardInt Card Interrupt. 1: Generate Card Interrupt; 0: No Card Interrupt + ** \arg SdiocErrorInt Error Interrupt. 1: Error; 0: No Error + ** \param [in] enCmd SDIOC normal interrupt status functional state + ** \arg Enable Enable the specified status of SD normal interrupt + ** \arg Disable Disable the specified status of SD normal interrupt + ** + ** \retval Ok Set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_NormalIrqStatusCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_sel_t enNorInt, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + DDL_ASSERT(IS_VALID_SDIOC_NOR_INT(enNorInt)); + + if (Enable == enCmd) + { + SDIOCx->NORINTSTEN |= (uint16_t)enNorInt; + } + else + { + SDIOCx->NORINTSTEN &= (uint16_t)(~((uint16_t)enNorInt)); + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the flag of SD normal interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enNorInt SDIOC normal interrupt + ** \arg SdiocCommandComplete Command Complete. 1: Command complete; 0:No command complete + ** \arg SdiocTransferComplete Transfer Complete. 1: Data transfer complete; 0:No transfer complete + ** \arg SdiocBlockGapEvent Block Gap Event. 1: Transaction stopped at block gap; 0: No Block Gap Event + ** \arg SdiocBufferWriteReady Buffer Write Ready. 1: Ready to Write buffer; 0: No ready to Write buffer + ** \arg SdiocBufferReadReady Buffer Read Ready. 1: Ready to read buffer; 0: No ready to read buffer + ** \arg SdiocCardInsertedInt Write Transfer Active.1: Transferring data; 0: No valid data + ** \arg SdiocCardRemoval Card Removal. 1: Card removed; 0: Card state stable or Debouncing + ** \arg SdiocCardInt Card Interrupt. 1: Generate Card Interrupt; 0: No Card Interrupt + ** \arg SdiocErrorInt Error Interrupt. 1: Error; 0: No Error + ** + ** \retval Set The specified interupt flag is set + ** \retval Reset The specified interupt flag is zero + ** + ******************************************************************************/ +en_flag_status_t SDIOC_GetNormalIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_flag_t enNorInt) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + DDL_ASSERT(IS_VALID_SDIOC_NOR_INT(enNorInt)); + + return ((SDIOCx->NORINTST & ((uint16_t)enNorInt)) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Clear the flag of SD normal interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enNorInt SDIOC normal interrupt + ** \arg SdiocCommandComplete Command Complete. 1: Command complete; 0:No command complete + ** \arg SdiocTransferComplete Transfer Complete. 1: Data transfer complete; 0:No transfer complete + ** \arg SdiocBlockGapEvent Block Gap Event. 1: Transaction stopped at block gap; 0: No Block Gap Event + ** \arg SdiocBufferWriteReady Buffer Write Ready. 1: Ready to Write buffer; 0: No ready to Write buffer + ** \arg SdiocBufferReadReady Buffer Read Ready. 1: Ready to read buffer; 0: No ready to read buffer + ** \arg SdiocCardInsertedInt Write Transfer Active.1: Transferring data; 0: No valid data + ** \arg SdiocCardRemoval Card Removal. 1: Card removed; 0: Card state stable or Debouncing + ** \arg SdiocCardInt Card Interrupt. 1: Generate Card Interrupt; 0: No Card Interrupt + ** \arg SdiocErrorInt Error Interrupt. 1: Error; 0: No Error + ** + ** \retval Ok Clear successfully. + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ClearNormalIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_nor_int_flag_t enNorInt) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_NOR_INT(enNorInt)); + SDIOCx->NORINTST = (uint16_t)enNorInt; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the signal of SD error interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enErrInt SDIOC error interrupt + ** \arg SdiocCmdTimeoutErr Command Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocCmdCrcErr Command CRC Error. 1: Command CRC Error Generated; 0:No Error + ** \arg SdiocCmdEndBitErr Command End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocCmdIndexErr Command Index Error. 1: Command Index Error Generatedr; 0:No Error + ** \arg SdiocDataTimeoutErr Data Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocDataCrcErr Data CRC Error. 1: Data CRC Error Generated; 0:No Error + ** \arg SdiocDataEndBitErr Data End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocAutoCmd12Err Auto CMD12 Error. 1: Error; 0:No Error + ** \param [in] enCmd SDIOC error interrupt signal functional state + ** \arg Enable Enable the specified signal of SD error interrupt + ** \arg Disable Disable the specified signal of SD error interrupt + ** + ** \retval Ok Set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ErrIrqSignalCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_sel_t enErrInt, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_ERR_INT(enErrInt)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + if (Enable == enCmd) + { + SDIOCx->ERRINTSGEN |= (uint16_t)enErrInt; + } + else + { + SDIOCx->ERRINTSGEN &= (uint16_t)enErrInt; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable/Disable the status of SD error interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enErrInt SDIOC error interrupt + ** \arg SdiocCmdTimeoutErr Command Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocCmdCrcErr Command CRC Error. 1: Command CRC Error Generated; 0:No Error + ** \arg SdiocCmdEndBitErr Command End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocCmdIndexErr Command Index Error. 1: Command Index Error Generatedr; 0:No Error + ** \arg SdiocDataTimeoutErr Data Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocDataCrcErr Data CRC Error. 1: Data CRC Error Generated; 0:No Error + ** \arg SdiocDataEndBitErr Data End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocAutoCmd12Err Auto CMD12 Error. 1: Error; 0:No Error + ** \param [in] enCmd SDIOC error interrupt status functional state + ** \arg Enable Enable the specified status of SD error interrupt + ** \arg Disable Disable the specified status of SD error interrupt + ** + ** \retval Ok Set normally + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ErrIrqStatusCmd(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_sel_t enErrInt, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_ERR_INT(enErrInt)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + if (Enable == enCmd) + { + SDIOCx->ERRINTSTEN |= (uint16_t)enErrInt; + } + else + { + SDIOCx->ERRINTSTEN &= (uint16_t)enErrInt; + } + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the flag of SD error interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enErrInt SDIOC error interrupt + ** \arg SdiocCmdTimeoutErr Command Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocCmdCrcErr Command CRC Error. 1: Command CRC Error Generated; 0:No Error + ** \arg SdiocCmdEndBitErr Command End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocCmdIndexErr Command Index Error. 1: Command Index Error Generatedr; 0:No Error + ** \arg SdiocDataTimeoutErr Data Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocDataCrcErr Data CRC Error. 1: Data CRC Error Generated; 0:No Error + ** \arg SdiocDataEndBitErr Data End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocAutoCmd12Err Auto CMD12 Error. 1: Error; 0:No Error + ** + ** \retval Set The specified interupt flag is set + ** \retval Reset The specified interupt flag is zero + ** + ******************************************************************************/ +en_flag_status_t SDIOC_GetErrIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_flag_t enErrInt) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + DDL_ASSERT(IS_VALID_SDIOC_ERR_INT(enErrInt)); + + return ((SDIOCx->ERRINTST & ((uint16_t)enErrInt)) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Clear the flag of SD error interrupt + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enErrInt SDIOC error interrupt + ** \arg SdiocCmdTimeoutErr Command Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocCmdCrcErr Command CRC Error. 1: Command CRC Error Generated; 0:No Error + ** \arg SdiocCmdEndBitErr Command End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocCmdIndexErr Command Index Error. 1: Command Index Error Generatedr; 0:No Error + ** \arg SdiocDataTimeoutErr Data Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocDataCrcErr Data CRC Error. 1: Data CRC Error Generated; 0:No Error + ** \arg SdiocDataEndBitErr Data End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocAutoCmd12Err Auto CMD12 Error. 1: Error; 0:No Error + ** + ** \retval Ok Clear successfully. + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ClearErrIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_flag_t enErrInt) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_ERR_INT(enErrInt)); + SDIOCx->ERRINTST = (uint16_t)enErrInt; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Force the specified error interrupt flag + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enErrInt SDIOC error interrupt + ** \arg SdiocCmdTimeoutErr Command Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocCmdCrcErr Command CRC Error. 1: Command CRC Error Generated; 0:No Error + ** \arg SdiocCmdEndBitErr Command End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocCmdIndexErr Command Index Error. 1: Command Index Error Generatedr; 0:No Error + ** \arg SdiocDataTimeoutErr Data Timeout Error. 1: Timer out; 0:No Error + ** \arg SdiocDataCrcErr Data CRC Error. 1: Data CRC Error Generated; 0:No Error + ** \arg SdiocDataEndBitErr Data End Bit Error. 1: End Bit Error Generated; 0:No Error + ** \arg SdiocAutoCmd12Err Auto CMD12 Error. 1: Error; 0:No Error + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ForceErrIrqFlag(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_err_int_sel_t enErrInt) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_ERR_INT(enErrInt)); + SDIOCx->FEE |= (uint16_t)enErrInt; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the status of auto CMD12 error + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enAutoCmdErr SDIOC auto cmd error status selection + ** \arg SdiocAutoCmd12NotExecuted Auto CMD12 Not Executed. 1: Not executed; 0:Executed + ** \arg SdiocAutoCmd12Timeout Auto CMD12 Timeout Error. 1: Time out; 0:No error + ** \arg SdiocAutoCmd12CrcErr Auto CMD12 CRC Error. 1: CRC Error Generated; 0: No error + ** \arg SdiocAutoCmd12EndBitErr Auto CMD12 End Bit Error. 1: End Bit Error Generated; 0: No error to Write buffer + ** \arg SdiocAutoCmd12IndexErr Auto CMD12 Index Error. 1: Error; 0: No error + ** \arg SdiocCmdNotIssuedErr Command Not Issued By Auto CMD12 Error.1: Not Issued; 0: No error + ** + ** \retval Set The specified status flag is set + ** \retval Reset The specified status flag is zero + ** + ******************************************************************************/ +en_flag_status_t SDIOC_GetAutoCmdErrStatus(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_atuo_cmd_err_status_t enAutoCmdErr) +{ + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC(SDIOCx)); + DDL_ASSERT(IS_VALID_SDIOC_AUTOCMD_ERR(enAutoCmdErr)); + + return ((SDIOCx->ATCERRST & ((uint16_t)enAutoCmdErr)) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Force the specified auto CMD12 error + ** + ** \param [in] SDIOCx Pointer to SDIOC instance register base + ** \arg M4_SDIOC1 SDIOC unit 1 instance register base + ** \arg M4_SDIOC2 SDIOC unit 2 instance register base + ** \param [in] enAutoCmdErr SDIOC auto cmd error selection + ** \arg SdiocAutoCmd12NotExecuted Auto CMD12 Not Executed. 1: Not executed; 0:Executed + ** \arg SdiocAutoCmd12Timeout Auto CMD12 Timeout Error. 1: Time out; 0:No error + ** \arg SdiocAutoCmd12CrcErr Auto CMD12 CRC Error. 1: CRC Error Generated; 0: No error + ** \arg SdiocAutoCmd12EndBitErr Auto CMD12 End Bit Error. 1: End Bit Error Generated; 0: No error to Write buffer + ** \arg SdiocAutoCmd12IndexErr Auto CMD12 Index Error. 1: Error; 0: No error + ** \arg SdiocCmdNotIssuedErr Command Not Issued By Auto CMD12 Error.1: Not Issued; 0: No error + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter SDIOCx is invalid + ** + ******************************************************************************/ +en_result_t SDIOC_ForceAutoCmdErr(M4_SDIOC_TypeDef *SDIOCx, + en_sdioc_atuo_cmd_err_sel_t enAutoCmdErr) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for SDIOCx pointer */ + if (IS_VALID_SDIOC(SDIOCx)) + { + /* Check the parameters */ + DDL_ASSERT(IS_VALID_SDIOC_AUTOCMD_ERR(enAutoCmdErr)); + SDIOCx->FEA |= (uint16_t)enAutoCmdErr; + enRet = Ok; + } + + return enRet; +} + +//@} // SdiocGroup + +#endif /* DDL_SDIOC_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_spi.c b/driver/src/hc32f460_spi.c new file mode 100644 index 0000000..8d24845 --- /dev/null +++ b/driver/src/hc32f460_spi.c @@ -0,0 +1,1132 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_spi.c + ** + ** A detailed description is available at + ** @link SpiGroup Serial Peripheral Interface description @endlink + ** + ** - 2018-10-29 CDT First version for Device Driver Library of Spi. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_spi.h" +#include "hc32f460_utility.h" + +#if (DDL_SPI_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup SpiGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for SPI unit */ +#define IS_VALID_SPI_UNIT(x) \ +( (M4_SPI1 == (x)) || \ + (M4_SPI2 == (x)) || \ + (M4_SPI3 == (x)) || \ + (M4_SPI4 == (x))) + +/*!< Parameter valid check for SS setup delay option */ +#define IS_VALID_SS_SETUP_DELAY_OPTION(x) \ +( (SpiSsSetupDelayTypicalSck1 == (x)) || \ + (SpiSsSetupDelayCustomValue == (x))) + +/*!< Parameter valid check for SS setup delay time */ +#define IS_VALID_SS_SETUP_DELAY_TIME(x) \ +( (SpiSsSetupDelaySck1 == (x)) || \ + (SpiSsSetupDelaySck2 == (x)) || \ + (SpiSsSetupDelaySck3 == (x)) || \ + (SpiSsSetupDelaySck4 == (x)) || \ + (SpiSsSetupDelaySck5 == (x)) || \ + (SpiSsSetupDelaySck6 == (x)) || \ + (SpiSsSetupDelaySck7 == (x)) || \ + (SpiSsSetupDelaySck8 == (x))) + +/*!< Parameter valid check for SS hold delay time */ +#define IS_VALID_SS_HOLD_DELAY_TIME(x) \ +( (SpiSsHoldDelaySck1 == (x)) || \ + (SpiSsHoldDelaySck2 == (x)) || \ + (SpiSsHoldDelaySck3 == (x)) || \ + (SpiSsHoldDelaySck4 == (x)) || \ + (SpiSsHoldDelaySck5 == (x)) || \ + (SpiSsHoldDelaySck6 == (x)) || \ + (SpiSsHoldDelaySck7 == (x)) || \ + (SpiSsHoldDelaySck8 == (x))) + +/*!< Parameter valid check for SS hold delay option */ +#define IS_VALID_SS_HOLD_DELAY_OPTION(x) \ +( (SpiSsHoldDelayTypicalSck1 == (x)) || \ + (SpiSsHoldDelayCustomValue == (x))) + +/*!< Parameter valid check for SS interval time option */ +#define IS_VALID_SS_INTERVAL_TIME_OPTION(x) \ +( (SpiSsIntervalTypicalSck1PlusPck2 == (x)) || \ + (SpiSsIntervalCustomValue == (x))) + +/*!< Parameter valid check for SS interval time */ +#define IS_VALID_SS_INTERVAL_TIME(x) \ +( (SpiSsIntervalSck1PlusPck2 == (x)) || \ + (SpiSsIntervalSck2PlusPck2 == (x)) || \ + (SpiSsIntervalSck3PlusPck2 == (x)) || \ + (SpiSsIntervalSck4PlusPck2 == (x)) || \ + (SpiSsIntervalSck5PlusPck2 == (x)) || \ + (SpiSsIntervalSck6PlusPck2 == (x)) || \ + (SpiSsIntervalSck7PlusPck2 == (x)) || \ + (SpiSsIntervalSck8PlusPck2 == (x))) + +/*!< Parameter valid check for SS valid channel select */ +#define IS_VALID_SS_VALID_CHANNEL(x) \ +( (SpiSsValidChannel0 == (x)) || \ + (SpiSsValidChannel1 == (x)) || \ + (SpiSsValidChannel2 == (x)) || \ + (SpiSsValidChannel3 == (x))) + +/*!< Parameter valid check for SS polarity */ +#define IS_VALID_SS_POLARITY(x) \ +( (SpiSsLowValid == (x)) || \ + (SpiSsHighValid == (x))) + +/*!< Parameter valid check for read data register object */ +#define IS_VALID_READ_DATA_REG_OBJECT(x) \ +( (SpiReadReceiverBuffer == (x)) || \ + (SpiReadSendBuffer == (x))) + +/*!< Parameter valid check for SCK polarity */ +#define IS_VALID_SCK_POLARITY(x) \ +( (SpiSckIdleLevelLow == (x)) || \ + (SpiSckIdleLevelHigh == (x))) + +/*!< Parameter valid check for SCK phase */ +#define IS_VALID_SCK_PHASE(x) \ +( (SpiSckOddSampleEvenChange == (x)) || \ + (SpiSckOddChangeEvenSample == (x))) + +/*!< Parameter valid check for clock division */ +#define IS_VALID_CLK_DIV(x) \ +( (SpiClkDiv2 == (x)) || \ + (SpiClkDiv4 == (x)) || \ + (SpiClkDiv8 == (x)) || \ + (SpiClkDiv16 == (x)) || \ + (SpiClkDiv32 == (x)) || \ + (SpiClkDiv64 == (x)) || \ + (SpiClkDiv128 == (x)) || \ + (SpiClkDiv256 == (x))) + +/*!< Parameter valid check for data length */ +#define IS_VALID_DATA_LENGTH(x) \ +( (SpiDataLengthBit4 == (x)) || \ + (SpiDataLengthBit5 == (x)) || \ + (SpiDataLengthBit6 == (x)) || \ + (SpiDataLengthBit7 == (x)) || \ + (SpiDataLengthBit8 == (x)) || \ + (SpiDataLengthBit9 == (x)) || \ + (SpiDataLengthBit10 == (x)) || \ + (SpiDataLengthBit11 == (x)) || \ + (SpiDataLengthBit12 == (x)) || \ + (SpiDataLengthBit13 == (x)) || \ + (SpiDataLengthBit14 == (x)) || \ + (SpiDataLengthBit15 == (x)) || \ + (SpiDataLengthBit16 == (x)) || \ + (SpiDataLengthBit20 == (x)) || \ + (SpiDataLengthBit24 == (x)) || \ + (SpiDataLengthBit32 == (x))) + +/*!< Parameter valid check for first bit position */ +#define IS_VALID_FIRST_BIT_POSITION(x) \ +( (SpiFirstBitPositionMSB == (x)) || \ + (SpiFirstBitPositionLSB == (x))) + +/*!< Parameter valid check for frame number */ +#define IS_VALID_FRAME_NUMBER(x) \ +( (SpiFrameNumber1 == (x)) || \ + (SpiFrameNumber2 == (x)) || \ + (SpiFrameNumber3 == (x)) || \ + (SpiFrameNumber4 == (x))) + +/*!< Parameter valid check for work mode */ +#define IS_VALID_WORK_MODE(x) \ +( (SpiWorkMode4Line == (x)) || \ + (SpiWorkMode3Line == (x))) + +/*!< Parameter valid check for transmission mode */ +#define IS_VALID_COMM_MODE(x) \ +( (SpiTransFullDuplex == (x)) || \ + (SpiTransOnlySend == (x))) + +/*!< Parameter valid check for master slave mode */ +#define IS_VALID_MASTER_SLAVE_MODE(x) \ +( (SpiModeSlave == (x)) || \ + (SpiModeMaster == (x))) + +/*!< Parameter valid check for parity mode */ +#define IS_VALID_PARITY_MODE(x) \ +( (SpiParityEven == (x)) || \ + (SpiParityOdd == (x))) + +/*!< Parameter valid check for SS channel */ +#define IS_VALID_SS_CHANNEL(x) \ +( (SpiSsChannel0 == (x)) || \ + (SpiSsChannel1 == (x)) || \ + (SpiSsChannel2 == (x)) || \ + (SpiSsChannel3 == (x))) + +/*!< Parameter valid check for irq type */ +#define IS_VALID_IRQ_TYPE(x) \ +( (SpiIrqIdle == (x)) || \ + (SpiIrqReceive == (x)) || \ + (SpiIrqSend == (x)) || \ + (SpiIrqError == (x))) + +/*!< Parameter valid check for flag type */ +#define IS_VALID_FLAG_TYPE(x) \ +( (SpiFlagReceiveBufferFull == (x)) || \ + (SpiFlagSendBufferEmpty == (x)) || \ + (SpiFlagUnderloadError == (x)) || \ + (SpiFlagParityError == (x)) || \ + (SpiFlagModeFaultError == (x)) || \ + (SpiFlagSpiIdle == (x)) || \ + (SpiFlagOverloadError == (x))) + +/*!< SPI registers reset value */ +#define SPI_REG_DR_RESET_VALUE 0x00000000ul +#define SPI_REG_CR1_RESET_VALUE 0x00000000ul +#define SPI_REG_CFG1_RESET_VALUE 0x00000010ul +#define SPI_REG_SR_RESET_VALUE 0x00000020ul +#define SPI_REG_CFG2_RESET_VALUE 0x0000031Dul + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief De-Initialize SPI unit + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_DeInit(M4_SPI_TypeDef *SPIx) +{ + en_result_t enRet = ErrorInvalidParameter; + uint32_t regTemp = 0ul; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + regTemp = SPIx->SR; + if (SPI_REG_SR_RESET_VALUE != regTemp) + { + SPIx->SR = SPI_REG_SR_RESET_VALUE; + } + SPIx->CR1 = SPI_REG_CR1_RESET_VALUE; + SPIx->DR = SPI_REG_DR_RESET_VALUE; + SPIx->CFG1 = SPI_REG_CFG1_RESET_VALUE; + SPIx->CFG2 = SPI_REG_CFG2_RESET_VALUE; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize SPI unit + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] pstcSpiInitCfg Pointer to SPI init configuration + ** \arg See the struct #stc_spi_init_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** - pstcSpiInitCfg == NULL + ** + ******************************************************************************/ +en_result_t SPI_Init(M4_SPI_TypeDef *SPIx, const stc_spi_init_t *pstcSpiInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if((IS_VALID_SPI_UNIT(SPIx)) && (NULL != pstcSpiInitCfg)) + { + DDL_ASSERT(IS_VALID_SS_SETUP_DELAY_OPTION(pstcSpiInitCfg->stcDelayConfig.enSsSetupDelayOption)); + DDL_ASSERT(IS_VALID_SS_SETUP_DELAY_TIME(pstcSpiInitCfg->stcDelayConfig.enSsSetupDelayTime)); + DDL_ASSERT(IS_VALID_SS_HOLD_DELAY_OPTION(pstcSpiInitCfg->stcDelayConfig.enSsHoldDelayOption)); + DDL_ASSERT(IS_VALID_SS_HOLD_DELAY_TIME(pstcSpiInitCfg->stcDelayConfig.enSsHoldDelayTime)); + DDL_ASSERT(IS_VALID_SS_INTERVAL_TIME_OPTION(pstcSpiInitCfg->stcDelayConfig.enSsIntervalTimeOption)); + DDL_ASSERT(IS_VALID_SS_INTERVAL_TIME(pstcSpiInitCfg->stcDelayConfig.enSsIntervalTime)); + DDL_ASSERT(IS_VALID_SS_VALID_CHANNEL(pstcSpiInitCfg->stcSsConfig.enSsValidBit)); + DDL_ASSERT(IS_VALID_SS_POLARITY(pstcSpiInitCfg->stcSsConfig.enSs0Polarity)); + DDL_ASSERT(IS_VALID_SS_POLARITY(pstcSpiInitCfg->stcSsConfig.enSs1Polarity)); + DDL_ASSERT(IS_VALID_SS_POLARITY(pstcSpiInitCfg->stcSsConfig.enSs2Polarity)); + DDL_ASSERT(IS_VALID_SS_POLARITY(pstcSpiInitCfg->stcSsConfig.enSs3Polarity)); + DDL_ASSERT(IS_VALID_READ_DATA_REG_OBJECT(pstcSpiInitCfg->enReadBufferObject)); + DDL_ASSERT(IS_VALID_SCK_POLARITY(pstcSpiInitCfg->enSckPolarity)); + DDL_ASSERT(IS_VALID_SCK_PHASE(pstcSpiInitCfg->enSckPhase)); + DDL_ASSERT(IS_VALID_CLK_DIV(pstcSpiInitCfg->enClkDiv)); + DDL_ASSERT(IS_VALID_DATA_LENGTH(pstcSpiInitCfg->enDataLength)); + DDL_ASSERT(IS_VALID_FIRST_BIT_POSITION(pstcSpiInitCfg->enFirstBitPosition)); + DDL_ASSERT(IS_VALID_FRAME_NUMBER(pstcSpiInitCfg->enFrameNumber)); + DDL_ASSERT(IS_VALID_WORK_MODE(pstcSpiInitCfg->enWorkMode)); + DDL_ASSERT(IS_VALID_COMM_MODE(pstcSpiInitCfg->enTransMode)); + DDL_ASSERT(IS_VALID_MASTER_SLAVE_MODE(pstcSpiInitCfg->enMasterSlaveMode)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcSpiInitCfg->enCommAutoSuspendEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcSpiInitCfg->enModeFaultErrorDetectEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcSpiInitCfg->enParitySelfDetectEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcSpiInitCfg->enParityEn)); + DDL_ASSERT(IS_VALID_PARITY_MODE(pstcSpiInitCfg->enParity)); + + /* Master mode */ + if (SpiModeMaster == pstcSpiInitCfg->enMasterSlaveMode) + { + SPIx->CFG2_f.MSSIE = pstcSpiInitCfg->stcDelayConfig.enSsSetupDelayOption; + SPIx->CFG2_f.MSSDLE = pstcSpiInitCfg->stcDelayConfig.enSsHoldDelayOption; + SPIx->CFG2_f.MIDIE = pstcSpiInitCfg->stcDelayConfig.enSsIntervalTimeOption; + SPIx->CFG1_f.MSSI = pstcSpiInitCfg->stcDelayConfig.enSsSetupDelayTime; + SPIx->CFG1_f.MSSDL = pstcSpiInitCfg->stcDelayConfig.enSsHoldDelayTime; + SPIx->CFG1_f.MIDI = pstcSpiInitCfg->stcDelayConfig.enSsIntervalTime; + } + else + { + SPIx->CFG2_f.MSSIE = SpiSsSetupDelayTypicalSck1; + SPIx->CFG2_f.MSSDLE = SpiSsHoldDelayTypicalSck1; + SPIx->CFG2_f.MIDIE = SpiSsIntervalTypicalSck1PlusPck2; + SPIx->CFG1_f.MSSI = SpiSsSetupDelaySck1; + SPIx->CFG1_f.MSSDL = SpiSsHoldDelaySck1; + SPIx->CFG1_f.MIDI = SpiSsIntervalSck1PlusPck2; + } + + /* 4 lines spi mode */ + if (SpiWorkMode4Line == pstcSpiInitCfg->enWorkMode) + { + SPIx->CFG2_f.SSA = pstcSpiInitCfg->stcSsConfig.enSsValidBit; + SPIx->CFG1_f.SS0PV = pstcSpiInitCfg->stcSsConfig.enSs0Polarity; + SPIx->CFG1_f.SS1PV = pstcSpiInitCfg->stcSsConfig.enSs1Polarity; + SPIx->CFG1_f.SS2PV = pstcSpiInitCfg->stcSsConfig.enSs2Polarity; + SPIx->CFG1_f.SS3PV = pstcSpiInitCfg->stcSsConfig.enSs3Polarity; + } + else + { + SPIx->CFG2_f.SSA = SpiSsValidChannel0; + SPIx->CFG1_f.SS0PV = SpiSsLowValid; + SPIx->CFG1_f.SS1PV = SpiSsLowValid; + SPIx->CFG1_f.SS2PV = SpiSsLowValid; + SPIx->CFG1_f.SS3PV = SpiSsLowValid; + } + + /* Configure communication config register 1 */ + SPIx->CFG1_f.SPRDTD = pstcSpiInitCfg->enReadBufferObject; + SPIx->CFG1_f.FTHLV = pstcSpiInitCfg->enFrameNumber; + + /* Configure communication config register 2 */ + SPIx->CFG2_f.LSBF = pstcSpiInitCfg->enFirstBitPosition; + SPIx->CFG2_f.DSIZE = pstcSpiInitCfg->enDataLength; + SPIx->CFG2_f.MBR = pstcSpiInitCfg->enClkDiv; + SPIx->CFG2_f.CPOL = pstcSpiInitCfg->enSckPolarity; + SPIx->CFG2_f.CPHA = pstcSpiInitCfg->enSckPhase; + + /* Configure control register */ + SPIx->CR1_f.SPIMDS = pstcSpiInitCfg->enWorkMode; + SPIx->CR1_f.TXMDS = pstcSpiInitCfg->enTransMode; + SPIx->CR1_f.MSTR = pstcSpiInitCfg->enMasterSlaveMode; + SPIx->CR1_f.CSUSPE = pstcSpiInitCfg->enCommAutoSuspendEn; + SPIx->CR1_f.MODFE = pstcSpiInitCfg->enModeFaultErrorDetectEn; + SPIx->CR1_f.PATE = pstcSpiInitCfg->enParitySelfDetectEn; + SPIx->CR1_f.PAE = pstcSpiInitCfg->enParityEn; + SPIx->CR1_f.PAOE = pstcSpiInitCfg->enParity; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable SPI general loopback + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable general loopback + ** \arg Enable Enable general loopback + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_GeneralLoopbackCmd(M4_SPI_TypeDef *SPIx, en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + SPIx->CR1_f.SPLPBK2 = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable SPI reverse loopback + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable reverse loopback + ** \arg Enable Enable reverse loopback + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_ReverseLoopbackCmd(M4_SPI_TypeDef *SPIx, en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + SPIx->CR1_f.SPLPBK = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable SPI working + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable SPI working + ** \arg Enable Enable SPI working + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_Cmd(M4_SPI_TypeDef *SPIx, en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + SPIx->CR1_f.SPE = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI send 8bit data or 4/5/6/7 bit data + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] u8Data Send data value + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SendData8(M4_SPI_TypeDef *SPIx, uint8_t u8Data) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + SPIx->DR = u8Data; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI send 16bit data or 9/10/11/12/13/14/15 bit data + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] u16Data Send data value + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SendData16(M4_SPI_TypeDef *SPIx, uint16_t u16Data) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + SPIx->DR = u16Data; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI send 32bit data or 20/24 bit data + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] u32Data Send data value + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SendData32(M4_SPI_TypeDef *SPIx, uint32_t u32Data) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + SPIx->DR = u32Data; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI receive 8bit data or 4/5/6/7 bit data + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \retval uint8_t Receive data value + ** + ******************************************************************************/ +uint8_t SPI_ReceiveData8(const M4_SPI_TypeDef *SPIx) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_SPI_UNIT(SPIx)); + + return ((uint8_t)SPIx->DR); +} + +/** + ******************************************************************************* + ** \brief SPI receive 16bit data or 9/10/11/12/13/14/15 bit data + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \retval uint16_t Receive data value + ** + ******************************************************************************/ +uint16_t SPI_ReceiveData16(const M4_SPI_TypeDef *SPIx) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_SPI_UNIT(SPIx)); + + return ((uint16_t)SPIx->DR); +} + +/** + ******************************************************************************* + ** \brief SPI receive 32bit data or 20/24 bit data + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \retval uint32_t Receive data value + ** + ******************************************************************************/ +uint32_t SPI_ReceiveData32(const M4_SPI_TypeDef *SPIx) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_SPI_UNIT(SPIx)); + + return ((uint32_t)SPIx->DR); +} + +/** + ******************************************************************************* + ** \brief SPI set SS channel valid level polarity + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enChannel Select Slave channel + ** \arg SpiSsChannel0 SS0 channel + ** \arg SpiSsChannel1 SS1 channel + ** \arg SpiSsChannel2 SS2 channel + ** \arg SpiSsChannel3 SS3 channel + ** + ** \param [in] enPolarity SS channel valid level polarity + ** \arg SpiSsLowValid SS0~3 signal low level valid + ** \arg SpiSsHighValid SS0~3 signal high level valid + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetSsPolarity(M4_SPI_TypeDef *SPIx, en_spi_ss_channel_t enChannel, + en_spi_ss_polarity_t enPolarity) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_SS_CHANNEL(enChannel)); + DDL_ASSERT(IS_VALID_SS_POLARITY(enPolarity)); + + switch (enChannel) + { + case SpiSsChannel0: + SPIx->CFG1_f.SS0PV = enPolarity; + break; + case SpiSsChannel1: + SPIx->CFG1_f.SS1PV = enPolarity; + break; + case SpiSsChannel2: + SPIx->CFG1_f.SS2PV = enPolarity; + break; + case SpiSsChannel3: + SPIx->CFG1_f.SS3PV = enPolarity; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI set SS valid channel + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enChannel Select Slave channel + ** \arg SpiSsChannel0 SS0 channel + ** \arg SpiSsChannel1 SS1 channel + ** \arg SpiSsChannel2 SS2 channel + ** \arg SpiSsChannel3 SS3 channel + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetSsValidChannel(M4_SPI_TypeDef *SPIx, en_spi_ss_channel_t enChannel) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_SS_CHANNEL(enChannel)); + + SPIx->CFG2_f.SSA = enChannel; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI set read data register object + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enObject Read data register object + ** \arg SpiReadReceiverBuffer Read receive buffer + ** \arg SpiReadSendBuffer Read send buffer(must be read when TDEF=1) + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetReadDataRegObject(M4_SPI_TypeDef *SPIx, en_spi_read_object_t enObject) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_READ_DATA_REG_OBJECT(enObject)); + + SPIx->CFG1_f.SPRDTD = enObject; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI set frame number + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enFrameNum Once read or write frame number + ** \arg SpiFrameNumber1 1 frame data + ** \arg SpiFrameNumber2 2 frame data + ** \arg SpiFrameNumber3 3 frame data + ** \arg SpiFrameNumber4 4 frame data + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetFrameNumber(M4_SPI_TypeDef *SPIx, en_spi_frame_number_t enFrameNum) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_FRAME_NUMBER(enFrameNum)); + + SPIx->CFG1_f.FTHLV = enFrameNum; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI set data length + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enDataLength Read or write data length + ** \arg SpiDataLengthBit4 4 bits + ** \arg SpiDataLengthBit5 5 bits + ** \arg SpiDataLengthBit6 6 bits + ** \arg SpiDataLengthBit7 7 bits + ** \arg SpiDataLengthBit8 8 bits + ** \arg SpiDataLengthBit9 9 bits + ** \arg SpiDataLengthBit10 10 bits + ** \arg SpiDataLengthBit11 11 bits + ** \arg SpiDataLengthBit12 12 bits + ** \arg SpiDataLengthBit13 13 bits + ** \arg SpiDataLengthBit14 14 bits + ** \arg SpiDataLengthBit15 15 bits + ** \arg SpiDataLengthBit16 16 bits + ** \arg SpiDataLengthBit20 20 bits + ** \arg SpiDataLengthBit24 24 bits + ** \arg SpiDataLengthBit32 32 bits + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetDataLength(M4_SPI_TypeDef *SPIx, en_spi_data_length_t enDataLength) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_DATA_LENGTH(enDataLength)); + + SPIx->CFG2_f.DSIZE = enDataLength; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI set first bit position + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enPosition First bit position + ** \arg SpiFirstBitPositionMSB Spi first bit to MSB + ** \arg SpiFirstBitPositionLSB Spi first bit to LSB + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetFirstBitPosition(M4_SPI_TypeDef *SPIx, en_spi_first_bit_position_t enPosition) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_FIRST_BIT_POSITION(enPosition)); + + SPIx->CFG2_f.LSBF = enPosition; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief SPI set clock division + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enClkDiv Clock division + ** \arg SpiClkDiv2 Spi pclk1 division 2 + ** \arg SpiClkDiv4 Spi pclk1 division 4 + ** \arg SpiClkDiv8 Spi pclk1 division 8 + ** \arg SpiClkDiv16 Spi pclk1 division 16 + ** \arg SpiClkDiv32 Spi pclk1 division 32 + ** \arg SpiClkDiv64 Spi pclk1 division 64 + ** \arg SpiClkDiv128 Spi pclk1 division 128 + ** \arg SpiClkDiv256 Spi pclk1 division 256 + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_SetClockDiv(M4_SPI_TypeDef *SPIx, en_spi_clk_div_t enClkDiv) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_CLK_DIV(enClkDiv)); + + SPIx->CFG2_f.MBR = enClkDiv; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable SPI interrupt request + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enIrq SPI interrupt request type + ** \arg SpiIrqIdle Spi idle interrupt request + ** \arg SpiIrqReceive Spi receive interrupt request + ** \arg SpiIrqSend Spi send interrupt request + ** \arg SpiIrqError Spi error interrupt request + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable interrupt request + ** \arg Enable Enable interrupt request + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_IrqCmd(M4_SPI_TypeDef *SPIx, en_spi_irq_type_t enIrq, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_IRQ_TYPE(enIrq)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + switch (enIrq) + { + case SpiIrqIdle: + SPIx->CR1_f.IDIE = enNewSta; + break; + case SpiIrqReceive: + SPIx->CR1_f.RXIE = enNewSta; + break; + case SpiIrqSend: + SPIx->CR1_f.TXIE = enNewSta; + break; + case SpiIrqError: + SPIx->CR1_f.EIE = enNewSta; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get SPI flag status + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enFlag SPI flag type + ** \arg SpiFlagReceiveBufferFull Receive buffer full flag + ** \arg SpiFlagSendBufferEmpty Send buffer empty flag + ** \arg SpiFlagUnderloadError Underload error flag + ** \arg SpiFlagParityError Parity error flag + ** \arg SpiFlagModeFaultError Mode fault error flag + ** \arg SpiFlagSpiIdle SPI idle flag + ** \arg SpiFlagOverloadErro Overload error flag + ** + ** \retval Set Flag is set + ** \retval Reset Flag is reset + ** + ******************************************************************************/ +en_flag_status_t SPI_GetFlag(M4_SPI_TypeDef *SPIx, en_spi_flag_type_t enFlag) +{ + en_flag_status_t enFlagSta = Reset; + + /* Check parameters */ + if (IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case SpiFlagReceiveBufferFull: + enFlagSta = (en_flag_status_t)SPIx->SR_f.RDFF; + break; + case SpiFlagSendBufferEmpty: + enFlagSta = (en_flag_status_t)SPIx->SR_f.TDEF; + break; + case SpiFlagUnderloadError: + enFlagSta = (en_flag_status_t)SPIx->SR_f.UDRERF; + break; + case SpiFlagParityError: + enFlagSta = (en_flag_status_t)SPIx->SR_f.PERF; + break; + case SpiFlagModeFaultError: + enFlagSta = (en_flag_status_t)SPIx->SR_f.MODFERF; + break; + case SpiFlagSpiIdle: + enFlagSta = (en_flag_status_t)(bool)(!SPIx->SR_f.IDLNF); + break; + case SpiFlagOverloadError: + enFlagSta = (en_flag_status_t)SPIx->SR_f.OVRERF; + break; + default: + break; + } + } + + return enFlagSta; +} + +/** + ******************************************************************************* + ** \brief Clear SPI flag status + ** + ** \param [in] SPIx Pointer to SPI unit configuration address + ** \arg M4_SPI1 SPI unit 1 configuration Address + ** \arg M4_SPI2 SPI unit 2 configuration Address + ** \arg M4_SPI3 SPI unit 3 configuration Address + ** \arg M4_SPI4 SPI unit 4 configuration Address + ** + ** \param [in] enFlag SPI flag type + ** \arg SpiFlagReceiveBufferFull Receive buffer full flag + ** \arg SpiFlagSendBufferEmpty Send buffer empty flag + ** \arg SpiFlagUnderloadError Underload error flag + ** \arg SpiFlagParityError Parity error flag + ** \arg SpiFlagModeFaultError Mode fault error flag + ** \arg SpiFlagSpiIdle SPI empty flag + ** \arg SpiFlagOverloadErro Overload error flag + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - SPIx is invalid + ** + ******************************************************************************/ +en_result_t SPI_ClearFlag(M4_SPI_TypeDef *SPIx, en_spi_flag_type_t enFlag) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SPI_UNIT(SPIx)) + { + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case SpiFlagReceiveBufferFull: + SPIx->SR_f.RDFF = 0u; + break; + case SpiFlagSendBufferEmpty: + SPIx->SR_f.TDEF = 0u; + break; + case SpiFlagUnderloadError: + SPIx->SR_f.UDRERF = 0u; + break; + case SpiFlagParityError: + SPIx->SR_f.PERF = 0u; + break; + case SpiFlagModeFaultError: + SPIx->SR_f.MODFERF = 0u; + break; + case SpiFlagSpiIdle: + SPIx->SR_f.IDLNF = 0u; + break; + case SpiFlagOverloadError: + SPIx->SR_f.OVRERF = 0u; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +//@} // SpiGroup + +#endif /* DDL_SPI_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_sram.c b/driver/src/hc32f460_sram.c new file mode 100644 index 0000000..a7f8828 --- /dev/null +++ b/driver/src/hc32f460_sram.c @@ -0,0 +1,286 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_sram.c + ** + ** A detailed description is available at + ** @link SramGroup Internal SRAM module description @endlink + ** + ** - 2018-10-17 CDT First version for Device Driver Library of SRAM. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_sram.h" +#include "hc32f460_utility.h" + +#if (DDL_SRAM_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup SramGroup + ******************************************************************************/ +//@{ +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Parameter validity check for ECC/Parity error handling. */ +#define IS_VALID_ERR_OP(x) \ +( ((x) == SramNmi) || \ + ((x) == SramReset)) + +/*! Parameter validity check for SRAM ECC mode */ +#define IS_VALID_ECC_MD(x) \ +( ((x) == EccMode0) || \ + ((x) == EccMode1) || \ + ((x) == EccMode2) || \ + ((x) == EccMode3)) + +/*! Parameter validity check for SRAM Index */ +#define IS_VALID_INDEX(x) \ +( ((x) == Sram12Idx) || \ + ((x) == Sram3Idx) || \ + ((x) == SramHsIdx) || \ + ((x) == SramRetIdx)) + +/*! Parameter validity check for SRAM R/W wait cycle */ +#define IS_VALID_WAIT_CYCLE(x) \ +( ((x) == SramCycle1) || \ + ((x) == SramCycle2) || \ + ((x) == SramCycle3) || \ + ((x) == SramCycle4) || \ + ((x) == SramCycle5) || \ + ((x) == SramCycle6) || \ + ((x) == SramCycle7) || \ + ((x) == SramCycle8)) + +/*! Parameter validity check for SRAM error status */ +#define IS_VALID_ERR(x) \ +( ((x) == Sram3EccErr1) || \ + ((x) == Sram3EccErr2) || \ + ((x) == Sram12ParityErr) || \ + ((x) == SramHSParityErr) || \ + ((x) == SramRetParityErr)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief SRAM read, write wait cycle register disable function + ** + ** \param None + ** + ** \retval Ok SRAM R/W wait cycle register disabled + ** + ******************************************************************************/ +en_result_t SRAM_WT_Disable(void) +{ + M4_SRAMC->WTPR = 0x76u; + return Ok; +} + +/** + ******************************************************************************* + ** \brief SRAM read, write wait cycle register enable function + ** + ** \param None + ** + ** \retval Ok SRAM R/W wait cycle register enabled + ** + ******************************************************************************/ +en_result_t SRAM_WT_Enable(void) +{ + M4_SRAMC->WTPR = 0x77u; + return Ok; +} + +/** + ******************************************************************************* + ** \brief SRAM ECC/Parity check register disable function + ** + ** \param None + ** + ** \retval Ok SRAM ECC/Parity check register disabled + ** + ******************************************************************************/ +en_result_t SRAM_CK_Disable(void) +{ + M4_SRAMC->CKPR = 0x76u; + return Ok; +} + +/** + ******************************************************************************* + ** \brief SRAM ECC/Parity check register enable function + ** + ** \param None + ** + ** \retval Ok SRAM ECC/Parity check register enabled + ** + ******************************************************************************/ +en_result_t SRAM_CK_Enable(void) +{ + M4_SRAMC->CKPR = 0x77u; + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get SRAM ECC/Parity error status flag + ** + ** \param [in] enSramErrStatus SRAM error status, This parameter can be + ** some values of @ref en_sram_err_status_t + ** + ** \retval Set Corresponding error occurs + ** Reset Corresponding error not occurs + ** + ******************************************************************************/ +en_flag_status_t SRAM_GetStatus(en_sram_err_status_t enSramErrStatus) +{ + DDL_ASSERT(IS_VALID_ERR(enSramErrStatus)); + if (true == !!(enSramErrStatus & M4_SRAMC->CKSR)) + { + return Set; + } + else + { + return Reset; + } +} + +/** + ******************************************************************************* + ** \brief Clear SRAM ECC/Parity error status flag + ** + ** \param [in] enSramErrStatus SRAM error status, This parameter can be + ** some values of @ref en_sram_err_status_t + ** + ** \retval Ok Corresponding error flag be cleared + ** ErrorInvalidParameter Invalid parameter + ** + ******************************************************************************/ +en_result_t SRAM_ClrStatus(en_sram_err_status_t enSramErrStatus) +{ + DDL_ASSERT(IS_VALID_ERR(enSramErrStatus)); + M4_SRAMC->CKSR |= enSramErrStatus; + return Ok; +} + +/** + ******************************************************************************* + ** \brief SRAM initialization + ** + ** \param [in] pstcSramConfig SRAM configure structure + ** + ** \retval Ok SRAM initialized + ** ErrorInvalidParameter Invalid parameter + ** + ******************************************************************************/ +en_result_t SRAM_Init(const stc_sram_config_t *pstcSramConfig) +{ + uint8_t i = 0u; + uint8_t u8TmpIdx; + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_WAIT_CYCLE(pstcSramConfig->enSramRC)); + DDL_ASSERT(IS_VALID_WAIT_CYCLE(pstcSramConfig->enSramWC)); + DDL_ASSERT(IS_VALID_ECC_MD(pstcSramConfig->enSramEccMode)); + DDL_ASSERT(IS_VALID_ERR_OP(pstcSramConfig->enSramEccOp)); + DDL_ASSERT(IS_VALID_ERR_OP(pstcSramConfig->enSramPyOp)); + + u8TmpIdx = pstcSramConfig->u8SramIdx; + + if (0u == u8TmpIdx) + { + enRet = ErrorInvalidParameter; + } + else + { + SRAM_WT_Enable(); + SRAM_CK_Enable(); + for (i = 0u; i < 4u; i++) + { + if (true == (u8TmpIdx & 0x01u)) + { + M4_SRAMC->WTCR |= (pstcSramConfig->enSramRC | \ + (pstcSramConfig->enSramWC << 4ul)) << (i * 8ul); + } + u8TmpIdx >>= 1u; + } + /* SRAM3 ECC config */ + if (pstcSramConfig->u8SramIdx & Sram3Idx) + { + M4_SRAMC->CKCR_f.ECCMOD = pstcSramConfig->enSramEccMode; + M4_SRAMC->CKCR_f.ECCOAD = pstcSramConfig->enSramEccOp; + } + /* SRAM1/2/HS/Ret parity config */ + else + { + M4_SRAMC->CKCR_f.PYOAD = pstcSramConfig->enSramPyOp; + } + + SRAM_WT_Disable(); + SRAM_CK_Disable(); + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief SRAM de-initialization + ** + ** \param None + ** + ** \retval Ok SRAM de-initialized + ** + ******************************************************************************/ +en_result_t SRAM_DeInit(void) +{ + /* SRAM R/W wait register */ + M4_SRAMC->WTPR = 0x77ul; + M4_SRAMC->WTCR = 0ul; + M4_SRAMC->WTPR = 0x76ul; + + /* SRAM check register */ + M4_SRAMC->CKPR = 0x77ul; + M4_SRAMC->CKCR = 0ul; + M4_SRAMC->CKPR = 0x76ul; + + /* SRAM status register */ + M4_SRAMC->CKSR = 0x1Ful; + + return Ok; +} + +//@} // SramGroup + +#endif /* DDL_SRAM_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_swdt.c b/driver/src/hc32f460_swdt.c new file mode 100644 index 0000000..57d5766 --- /dev/null +++ b/driver/src/hc32f460_swdt.c @@ -0,0 +1,170 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_swdt.c + ** + ** A detailed description is available at + ** @link SwdtGroup Special Watchdog Counter description @endlink + ** + ** - 2018-10-16 CDT First version for Device Driver Library of SWDT. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_swdt.h" +#include "hc32f460_utility.h" + +#if (DDL_SWDT_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup SwdtGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for flag type */ +#define IS_VALID_FLAG_TYPE(x) \ +( (SwdtFlagCountUnderflow == (x)) || \ + (SwdtFlagRefreshError == (x))) + +/*!< SWDT_RR register refresh key */ +#define SWDT_REFRESH_START_KEY ((uint16_t)0x0123) +#define SWDT_REFRESH_END_KEY_ ((uint16_t)0x3210) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief SWDT refresh counter + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t SWDT_RefreshCounter(void) +{ + en_result_t enRet = Ok; + + M4_SWDT->RR = SWDT_REFRESH_START_KEY; + M4_SWDT->RR = SWDT_REFRESH_END_KEY_; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get SWDT counter current count value + ** + ** \param [in] None + ** + ** \retval uint16_t SWDT counter current count value + ** + ******************************************************************************/ +uint16_t SWDT_GetCountValue(void) +{ + return ((uint16_t)M4_SWDT->SR_f.CNT); +} + +/** + ******************************************************************************* + ** \brief Get SWDT flag status + ** + ** \param [in] enFlag SWDT flag type + ** \arg SwdtFlagCountUnderflow Count underflow flag + ** \arg SwdtFlagRefreshError Refresh error flag + ** + ** \retval Set Flag is set + ** \retval Reset Flag is reset + ** + ******************************************************************************/ +en_flag_status_t SWDT_GetFlag(en_swdt_flag_type_t enFlag) +{ + en_flag_status_t enFlagSta = Reset; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case SwdtFlagCountUnderflow: + enFlagSta = (en_flag_status_t)M4_SWDT->SR_f.UDF; + break; + case SwdtFlagRefreshError: + enFlagSta = (en_flag_status_t)M4_SWDT->SR_f.REF; + break; + default: + break; + } + + return enFlagSta; +} + +/** + ******************************************************************************* + ** \brief Clear SWDT flag status + ** + ** \param [in] enFlag SWDT flag type + ** \arg SwdtFlagCountUnderflow Count underflow flag + ** \arg SwdtFlagRefreshError Refresh error flag + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t SWDT_ClearFlag(en_swdt_flag_type_t enFlag) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case SwdtFlagCountUnderflow: + M4_SWDT->SR_f.UDF = 0u; + break; + case SwdtFlagRefreshError: + M4_SWDT->SR_f.REF = 0u; + break; + default: + break; + } + + return enRet; +} + +//@} // SwdtGroup + +#endif /* DDL_SWDT_ENABLE */ + +/****************************************************************************** + * EOF (not truncated) + *****************************************************************************/ diff --git a/driver/src/hc32f460_timer0.c b/driver/src/hc32f460_timer0.c new file mode 100644 index 0000000..497f5d9 --- /dev/null +++ b/driver/src/hc32f460_timer0.c @@ -0,0 +1,967 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer0.c + ** + ** A detailed description is available at + ** @link Timer0Group description @endlink + ** + ** - 2018-10-11 CDT First version for Device Driver Library of TIMER0. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer0.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER0_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer0Group + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/* Parameter validity check for unit. */ +#define IS_VALID_UNIT(x) \ +( ((x) == M4_TMR01) || \ + ((x) == M4_TMR02)) + +/* Parameter validity check for channel. */ +#define IS_VALID_CHANNEL(x) \ +( ((x) == Tim0_ChannelA) || \ + ((x) == Tim0_ChannelB)) + +/* Parameter validity check for command. */ +#define IS_VALID_COMMAND(x) \ +( ((x) == Disable) || \ + ((x) == Enable)) + +/* Parameter validity check for timer0 function mode. */ +#define IS_VALID_FUNCTION(x) \ +( ((x) == Tim0_OutputCapare) || \ + ((x) == Tim0_InputCaptrue)) + +/* Parameter validity check for clock division. */ +#define IS_VALID_CLK_DIVISION(x) \ +( ((x) == Tim0_ClkDiv0) || \ + ((x) == Tim0_ClkDiv2) || \ + ((x) == Tim0_ClkDiv4) || \ + ((x) == Tim0_ClkDiv8) || \ + ((x) == Tim0_ClkDiv16) || \ + ((x) == Tim0_ClkDiv32) || \ + ((x) == Tim0_ClkDiv64) || \ + ((x) == Tim0_ClkDiv128) || \ + ((x) == Tim0_ClkDiv256) || \ + ((x) == Tim0_ClkDiv512) || \ + ((x) == Tim0_ClkDiv1024)) + +/* Parameter validity check for synchronous clock source. */ +#define IS_VALID_CLK_SYN_SRC(x) \ +( ((x) == Tim0_Pclk1) || \ + ((x) == Tim0_InsideHardTrig)) + +/* Parameter validity check for asynchronous clock source. */ +#define IS_VALID_CLK_ASYN_SRC(x) \ +( ((x) == Tim0_LRC) || \ + ((x) == Tim0_XTAL32)) + +/* Parameter validity check for counter clock mode. */ +#define IS_VALID_CLK_MODE(x) \ +( ((x) == Tim0_Sync) || \ + ((x) == Tim0_Async)) + +/* Parameter validity check for counter clock mode for M4_TMR01. */ +#define IS_VALID_CLK_MODE_UNIT01(x) \ +( (x) == Tim0_Async) + +/* Parameter validity check for external trigger event. */ +#define IS_VALID_TRIG_SRC_EVENT(x) \ +( ((x) <= EVT_PORT_EIRQ15) || \ + (((x) >= EVT_DMA1_TC0) && ((x) <= EVT_DMA2_BTC3)) || \ + (((x) >= EVT_EFM_OPTEND) && ((x) <= EVT_USBFS_SOF)) || \ + (((x) >= EVT_DCU1) && ((x) <= EVT_DCU4)) || \ + (((x) >= EVT_TMR01_GCMA) && ((x) <= EVT_TMR02_GCMB)) || \ + (((x) >= EVT_RTC_ALM) && ((x) <= EVT_RTC_PRD)) || \ + (((x) >= EVT_TMR61_GCMA) && ((x) <= EVT_TMR61_GUDF)) || \ + (((x) >= EVT_TMR61_SCMA) && ((x) <= EVT_TMR61_SCMB)) || \ + (((x) >= EVT_TMR62_GCMA) && ((x) <= EVT_TMR62_GUDF)) || \ + (((x) >= EVT_TMR62_SCMA) && ((x) <= EVT_TMR62_SCMB)) || \ + (((x) >= EVT_TMR63_GCMA) && ((x) <= EVT_TMR63_GUDF)) || \ + (((x) >= EVT_TMR63_SCMA) && ((x) <= EVT_TMR63_SCMB)) || \ + (((x) >= EVT_TMRA1_OVF) && ((x) <= EVT_TMRA5_CMP)) || \ + (((x) >= EVT_TMRA6_OVF) && ((x) <= EVT_TMRA6_CMP)) || \ + (((x) >= EVT_USART1_EI) && ((x) <= EVT_USART4_RTO)) || \ + (((x) >= EVT_SPI1_SPRI) && ((x) <= EVT_AOS_STRG)) || \ + (((x) >= EVT_TMR41_SCMUH) && ((x) <= EVT_TMR42_SCMWL)) || \ + (((x) >= EVT_TMR43_SCMUH) && ((x) <= EVT_TMR43_SCMWL)) || \ + (((x) >= EVT_EVENT_PORT1) && ((x) <= EVT_EVENT_PORT4)) || \ + (((x) >= EVT_I2S1_TXIRQOUT) && ((x) <= EVT_I2S1_RXIRQOUT)) || \ + (((x) >= EVT_I2S2_TXIRQOUT) && ((x) <= EVT_I2S2_RXIRQOUT)) || \ + (((x) >= EVT_I2S3_TXIRQOUT) && ((x) <= EVT_I2S3_RXIRQOUT)) || \ + (((x) >= EVT_I2S4_TXIRQOUT) && ((x) <= EVT_I2S4_RXIRQOUT)) || \ + (((x) >= EVT_ACMP1) && ((x) <= EVT_ACMP3)) || \ + (((x) >= EVT_I2C1_RXI) && ((x) <= EVT_I2C3_EEI)) || \ + (((x) >= EVT_PVD_PVD1) && ((x) <= EVT_OTS)) || \ + ((x) == EVT_WDT_REFUDF) || \ + (((x) >= EVT_ADC1_EOCA) && ((x) <= EVT_TRNG_END)) || \ + (((x) >= EVT_SDIOC1_DMAR) && ((x) <= EVT_SDIOC1_DMAW)) || \ + (((x) >= EVT_SDIOC2_DMAR) && ((x) <= EVT_SDIOC2_DMAW))) + +/* Parameter validity check for common trigger. */ +#define IS_VALID_TIM0_COM_TRIGGER(x) \ +( ((x) == Tim0ComTrigger_1) || \ + ((x) == Tim0ComTrigger_2) || \ + ((x) == Tim0ComTrigger_1_2)) + +/* Delay count for time out */ +#define TIMER0_TMOUT (0x5000ul) +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Get clock mode + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \retval Tim0_Sync: Synchronous clock + ** \retval Tim0_Async: Asynchronous clock + ** + ******************************************************************************/ +static en_tim0_counter_mode_t TIMER0_GetClkMode(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh) +{ + en_tim0_counter_mode_t enMode = Tim0_Sync; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + switch(enCh) + { + case Tim0_ChannelA: + enMode = (en_tim0_counter_mode_t)pstcTim0Reg->BCONR_f.SYNSA; + break; + case Tim0_ChannelB: + enMode = (en_tim0_counter_mode_t)pstcTim0Reg->BCONR_f.SYNSB; + break; + default: + break; + } + return enMode; +} + +/** + ******************************************************************************* + ** \brief Time delay for register write in asynchronous mode + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] enIsPublicReg Enable for BCONR and STFLR register delay + ** + ** \retval None + ** + ******************************************************************************/ +static void AsyncDelay(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh, + en_functional_state_t enIsPublicReg) +{ + en_functional_state_t enDelayEn = Disable; + en_tim0_counter_mode_t enModeA = TIMER0_GetClkMode(pstcTim0Reg, Tim0_ChannelA); + en_tim0_counter_mode_t enModeB = TIMER0_GetClkMode(pstcTim0Reg, Tim0_ChannelB); + + if(Enable == enIsPublicReg) + { + if((Tim0_Async == enModeA) || (Tim0_Async == enModeB)) + { + enDelayEn = Enable; + } + } + else + { + if(Tim0_Async == TIMER0_GetClkMode(pstcTim0Reg, enCh)) + { + enDelayEn = Enable; + } + } + + if(Enable == enDelayEn) + { + for(uint32_t i=0ul; iSTFLR_f.CMAF; + break; + case Tim0_ChannelB: + enFlag = (en_flag_status_t)pstcTim0Reg->STFLR_f.CMBF; + break; + default: + break; + } + return enFlag; +} + +/** + ******************************************************************************* + ** \brief Clear Timer0 status flag + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Timer0_ChA or Timer0_ChB + ** + ** \retval Ok Success + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_ClearFlag(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + if(Tim0_ChannelA == enCh) + { + pstcTim0Reg->STFLR_f.CMAF =0u; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(0u != pstcTim0Reg->STFLR_f.CMAF) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + } + else + { + pstcTim0Reg->STFLR_f.CMBF = 0u; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(0u != pstcTim0Reg->STFLR_f.CMBF) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Command the timer0 function + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Timer0_ChA or Timer0_ChB + ** + ** \param [in] enCmd Disable or Enable the function + ** + ** \retval Ok Success + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_Cmd(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh, + en_functional_state_t enCmd) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + DDL_ASSERT(IS_VALID_COMMAND(enCmd)); + + switch (enCh) + { + case Tim0_ChannelA: + pstcTim0Reg->BCONR_f.CSTA = enCmd; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(enCmd != pstcTim0Reg->BCONR_f.CSTA) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + case Tim0_ChannelB: + pstcTim0Reg->BCONR_f.CSTB = enCmd; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(enCmd != pstcTim0Reg->BCONR_f.CSTB) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + default: + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Select the timer0 function mode + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] enFunc Timer0 function,Tim0_OutputCapare or Tim0_InputCapture + ** + ** \retval Ok Success + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_SetFunc(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh, + en_tim0_function_t enFunc) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + DDL_ASSERT(IS_VALID_FUNCTION(enFunc)); + + switch (enCh) + { + case Tim0_ChannelA: + pstcTim0Reg->BCONR_f.CAPMDA = enFunc; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(enFunc != pstcTim0Reg->BCONR_f.CAPMDA) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + case Tim0_ChannelB: + pstcTim0Reg->BCONR_f.CAPMDB = enFunc; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(enFunc != pstcTim0Reg->BCONR_f.CAPMDB) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + default: + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Timer0 interrupt function command + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] enCmd Disable or Enable the function + ** + ** \retval Ok Success + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_IntCmd(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh, + en_functional_state_t enCmd) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + DDL_ASSERT(IS_VALID_COMMAND(enCmd)); + + switch (enCh) + { + case Tim0_ChannelA: + pstcTim0Reg->BCONR_f.INTENA = enCmd; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(enCmd != pstcTim0Reg->BCONR_f.INTENA) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + case Tim0_ChannelB: + pstcTim0Reg->BCONR_f.INTENB = enCmd; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(enCmd != pstcTim0Reg->BCONR_f.INTENB) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + default: + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer0 counter register + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \retval uint16_t Count register + ** + ******************************************************************************/ +uint16_t TIMER0_GetCntReg(M4_TMR0_TypeDef* pstcTim0Reg,en_tim0_channel_t enCh) +{ + uint16_t u16Value = 0u; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + if(Tim0_ChannelA == enCh) + { + u16Value = (uint16_t)((pstcTim0Reg->CNTAR)&0xFFFFu); + } + else + { + u16Value = (uint16_t)((pstcTim0Reg->CNTBR)&0xFFFFu); + } + + return u16Value; +} + +/** + ******************************************************************************* + ** \brief Write Timer0 counter register + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] u16Cnt Data to write + ** + ** \retval Ok Success + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_WriteCntReg(M4_TMR0_TypeDef* pstcTim0Reg,en_tim0_channel_t enCh, + uint16_t u16Cnt) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + if(Tim0_ChannelA == enCh) + { + pstcTim0Reg->CNTAR = (uint32_t)u16Cnt; + AsyncDelay(pstcTim0Reg, enCh, Disable); + while(u16Cnt != (uint16_t)pstcTim0Reg->CNTAR) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + } + else + { + pstcTim0Reg->CNTBR = (uint32_t)u16Cnt; + AsyncDelay(pstcTim0Reg, enCh, Disable); + while(u16Cnt != (uint16_t)pstcTim0Reg->CNTBR) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer0 base compare count register + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \retval uint16_t Base compare count register + ** + ******************************************************************************/ +uint16_t TIMER0_GetCmpReg(M4_TMR0_TypeDef* pstcTim0Reg,en_tim0_channel_t enCh) +{ + uint16_t u16Value = 0u; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + if(Tim0_ChannelA == enCh) + { + u16Value = (uint16_t)((pstcTim0Reg->CMPAR)&0xFFFFu); + } + else + { + u16Value = (uint16_t)((pstcTim0Reg->CMPBR)&0xFFFFu); + } + return u16Value; +} + +/** + ******************************************************************************* + ** \brief Wirte Timer0 base compare count register + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] u16Cnt Data to write + ** + ** \retval Ok Success + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_WriteCmpReg(M4_TMR0_TypeDef* pstcTim0Reg, en_tim0_channel_t enCh, + uint16_t u16Cnt) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + if(Tim0_ChannelA == enCh) + { + pstcTim0Reg->CMPAR = (uint32_t)u16Cnt; + AsyncDelay(pstcTim0Reg, enCh, Disable); + while(u16Cnt != (uint16_t)pstcTim0Reg->CMPAR) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + } + else + { + pstcTim0Reg->CMPBR = (uint32_t)u16Cnt; + AsyncDelay(pstcTim0Reg, enCh, Disable); + while(u16Cnt != (uint16_t)pstcTim0Reg->CMPBR) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Timer0 peripheral base function initialize + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] pstcBaseInit Timer0 function base parameter structure + ** + ** \retval Ok Process finished. + ** \retval ErrorInvalidParameter Parameter error. + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_BaseInit(M4_TMR0_TypeDef* pstcTim0Reg,en_tim0_channel_t enCh, + const stc_tim0_base_init_t* pstcBaseInit) +{ + stc_tmr0_bconr_field_t stcBconrTmp; + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + + if (NULL != pstcBaseInit) + { + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + DDL_ASSERT(IS_VALID_CLK_DIVISION(pstcBaseInit->Tim0_ClockDivision)); + DDL_ASSERT(IS_VALID_CLK_SYN_SRC(pstcBaseInit->Tim0_SyncClockSource)); + DDL_ASSERT(IS_VALID_CLK_ASYN_SRC(pstcBaseInit->Tim0_AsyncClockSource)); + DDL_ASSERT(IS_VALID_CLK_MODE(pstcBaseInit->Tim0_CounterMode)); + + if((M4_TMR01 == pstcTim0Reg)&&(Tim0_ChannelA == enCh)) + { + DDL_ASSERT(IS_VALID_CLK_MODE_UNIT01(pstcBaseInit->Tim0_CounterMode)); + } + + /*Read current BCONR register */ + stcBconrTmp = pstcTim0Reg->BCONR_f; + /* Clear current configurate CH */ + if(Tim0_ChannelA == enCh) + { + *(uint32_t *)&stcBconrTmp &= 0xFFFF0000ul; + } + else + { + *(uint32_t *)&stcBconrTmp &= 0x0000FFFFul; + } + pstcTim0Reg->BCONR_f = stcBconrTmp; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(*(uint32_t *)&stcBconrTmp != *(uint32_t *)&(pstcTim0Reg->BCONR_f)) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + + switch(enCh) + { + case Tim0_ChannelA: + + switch(pstcBaseInit->Tim0_CounterMode) + { + case Tim0_Sync: + stcBconrTmp.SYNCLKA = pstcBaseInit->Tim0_SyncClockSource; + break; + case Tim0_Async: + stcBconrTmp.ASYNCLKA = pstcBaseInit->Tim0_AsyncClockSource; + break; + default: + break; + } + /*set clock division*/ + stcBconrTmp.CKDIVA = pstcBaseInit->Tim0_ClockDivision; + /* Write BCONR register */ + pstcTim0Reg->BCONR_f = stcBconrTmp; + AsyncDelay(pstcTim0Reg, enCh, Enable); + + /*set timer compare value*/ + pstcTim0Reg->CMPAR = pstcBaseInit->Tim0_CmpValue; + AsyncDelay(pstcTim0Reg, enCh, Enable); + + /*set timer counter mode*/ + pstcTim0Reg->BCONR_f.SYNSA = pstcBaseInit->Tim0_CounterMode; + AsyncDelay(pstcTim0Reg, enCh, Enable); + u32TimeOut = 0ul; + while(pstcBaseInit->Tim0_CounterMode != pstcTim0Reg->BCONR_f.SYNSA) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + + break; + + case Tim0_ChannelB: + switch(pstcBaseInit->Tim0_CounterMode) + { + case Tim0_Sync: + stcBconrTmp.SYNCLKB = pstcBaseInit->Tim0_SyncClockSource; + break; + case Tim0_Async: + stcBconrTmp.ASYNCLKB = pstcBaseInit->Tim0_AsyncClockSource; + break; + default: + break; + } + /*set clock division*/ + stcBconrTmp.CKDIVB = pstcBaseInit->Tim0_ClockDivision; + /* Write BCONR register */ + pstcTim0Reg->BCONR_f = stcBconrTmp; + AsyncDelay(pstcTim0Reg, enCh, Enable); + + /*set timer compare value*/ + pstcTim0Reg->CMPBR = pstcBaseInit->Tim0_CmpValue; + AsyncDelay(pstcTim0Reg, enCh, Enable); + + /*set timer counter mode*/ + pstcTim0Reg->BCONR_f.SYNSB = pstcBaseInit->Tim0_CounterMode; + AsyncDelay(pstcTim0Reg, enCh, Enable); + u32TimeOut = 0ul; + while(pstcBaseInit->Tim0_CounterMode != pstcTim0Reg->BCONR_f.SYNSB) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + break; + + default: + break; + } + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Timer0 peripheral base function initalize + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \retval Ok Process finished. + ** \retval ErrorTimeout Process timeout + ** + ******************************************************************************/ +en_result_t TIMER0_DeInit(M4_TMR0_TypeDef* pstcTim0Reg,en_tim0_channel_t enCh) +{ + en_result_t enRet = Ok; + uint32_t u32TimeOut = 0ul; + + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + + switch(enCh) + { + case Tim0_ChannelA: + pstcTim0Reg->BCONR &= 0xFFFF0000ul; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(0ul != (pstcTim0Reg->BCONR & 0x0000FFFFul)) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + + pstcTim0Reg->CMPAR = 0x0000FFFFul; + pstcTim0Reg->CNTAR = 0x00000000ul; + pstcTim0Reg->STFLR_f.CMAF =0u; + break; + + case Tim0_ChannelB: + pstcTim0Reg->BCONR &= 0x0000FFFFul; + AsyncDelay(pstcTim0Reg, enCh, Enable); + while(0ul != (pstcTim0Reg->BCONR & 0xFFFF0000ul)) + { + if(u32TimeOut++ > TIMER0_TMOUT) + { + enRet = ErrorTimeout; + break; + } + } + + pstcTim0Reg->CMPBR = 0x0000FFFFul; + pstcTim0Reg->CNTBR = 0x00000000ul; + pstcTim0Reg->STFLR_f.CMBF =0u; + break; + default: + break; + } + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set external trigger source for Timer0 + ** + ** \param [in] enEvent External event source + ** + ** \retval None + ** + ******************************************************************************/ +void TIMER0_SetTriggerSrc(en_event_src_t enEvent) +{ + DDL_ASSERT(IS_VALID_TRIG_SRC_EVENT(enEvent)); + + M4_AOS->TMR0_HTSSR_f.TRGSEL = enEvent; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timer0 common trigger. + ** + ** \param [in] enComTrigger Timer0 common trigger selection. See @ref en_tim0_com_trigger_t for details. + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None + ** + ******************************************************************************/ +void TIMER0_ComTriggerCmd(en_tim0_com_trigger_t enComTrigger, en_functional_state_t enState) +{ + uint32_t u32ComTrig = (uint32_t)enComTrigger; + + DDL_ASSERT(IS_VALID_TIM0_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (enState == Enable) + { + M4_AOS->TMR0_HTSSR |= (u32ComTrig << 30u); + } + else + { + M4_AOS->TMR0_HTSSR &= ~(u32ComTrig << 30u); + } +} + +/** + ******************************************************************************* + ** \brief Timer0 hardware trigger function initalize + ** + ** \param [in] pstcTim0Reg Pointer to Timer0 register + ** + ** \param [in] enCh Timer0 channel, Tim0_ChannelA or Tim0_ChannelB + ** + ** \param [in] pStcInit Timer0 hareware trigger function structure + ** + ** \retval Ok Process finished. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t TIMER0_HardTriggerInit(M4_TMR0_TypeDef* pstcTim0Reg,en_tim0_channel_t enCh, + const stc_tim0_trigger_init_t* pStcInit) +{ + stc_tmr0_bconr_field_t stcBconrTmp; + en_result_t enRet = Ok; + + if(NULL != pStcInit) + { + DDL_ASSERT(IS_VALID_UNIT(pstcTim0Reg)); + DDL_ASSERT(IS_VALID_CHANNEL(enCh)); + DDL_ASSERT(IS_VALID_FUNCTION(pStcInit->Tim0_OCMode)); + DDL_ASSERT(IS_VALID_TRIG_SRC_EVENT(pStcInit->Tim0_SelTrigSrc)); + + /*Read current BCONR register */ + stcBconrTmp = pstcTim0Reg->BCONR_f; + + switch(enCh) + { + case Tim0_ChannelA: + /*set work on input captrue or output capare*/ + stcBconrTmp.CAPMDA = pStcInit->Tim0_OCMode; + /*enable input capture*/ + stcBconrTmp.HICPA = pStcInit->Tim0_InTrigEnable; + /*enable trigger clear counter*/ + stcBconrTmp.HCLEA = pStcInit->Tim0_InTrigClear; + /*enable trigger start counter*/ + stcBconrTmp.HSTAA = pStcInit->Tim0_InTrigStart; + /*enable trigger stop counter*/ + stcBconrTmp.HSTPA = pStcInit->Tim0_InTrigStop; + + /* Write BCONR register */ + pstcTim0Reg->BCONR_f = stcBconrTmp; + break; + case Tim0_ChannelB: + /*set work on input captrue or output capare*/ + stcBconrTmp.CAPMDB = pStcInit->Tim0_OCMode; + /*enable input capture*/ + stcBconrTmp.HICPB = pStcInit->Tim0_InTrigEnable; + /*enable trigger clear counter*/ + stcBconrTmp.HCLEB = pStcInit->Tim0_InTrigClear; + /*enable trigger start counter*/ + stcBconrTmp.HSTAB = pStcInit->Tim0_InTrigStart; + /*enable trigger stop counter*/ + stcBconrTmp.HSTPB = pStcInit->Tim0_InTrigStop; + + /* Write BCONR register */ + pstcTim0Reg->BCONR_f = stcBconrTmp; + break; + default: + break; + } + AsyncDelay(pstcTim0Reg, enCh, Enable); + + /* Set trigger source*/ + M4_AOS->TMR0_HTSSR_f.TRGSEL = pStcInit->Tim0_SelTrigSrc; + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; + +} + +//@} // Timer0Group + +#endif /* DDL_TIMER0_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timer4_cnt.c b/driver/src/hc32f460_timer4_cnt.c new file mode 100644 index 0000000..1b655b4 --- /dev/null +++ b/driver/src/hc32f460_timer4_cnt.c @@ -0,0 +1,842 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer4_cnt.c + ** + ** A detailed description is available at + ** @link Timer4CntGroup Timer4CNT description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library of Timer4CNT. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer4_cnt.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER4_CNT_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer4CntGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter validity check for Timer4 unit */ +#define IS_VALID_TIMER4(__TMRx__) \ +( (M4_TMR41 == (__TMRx__)) || \ + (M4_TMR42 == (__TMRx__)) || \ + (M4_TMR43 == (__TMRx__))) + +/*!< Parameter validity check for CNT pclk division */ +#define IS_VALID_CNT_CLK_DIV(x) \ +( (Timer4CntPclkDiv1 == (x)) || \ + (Timer4CntPclkDiv2 == (x)) || \ + (Timer4CntPclkDiv4 == (x)) || \ + (Timer4CntPclkDiv8 == (x)) || \ + (Timer4CntPclkDiv16 == (x)) || \ + (Timer4CntPclkDiv32 == (x)) || \ + (Timer4CntPclkDiv64 == (x)) || \ + (Timer4CntPclkDiv128 == (x)) || \ + (Timer4CntPclkDiv256 == (x)) || \ + (Timer4CntPclkDiv512 == (x)) || \ + (Timer4CntPclkDiv1024 == (x))) + +/*!< Parameter validity check for CNT mode */ +#define IS_VALID_CNT_MODE(x) \ +( (Timer4CntSawtoothWave == (x)) || \ + (Timer4CntTriangularWave == (x))) + +/*!< Parameter validity check for CNT interrupt mask */ +#define IS_VALID_CNT_INT_MSK(x) \ +( (Timer4CntIntMask0 == (x)) || \ + (Timer4CntIntMask1 == (x)) || \ + (Timer4CntIntMask2 == (x)) || \ + (Timer4CntIntMask3 == (x)) || \ + (Timer4CntIntMask4 == (x)) || \ + (Timer4CntIntMask5 == (x)) || \ + (Timer4CntIntMask6 == (x)) || \ + (Timer4CntIntMask7 == (x)) || \ + (Timer4CntIntMask8 == (x)) || \ + (Timer4CntIntMask9 == (x)) || \ + (Timer4CntIntMask10 == (x)) || \ + (Timer4CntIntMask11 == (x)) || \ + (Timer4CntIntMask12 == (x)) || \ + (Timer4CntIntMask13 == (x)) || \ + (Timer4CntIntMask14 == (x)) || \ + (Timer4CntIntMask15 == (x))) + +/*!< Parameter validity check for CNT match interrupt type */ +#define IS_VALID_CNT_INT_TYPE(x) \ +( (Timer4CntZeroMatchInt == (x)) || \ + (Timer4CntPeakMatchInt == (x))) + +/*!< Parameter validity check for CNT clock source */ +#define IS_VALID_CNT_CLK(x) \ +( (Timer4CntPclk == (x)) || \ + (Timer4CntExtclk == (x))) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Initialize Timer4 CNT + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] pstcInitCfg Pointer to CNT initialization configuration structure + ** \arg This parameter detail refer @ref stc_timer4_cnt_init_t + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TMR4x is invalid + ** - pstcInitCfg == NULL + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_Init(M4_TMR4_TypeDef *TMR4x, + const stc_timer4_cnt_init_t *pstcInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + stc_tmr4_ccsr_field_t CCSR_f = {0}; + stc_tmr4_cvpr_field_t CVPR_f = {0}; + + /* Check for TMR4x && pstcInitCfg pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CNT_CLK(pstcInitCfg->enClk)); + DDL_ASSERT(IS_VALID_CNT_MODE(pstcInitCfg->enCntMode)); + DDL_ASSERT(IS_VALID_CNT_CLK_DIV(pstcInitCfg->enClkDiv)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enBufferCmd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enZeroIntCmd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enPeakIntCmd)); + DDL_ASSERT(IS_VALID_CNT_INT_MSK(pstcInitCfg->enZeroIntMsk)); + DDL_ASSERT(IS_VALID_CNT_INT_MSK(pstcInitCfg->enPeakIntMsk)); + + /* Set default value */ + TMR4x->CCSR = (uint16_t)0x0050u; + TMR4x->CNTR = (uint16_t)0x0000u; + TMR4x->CPSR = (uint16_t)0xFFFFu; + TMR4x->CVPR = (uint16_t)0x0000u; + + /* stop count of CNT */ + CCSR_f.STOP = 1u; + + /* set count clock div of CNT */ + CCSR_f.CKDIV = pstcInitCfg->enClkDiv; + + /* set cnt mode */ + CCSR_f.MODE = pstcInitCfg->enCntMode; + + /* set buffer enable bit */ + CCSR_f.BUFEN = (uint16_t)(pstcInitCfg->enBufferCmd); + + /* set external clock enable bit */ + CCSR_f.ECKEN = (Timer4CntExtclk == pstcInitCfg->enClk) ? ((uint16_t)1u) : ((uint16_t)0u); + + /* Set interrupt enable */ + CCSR_f.IRQZEN = (uint16_t)(pstcInitCfg->enZeroIntCmd); + CCSR_f.IRQPEN = (uint16_t)(pstcInitCfg->enPeakIntCmd); + + /* set intterrupt mask times */ + CVPR_f.ZIM = (uint16_t)(pstcInitCfg->enZeroIntMsk); + CVPR_f.PIM = (uint16_t)(pstcInitCfg->enPeakIntMsk); + + /* Set Timer4 register */ + TMR4x->CVPR_f = CVPR_f; + TMR4x->CCSR_f = CCSR_f; + TMR4x->CPSR = pstcInitCfg->u16Cycle; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-initialize Timer4 CNT + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Ok De-Initialize successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_DeInit(M4_TMR4_TypeDef *TMR4x) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Set default value */ + TMR4x->CCSR = (uint16_t)0x0050u; + TMR4x->CNTR = (uint16_t)0x0000u; + TMR4x->CPSR = (uint16_t)0xFFFFu; + TMR4x->CVPR = (uint16_t)0x0000u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 CNT clock source + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCntClk Timer4 CNT clock source + ** \arg Timer4CntPclk Uses the internal clock (PCLK) as CNT's count clock. + ** \arg Timer4CntExtclk Uses an external input clock (EXCK) as CNT's count clock. + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_SetClock(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_clk_t enCntClk) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CNT_CLK(enCntClk)); + /* set external clock enable bit */ + TMR4x->CCSR_f.ECKEN = (uint16_t)(enCntClk); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 CNT clock source + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Timer4CntPclk Uses the internal clock (PCLK) as CNT's count clock. + ** \retval Timer4CntExtclk Uses an external input clock (EXCK) as CNT's count clock. + ** + ******************************************************************************/ +en_timer4_cnt_clk_t TIMER4_CNT_GetClock(M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return (en_timer4_cnt_clk_t)(TMR4x->CCSR_f.ECKEN); +} + +/** + ******************************************************************************* + ** \brief Set Timer4 CNT clock division + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enClkDiv Timer4 CNT clock division + ** \arg Timer4CntPclkDiv1 Timer4 CNT clock: PCLK + ** \arg Timer4CntPclkDiv2 Timer4 CNT clock: PCLK/2 + ** \arg Timer4CntPclkDiv4 Timer4 CNT clock: PCLK/4 + ** \arg Timer4CntPclkDiv8 Timer4 CNT clock: PCLK/8 + ** \arg Timer4CntPclkDiv16 Timer4 CNT clock: PCLK/16 + ** \arg Timer4CntPclkDiv32 Timer4 CNT clock: PCLK/32 + ** \arg Timer4CntPclkDiv64 Timer4 CNT clock: PCLK/64 + ** \arg Timer4CntPclkDiv128 Timer4 CNT clock: PCLK/128 + ** \arg Timer4CntPclkDiv256 Timer4 CNT clock: PCLK/256 + ** \arg Timer4CntPclkDiv512 Timer4 CNT clock: PCLK/512 + ** \arg Timer4CntPclkDiv1024 Timer4 CNT clock: PCLK/1024 + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_SetClockDiv(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_clk_div_t enClkDiv) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CNT_CLK_DIV(enClkDiv)); + TMR4x->CCSR_f.CKDIV = (uint16_t)enClkDiv; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 CNT clock division + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Timer4CntPclkDiv1 Timer4 CNT clock: PCLK + ** \retval Timer4CntPclkDiv2 Timer4 CNT clock: PCLK/2 + ** \retval Timer4CntPclkDiv4 Timer4 CNT clock: PCLK/4 + ** \retval Timer4CntPclkDiv8 Timer4 CNT clock: PCLK/8 + ** \retval Timer4CntPclkDiv16 Timer4 CNT clock: PCLK/16 + ** \retval Timer4CntPclkDiv32 Timer4 CNT clock: PCLK/32 + ** \retval Timer4CntPclkDiv64 Timer4 CNT clock: PCLK/64 + ** \retval Timer4CntPclkDiv128 Timer4 CNT clock: PCLK/128 + ** \retval Timer4CntPclkDiv256 Timer4 CNT clock: PCLK/256 + ** \retval Timer4CntPclkDiv512 Timer4 CNT clock: PCLK/512 + ** \retval Timer4CntPclkDiv1024 Timer4 CNT clock: PCLK/1024 + ** + ******************************************************************************/ +en_timer4_cnt_clk_div_t TIMER4_CNT_GetClockDiv(M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return (en_timer4_cnt_clk_div_t)(TMR4x->CCSR_f.CKDIV); +} + +/** + ******************************************************************************* + ** \brief Set Timer4 CNT mode + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enMode Timer4 CNT mode + ** \arg Timer4CntSawtoothWave Timer4 count mode:sawtooth wave + ** \arg Timer4CntTriangularWave Timer4 count mode:triangular wave + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_SetMode(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_mode_t enMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CNT_MODE(enMode)); + TMR4x->CCSR_f.MODE = (uint16_t)enMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 CNT mode + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Timer4CntSawtoothWave Timer4 count mode:sawtooth wave + ** \retval Timer4CntTriangularWave Timer4 count mode:triangular wave + ** + ******************************************************************************/ +en_timer4_cnt_mode_t TIMER4_CNT_GetMode(M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return (en_timer4_cnt_mode_t)(TMR4x->CCSR_f.MODE); +} + +/** + ******************************************************************************* + ** \brief Start Timer4 CNT + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Ok Start successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_Start(M4_TMR4_TypeDef *TMR4x) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + TMR4x->CCSR_f.STOP = (uint16_t)0u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Stop Timer4 CNT + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Ok Stop successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_Stop(M4_TMR4_TypeDef *TMR4x) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + TMR4x->CCSR_f.STOP = (uint16_t)1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 CNT interrupt + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enIntType The specified type of Timer4 CNT interrupt + ** \arg Timer4CntZeroMatchIrq Zero match interrupt of Timer4 CNT + ** \arg Timer4CntPeakMatchIrq Peak match interrupt of Timer4 CNT + ** \param [in] enCmd DCU interrupt functional state + ** \arg Enable Enable the specified Timer4 CNT interrupt function + ** \arg Disable Disable the specified Timer4 CNT interrupt function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TMR4x is invalid + ** - enIntType is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_IrqCmd(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_int_t enIntType, + en_functional_state_t enCmd) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + DDL_ASSERT(IS_VALID_CNT_INT_TYPE(enIntType)); + + enRet = Ok; + switch (enIntType) + { + case Timer4CntZeroMatchInt: + TMR4x->CCSR_f.IRQZEN = (uint16_t)enCmd; + break; + case Timer4CntPeakMatchInt: + TMR4x->CCSR_f.IRQPEN = (uint16_t)enCmd; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 CNT interrupt flag + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enIntType Timer4 CNT interrupt type + ** \arg Timer4CntZeroMatchIrq Zero match interrupt of Timer4 CNT + ** \arg Timer4CntPeakMatchIrq Peak match interrupt of Timer4 CNT + ** + ** \retval Reset None interrupt request on Timer4 CNT + ** \retval Set Detection interrupt request on Timer4 CNT + ** + ******************************************************************************/ +en_flag_status_t TIMER4_CNT_GetIrqFlag(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_int_t enIntType) +{ + uint16_t u16Flag = 0u; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + DDL_ASSERT(IS_VALID_CNT_INT_TYPE(enIntType)); + + switch (enIntType) + { + case Timer4CntZeroMatchInt: + u16Flag = TMR4x->CCSR_f.IRQZF; + break; + case Timer4CntPeakMatchInt: + u16Flag = TMR4x->CCSR_f.IRQPF; + break; + default: + break; + } + + return (en_flag_status_t)u16Flag; +} + +/** + ******************************************************************************* + ** \brief Clear Timer4 CNT interrupt flag + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enIntType Timer4 CNT interrupt type + ** \arg Timer4CntZeroMatchIrq Zero match interrupt of Timer4 CNT + ** \arg Timer4CntPeakMatchIrq Peak match interrupt of Timer4 CNT + ** + ** \retval Ok Clear successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TMR4x is invalid + ** - enIntType is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_ClearIrqFlag(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_int_t enIntType) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CNT_INT_TYPE(enIntType)); + + enRet = Ok; + switch (enIntType) + { + case Timer4CntZeroMatchInt: + TMR4x->CCSR_f.IRQZF = (uint16_t)0u; + break; + case Timer4CntPeakMatchInt: + TMR4x->CCSR_f.IRQPF = (uint16_t)0u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the cycle value of the specified Timer4 CNT. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] u16Cycle The Timer4 CNT cycle value + ** \arg number of 16bit + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_SetCycleVal(M4_TMR4_TypeDef *TMR4x, uint16_t u16Cycle) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + TMR4x->CPSR = u16Cycle; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get the cycle value of the specified Timer4 CNT. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval The cycle value of the specified Timer4 CNT. + ** + ******************************************************************************/ +uint16_t TIMER4_CNT_GetCycleVal(const M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return TMR4x->CPSR; +} + +/** + ******************************************************************************* + ** \brief Clear Timer4 CNT register CNTR + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Ok Clear successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_ClearCountVal(M4_TMR4_TypeDef *TMR4x) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + TMR4x->CCSR_f.CLEAR = (uint16_t)1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set the current count value of the specified Timer4 CNT. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] u16Count The Timer4 CNT current count value + ** \arg number of 16bit + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_SetCountVal(M4_TMR4_TypeDef *TMR4x, uint16_t u16Count) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + TMR4x->CNTR = u16Count; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 CNT current count value + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval The current count value of the specified Timer4 CNT. + ** + ******************************************************************************/ +uint16_t TIMER4_CNT_GetCountVal(const M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return TMR4x->CNTR; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 CNT interrupt mask times + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enIntType Timer4 CNT interrupt type + ** \arg Timer4CntZeroMatchIrq Zero match interrupt of Timer4 CNT + ** \arg Timer4CntPeakMatchIrq Peak match interrupt of Timer4 CNT + ** \param [in] enMaskTimes Timer4 CNT interrupt mask times + ** \arg Timer4CntIntMask0 CNT interrupt flag is always set(not masked) for every CNT count at "0x0000" or peak. + ** \arg Timer4CntIntMask1 CNT interrupt flag is set once for 2 every CNT counts at "0x0000" or peak (skiping 1 count). + ** \arg Timer4CntIntMask2 CNT interrupt flag is set once for 3 every CNT counts at "0x0000" or peak (skiping 2 count). + ** \arg Timer4CntIntMask3 CNT interrupt flag is set once for 4 every CNT counts at "0x0000" or peak (skiping 3 count). + ** \arg Timer4CntIntMask4 CNT interrupt flag is set once for 5 every CNT counts at "0x0000" or peak (skiping 4 count). + ** \arg Timer4CntIntMask5 CNT interrupt flag is set once for 6 every CNT counts at "0x0000" or peak (skiping 5 count). + ** \arg Timer4CntIntMask6 CNT interrupt flag is set once for 7 every CNT counts at "0x0000" or peak (skiping 6 count). + ** \arg Timer4CntIntMask7 CNT interrupt flag is set once for 8 every CNT counts at "0x0000" or peak (skiping 7 count). + ** \arg Timer4CntIntMask8 CNT interrupt flag is set once for 9 every CNT counts at "0x0000" or peak (skiping 8 count). + ** \arg Timer4CntIntMask9 CNT interrupt flag is set once for 10 every CNT counts at "0x0000" or peak (skiping 9 count). + ** \arg Timer4CntIntMask10 CNT interrupt flag is set once for 11 every CNT counts at "0x0000" or peak (skiping 10 count). + ** \arg Timer4CntIntMask11 CNT interrupt flag is set once for 12 every CNT counts at "0x0000" or peak (skiping 11 count). + ** \arg Timer4CntIntMask12 CNT interrupt flag is set once for 13 every CNT counts at "0x0000" or peak (skiping 12 count). + ** \arg Timer4CntIntMask13 CNT interrupt flag is set once for 14 every CNT counts at "0x0000" or peak (skiping 13 count). + ** \arg Timer4CntIntMask14 CNT interrupt flag is set once for 15 every CNT counts at "0x0000" or peak (skiping 14 count). + ** \arg Timer4CntIntMask15 CNT interrupt flag is set once for 16 every CNT counts at "0x0000" or peak (skiping 15 count). + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_CNT_SetIntMaskTimes(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_int_t enIntType, + en_timer4_cnt_int_mask_t enMaskTimes) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_CNT_INT_TYPE(enIntType)); + DDL_ASSERT(IS_VALID_CNT_INT_MSK(enMaskTimes)); + + enRet = Ok; + switch (enIntType) + { + case Timer4CntZeroMatchInt: + TMR4x->CVPR_f.ZIM = (uint16_t)enMaskTimes; + break; + case Timer4CntPeakMatchInt: + TMR4x->CVPR_f.PIM = (uint16_t)enMaskTimes; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 CNT interrupt mask times + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enIntType Timer4 CNT interrupt type + ** \arg Timer4CntZeroMatchIrq Zero match interrupt of Timer4 CNT + ** \arg Timer4CntPeakMatchIrq Peak match interrupt of Timer4 CNT + ** + ** \retval Timer4CntIntMask0 CNT interrupt flag is always set(not masked) for every CNT count at "0x0000" or peak. + ** \retval Timer4CntIntMask1 CNT interrupt flag is set once for 2 every CNT counts at "0x0000" or peak (skiping 1 count). + ** \retval Timer4CntIntMask2 CNT interrupt flag is set once for 3 every CNT counts at "0x0000" or peak (skiping 2 count). + ** \retval Timer4CntIntMask3 CNT interrupt flag is set once for 4 every CNT counts at "0x0000" or peak (skiping 3 count). + ** \retval Timer4CntIntMask4 CNT interrupt flag is set once for 5 every CNT counts at "0x0000" or peak (skiping 4 count). + ** \retval Timer4CntIntMask5 CNT interrupt flag is set once for 6 every CNT counts at "0x0000" or peak (skiping 5 count). + ** \retval Timer4CntIntMask6 CNT interrupt flag is set once for 7 every CNT counts at "0x0000" or peak (skiping 6 count). + ** \retval Timer4CntIntMask7 CNT interrupt flag is set once for 8 every CNT counts at "0x0000" or peak (skiping 7 count). + ** \retval Timer4CntIntMask8 CNT interrupt flag is set once for 9 every CNT counts at "0x0000" or peak (skiping 8 count). + ** \retval Timer4CntIntMask9 CNT interrupt flag is set once for 10 every CNT counts at "0x0000" or peak (skiping 9 count). + ** \retval Timer4CntIntMask10 CNT interrupt flag is set once for 11 every CNT counts at "0x0000" or peak (skiping 10 count). + ** \retval Timer4CntIntMask11 CNT interrupt flag is set once for 12 every CNT counts at "0x0000" or peak (skiping 11 count). + ** \retval Timer4CntIntMask12 CNT interrupt flag is set once for 13 every CNT counts at "0x0000" or peak (skiping 12 count). + ** \retval Timer4CntIntMask13 CNT interrupt flag is set once for 14 every CNT counts at "0x0000" or peak (skiping 13 count). + ** \retval Timer4CntIntMask14 CNT interrupt flag is set once for 15 every CNT counts at "0x0000" or peak (skiping 14 count). + ** \retval Timer4CntIntMask15 CNT interrupt flag is set once for 16 every CNT counts at "0x0000" or peak (skiping 15 count). + ** + ******************************************************************************/ +en_timer4_cnt_int_mask_t TIMER4_CNT_GetIntMaskTimes(M4_TMR4_TypeDef *TMR4x, + en_timer4_cnt_int_t enIntType) +{ + uint16_t u16MaskTimes = 0u; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + DDL_ASSERT(IS_VALID_CNT_INT_TYPE(enIntType)); + + switch (enIntType) + { + case Timer4CntZeroMatchInt: + u16MaskTimes = TMR4x->CVPR_f.ZIM; + break; + case Timer4CntPeakMatchInt: + u16MaskTimes = TMR4x->CVPR_f.PIM; + break; + default: + break; + } + + return (en_timer4_cnt_int_mask_t)u16MaskTimes; +} + +//@} // Timer4CntGroup + +#endif /* DDL_TIMER4_CNT_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timer4_emb.c b/driver/src/hc32f460_timer4_emb.c new file mode 100644 index 0000000..b47a0f0 --- /dev/null +++ b/driver/src/hc32f460_timer4_emb.c @@ -0,0 +1,278 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer4_emb.c + ** + ** A detailed description is available at + ** @link Timer4EmbGroup Timer4EMB description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library of Timer4EMB. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer4_emb.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER4_EMB_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer4EmbGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter validity check for Timer4 unit */ +#define IS_VALID_TIMER4(__TMRx__) \ +( (M4_TMR41 == (__TMRx__)) || \ + (M4_TMR42 == (__TMRx__)) || \ + (M4_TMR43 == (__TMRx__))) + +/*!< Parameter valid check for EMB HOLD mode. */ +#define IS_VALID_EMB_HOLD_MODE(x) \ +( (EmbHoldPwm == (x)) || \ + (EmbChangePwm == (x))) + +/*!< Parameter valid check for EMB state. */ +#define IS_VALID_EMB_STATE(x) \ +( (EmbTrigPwmOutputHiz == (x)) || \ + (EmbTrigPwmOutputNormal == (x)) || \ + (EmbTrigPwmOutputLowLevel == (x)) || \ + (EmbTrigPwmOutputHighLevel == (x))) + +/*!< Timer4x ECER register address. */ +#define TMR4_ECERx(__TMRx__) \ +( (M4_TMR41 == (__TMRx__)) ? &M4_TMR4_CR->ECER1 : \ + ((M4_TMR42 == (__TMRx__)) ? &M4_TMR4_CR->ECER2 : &M4_TMR4_CR->ECER3)) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Initialize Timer4 EMB + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] pstcInitCfg The pointer of EMB configure structure + ** \arg This parameter detail refer @ref stc_timer4_emb_init_t + ** + ** \retval Ok Initialize successfully + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - pstcInitCfg == NULL + ** + ******************************************************************************/ +en_result_t TIMER4_EMB_Init(M4_TMR4_TypeDef *TMR4x, + const stc_timer4_emb_init_t *pstcInitCfg) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x && pstcInitCfg pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_STATE(pstcInitCfg->enEmbState)); + DDL_ASSERT(IS_VALID_EMB_HOLD_MODE(pstcInitCfg->enPwmHold)); + + /* Set EMB HOLD mode */ + TMR4x->ECSR_f.HOLD = (uint16_t)(pstcInitCfg->enPwmHold); + + /* Set EMB state */ + *(__IO uint32_t *)TMR4_ECERx(TMR4x) = (uint32_t)(pstcInitCfg->enEmbState); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-initialize Timer4 EMB + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval Ok De-Initialize successfully + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_EMB_DeInit(M4_TMR4_TypeDef *TMR4x) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Set reset value(0x0000) to register ESCR */ + TMR4x->ECSR = 0u; + + /* Set reset value(0x0000) to register ECER */ + *(__IO uint32_t *)TMR4_ECERx(TMR4x) = (uint32_t)0ul; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 EMB HOLD mode + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enHoldMode EMB HOLD mode + ** \arg EmbChangePwm Don't hold PWM output when EMB signal occurs + ** \arg EmbHoldPwm Hold PWM output when EMB signal occurs + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_EMB_SetHoldMode(M4_TMR4_TypeDef *TMR4x, + en_timer4_emb_hold_mode_t enHoldMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_HOLD_MODE(enHoldMode)); + + /* Set EMB HOLD mode */ + TMR4x->ECSR_f.HOLD = (uint16_t)enHoldMode; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 EMB HOLD mode + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval EmbChangePwm Don't hold PWM output when EMB signal occurs + ** \retval EmbHoldPwm Hold PWM output when EMB signal occurs + ** + ******************************************************************************/ +en_timer4_emb_hold_mode_t TIMER4_EMB_GetHoldMode(M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return (en_timer4_emb_hold_mode_t)(TMR4x->ECSR_f.HOLD); +} + +/** + ******************************************************************************* + ** \brief Set Timer4 EMB state + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enEmbState EMB state + ** \arg EmbTrigPwmOutputNormal PWM output signal normally. + ** \arg EmbTrigPwmOutputHiz PWM output Hiz signal. + ** \arg EmbTrigPwmOutputLowLevel PWM output low level signal. + ** \arg EmbTrigPwmOutputHighLevel PWM output high level signal. + ** + ** \retval Ok Set successfully + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_EMB_SetState(const M4_TMR4_TypeDef *TMR4x, + en_timer4_emb_state_t enEmbState) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_EMB_STATE(enEmbState)); + + /* Set EMB state */ + *(__IO uint32_t *)TMR4_ECERx(TMR4x) = (uint32_t)enEmbState; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 EMB state + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** + ** \retval EmbTrigPwmOutputNormal PWM output signal normally. + ** \retval EmbTrigPwmOutputHiz PWM output Hiz signal. + ** \retval EmbTrigPwmOutputLowLevel PWM output low level signal. + ** \retval EmbTrigPwmOutputHighLevel PWM output high level signal. + ** + ******************************************************************************/ +en_timer4_emb_state_t TIMER4_EMB_GetState(const M4_TMR4_TypeDef *TMR4x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + return *(__IO en_timer4_emb_state_t *)TMR4_ECERx(TMR4x); +} + +//@} // Timer4EmbGroup + +#endif /* DDL_TIMER4_EMB_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timer4_oco.c b/driver/src/hc32f460_timer4_oco.c new file mode 100644 index 0000000..25281df --- /dev/null +++ b/driver/src/hc32f460_timer4_oco.c @@ -0,0 +1,1295 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer4_oco.c + ** + ** A detailed description is available at + ** @link Timer4OcoGroup Timer4OCO description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library of Timer4OCO. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer4_oco.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER4_OCO_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer4OcoGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter validity check for Timer4 unit */ +#define IS_VALID_TIMER4(__TMRx__) \ +( (M4_TMR41 == (__TMRx__)) || \ + (M4_TMR42 == (__TMRx__)) || \ + (M4_TMR43 == (__TMRx__))) + +/*!< Parameter validity check for oco channel */ +#define IS_VALID_OCO_CH(x) \ +( (Timer4OcoOuh == (x)) || \ + (Timer4OcoOul == (x)) || \ + (Timer4OcoOvh == (x)) || \ + (Timer4OcoOvl == (x)) || \ + (Timer4OcoOwh == (x)) || \ + (Timer4OcoOwl == (x))) + +/*!< Parameter validity check for oco low channel */ +#define IS_VALID_OCO_LOW_CH(x) \ +( (Timer4OcoOul == (x)) || \ + (Timer4OcoOvl == (x)) || \ + (Timer4OcoOwl == (x))) + +/*!< Parameter validity check for even high channel */ +#define IS_VALID_OCO_HIGH_CH(x) \ +( (Timer4OcoOuh == (x)) || \ + (Timer4OcoOvh == (x)) || \ + (Timer4OcoOwh == (x))) + +/*!< Parameter validity check for occr buffer mode */ +#define IS_VALID_OCCR_BUF_MODE(x) \ +( (OccrBufDisable == (x)) || \ + (OccrBufTrsfByCntZero == (x)) || \ + (OccrBufTrsfByCntPeak == (x)) || \ + (OccrBufTrsfByCntZeroOrCntPeak == (x)) || \ + (OccrBufTrsfByCntZeroZicZero == (x)) || \ + (OccrBufTrsfByCntPeakPicZero == (x)) || \ + (OccrBufTrsfByCntZeroZicZeroOrCntPeakPicZero == (x))) + +/*!< Parameter validity check for ocmr buffer mode */ +#define IS_VALID_OCMR_BUF_MODE(x) \ +( (OcmrBufDisable == (x)) || \ + (OcmrBufTrsfByCntZero == (x)) || \ + (OcmrBufTrsfByCntPeak == (x)) || \ + (OcmrBufTrsfByCntZeroOrCntPeak == (x)) || \ + (OcmrBufTrsfByCntZeroZicZero == (x)) || \ + (OcmrBufTrsfByCntPeakPicZero == (x)) || \ + (OcmrBufTrsfByCntZeroZicZeroOrCntPeakPicZero == (x))) + +/*!< Parameter validity check for output level type */ +#define IS_VALID_OP_PORT_LEVEL(x) \ +( (OcPortLevelLow == (x)) || \ + (OcPortLevelHigh == (x))) + +/*!< Parameter validity check for oco OP state */ +#define IS_VALID_OP_STATE(x) \ +( (OcoOpOutputLow == (x)) || \ + (OcoOpOutputHigh == (x)) || \ + (OcoOpOutputHold == (x)) || \ + (OcoOpOutputReverse == (x))) + +/*!< Parameter validity check for oco OCF state */ +#define IS_VALID_OCF_STATE(x) \ +( (OcoOcfSet == (x)) || \ + (OcoOcfHold == (x))) + +/*!< Get the specified register address of the specified Timer4 unit */ +#define TMR4_OCCRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->OCCRUH + ((uint32_t)(__CH__))*4ul) +#define TMR4_OCMRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->OCMRHUH + ((uint32_t)(__CH__))*4ul) +#define TMR4_OCERx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->OCERU + (((uint32_t)(__CH__))/2ul)*4ul) +#define TMR4_OCSRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->OCSRU + (((uint32_t)(__CH__))/2ul)*4ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Initialize OCO module + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] pstcInitCfg The pointer of OCO configure structure + ** \arg This parameter detail refer @ref stc_timer4_oco_init_t + ** + ** \retval Ok Initialize successfully + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - pstcInitCfg == NULL + ** - enCh is invalid + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_Init(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + const stc_timer4_oco_init_t* pstcInitCfg) +{ + __IO stc_tmr4_ocsr_field_t* pstcOCSR = NULL; + __IO stc_tmr4_ocer_field_t* pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x && pstcInitCfg pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enOcoIntCmd)); + DDL_ASSERT(IS_VALID_OP_PORT_LEVEL(pstcInitCfg->enPortLevel)); + DDL_ASSERT(IS_VALID_OCMR_BUF_MODE(pstcInitCfg->enOcmrBufMode)); + DDL_ASSERT(IS_VALID_OCCR_BUF_MODE(pstcInitCfg->enOccrBufMode)); + + enRet = Ok; + /* Get pointer of current channel OCO register address */ + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x,enCh); + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x,enCh); + + /* Set OCMR and OCCR buffer mode */ + if (IS_VALID_OCO_HIGH_CH(enCh)) /* channel: Timer4OcoOuh, Timer4OcoOvh, Timer4OcoOwh */ + { + pstcOCSR->OCEH = (uint16_t)0u; + pstcOCSR->OCFH = (uint16_t)0u; + + /* OCMR buffer */ + switch (pstcInitCfg->enOcmrBufMode) + { + case OcmrBufDisable: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)0u; + break; + case OcmrBufTrsfByCntZero: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeak: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)3u; + break; + case OcmrBufTrsfByCntZeroZicZero: + pstcOCER->LMMH = (uint16_t)1u; + pstcOCER->MHBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeakPicZero: + pstcOCER->LMMH = (uint16_t)1u; + pstcOCER->MHBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMMH = (uint16_t)1u; + pstcOCER->MHBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + if (enRet == Ok) + { + /* OCCR buffer */ + switch (pstcInitCfg->enOccrBufMode) + { + case OccrBufDisable: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)0u; + break; + case OccrBufTrsfByCntZero: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeak: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)3u; + break; + case OccrBufTrsfByCntZeroZicZero: + pstcOCER->LMCH = (uint16_t)1u; + pstcOCER->CHBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeakPicZero: + pstcOCER->LMCH = (uint16_t)1u; + pstcOCER->CHBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMCH = (uint16_t)1u; + pstcOCER->CHBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + if (enRet == Ok) + { + /* Set initial OP level */ + pstcOCSR->OCPH = (uint16_t)(pstcInitCfg->enPortLevel); + /* set interrupt enable */ + pstcOCSR->OCIEH = (uint16_t)(pstcInitCfg->enOcoIntCmd); + } + } + else if (IS_VALID_OCO_LOW_CH(enCh)) /* channel: Timer4OcoOul, Timer4OcoOvl, Timer4OcoOwl */ + { + pstcOCSR->OCEL = (uint16_t)0u; + pstcOCSR->OCFL = (uint16_t)0u; + + /* OCMR buffer */ + switch (pstcInitCfg->enOcmrBufMode) + { + case OcmrBufDisable: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)0u; + break; + case OcmrBufTrsfByCntZero: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeak: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)3u; + break; + case OcmrBufTrsfByCntZeroZicZero: + pstcOCER->LMML = (uint16_t)1u; + pstcOCER->MLBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeakPicZero: + pstcOCER->LMML = (uint16_t)1u; + pstcOCER->MLBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMML = (uint16_t)1u; + pstcOCER->MLBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + if (enRet == Ok) + { + /* OCCR buffer */ + switch (pstcInitCfg->enOccrBufMode) + { + case OccrBufDisable: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)0u; + break; + case OccrBufTrsfByCntZero: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeak: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)3u; + break; + case OccrBufTrsfByCntZeroZicZero: + pstcOCER->LMCL = (uint16_t)1u; + pstcOCER->CLBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeakPicZero: + pstcOCER->LMCL = (uint16_t)1u; + pstcOCER->CLBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMCL = (uint16_t)1u; + pstcOCER->CLBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + if (enRet == Ok) + { + /* Set initial OP level */ + pstcOCSR->OCPL = (uint16_t)(pstcInitCfg->enPortLevel); + /* set interrupt enable */ + pstcOCSR->OCIEL = (uint16_t)(pstcInitCfg->enOcoIntCmd); + } + } + else + { + enRet = ErrorInvalidParameter; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initialize OCO module + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** + ** \retval Ok De-Initialize successfully. + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_DeInit(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh) +{ + __IO uint16_t* pu16OCCR = NULL; + __IO uint32_t u32OCMR = 0ul; + __IO stc_tmr4_ocsr_field_t* pstcOCSR = NULL; + __IO stc_tmr4_ocer_field_t* pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + enRet = Ok; + u32OCMR = TMR4_OCMRx(TMR4x, enCh); + pu16OCCR = (__IO uint16_t*)TMR4_OCCRx(TMR4x, enCh); + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x, enCh); + + /* Set default value */ + if (IS_VALID_OCO_HIGH_CH(enCh)) /* channel: Timer4OcoOuh, Timer4OcoOvh, Timer4OcoOwh */ + { + pstcOCSR->OCEH = (uint16_t)0u; + pstcOCSR->OCFH = (uint16_t)0u; + pstcOCSR->OCIEH = (uint16_t)0u; + pstcOCSR->OCPH = (uint16_t)0u; + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)0u; + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)0u; + pstcOCER->MCECH = (uint16_t)0u; + *pu16OCCR = (uint16_t)0u; + *(__IO uint16_t*)u32OCMR = (uint16_t)0u; + } + else if (IS_VALID_OCO_LOW_CH(enCh)) /* channel: Timer4OcoOul, Timer4OcoOvl, Timer4OcoOwl */ + { + pstcOCSR->OCEL = (uint16_t)0u; + pstcOCSR->OCFL = (uint16_t)0u; + pstcOCSR->OCIEL = (uint16_t)0u; + pstcOCSR->OCPL = (uint16_t)0u; + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)0u; + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)0u; + pstcOCER->MCECL = (uint16_t)0u; + *pu16OCCR = (uint16_t)0u; + *(__IO uint32_t*)u32OCMR = (uint32_t)0ul; + } + else + { + enRet = ErrorInvalidParameter; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set occr buffer mode + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] enOccrBufMode Occr buffer mode + ** \arg OccrBufDisable Disable the register buffer function + ** \arg OccrBufTrsfByCntZero Register buffer transfer when counter value is 0x0000 + ** \arg OccrBufTrsfByCntPeak Register buffer transfer when counter value is CPSR + ** \arg OccrBufTrsfByCntZeroOrCntPeak Register buffer transfer when the value is both 0 and CPSR + ** \arg OccrBufTrsfByCntZeroZicZero Register buffer transfer when counter value is 0x0000 and zero value detection mask counter value is 0 + ** \arg OccrBufTrsfByCntPeakPicZero Register buffer transfer when counter value is CPSR and peak value detection mask counter value is 0 ** + ** \arg OccrBufTrsfByCntZeroZicZeroOrCntPeakPicZero Register buffer transfer when counter value is 0x0000 and zero value detection mask counter value is 0 or + ** counter value is CPSR and peak value detection mask counter value is 0 + ** \retval Ok OCO occr buffer mode initialized + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh is invalid + ** - enOccrBufMode is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_SetOccrBufMode(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + en_timer4_oco_occr_buf_t enOccrBufMode) +{ + __IO stc_tmr4_ocer_field_t *pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_VALID_OCCR_BUF_MODE(enOccrBufMode)); + + enRet = Ok; + /* Get pointer of current channel OCO register address */ + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x, enCh); + + /* Set OCCR buffer mode */ + if (IS_VALID_OCO_HIGH_CH(enCh)) /* channel: Timer4OcoOuh, Timer4OcoOvh, Timer4OcoOwh */ + { + /* OCCR buffer */ + switch (enOccrBufMode) + { + case OccrBufDisable: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)0u; + break; + case OccrBufTrsfByCntZero: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeak: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMCH = (uint16_t)0u; + pstcOCER->CHBUFEN = (uint16_t)3u; + break; + case OccrBufTrsfByCntZeroZicZero: + pstcOCER->LMCH = (uint16_t)1u; + pstcOCER->CHBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeakPicZero: + pstcOCER->LMCH = (uint16_t)1u; + pstcOCER->CHBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMCH = (uint16_t)1u; + pstcOCER->CHBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + else if (IS_VALID_OCO_LOW_CH(enCh)) /* channel: Timer4OcoOul, Timer4OcoOvl, Timer4OcoOwl */ + { + /* OCCR buffer */ + switch (enOccrBufMode) + { + case OccrBufDisable: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)0u; + break; + case OccrBufTrsfByCntZero: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeak: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMCL = (uint16_t)0u; + pstcOCER->CLBUFEN = (uint16_t)3u; + break; + case OccrBufTrsfByCntZeroZicZero: + pstcOCER->LMCL = (uint16_t)1u; + pstcOCER->CLBUFEN = (uint16_t)1u; + break; + case OccrBufTrsfByCntPeakPicZero: + pstcOCER->LMCL = (uint16_t)1u; + pstcOCER->CLBUFEN = (uint16_t)2u; + break; + case OccrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMCL = (uint16_t)1u; + pstcOCER->CLBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + else + { + enRet = ErrorInvalidParameter; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set occr buffer mode + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] enOcmrBufMode Occr buffer mode + ** \arg OcmrBufDisable Disable the register buffer function + ** \arg OcmrBufTrsfByCntZero Register buffer transfer when counter value is 0x0000 + ** \arg OcmrBufTrsfByCntPeak Register buffer transfer when counter value is CPSR + ** \arg OcmrBufTrsfByCntZeroOrCntPeak Register buffer transfer when the value is both 0 and CPSR + ** \arg OcmrBufTrsfByCntZeroZicZero Register buffer transfer when counter value is 0x0000 and zero value detection mask counter value is 0 + ** \arg OcmrBufTrsfByCntPeakPicZero Register buffer transfer when counter value is CPSR and peak value detection mask counter value is 0 ** + ** \arg OcmrBufTrsfByCntZeroZicZeroOrCntPeakPicZero Register buffer transfer when counter value is 0x0000 and zero value detection mask counter value is 0 or + ** counter value is CPSR and peak value detection mask counter value is 0 + ** + ** \retval Ok OCO ocmr buffer mode initialized + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh is invalid + ** - enOcmrBufMode is invalid. + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_SetOcmrBufMode(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + en_timer4_oco_ocmr_buf_t enOcmrBufMode) +{ + __IO stc_tmr4_ocer_field_t *pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_VALID_OCMR_BUF_MODE(enOcmrBufMode)); + + enRet = Ok; + /* Get pointer of current channel OCO register address */ + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x, enCh); + + /* Set OCMR buffer mode */ + if (IS_VALID_OCO_HIGH_CH(enCh)) /* channel: Timer4OcoOuh, Timer4OcoOvh, Timer4OcoOwh */ + { + /* OCMR buffer */ + switch (enOcmrBufMode) + { + case OcmrBufDisable: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)0u; + break; + case OcmrBufTrsfByCntZero: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeak: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMMH = (uint16_t)0u; + pstcOCER->MHBUFEN = (uint16_t)3u; + break; + case OcmrBufTrsfByCntZeroZicZero: + pstcOCER->LMMH = (uint16_t)1u; + pstcOCER->MHBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeakPicZero: + pstcOCER->LMMH = (uint16_t)1u; + pstcOCER->MHBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMMH = (uint16_t)1u; + pstcOCER->MHBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + else if (IS_VALID_OCO_LOW_CH(enCh)) /* channel: Timer4OcoOul, Timer4OcoOvl, Timer4OcoOwl */ + { + /* OCMR buffer */ + switch (enOcmrBufMode) + { + case OcmrBufDisable: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)0u; + break; + case OcmrBufTrsfByCntZero: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeak: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroOrCntPeak: + pstcOCER->LMML = (uint16_t)0u; + pstcOCER->MLBUFEN = (uint16_t)3u; + break; + case OcmrBufTrsfByCntZeroZicZero: + pstcOCER->LMML = (uint16_t)1u; + pstcOCER->MLBUFEN = (uint16_t)1u; + break; + case OcmrBufTrsfByCntPeakPicZero: + pstcOCER->LMML = (uint16_t)1u; + pstcOCER->MLBUFEN = (uint16_t)2u; + break; + case OcmrBufTrsfByCntZeroZicZeroOrCntPeakPicZero: + pstcOCER->LMML = (uint16_t)1u; + pstcOCER->MLBUFEN = (uint16_t)3u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + else + { + enRet = ErrorInvalidParameter; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Extend the matching determination conditions of OCO channel + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] enCmd Extend the match conditions functional state + ** \arg Enable Extend the match conditions function + ** \arg Disable Don't extend the match conditions function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_ExtMatchCondCmd(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + en_functional_state_t enCmd) +{ + __IO stc_tmr4_ocer_field_t *pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + /* Get pointer of current channel OCO register address */ + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x, enCh); + IS_VALID_OCO_HIGH_CH(enCh) ? (pstcOCER->MCECH = (uint16_t)enCmd) : (pstcOCER->MCECL = (uint16_t)enCmd); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set compare mode of OCO high channel + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] pstcMode pointer to structure of compare mode + ** \arg This parameter detail refer @ref stc_oco_high_ch_compare_mode_t + ** + ** \retval Ok OCO high channel compare mode is set successfully. + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - pstcMode pointer is NULL + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_SetHighChCompareMode(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + const stc_oco_high_ch_compare_mode_t *pstcMode) +{ + uint16_t u16OCMR = 0u; + __IO uint16_t *pu16OCMR = NULL; + __IO stc_tmr4_ocer_field_t *pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x && pstcMode pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcMode)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_HIGH_CH(enCh)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntZeroMatchOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntZeroNotMatchOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntUpCntMatchOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntPeakMatchOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntPeakNotMatchOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntDownCntMatchOpState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntZeroMatchOcfState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntUpCntMatchOcfState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntPeakMatchOcfState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntDownCntMatchOcfState)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcMode->enMatchConditionExtendCmd)); + + /* Get pointer of current channel OCO register address */ + pu16OCMR = (__IO uint16_t*)TMR4_OCMRx(TMR4x, enCh); + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x, enCh); + + pstcOCER->MCECH = (uint16_t)(pstcMode->enMatchConditionExtendCmd); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntZeroMatchOpState << 10u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntZeroNotMatchOpState << 14u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntUpCntMatchOpState << 8u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntPeakMatchOpState << 6u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntPeakNotMatchOpState << 12u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntDownCntMatchOpState << 4u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntZeroMatchOcfState << 3u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntUpCntMatchOcfState << 2u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntPeakMatchOcfState << 1u); + u16OCMR |= (uint16_t)((uint16_t)pstcMode->enCntDownCntMatchOcfState << 0u); + + *pu16OCMR = u16OCMR; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set compare mode of OCO low channel + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] pstcMode pointer to structure of compare mode + ** \arg This parameter detail refer @ref TIMER4_OCO_SetLowChCompareMode + ** + ** \retval Ok OCO low channel compare mode is set successfully. + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - pstcMode pointer is NULL + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_SetLowChCompareMode(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + const stc_oco_low_ch_compare_mode_t *pstcMode) +{ + uint32_t u32OCMR = 0ul; + __IO uint32_t *pu32OCMR = NULL; + __IO stc_tmr4_ocer_field_t *pstcOCER = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer and pstcMode pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcMode)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_LOW_CH(enCh)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntZeroLowMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntZeroLowMatchHighNotMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntZeroLowNotMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntZeroLowNotMatchHighNotMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntUpCntLowMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntUpCntLowMatchHighNotMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntUpCntLowNotMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntPeakLowMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntPeakLowMatchHighNotMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntPeakLowNotMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntPeakLowNotMatchHighNotMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntDownLowMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntDownLowMatchHighNotMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OP_STATE(pstcMode->enCntDownLowNotMatchHighMatchLowChOpState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntZeroMatchOcfState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntUpCntMatchOcfState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntPeakMatchOcfState)); + DDL_ASSERT(IS_VALID_OCF_STATE(pstcMode->enCntDownCntMatchOcfState)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcMode->enMatchConditionExtendCmd)); + + /* Get pointer of current channel OCO register address */ + pu32OCMR = (__IO uint32_t*)TMR4_OCMRx(TMR4x, enCh); + pstcOCER = (__IO stc_tmr4_ocer_field_t*)TMR4_OCERx(TMR4x, enCh);; + + pstcOCER->MCECL = (uint16_t)(pstcMode->enMatchConditionExtendCmd); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntZeroLowMatchHighMatchLowChOpState << 26u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntZeroLowMatchHighNotMatchLowChOpState << 10u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntZeroLowNotMatchHighMatchLowChOpState << 30u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntZeroLowNotMatchHighNotMatchLowChOpState << 14u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntUpCntLowMatchHighMatchLowChOpState << 24u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntUpCntLowMatchHighNotMatchLowChOpState << 8u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntUpCntLowNotMatchHighMatchLowChOpState << 18u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntPeakLowMatchHighMatchLowChOpState << 22u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntPeakLowMatchHighNotMatchLowChOpState << 6u) ; + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntPeakLowNotMatchHighMatchLowChOpState << 28u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntPeakLowNotMatchHighNotMatchLowChOpState << 12u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntDownLowMatchHighMatchLowChOpState << 20u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntDownLowMatchHighNotMatchLowChOpState << 4u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntDownLowNotMatchHighMatchLowChOpState << 16u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntZeroMatchOcfState << 3u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntUpCntMatchOcfState << 2u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntPeakMatchOcfState << 1u); + u32OCMR |= (uint32_t)((uint32_t)pstcMode->enCntDownCntMatchOcfState << 0u); + + *pu32OCMR = u32OCMR; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set output function + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] enCmd The output functional state + ** \arg Enable Enable output function + ** \arg Disable Disable output function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_OutputCompareCmd(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + en_functional_state_t enCmd) +{ + __IO stc_tmr4_ocsr_field_t *pstcOCSR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + /* Get pointer of current channel OCO register address */ + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + + /* set register */ + IS_VALID_OCO_HIGH_CH(enCh) ? (pstcOCSR->OCEH = (uint16_t)enCmd) : (pstcOCSR->OCEL = (uint16_t)enCmd); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set OCO interrupt function + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] enCmd The interrupt functional state + ** \arg Enable Enable interrupt function + ** \arg Disable Disable interrupt function + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_IrqCmd(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + en_functional_state_t enCmd) +{ + __IO stc_tmr4_ocsr_field_t *pstcOCSR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enCmd)); + + /* Get pointer of current channel OCO register address */ + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + /* set register */ + IS_VALID_OCO_HIGH_CH(enCh) ? (pstcOCSR->OCIEH = (uint16_t)enCmd) : (pstcOCSR->OCIEL = (uint16_t)enCmd); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get OCO interrupt flag + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** + ** \retval Reset None interrupt request on Timer4 OCO + ** \retval Set Detection interrupt request on Timer4 OCO + ** + ******************************************************************************/ +en_flag_status_t TIMER4_OCO_GetIrqFlag(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh) +{ + en_flag_status_t enFlag = Reset; + __IO stc_tmr4_ocsr_field_t *pstcOCSR = NULL; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + /* Get pointer of current channel OCO register address */ + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + + /* set return value */ + if (IS_VALID_OCO_HIGH_CH(enCh)) /* channel: Timer4OcoOuh, Timer4OcoOvh, Timer4OcoOwh */ + { + enFlag = (en_flag_status_t)(pstcOCSR->OCFH); + } + else if (IS_VALID_OCO_LOW_CH(enCh)) /* channel: Timer4OcoOul, Timer4OcoOvl, Timer4OcoOwl */ + { + enFlag = (en_flag_status_t)(pstcOCSR->OCFL); + } + else + { + /* Do nothing: only avoid MISRA warning */ + } + + return enFlag; +} + +/** + ******************************************************************************* + ** \brief Clear OCO interrupt flag + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** + ** \retval Ok OCO interrupt flag is clear + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_ClearIrqFlag(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh) +{ + __IO stc_tmr4_ocsr_field_t *pstcOCSR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + + /* Get pointer of current channel OCO register address */ + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + /* set return value */ + IS_VALID_OCO_HIGH_CH(enCh) ? (pstcOCSR->OCFH = 0u) : (pstcOCSR->OCFL = 0u); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set OP pin level of OCO + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] enLevel OP port level of OCO + ** \arg OcPortLevelLow Output low level to OC port + ** \arg OcPortLevelHigh Output high level to OC port + ** + ** \retval Ok OCO interrupt flag is clear + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_SetOpPortLevel(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + en_timer4_oco_port_level_t enLevel) +{ + __IO stc_tmr4_ocsr_field_t *pstcOCSR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_VALID_OP_PORT_LEVEL(enLevel)); + + /* Get pointer of current channel OCO register address */ + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + IS_VALID_OCO_HIGH_CH(enCh) ? (pstcOCSR->OCFH = (uint16_t)enLevel) : (pstcOCSR->OCFL = (uint16_t)enLevel); + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get OP pin level of OCO + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** + ** \retval OcPortLevelLow Output low level to OC port + ** \retval OcPortLevelHigh Output high level to OC port + ** + ******************************************************************************/ +en_timer4_oco_port_level_t TIMER4_OCO_GetOpPinLevel(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh) +{ + __IO stc_tmr4_ocsr_field_t *pstcOCSR = NULL; + en_timer4_oco_port_level_t enLevel = OcPortLevelLow; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + /* Get pointer of current channel OCO register address */ + pstcOCSR = (__IO stc_tmr4_ocsr_field_t*)TMR4_OCSRx(TMR4x, enCh); + + if (IS_VALID_OCO_HIGH_CH(enCh)) /* channel: Timer4OcoOuh, Timer4OcoOvh, Timer4OcoOwh */ + { + enLevel = (en_timer4_oco_port_level_t)(pstcOCSR->OCPH); + } + else if (IS_VALID_OCO_LOW_CH(enCh)) /* channel: Timer4OcoOul, Timer4OcoOvl, Timer4OcoOwl */ + { + enLevel = (en_timer4_oco_port_level_t)(pstcOCSR->OCPL); + } + else + { + /* Do nothing: only avoid MISRA warning */ + } + + return enLevel; +} + +/** + ******************************************************************************* + ** \brief Write OCCR register + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** \param [in] u16Occr The value of occr + ** \arg 16bit value + ** + ** \retval Ok OCCR written + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_OCO_WriteOccr(M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh, + uint16_t u16Occr) +{ + __IO uint16_t *pu16OCCR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + + /* Get pointer of current channel OCO register address */ + pu16OCCR = (__IO uint16_t*)TMR4_OCCRx(TMR4x, enCh); + /* set register */ + *pu16OCCR = u16Occr; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get OCCR register value + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of OCO + ** \arg Timer4OcoOuh Timer oco channel:OUH + ** \arg Timer4OcoOul Timer oco channel:OUL + ** \arg Timer4OcoOvh Timer oco channel:OVH + ** \arg Timer4OcoOvl Timer oco channel:OVL + ** \arg Timer4OcoOwh Timer oco channel:OWH + ** \arg Timer4OcoOwl Timer oco channel:OWL + ** + ** \retval OCCR register value + ** + ******************************************************************************/ +uint16_t TIMER4_OCO_ReadOccr(const M4_TMR4_TypeDef *TMR4x, + en_timer4_oco_ch_t enCh) +{ + __IO uint16_t* pu16OCCR = NULL; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + DDL_ASSERT(IS_VALID_OCO_CH(enCh)); + + /* Get pointer of current channel OCO register address */ + pu16OCCR = (__IO uint16_t*)TMR4_OCCRx(TMR4x, enCh); + + return (*pu16OCCR); +} + +//@} // Timer4OcoGroup + +#endif /* DDL_TIMER4_OCO_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timer4_pwm.c b/driver/src/hc32f460_timer4_pwm.c new file mode 100644 index 0000000..0a1c983 --- /dev/null +++ b/driver/src/hc32f460_timer4_pwm.c @@ -0,0 +1,600 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer4_pwm.c + ** + ** A detailed description is available at + ** @link Timer4PwmGroup Timer4PWM description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library of Timer4PWM. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer4_pwm.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER4_PWM_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer4PwmGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter validity check for Timer4 unit */ +#define IS_VALID_TIMER4(__TMRx__) \ +( (M4_TMR41 == (__TMRx__)) || \ + (M4_TMR42 == (__TMRx__)) || \ + (M4_TMR43 == (__TMRx__))) + +/*!< Parameter validity check for PWM channel */ +#define IS_VALID_PWM_CH(x) \ +( (Timer4PwmU == (x)) || \ + (Timer4PwmV == (x)) || \ + (Timer4PwmW == (x))) + +/*!< Parameter validity check for PWM mode */ +#define IS_VALID_PWM_MODE(x) \ +( (PwmThroughMode == (x)) || \ + (PwmDeadTimerMode == (x)) || \ + (PwmDeadTimerFilterMode == (x))) + +/*!< Parameter valid check for PWM output state. */ +#define IS_VALID_PWM_OUTPUT_STATE(x) \ +( (PwmHPwmLHold == (x)) || \ + (PwmHPwmLReverse == (x)) || \ + (PwmHReversePwmLHold == (x)) || \ + (PwmHHoldPwmLReverse == (x))) + +/*!< Parameter valid check for PWM clock division. */ +#define IS_VALID_PWM_CLK_DIV(x) \ +( (PwmPlckDiv1 == (x)) || \ + (PwmPlckDiv2 == (x)) || \ + (PwmPlckDiv4 == (x)) || \ + (PwmPlckDiv8 == (x)) || \ + (PwmPlckDiv16 == (x)) || \ + (PwmPlckDiv32 == (x)) || \ + (PwmPlckDiv64 == (x)) || \ + (PwmPlckDiv128 == (x))) + +/*!< Get the specified register address of the specified Timer4 unit */ +#define TMR4_RCSRx(__TMR4x__) ((uint32_t)&(__TMR4x__)->RCSR) +#define TMR4_POCRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->POCRU + ((uint32_t)(__CH__))*4ul) +#define TMR4_PDARx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->PDARU + ((uint32_t)(__CH__))*8ul) +#define TMR4_PDBRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->PDBRU + ((uint32_t)(__CH__))*8ul) +#define TMR4_PFSRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->PFSRU + ((uint32_t)(__CH__))*8ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Initialize a couple PWM channels + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** \param [in] pstcInitCfg The pointer of PWM configure structure + ** \arg This parameter detail refer @ref stc_timer4_pwm_init_t + ** + ** \retval Ok Initialize successfully + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - pstcInitCfg == NULL + ** - enCh is invalid + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_Init(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh, + const stc_timer4_pwm_init_t *pstcInitCfg) +{ + __IO stc_tmr4_pocr_field_t *pstcPOCR_f = NULL; + __IO stc_tmr4_rcsr_field_t *pstcRCSR_f = NULL; + en_result_t enRet = Ok; + + /* Check TMR4x && pstcInitCfg pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_MODE(pstcInitCfg->enMode)); + DDL_ASSERT(IS_VALID_PWM_CLK_DIV(pstcInitCfg->enClkDiv)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enRtIntMaskCmd)); + DDL_ASSERT(IS_VALID_PWM_OUTPUT_STATE(pstcInitCfg->enOutputState)); + + /* Get pointer of current channel PWM register address */ + pstcRCSR_f = (__IO stc_tmr4_rcsr_field_t*)TMR4_RCSRx(TMR4x); + pstcPOCR_f = (__IO stc_tmr4_pocr_field_t*)TMR4_POCRx(TMR4x, enCh); + + /* Configure PWM mode */ + pstcPOCR_f->PWMMD = (uint16_t)(pstcInitCfg->enMode); + + /* Configure PWM mode */ + pstcPOCR_f->LVLS = (uint16_t)(pstcInitCfg->enOutputState); + + /* Set timer clock division */ + pstcPOCR_f->DIVCK = (uint16_t)(pstcInitCfg->enClkDiv); + + /* Set interrupt mask */ + switch (enCh) + { + case Timer4PwmU: + pstcRCSR_f->RTIDU = (uint16_t)(pstcInitCfg->enRtIntMaskCmd); + break; + case Timer4PwmV: + pstcRCSR_f->RTIDV = (uint16_t)(pstcInitCfg->enRtIntMaskCmd); + break; + case Timer4PwmW: + pstcRCSR_f->RTIDW = (uint16_t)(pstcInitCfg->enRtIntMaskCmd); + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initialize a couple PWM channels + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** + ** \retval Ok De-Initialize successfully. + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh out of range + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_DeInit(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh) +{ + en_result_t enRet = Ok; + __IO uint16_t *pu16PDAR = NULL; + __IO uint16_t *pu16PDBR = NULL; + __IO uint16_t *pu16PFSR = NULL; + __IO stc_tmr4_pocr_field_t *pstcPOCR_f = NULL; + __IO stc_tmr4_rcsr_field_t *pstcRCSR_f = NULL; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Get pointer of current channel PWM register address */ + pu16PDAR = (__IO uint16_t*)TMR4_PDARx(TMR4x, enCh); + pu16PDBR = (__IO uint16_t*)TMR4_PDBRx(TMR4x, enCh); + pu16PFSR = (__IO uint16_t*)TMR4_PFSRx(TMR4x, enCh); + pstcRCSR_f = (__IO stc_tmr4_rcsr_field_t*)TMR4_RCSRx(TMR4x); + pstcPOCR_f = (__IO stc_tmr4_pocr_field_t*)TMR4_POCRx(TMR4x, enCh); + + *pu16PDAR = (uint16_t)0u; + *pu16PDBR = (uint16_t)0u; + *pu16PFSR = (uint16_t)0u; + pstcPOCR_f->DIVCK = (uint16_t)0u; + pstcPOCR_f->LVLS = (uint16_t)0u; + pstcPOCR_f->PWMMD = (uint16_t)0u; + + switch (enCh) + { + case Timer4PwmU: + pstcRCSR_f->RTIDU = (uint16_t)0u; + break; + case Timer4PwmV: + pstcRCSR_f->RTIDV = (uint16_t)0u; + break; + case Timer4PwmW: + pstcRCSR_f->RTIDW = (uint16_t)0u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + else + { + enRet = ErrorInvalidParameter; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Start PWM timer + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** + ** \retval Ok Start timer successfully + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh out of range + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_StartTimer(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmr4_rcsr_field_t *pstcRCSR_f = NULL; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + enRet = Ok; + /* Get pointer of current channel PWM register address */ + pstcRCSR_f = (__IO stc_tmr4_rcsr_field_t*)TMR4_RCSRx(TMR4x); + + switch (enCh) + { + case Timer4PwmU: + pstcRCSR_f->RTEU = (uint16_t)1u; + break; + case Timer4PwmV: + pstcRCSR_f->RTEV = (uint16_t)1u; + break; + case Timer4PwmW: + pstcRCSR_f->RTEW = (uint16_t)1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Stop PWM timer + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** + ** \retval Ok Stop timer successfully + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh out of range + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_StopTimer(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmr4_rcsr_field_t *pstcRCSR_f = NULL; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_CH(enCh)); + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + enRet = Ok; + + /* Get pointer of current channel PWM register address */ + pstcRCSR_f = (__IO stc_tmr4_rcsr_field_t*)TMR4_RCSRx(TMR4x); + switch (enCh) + { + case Timer4PwmU: + pstcRCSR_f->RTSU = (uint16_t)1u; + break; + case Timer4PwmV: + pstcRCSR_f->RTSV = (uint16_t)1u; + break; + case Timer4PwmW: + pstcRCSR_f->RTSW = (uint16_t)1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get PWM reload-timer interrupt flag + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** + ** \retval Reset None interrupt request on PWM reload-timer + ** \retval Set Detection interrupt request on PWM reload-timer + ** + ******************************************************************************/ +en_flag_status_t TIMER4_PWM_GetIrqFlag(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh) +{ + uint16_t u16Flag = 0u; + __IO stc_tmr4_rcsr_field_t *pstcRCSR_f = NULL; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_CH(enCh)); + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + + /* Get pointer of current channel PWM register address */ + pstcRCSR_f = (__IO stc_tmr4_rcsr_field_t*)TMR4_RCSRx(TMR4x); + + switch (enCh) + { + case Timer4PwmU: + u16Flag = pstcRCSR_f->RTIFU; + break; + case Timer4PwmV: + u16Flag = pstcRCSR_f->RTIFV; + break; + case Timer4PwmW: + u16Flag = pstcRCSR_f->RTIFW; + break; + default: + break; + } + + return (en_flag_status_t)u16Flag; +} + +/** + ******************************************************************************* + ** \brief Clear PWM reload-timer interrupt flag + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** + ** \retval Ok PWM reload-timer interrupt flag is clear + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - enCh out of range + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_ClearIrqFlag(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmr4_rcsr_field_t *pstcRCSR_f = NULL; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_CH(enCh)); + + enRet = Ok; + /* Get pointer of current channel PWM register address */ + pstcRCSR_f = (__IO stc_tmr4_rcsr_field_t*)TMR4_RCSRx(TMR4x); + switch (enCh) + { + case Timer4PwmU: + pstcRCSR_f->RTICU = (uint16_t)1u; + break; + case Timer4PwmV: + pstcRCSR_f->RTICV = (uint16_t)1u; + break; + case Timer4PwmW: + pstcRCSR_f->RTICW = (uint16_t)1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Write timer count cycle + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** \param [in] u16PDAR PDAR value + ** \arg 0~65535 + ** \param [in] u16PDBR PDBR value + ** \arg 0~65535 + ** + ** \retval Ok Timer count cycle is written + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_WriteDeadRegionValue(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh, + uint16_t u16PDAR, + uint16_t u16PDBR) +{ + __IO uint16_t *pu16PDAR = NULL; + __IO uint16_t *pu16PDBR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_CH(enCh)); + + /* Get pointer of current channel PWM register address */ + pu16PDAR = (__IO uint16_t *)TMR4_PDARx(TMR4x, enCh); + pu16PDBR = (__IO uint16_t *)TMR4_PDBRx(TMR4x, enCh); + + /* set the register */ + *pu16PDAR = u16PDAR; + *pu16PDBR = u16PDBR; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Read dead region count value + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** \param [out] u16PDAR Pointer of uint16_t type + ** \arg 0~65535 + ** \param [out] u16PDBR Pointer of uint16_t type + ** \arg 0~65535 + ** + ** \retval Ok Read successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_ReadDeadRegionValue(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh, + uint16_t *u16PDAR, + uint16_t *u16PDBR) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_CH(enCh)); + + /* Get pointer of current channel PWM register address */ + *u16PDAR = *(__IO uint16_t *)TMR4_PDARx(TMR4x, enCh); + *u16PDBR = *(__IO uint16_t *)TMR4_PDBRx(TMR4x, enCh); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set cycle of PWM timer + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Channel of PWM + ** \arg Timer4PwmOuhl Timer4 PWM couple channel OUH&OUL + ** \arg Timer4PwmOvhl Timer4 PWM couple channel OVH&OVL + ** \arg Timer4PwmOwhl Timer4 PWM couple channel OWH&OWL + ** \param [in] u16Count PWM pulse counter value + ** \arg 0~65535 + ** + ** \retval Ok Cycle of PWM timer is set + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_PWM_SetFilterCountValue(M4_TMR4_TypeDef *TMR4x, + en_timer4_pwm_ch_t enCh, + uint16_t u16Count) +{ + __IO uint16_t *pu16PFSR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_PWM_CH(enCh)); + + /* Get pointer of current channel PWM register address */ + pu16PFSR = (__IO uint16_t*)TMR4_PFSRx(TMR4x, enCh); + *pu16PFSR =u16Count; + + enRet = Ok; + } + + return enRet; +} + +//@} // Timer4PwmGroup + +#endif /* DDL_TIMER4_PWM_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timer4_sevt.c b/driver/src/hc32f460_timer4_sevt.c new file mode 100644 index 0000000..e2724a2 --- /dev/null +++ b/driver/src/hc32f460_timer4_sevt.c @@ -0,0 +1,593 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer4_sevt.c + ** + ** A detailed description is available at + ** @link Timer4SevtGroup Timer4SEVT description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library of Timer4SEVT. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer4_sevt.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER4_SEVT_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer4SevtGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter validity check for Timer4 unit */ +#define IS_VALID_TIMER4(__TMRx__) \ +( (M4_TMR41 == (__TMRx__)) || \ + (M4_TMR42 == (__TMRx__)) || \ + (M4_TMR43 == (__TMRx__))) + +/*!< Parameter validity check for SEVT channel */ +#define IS_VALID_SEVT_CH(x) \ +( (Timer4SevtCh0 == (x)) || \ + (Timer4SevtCh1 == (x)) || \ + (Timer4SevtCh2 == (x)) || \ + (Timer4SevtCh3 == (x)) || \ + (Timer4SevtCh4 == (x)) || \ + (Timer4SevtCh5 == (x))) + +/*!< Parameter validity check for adct buffer mode */ +#define IS_VALID_SEVT_BUF_MODE(x) \ +( (SevtBufDisable == (x)) || \ + (SevtBufCntZero == (x)) || \ + (SevtBufCntPeak == (x)) || \ + (SevtBufCntZeroOrCntPeak == (x)) || \ + (SevtBufCntZeroZicZero == (x)) || \ + (SevtBufCntPeakPicZero == (x)) || \ + (SevtBufCntZeroZicZeroOrCntPeakPicZero == (x))) + +/*!< Parameter validity check for SEVT trigger event */ +#define IS_VALID_SEVT_TRG_EVT(x) \ +( (SevtTrgEvtSCMUH == (x)) || \ + (SevtTrgEvtSCMUL == (x)) || \ + (SevtTrgEvtSCMVH == (x)) || \ + (SevtTrgEvtSCMVL == (x)) || \ + (SevtTrgEvtSCMWH == (x)) || \ + (SevtTrgEvtSCMWL == (x))) + +/*!< Parameter validity check for SEVT OCCR selection */ +#define IS_VALID_SEVT_OCCR_SEL(x) \ +( (SevtSelOCCRxh == (x)) || \ + (SevtSelOCCRxl == (x))) + +/*!< Parameter validity check for SEVT running mode */ +#define IS_VALID_SEVT_MODE(x) \ +( (SevtDelayTrigMode == (x)) || \ + (SevtCompareTrigMode == (x))) + +/*!< Parameter validity check for SEVT mask time */ +#define IS_VALID_SEVT_MSK(x) \ +( (Timer4SevtMask0 == (x)) || \ + (Timer4SevtMask1 == (x)) || \ + (Timer4SevtMask2 == (x)) || \ + (Timer4SevtMask3 == (x)) || \ + (Timer4SevtMask4 == (x)) || \ + (Timer4SevtMask5 == (x)) || \ + (Timer4SevtMask6 == (x)) || \ + (Timer4SevtMask7 == (x)) || \ + (Timer4SevtMask8 == (x)) || \ + (Timer4SevtMask9 == (x)) || \ + (Timer4SevtMask10 == (x)) || \ + (Timer4SevtMask11 == (x)) || \ + (Timer4SevtMask12 == (x)) || \ + (Timer4SevtMask13 == (x)) || \ + (Timer4SevtMask14 == (x)) || \ + (Timer4SevtMask15 == (x))) + +/*!< Get the specified register address of the specified Timer4 unit */ +#define TMR4_SCCRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->SCCRUH + ((uint32_t)(__CH__))*4ul) +#define TMR4_SCSRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->SCSRUH + ((uint32_t)(__CH__))*4ul) +#define TMR4_SCMRx(__TMR4x__, __CH__) ((uint32_t)&(__TMR4x__)->SCMRUH + ((uint32_t)(__CH__))*4ul) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Initialize a Special-Event channel + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** \param [in] pstcInitCfg The pointer of SEVT configure structure + ** \arg This parameter detail refer @ref stc_timer4_sevt_init_t + ** + ** \retval Ok Initialize successfully + ** \retval ErrorInvalidParameter If one of following conditions are met: + ** - TMR4x is invalid + ** - pstcInitCfg == NULL + ** - enCh is invalid + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t TIMER4_SEVT_Init(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh, + const stc_timer4_sevt_init_t *pstcInitCfg) +{ + __IO uint16_t *pu16SCCR = NULL; + __IO stc_tmr4_scsr_field_t stcSCSR_f; + __IO stc_tmr4_scmr_field_t stcSCMR_f; + __IO stc_tmr4_scsr_field_t *pstcSCSR_f = NULL; + __IO stc_tmr4_scmr_field_t *pstcSCMR_f = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x && pstcInitCfg pointer */ + if ((IS_VALID_TIMER4(TMR4x)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + DDL_ASSERT(IS_VALID_SEVT_MODE(pstcInitCfg->enMode)); + DDL_ASSERT(IS_VALID_SEVT_BUF_MODE(pstcInitCfg->enBuf)); + DDL_ASSERT(IS_VALID_SEVT_MSK(pstcInitCfg->enMaskTimes)); + DDL_ASSERT(IS_VALID_SEVT_TRG_EVT(pstcInitCfg->enTrigEvt)); + DDL_ASSERT(IS_VALID_SEVT_OCCR_SEL(pstcInitCfg->enOccrSel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpAmcZicCmd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcInitCfg->enCmpAmcPicCmd)); + + enRet = Ok; + /* Get actual address of register list of current channel */ + pu16SCCR = (__IO uint16_t*)TMR4_SCCRx(TMR4x, enCh); + pstcSCSR_f = (__IO stc_tmr4_scsr_field_t*)TMR4_SCSRx(TMR4x, enCh); + pstcSCMR_f = (__IO stc_tmr4_scmr_field_t*)TMR4_SCMRx(TMR4x, enCh); + + /* Configure default parameter */ + *pu16SCCR = (uint16_t)0u; + *(__IO uint16_t*)pstcSCSR_f = (uint16_t)0x0000u; + *(__IO uint16_t*)pstcSCMR_f = (uint16_t)0xFF00u; + + switch (pstcInitCfg->enBuf) + { + case SevtBufDisable: + stcSCSR_f.BUFEN = (uint16_t)0u; + stcSCSR_f.LMC = (uint16_t)0u; + break; + case SevtBufCntZero: + stcSCSR_f.BUFEN = (uint16_t)1u; + stcSCSR_f.LMC = (uint16_t)0u; + break; + case SevtBufCntPeak: + stcSCSR_f.BUFEN = (uint16_t)2u; + stcSCSR_f.LMC = (uint16_t)0u; + break; + case SevtBufCntZeroOrCntPeak: + stcSCSR_f.BUFEN = (uint16_t)3u; + stcSCSR_f.LMC = (uint16_t)0u; + break; + case SevtBufCntZeroZicZero: + stcSCSR_f.BUFEN = (uint16_t)1u; + stcSCSR_f.LMC = (uint16_t)1u; + break; + case SevtBufCntPeakPicZero: + stcSCSR_f.BUFEN = (uint16_t)2u; + stcSCSR_f.LMC = (uint16_t)1u; + break; + case SevtBufCntZeroZicZeroOrCntPeakPicZero: + stcSCSR_f.BUFEN = (uint16_t)3u; + stcSCSR_f.LMC = (uint16_t)1u; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + if (Ok == enRet) + { + /* Configure start trigger output channel number */ + stcSCSR_f.EVTOS = (uint16_t)(pstcInitCfg->enTrigEvt); + + /* Select SEVT running mode */ + stcSCSR_f.EVTMS = (uint16_t)(pstcInitCfg->enMode); + + /* select OCO OCCR register: OCCR(x) */ + stcSCSR_f.EVTDS = (uint16_t)(pstcInitCfg->enOccrSel); + + /* Set the comparison with CNT interrupt mask counter */ + stcSCMR_f.AMC = (uint16_t)(pstcInitCfg->enMaskTimes); + stcSCMR_f.MZCE = (uint16_t)(pstcInitCfg->enCmpAmcZicCmd); + stcSCMR_f.MPCE = (uint16_t)(pstcInitCfg->enCmpAmcPicCmd); + + *pstcSCSR_f = stcSCSR_f; + *pstcSCMR_f = stcSCMR_f; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initialize a SEVT channel + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** + ** \retval Ok De-Initialize successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_SEVT_DeInit(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh) +{ + __IO uint16_t *pu16SCCR = NULL; + __IO stc_tmr4_scsr_field_t *pstcSCSR_f = NULL; + __IO stc_tmr4_scmr_field_t *pstcSCMR_f = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + + /* Get actual address of register list of current channel */ + pu16SCCR = (__IO uint16_t*)TMR4_SCCRx(TMR4x, enCh); + pstcSCSR_f = (__IO stc_tmr4_scsr_field_t*)TMR4_SCSRx(TMR4x, enCh); + pstcSCMR_f = (__IO stc_tmr4_scmr_field_t*)TMR4_SCMRx(TMR4x, enCh); + + /* Configure default parameter */ + *pu16SCCR = 0u; + *(__IO uint16_t*)pstcSCSR_f = (uint16_t)0x0000u; + *(__IO uint16_t*)pstcSCMR_f = (uint16_t)0xFF00u; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 SEVT trigger event. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** \param [in] enTrgEvt Timer4 Special-EVT Event + ** \arg SevtTrgEvtSCMUH Timer4 Special-EVT Event: TMR4_Ux_SCMUH + ** \arg SevtTrgEvtSCMUL Timer4 Special-EVT Event: TMR4_Ux_SCMUL + ** \arg SevtTrgEvtSCMVH Timer4 Special-EVT Event: TMR4_Ux_SCMVH + ** \arg SevtTrgEvtSCMVL Timer4 Special-EVT Event: TMR4_Ux_SCMVL + ** \arg SevtTrgEvtSCMWH Timer4 Special-EVT Event: TMR4_Ux_SCMWH + ** \arg SevtTrgEvtSCMWL Timer4 Special-EVT Event: TMR4_Ux_SCMWL + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_SEVT_SetTriggerEvent(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh, + en_timer4_sevt_trigger_evt_t enTrgEvt) +{ + __IO stc_tmr4_scsr_field_t *pstcSCSR_f = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + DDL_ASSERT(IS_VALID_SEVT_TRG_EVT(enTrgEvt)); + + /* Get actual address of register list of current channel */ + pstcSCSR_f = (__IO stc_tmr4_scsr_field_t*)TMR4_SCSRx(TMR4x, enCh); + pstcSCSR_f->EVTOS = (uint16_t)(enTrgEvt); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 SEVT trigger condition. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** \param [in] pstcTrigCond The pointer of SEVT trigger condition structure + ** \arg This parameter detail refer @ref stc_timer4_sevt_trigger_cond_t + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_SEVT_SetTriggerCond(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh, + const stc_timer4_sevt_trigger_cond_t *pstcTrigCond) +{ + __IO stc_tmr4_scsr_field_t *pstcSCSR_f = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcTrigCond->enUpMatchCmd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcTrigCond->enZeroMatchCmd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcTrigCond->enDownMatchCmd)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcTrigCond->enPeakMatchCmd)); + + /* Get actual address of register list of current channel */ + pstcSCSR_f = (__IO stc_tmr4_scsr_field_t*)TMR4_SCSRx(TMR4x, enCh); + pstcSCSR_f->PEN = (uint16_t)(pstcTrigCond->enPeakMatchCmd); + pstcSCSR_f->ZEN = (uint16_t)(pstcTrigCond->enZeroMatchCmd); + pstcSCSR_f->UEN = (uint16_t)(pstcTrigCond->enUpMatchCmd); + pstcSCSR_f->DEN = (uint16_t)(pstcTrigCond->enDownMatchCmd); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Write compare or delay value to Timer4 SEVT + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** \param [in] u16SccrVal Timer4 SEVT compare value + ** + ** \retval Ok Compare or delay value to Timer4 SEVT is set + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_SEVT_WriteSCCR(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh, + uint16_t u16SccrVal) +{ + __IO uint16_t *pu16SCCR = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* check parameters */ + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + + /* Get actual address of register list of current channel */ + pu16SCCR = (__IO uint16_t*)TMR4_SCCRx(TMR4x, enCh); + *pu16SCCR = u16SccrVal; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Read compare value or delay value of ATVR + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** + ** \retval Value of register SCCR + ** + ******************************************************************************/ +uint16_t TIMER4_SEVT_ReadSCCR(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh) +{ + __IO uint16_t *pu16SCCR = NULL; + + /* check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + + /* Get actual address of register list of current channel */ + pu16SCCR = (__IO uint16_t*)TMR4_SCCRx(TMR4x, enCh); + + return *pu16SCCR; +} + +/** + ******************************************************************************* + ** \brief Set Timer4 SEVT trigger event. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** \param [in] enMaskTimes Timer4 Special-EVT event mask times + ** \arg Timer4SevtMask0 Mask 0 time. + ** \arg Timer4SevtMask1 Mask 1 times. + ** \arg Timer4SevtMask2 Mask 2 times. + ** \arg Timer4SevtMask3 Mask 3 times. + ** \arg Timer4SevtMask4 Mask 4 times. + ** \arg Timer4SevtMask5 Mask 5 times. + ** \arg Timer4SevtMask6 Mask 6 times. + ** \arg Timer4SevtMask7 Mask 7 times. + ** \arg Timer4SevtMask8 Mask 8 times. + ** \arg Timer4SevtMask9 Mask 9 times. + ** \arg Timer4SevtMask10 Mask 10 times + ** \arg Timer4SevtMask11 Mask 11 times + ** \arg Timer4SevtMask12 Mask 12 times + ** \arg Timer4SevtMask13 Mask 13 times + ** \arg Timer4SevtMask14 Mask 14 times + ** \arg Timer4SevtMask15 Mask 15 times + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter TMR4x is invalid + ** + ******************************************************************************/ +en_result_t TIMER4_SEVT_SetMaskTimes(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh, + en_timer4_sevt_mask_t enMaskTimes) +{ + __IO stc_tmr4_scmr_field_t *pstcSCMR_f = NULL; + en_result_t enRet = ErrorInvalidParameter; + + /* Check TMR4x pointer */ + if (IS_VALID_TIMER4(TMR4x)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + DDL_ASSERT(IS_VALID_SEVT_MSK(enMaskTimes)); + + /* Get actual address of register list of current channel */ + pstcSCMR_f = (__IO stc_tmr4_scmr_field_t*)TMR4_SCMRx(TMR4x, enCh); + pstcSCMR_f->AMC = (uint16_t)(enMaskTimes); + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timer4 SEVT mask count. + ** + ** \param [in] TMR4x Pointer to Timer4 instance register base + ** \arg M4_TMR41 Timer4 unit 1 instance register base + ** \arg M4_TMR42 Timer4 unit 2 instance register base + ** \arg M4_TMR43 Timer4 unit 3 instance register base + ** \param [in] enCh Timer4 SEVT channel + ** \arg Timer4SevtCh0 Timer4 SEVT channel:0 + ** \arg Timer4SevtCh1 Timer4 SEVT channel:1 + ** \arg Timer4SevtCh2 Timer4 SEVT channel:2 + ** \arg Timer4SevtCh3 Timer4 SEVT channel:3 + ** \arg Timer4SevtCh4 Timer4 SEVT channel:4 + ** \arg Timer4SevtCh5 Timer4 SEVT channel:5 + ** + ** \retval Timer4SevtMask0 Mask 0 time. + ** \retval Timer4SevtMask1 Mask 1 times. + ** \retval Timer4SevtMask2 Mask 2 times. + ** \retval Timer4SevtMask3 Mask 3 times. + ** \retval Timer4SevtMask4 Mask 4 times. + ** \retval Timer4SevtMask5 Mask 5 times. + ** \retval Timer4SevtMask6 Mask 6 times. + ** \retval Timer4SevtMask7 Mask 7 times. + ** \retval Timer4SevtMask8 Mask 8 times. + ** \retval Timer4SevtMask9 Mask 9 times. + ** \retval Timer4SevtMask10 Mask 10 times + ** \retval Timer4SevtMask11 Mask 11 times + ** \retval Timer4SevtMask12 Mask 12 times + ** \retval Timer4SevtMask13 Mask 13 times + ** \retval Timer4SevtMask14 Mask 14 times + ** \retval Timer4SevtMask15 Mask 15 times + ** + ******************************************************************************/ +en_timer4_sevt_mask_t TIMER4_SEVT_GetMaskTimes(M4_TMR4_TypeDef *TMR4x, + en_timer4_sevt_ch_t enCh) +{ + __IO stc_tmr4_scmr_field_t *pstcSCMR_f = NULL; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_TIMER4(TMR4x)); + DDL_ASSERT(IS_VALID_SEVT_CH(enCh)); + + /* Get actual address of register list of current channel */ + pstcSCMR_f = (__IO stc_tmr4_scmr_field_t*)TMR4_SCMRx(TMR4x, enCh); + + return (en_timer4_sevt_mask_t)pstcSCMR_f->AMC; +} + +//@} // Timer4SevtGroup + +#endif /* DDL_TIMER4_SEVT_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timer6.c b/driver/src/hc32f460_timer6.c new file mode 100644 index 0000000..461c25b --- /dev/null +++ b/driver/src/hc32f460_timer6.c @@ -0,0 +1,1786 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timer6.c + ** + ** A detailed description is available at + ** @link Timer6Group Timer6 description @endlink + ** + ** - 2018-11-23 CDT First version for Device Driver Library of Timer6. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timer6.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMER6_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup Timer6Group + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for normal timer6 unit */ +#define IS_VALID_NORMAL_TIMER6_UNIT(__TMR6x__) \ +( (M4_TMR61 == (__TMR6x__)) || \ + (M4_TMR62 == (__TMR6x__)) || \ + (M4_TMR63 == (__TMR6x__))) + +/*!< Parameter valid check for period register*/ +#define IS_VALID_PERIOD_TYPE(x) \ +( (Timer6PeriodA == (x)) || \ + (Timer6PeriodB == (x)) || \ + (Timer6PeriodC == (x))) +/*!< Parameter valid check for General compare register*/ +#define IS_VALID_GEN_CMP_TYPE(x) \ +( (Timer6GenCompareA == (x)) || \ + (Timer6GenCompareB == (x)) || \ + (Timer6GenCompareC == (x)) || \ + (Timer6GenCompareD == (x)) || \ + (Timer6GenCompareE == (x)) || \ + (Timer6GenCompareF == (x))) + +/*!< Parameter valid check for Special compare register*/ +#define IS_VALID_SPECIAL_CMP_TYPE(x) \ +( (Timer6SpclCompA == (x)) || \ + (Timer6SpclCompB == (x)) || \ + (Timer6SpclCompC == (x)) || \ + (Timer6SpclCompD == (x)) || \ + (Timer6SpclCompE == (x)) || \ + (Timer6SpclCompF == (x))) +/*!< Parameter valid check for Count clock division */ +#define IS_VALID_COUNT_CLK_DIV(x) \ +( (Timer6PclkDiv1 == (x)) || \ + (Timer6PclkDiv2 == (x)) || \ + (Timer6PclkDiv4 == (x)) || \ + (Timer6PclkDiv8 == (x)) || \ + (Timer6PclkDiv16 == (x)) || \ + (Timer6PclkDiv64 == (x)) || \ + (Timer6PclkDiv256 == (x)) || \ + (Timer6PclkDiv1024 == (x))) + +/*!< Parameter valid check for count mode */ +#define IS_VALID_COUNT_MODE(x) \ +( (Timer6CntSawtoothMode == (x)) || \ + (Timer6CntTriangularModeA == (x)) || \ + (Timer6CntTriangularModeB == (x))) + +/*!< Parameter valid check for count direction */ +#define IS_VALID_COUNT_DIR(x) \ +( (Timer6CntDirDown == (x)) || \ + (Timer6CntDirUp == (x))) + +/*!< Parameter valid check for timer6 output port */ +#define IS_VALID_TIMER6_OUTPUT_PORT(x) \ +( (Timer6PWMA == (x)) || \ + (Timer6PWMB == (x))) + +/*!< Parameter valid check for timer6 input port */ +#define IS_VALID_TIMER6_INPUT_PORT(x) \ +( (Timer6PWMA == (x)) || \ + (Timer6PWMB == (x)) || \ + (Timer6TrigA == (x)) || \ + (Timer6TrigB == (x))) + +/*!< Parameter valid check for start/stop count output status */ +#define IS_VALID_STA_STP_OUTPUT_STATUS(x) \ +( (Timer6PWMxPortOutLow == (x)) || \ + (Timer6PWMxPortOutHigh == (x))) + +/*!< Parameter valid check for match output status */ +#define IS_VALID_MATCH_OUTPUT_STATUS(x) \ +( (Timer6PWMxCompareLow == (x)) || \ + (Timer6PWMxCompareHigh == (x)) || \ + (Timer6PWMxCompareKeep == (x)) || \ + (Timer6PWMxCompareInv == (x))) + +/*!< Parameter valid check for match output status */ +#define IS_VALID_MATCH_OUTPUT_STATUS(x) \ +( (Timer6PWMxCompareLow == (x)) || \ + (Timer6PWMxCompareHigh == (x)) || \ + (Timer6PWMxCompareKeep == (x)) || \ + (Timer6PWMxCompareInv == (x))) + +/*!< Parameter valid check for port filter clock */ +#define IS_VALID_PORT_FILTER_CLOCK(x) \ +( (Timer6FltClkPclk0Div1 == (x)) || \ + (Timer6FltClkPclk0Div4 == (x)) || \ + (Timer6FltClkPclk0Div16 == (x)) || \ + (Timer6FltClkPclk0Div64 == (x))) + +/*!< Parameter valid check for interrupt request source */ +#define IS_VALID_VPERR_PCNT_NUM(x) \ +( (Timer6PeriodCnts0 == (x)) || \ + (Timer6PeriodCnts1 == (x)) || \ + (Timer6PeriodCnts2 == (x)) || \ + (Timer6PeriodCnts3 == (x)) || \ + (Timer6PeriodCnts4 == (x)) || \ + (Timer6PeriodCnts5 == (x)) || \ + (Timer6PeriodCnts6 == (x)) || \ + (Timer6PeriodCnts7 == (x))) +/*!< Parameter valid check for interrupt request source */ +#define IS_VALID_VPERR_PCNT_EN_SOURCE(x) \ +( (Timer6PeriodCnteDisable == (x)) || \ + (Timer6PeriodCnteMin == (x)) || \ + (Timer6PeriodCnteMax == (x)) || \ + (Timer6PeriodCnteBoth == (x))) + +/*!< Parameter valid check for interrupt request source */ +#define IS_VALID_IRQ_SOURCE(x) \ +( (Timer6INTENA == (x)) || \ + (Timer6INTENB == (x)) || \ + (Timer6INTENC == (x)) || \ + (Timer6INTEND == (x)) || \ + (Timer6INTENE == (x)) || \ + (Timer6INTENF == (x)) || \ + (Timer6INTENOVF == (x)) || \ + (Timer6INTENUDF == (x)) || \ + (Timer6INTENDTE == (x)) || \ + (Timer6INTENSAU == (x)) || \ + (Timer6INTENSAD == (x)) || \ + (Timer6INTENSBU == (x)) || \ + (Timer6INTENSBD == (x))) + +/*!< Parameter valid check for status type */ +#define IS_VALID_STATUS_TYPE(x) \ +( (Timer6CMAF == (x)) || \ + (Timer6CMBF == (x)) || \ + (Timer6CMCF == (x)) || \ + (Timer6CMDF == (x)) || \ + (Timer6CMEF == (x)) || \ + (Timer6CMFF == (x)) || \ + (Timer6OVFF == (x)) || \ + (Timer6UDFF == (x)) || \ + (Timer6DTEF == (x)) || \ + (Timer6CMSAUF == (x)) || \ + (Timer6CMSADF == (x)) || \ + (Timer6CMSBUF == (x)) || \ + (Timer6CMSBDF == (x)) || \ + (Timer6VPERNUM == (x)) || \ + (Timer6DIRF == (x))) + +/*!< Parameter valid check for hardware up count/down count event type */ +#define IS_VALID_HW_COUNT_TYPE(x) \ +( (Timer6HwCntPWMALowPWMBRise == (x)) || \ + (Timer6HwCntPWMALowPWMBFall == (x)) || \ + (Timer6HwCntPWMAHighPWMBRise == (x)) || \ + (Timer6HwCntPWMAHighPWMBFall == (x)) || \ + (Timer6HwCntPWMBLowPWMARise == (x)) || \ + (Timer6HwCntPWMBLowPWMAFall == (x)) || \ + (Timer6HwCntPWMBHighPWMARise == (x)) || \ + (Timer6HwCntPWMBHighPWMAFall == (x)) || \ + (Timer6HwCntTRIGARise == (x)) || \ + (Timer6HwCntTRIGAFall == (x)) || \ + (Timer6HwCntTRIGBRise == (x)) || \ + (Timer6HwCntTRIGBFall == (x)) || \ + (Timer6HwCntAos0 == (x)) || \ + (Timer6HwCntAos1 == (x))) + +/*!< Parameter valid check for hardware up start/stop/clear/capture event type */ +#define IS_VALID_HW_STA_STP_CLR_CAP_TYPE(x) \ +( (Timer6HwTrigAos0 == (x)) || \ + (Timer6HwTrigAos1 == (x)) || \ + (Timer6HwTrigPWMARise == (x)) || \ + (Timer6HwTrigPWMAFall == (x)) || \ + (Timer6HwTrigPWMBRise == (x)) || \ + (Timer6HwTrigPWMBFall == (x)) || \ + (Timer6HwTrigTimTriARise == (x)) || \ + (Timer6HwTrigTimTriAFall == (x)) || \ + (Timer6HwTrigTimTriBRise == (x)) || \ + (Timer6HwTrigTimTriBFall == (x)) || \ + (Timer6HwTrigEnd == (x))) + +/*!< Parameter valid check for timer6 input port type */ +#define IS_VALID_INPUT_PORT_TYPE(x) \ +( (Timer6xCHA == (x)) || \ + (Timer6xCHB == (x)) || \ + (Timer6TrigA == (x)) || \ + (Timer6TrigB == (x))) + +/*!< Parameter valid check for GenCMP and period register buffer transfer type*/ +#define IS_VALID_GCMP_PRD_BUF_TYPE(x) \ +( (Timer6GcmpPrdSingleBuf == (x)) || \ + (Timer6GcmpPrdDoubleBuf == (x))) + +/*!< Parameter valid check for special compare register buffer transfer type */ +#define IS_VALID_SPCL_BUF_TYPE(x) \ +( (Timer6SpclSingleBuf == (x)) || \ + (Timer6SpclDoubleBuf == (x))) + +/*!< Parameter valid check for spcl register transfer opportunity type */ +#define IS_VALID_SPCL_TRANS_OPT_TYPE(x) \ +( (Timer6SplcOptNone == (x)) || \ + (Timer6SplcOptOverFlow == (x)) || \ + (Timer6SplcOptUnderFlow == (x)) || \ + (Timer6SplcOptBoth == (x))) + +/*!< Parameter valid check for dead time register type */ +#define IS_VALID_DEAD_TIME_TYPE(x) \ +( (Timer6DeadTimUpAR == (x)) || \ + (Timer6DeadTimUpBR == (x)) || \ + (Timer6DeadTimDwnAR == (x)) || \ + (Timer6DeadTimDwnBR == (x))) + +/*!< Parameter valid check for Z Phase input mask periods */ +#define IS_VALID_ZPHASE_MASK_PRD(x) \ +( (Timer6ZMaskDis == (x)) || \ + (Timer6ZMask4Cyl == (x)) || \ + (Timer6ZMask8Cyl == (x)) || \ + (Tiemr6ZMask16Cyl == (x))) + +/*!< Parameter valid check for event source */ +#define IS_VALID_EVENT_SOURCE(x) ((x) <= 511) + +/*!< Parameter validity check for common trigger. */ +#define IS_VALID_TIMER6_COM_TRIGGER(x) \ +( (Timer6ComTrigger_1 == (x)) || \ + (Timer6ComTrigger_2 == (x)) || \ + (Timer6ComTrigger_1_2 == (x))) + +/*! TimerA registers reset value */ +#define TIMERA_REG_CNTER_RESET_VALUE (0x0000u) +#define TIMERA_REG_GCONR_RESET_VALUE (0x00000100ul) +#define TIMERA_REG_ICONR_RESET_VALUE (0x00000000ul) +#define TIMERA_REG_PCONR_RESET_VALUE (0x00000000ul) +#define TIMERA_REG_BCONR_RESET_VALUE (0x00000000ul) +#define TIMERA_REG_DCONR_RESET_VALUE (0x00000000ul) +#define TIMERA_REG_FCONR_RESET_VALUE (0x00000000ul) +#define TIMERA_REG_VPERR_RESET_VALUE (0x00000000ul) + + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ + +/******************************************************************************* + * \brief Timer6 interrupt request enable or disable + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6Irq Irq type + * \param [in] bEn true/false + * + * \retval Ok: config successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigIrq(M4_TMR6_TypeDef *TMR6x, en_timer6_irq_type_t enTimer6Irq, bool bEn) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_IRQ_SOURCE(enTimer6Irq)); + + switch (enTimer6Irq) + { + case Timer6INTENA: + TMR6x->ICONR_f.INTENA = bEn; + break; + case Timer6INTENB: + TMR6x->ICONR_f.INTENB = bEn; + break; + case Timer6INTENC: + TMR6x->ICONR_f.INTENC = bEn; + break; + case Timer6INTEND: + TMR6x->ICONR_f.INTEND = bEn; + break; + case Timer6INTENE: + TMR6x->ICONR_f.INTENE = bEn; + break; + case Timer6INTENF: + TMR6x->ICONR_f.INTENF = bEn; + break; + case Timer6INTENOVF: + TMR6x->ICONR_f.INTENOVF = bEn; + break; + case Timer6INTENUDF: + TMR6x->ICONR_f.INTENUDF = bEn; + break; + case Timer6INTENDTE: + TMR6x->ICONR_f.INTENDTE = bEn; + break; + case Timer6INTENSAU: + TMR6x->ICONR_f.INTENSAU = bEn; + break; + case Timer6INTENSAD: + TMR6x->ICONR_f.INTENSAD = bEn; + break; + case Timer6INTENSBU: + TMR6x->ICONR_f.INTENSBU = bEn; + break; + case Timer6INTENSBD: + TMR6x->ICONR_f.INTENSBD = bEn; + break; + default: + break; + } + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Get Timer6 status flag + ** + ** \param [in] TMR6x Timer6 unit + ** + ** \param [in] enStatus Timer6 status type + ** + ** \retval Timer6 status + ** + ******************************************************************************/ +uint8_t Timer6_GetStatus(M4_TMR6_TypeDef *TMR6x, en_timer6_status_t enStatus) +{ + uint8_t status = 0u; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_STATUS_TYPE(enStatus)); + + switch (enStatus) + { + case Timer6CMAF: + status = (uint8_t)TMR6x->STFLR_f.CMAF; + break; + case Timer6CMBF: + status = (uint8_t)TMR6x->STFLR_f.CMBF; + break; + case Timer6CMCF: + status = (uint8_t)TMR6x->STFLR_f.CMCF; + break; + case Timer6CMDF: + status = (uint8_t)TMR6x->STFLR_f.CMDF; + break; + case Timer6CMEF: + status = (uint8_t)TMR6x->STFLR_f.CMEF; + break; + case Timer6CMFF: + status = (uint8_t)TMR6x->STFLR_f.CMFF; + break; + case Timer6OVFF: + status = (uint8_t)TMR6x->STFLR_f.OVFF; + break; + case Timer6UDFF: + status = (uint8_t)TMR6x->STFLR_f.UDFF; + break; + case Timer6DTEF: + status = (uint8_t)TMR6x->STFLR_f.DTEF; + break; + case Timer6CMSAUF: + status = (uint8_t)TMR6x->STFLR_f.CMSAUF; + break; + case Timer6CMSADF: + status = (uint8_t)TMR6x->STFLR_f.CMSADF; + break; + case Timer6CMSBUF: + status = (uint8_t)TMR6x->STFLR_f.CMSBUF; + break; + case Timer6CMSBDF: + status = (uint8_t)TMR6x->STFLR_f.CMSBDF; + break; + case Timer6VPERNUM: + status = (uint8_t)TMR6x->STFLR_f.VPERNUM; + break; + case Timer6DIRF: + status = (uint8_t)TMR6x->STFLR_f.DIRF; + break; + default: + break; + } + + return status; +} + + + +/** + ******************************************************************************* + ** \brief De-Initialize Timer6 unit + ** + ** \param [in] TMR6x Timer6 unit + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t Timer6_DeInit(M4_TMR6_TypeDef *TMR6x) +{ + /* Check parameters */ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->CNTER = TIMERA_REG_CNTER_RESET_VALUE; + TMR6x->GCONR = TIMERA_REG_GCONR_RESET_VALUE; + TMR6x->PCONR = TIMERA_REG_PCONR_RESET_VALUE; + TMR6x->ICONR = TIMERA_REG_ICONR_RESET_VALUE; + TMR6x->BCONR = TIMERA_REG_BCONR_RESET_VALUE; + TMR6x->DCONR = TIMERA_REG_DCONR_RESET_VALUE; + TMR6x->FCONR = TIMERA_REG_FCONR_RESET_VALUE; + TMR6x->VPERR = TIMERA_REG_VPERR_RESET_VALUE; + TMR6x->HSTAR = 0x00000000ul; + TMR6x->HSTPR = 0x00000000ul; + TMR6x->HCLRR = 0x00000000ul; + TMR6x->HCPAR = 0x00000000ul; + TMR6x->HCPBR = 0x00000000ul; + TMR6x->HCUPR = 0x00000000ul; + TMR6x->HCDOR = 0x00000000ul; + + return Ok; +} + +/******************************************************************************* + * \brief Timer6 Base Config + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] pstcTimer6BaseCntCfg Bsee Config Pointer + * + * \retval Ok: Config Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_Init(M4_TMR6_TypeDef *TMR6x, const stc_timer6_basecnt_cfg_t* pstcTimer6BaseCntCfg) +{ + en_result_t enRet = Ok; + + if (NULL == pstcTimer6BaseCntCfg) + { + enRet = ErrorInvalidParameter; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_COUNT_MODE(pstcTimer6BaseCntCfg->enCntMode)); + DDL_ASSERT(IS_VALID_COUNT_DIR(pstcTimer6BaseCntCfg->enCntDir)); + DDL_ASSERT(IS_VALID_COUNT_CLK_DIV(pstcTimer6BaseCntCfg->enCntClkDiv)); + + + TMR6x->GCONR_f.MODE = pstcTimer6BaseCntCfg->enCntMode; + TMR6x->GCONR_f.DIR = pstcTimer6BaseCntCfg->enCntDir; + TMR6x->GCONR_f.CKDIV = pstcTimer6BaseCntCfg->enCntClkDiv; + } + return enRet; +} + +/******************************************************************************* + * \brief Timer6 Unit Start Count + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Config Successfully + * + ******************************************************************************/ +en_result_t Timer6_StartCount(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->GCONR_f.START = 1ul; + + return Ok; +} + +/******************************************************************************* + * \brief TImer6 Unit Stop Count + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Config Successfully + * + ******************************************************************************/ +en_result_t Timer6_StopCount(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->GCONR_f.START = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Timer6 Unit Set Count Value + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] u16Value Count Value + * + * \retval Ok: Config Successfully + * + ******************************************************************************/ +en_result_t Timer6_SetCount(M4_TMR6_TypeDef *TMR6x, uint16_t u16Value) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->CNTER_f.CNT = u16Value; + + return Ok; +} + +/******************************************************************************* + * \brief Timer6 Unit Get Count Value + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] u16Value Count Value + * + * \retval Ok: Config Successfully + * + ******************************************************************************/ +uint16_t Timer6_GetCount(M4_TMR6_TypeDef *TMR6x) +{ + uint16_t u16Value; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u16Value = (uint16_t)TMR6x->CNTER_f.CNT; + + return u16Value; +} + +/******************************************************************************* + * \brief Timer6 Unit Clear Count Value + * + * + * \param [in] TMR6x Timer6 unit + * + * + * \retval Ok: Set Successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearCount(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->CNTER_f.CNT = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Timer6 unit set count period and buffer value + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6Periodx Period register name + * \param [in] u16Period Count period value + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SetPeriod(M4_TMR6_TypeDef *TMR6x, en_timer6_period_t enTimer6Periodx, uint16_t u16Period) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_PERIOD_TYPE(enTimer6Periodx)); + + switch (enTimer6Periodx) + { + case Timer6PeriodA: + TMR6x->PERAR = u16Period; + break; + case Timer6PeriodB: + TMR6x->PERBR = u16Period; + break; + case Timer6PeriodC: + TMR6x->PERCR = u16Period; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/******************************************************************************* + * \brief Timer6 unit Set General Compare Register Value(for PWM output) + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6Compare General Compare Register name + * \param [in] u16Compare General Compare Register value + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SetGeneralCmpValue(M4_TMR6_TypeDef *TMR6x, en_timer6_compare_t enTimer6Compare, uint16_t u16Compare) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_GEN_CMP_TYPE(enTimer6Compare)); + + switch (enTimer6Compare) + { + case Timer6GenCompareA: + TMR6x->GCMAR = u16Compare; + break; + case Timer6GenCompareB: + TMR6x->GCMBR = u16Compare; + break; + case Timer6GenCompareC: + TMR6x->GCMCR = u16Compare; + break; + case Timer6GenCompareD: + TMR6x->GCMDR = u16Compare; + break; + case Timer6GenCompareE: + TMR6x->GCMER = u16Compare; + break; + case Timer6GenCompareF: + TMR6x->GCMFR = u16Compare; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/******************************************************************************* + * \brief Timer6 unit Set Special Compare Register Value + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6SpclCmp General Compare Register name + * \param [in] u16SpclCmp General Compare Register value + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SetSpecialCmpValue(M4_TMR6_TypeDef *TMR6x, en_timer6_special_compare_t enTimer6SpclCmp, uint16_t u16SpclCmp) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_SPECIAL_CMP_TYPE(enTimer6SpclCmp)); + + switch (enTimer6SpclCmp) + { + case Timer6SpclCompA: + TMR6x->SCMAR = u16SpclCmp; + break; + case Timer6SpclCompB: + TMR6x->SCMBR = u16SpclCmp; + break; + case Timer6SpclCompC: + TMR6x->SCMCR = u16SpclCmp; + break; + case Timer6SpclCompD: + TMR6x->SCMDR = u16SpclCmp; + break; + case Timer6SpclCompE: + TMR6x->SCMER = u16SpclCmp; + break; + case Timer6SpclCompF: + TMR6x->SCMFR = u16SpclCmp; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/******************************************************************************* + * \brief Timer6 config general compare buffer transfer function + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6PWMPort PWM channel of timer6 + * \param [in] pstcTimer6GenBufCfg General Compare Register Buffer Transfer Type Pointer + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SetGeneralBuf(M4_TMR6_TypeDef *TMR6x, en_timer6_chx_port_t enTimer6PWMPort, const stc_timer6_gcmp_buf_cfg_t* pstcTimer6GenBufCfg) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_TIMER6_OUTPUT_PORT(enTimer6PWMPort)); + DDL_ASSERT(IS_VALID_GCMP_PRD_BUF_TYPE(pstcTimer6GenBufCfg->enGcmpBufTransType)); + + switch (enTimer6PWMPort) + { + case Timer6PWMA: + TMR6x->BCONR_f.BENA = pstcTimer6GenBufCfg->bEnGcmpTransBuf; + TMR6x->BCONR_f.BSEA = pstcTimer6GenBufCfg->enGcmpBufTransType; + break; + case Timer6PWMB: + TMR6x->BCONR_f.BENB = pstcTimer6GenBufCfg->bEnGcmpTransBuf; + TMR6x->BCONR_f.BSEB = pstcTimer6GenBufCfg->enGcmpBufTransType; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/******************************************************************************* + * \brief Timer6 config special compare buffer transfer function + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6SpclCmp Special Compare Register nameunit + * \param [in] pstcTimer6SpclBufCfg Special Compare Register Buffer Transfer Type Pointer + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SetSpecialBuf(M4_TMR6_TypeDef *TMR6x,en_timer6_special_compare_t enTimer6SpclCmp, const stc_timer6_spcl_buf_cfg_t* pstcTimer6SpclBufCfg) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_SPECIAL_CMP_TYPE(enTimer6SpclCmp)); + DDL_ASSERT(IS_VALID_SPCL_BUF_TYPE(pstcTimer6SpclBufCfg->enSpclBufTransType)); + DDL_ASSERT(IS_VALID_SPCL_TRANS_OPT_TYPE(pstcTimer6SpclBufCfg->enSpclBufOptType)); + + switch (enTimer6SpclCmp) + { + case Timer6SpclCompA: + TMR6x->BCONR_f.BENSPA = pstcTimer6SpclBufCfg->bEnSpclTransBuf; + TMR6x->BCONR_f.BSESPA = pstcTimer6SpclBufCfg->enSpclBufTransType; + TMR6x->BCONR_f.BTRSPA = pstcTimer6SpclBufCfg->enSpclBufOptType; + break; + case Timer6SpclCompB: + TMR6x->BCONR_f.BENSPB = pstcTimer6SpclBufCfg->bEnSpclTransBuf; + TMR6x->BCONR_f.BSESPB = pstcTimer6SpclBufCfg->enSpclBufTransType; + TMR6x->BCONR_f.BTRSPB = pstcTimer6SpclBufCfg->enSpclBufOptType; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/******************************************************************************* + * \brief Timer6 config period buffer transfer function + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] pstcTimer6PrdBufCfg Period Register Buffer Transfer Type Pointer + * + * \retval Ok: Set Successfully + * + ******************************************************************************/ +en_result_t Timer6_SetPeriodBuf(M4_TMR6_TypeDef *TMR6x, const stc_timer6_period_buf_cfg_t* pstcTimer6PrdBufCfg) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_GCMP_PRD_BUF_TYPE(pstcTimer6PrdBufCfg->enPeriodBufTransType)); + + TMR6x->BCONR_f.BENP = pstcTimer6PrdBufCfg->bEnPeriodTransBuf; + TMR6x->BCONR_f.BSEP = pstcTimer6PrdBufCfg->enPeriodBufTransType; + + return Ok; +} + +/******************************************************************************* + * \brief Timer6 unit get General Compare Register Value(for PWM output) + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6Compare General Compare Register name + * + * + * \retval u16TempValue: General Compare Register value + * + ******************************************************************************/ +uint16_t Timer6_GetGeneralCmpValue(M4_TMR6_TypeDef *TMR6x, en_timer6_compare_t enTimer6Compare) +{ + uint16_t u16TempValue = 0u; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_GEN_CMP_TYPE(enTimer6Compare)); + + switch (enTimer6Compare) + { + case Timer6GenCompareA: + u16TempValue = (uint16_t)TMR6x->GCMAR; + break; + case Timer6GenCompareB: + u16TempValue = (uint16_t)TMR6x->GCMBR; + break; + case Timer6GenCompareC: + u16TempValue = (uint16_t)TMR6x->GCMCR; + break; + case Timer6GenCompareD: + u16TempValue = (uint16_t)TMR6x->GCMDR; + break; + case Timer6GenCompareE: + u16TempValue = (uint16_t)TMR6x->GCMER; + break; + case Timer6GenCompareF: + u16TempValue = (uint16_t)TMR6x->GCMFR; + break; + default: + break; + } + + return u16TempValue; +} + +/*********************************************************************** + * \brief Timer6 Config valid count period + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] pstcTimer6ValidPerCfg Valid Count Period Pointer + * + * \retval Ok: Config successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ***********************************************************************/ +en_result_t Timer6_SetValidPeriod(M4_TMR6_TypeDef *TMR6x, const stc_timer6_validper_cfg_t* pstcTimer6ValidPerCfg) +{ + en_result_t enRet = Ok; + + if (NULL == pstcTimer6ValidPerCfg) + { + enRet = ErrorInvalidParameter; + } + else + { + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_VPERR_PCNT_EN_SOURCE(pstcTimer6ValidPerCfg->enValidCdtEn)); + DDL_ASSERT(IS_VALID_VPERR_PCNT_NUM(pstcTimer6ValidPerCfg->enValidCntNum)); + + TMR6x->VPERR_f.PCNTS = pstcTimer6ValidPerCfg->enValidCntNum; + TMR6x->VPERR_f.PCNTE = pstcTimer6ValidPerCfg->enValidCdtEn; + TMR6x->VPERR_f.SPPERIA = pstcTimer6ValidPerCfg->bPeriodSCMA; + TMR6x->VPERR_f.SPPERIB = pstcTimer6ValidPerCfg->bPeriodSCMB; + } + return enRet; +} + +/******************************************************************************* + * \brief Port input config(Trig) + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] pstcTimer6PortInputCfg Point Input Config Pointer + * + * \retval Ok: Set successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_PortInputConfig(M4_TMR6_TypeDef *TMR6x, const stc_timer6_port_input_cfg_t* pstcTimer6PortInputCfg) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + if (NULL == pstcTimer6PortInputCfg) + { + enRet = ErrorInvalidParameter; + } + else + { + switch (pstcTimer6PortInputCfg->enPortSel) + { + case Timer6xCHA: + TMR6x->PCONR_f.CAPMDA = pstcTimer6PortInputCfg->enPortMode; + TMR6x->FCONR_f.NOFIENGA = pstcTimer6PortInputCfg->bFltEn; + TMR6x->FCONR_f.NOFICKGA = pstcTimer6PortInputCfg->enFltClk; + break; + + case Timer6xCHB: + TMR6x->PCONR_f.CAPMDB = pstcTimer6PortInputCfg->enPortMode; + TMR6x->FCONR_f.NOFIENGB = pstcTimer6PortInputCfg->bFltEn; + TMR6x->FCONR_f.NOFICKGB = pstcTimer6PortInputCfg->enFltClk; + break; + + case Timer6TrigA: + TMR6x->FCONR_f.NOFIENTA = pstcTimer6PortInputCfg->bFltEn; + TMR6x->FCONR_f.NOFICKTA = pstcTimer6PortInputCfg->enFltClk; + break; + + case Timer6TrigB: + TMR6x->FCONR_f.NOFIENTB = pstcTimer6PortInputCfg->bFltEn; + TMR6x->FCONR_f.NOFICKTB = pstcTimer6PortInputCfg->enFltClk; + break; + + default: + enRet = ErrorInvalidParameter; + break; + } + } + return enRet; +} + +/******************************************************************************* + * \brief Timer6 Output Port config + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6PWMPort Timer6 Port(PWMA/PWMB) + * \param [in] pstcTimer6PortOutCfg timer6 Port Config Pointer + * + * \retval Ok: Set successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_PortOutputConfig(M4_TMR6_TypeDef *TMR6x, + en_timer6_chx_port_t enTimer6PWMPort, + const stc_timer6_port_output_cfg_t* pstcTimer6PortOutCfg) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_TIMER6_OUTPUT_PORT(enTimer6PWMPort)); + + if (NULL == pstcTimer6PortOutCfg) + { + enRet = ErrorInvalidParameter; + } + else + { + switch (enTimer6PWMPort) + { + case Timer6PWMA: + TMR6x->PCONR_f.CAPMDA = pstcTimer6PortOutCfg->enPortMode; + TMR6x->PCONR_f.STACA = pstcTimer6PortOutCfg->enStaOut; + TMR6x->PCONR_f.STPCA = pstcTimer6PortOutCfg->enStpOut; + TMR6x->PCONR_f.STASTPSA = pstcTimer6PortOutCfg->enStaStp; + TMR6x->PCONR_f.CMPCA = pstcTimer6PortOutCfg->enCmpc; + TMR6x->PCONR_f.PERCA = pstcTimer6PortOutCfg->enPerc; + TMR6x->PCONR_f.OUTENA = pstcTimer6PortOutCfg->bOutEn; + TMR6x->PCONR_f.EMBVALA = pstcTimer6PortOutCfg->enDisVal; + break; + + case Timer6PWMB: + TMR6x->PCONR_f.CAPMDB = pstcTimer6PortOutCfg->enPortMode; + TMR6x->PCONR_f.STACB = pstcTimer6PortOutCfg->enStaOut; + TMR6x->PCONR_f.STPCB = pstcTimer6PortOutCfg->enStpOut; + TMR6x->PCONR_f.STASTPSB = pstcTimer6PortOutCfg->enStaStp; + TMR6x->PCONR_f.CMPCB = pstcTimer6PortOutCfg->enCmpc; + TMR6x->PCONR_f.PERCB = pstcTimer6PortOutCfg->enPerc; + TMR6x->PCONR_f.OUTENB = pstcTimer6PortOutCfg->bOutEn; + TMR6x->PCONR_f.EMBVALB = pstcTimer6PortOutCfg->enDisVal; + break; + + default: + enRet = ErrorInvalidParameter; + break; + } + } + return enRet; +} + + +/******************************************************************************* + * \brief Timer6 unit Set DeadTime Register Value(for PWM output) + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6DTReg DeadTime Register name + * \param [in] u16DTValue DeadTime Register value + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SetDeadTimeValue(M4_TMR6_TypeDef *TMR6x, en_timer6_dead_time_reg_t enTimer6DTReg, uint16_t u16DTValue) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_DEAD_TIME_TYPE(enTimer6DTReg)); + + switch (enTimer6DTReg) + { + case Timer6DeadTimUpAR: + TMR6x->DTUAR = u16DTValue; + break; + case Timer6DeadTimUpBR: + TMR6x->DTUBR = u16DTValue; + break; + case Timer6DeadTimDwnAR: + TMR6x->DTDAR = u16DTValue; + break; + case Timer6DeadTimDwnBR: + TMR6x->DTDBR = u16DTValue; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + + return enRet; +} + +/******************************************************************************* + * \brief Config DeadTime function + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] pstcTimer6DTCfg Timer6 dead time config pointer + * + * \retval Ok: Set Successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_ConfigDeadTime(M4_TMR6_TypeDef *TMR6x, const stc_timer6_deadtime_cfg_t* pstcTimer6DTCfg) +{ + en_result_t enRet = Ok; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + if (NULL == pstcTimer6DTCfg) + { + enRet = ErrorInvalidParameter; + } + else + { + TMR6x->DCONR_f.SEPA = pstcTimer6DTCfg->bEnDtEqualUpDwn; + TMR6x->DCONR_f.DTBENU = pstcTimer6DTCfg->bEnDtBufUp; + TMR6x->DCONR_f.DTBEND = pstcTimer6DTCfg->bEnDtBufDwn; + TMR6x->DCONR_f.DTCEN = pstcTimer6DTCfg->bEnDeadtime; + } + return enRet; +} + +/******************************************************************************* + * \brief Config Software Synchrony Start + * + * + * \param [in] pstcTimer6SwSyncStart Software Synchrony Start Pointer + * + * \retval Ok: Set successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SwSyncStart(const stc_timer6_sw_sync_t* pstcTimer6SwSyncStart) +{ + en_result_t enRet = Ok; + uint32_t u32Val = 0ul; + + if (NULL == pstcTimer6SwSyncStart) + { + enRet = ErrorInvalidParameter; + } + else + { + if (pstcTimer6SwSyncStart->bTimer61) + { + u32Val |= 0x1ul; + } + if (pstcTimer6SwSyncStart->bTimer62) + { + u32Val |= 0x2ul; + } + if (pstcTimer6SwSyncStart->bTimer63) + { + u32Val |= 0x4ul; + } + + M4_TMR6_CR->SSTAR = u32Val; + } + return enRet; +} + +/******************************************************************************* + * \brief Config Software Synchrony Stop + * + * + * \param [in] pstcTimer6SwSyncStop Software Synchrony Stop Pointer + * + * \retval Ok: Set successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SwSyncStop(const stc_timer6_sw_sync_t* pstcTimer6SwSyncStop) +{ + en_result_t enRet = Ok; + uint32_t u32Val = 0ul; + + if (NULL == pstcTimer6SwSyncStop) + { + enRet = ErrorInvalidParameter; + } + else + { + if (pstcTimer6SwSyncStop->bTimer61) + { + u32Val |= 0x1ul; + } + if (pstcTimer6SwSyncStop->bTimer62) + { + u32Val |= 0x2ul; + } + if (pstcTimer6SwSyncStop->bTimer63) + { + u32Val |= 0x4ul; + } + + M4_TMR6_CR->SSTPR = u32Val; + } + return enRet; +} + +/******************************************************************************* + * \brief Config Software Synchrony Clear + * + * + * \param [in] pstcTimer6SwSyncClear Software Synchrony Clear Pointer + * + * \retval Ok: Set successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_SwSyncClear(const stc_timer6_sw_sync_t* pstcTimer6SwSyncClear) +{ + en_result_t enRet = Ok; + uint32_t u32Val = 0ul; + + if (NULL == pstcTimer6SwSyncClear) + { + enRet = ErrorInvalidParameter; + } + else + { + if (pstcTimer6SwSyncClear->bTimer61) + { + u32Val |= 0x1ul; + } + if (pstcTimer6SwSyncClear->bTimer62) + { + u32Val |= 0x2ul; + } + if (pstcTimer6SwSyncClear->bTimer63) + { + u32Val |= 0x4ul; + } + + M4_TMR6_CR->SCLRR = u32Val; + } + return enRet; +} + +/******************************************************************************* + * \brief Get Software Synchrony status + * + * + * \param [in] pstcTimer6SwSyncState Software Synchrony State Pointer + * + * \retval Ok: Set successfully + * \retval ErrorInvalidParameter: Provided parameter is not valid + * + ******************************************************************************/ +en_result_t Timer6_GetSwSyncState(stc_timer6_sw_sync_t* pstcTimer6SwSyncState) +{ + en_result_t enRet = Ok; + + if (NULL == pstcTimer6SwSyncState) + { + enRet = ErrorInvalidParameter; + } + else + { + if (M4_TMR6_CR->SSTAR & 0x1ul) + { + pstcTimer6SwSyncState->bTimer61 = true; + } + else + { + pstcTimer6SwSyncState->bTimer61 = false; + } + if (M4_TMR6_CR->SSTAR & 0x2ul) + { + pstcTimer6SwSyncState->bTimer62 = true; + } + else + { + pstcTimer6SwSyncState->bTimer62 = false; + } + if (M4_TMR6_CR->SSTAR & 0x4ul) + { + pstcTimer6SwSyncState->bTimer63 = true; + } + else + { + pstcTimer6SwSyncState->bTimer63 = false; + } + } + + return enRet; +} + +/******************************************************************************* + * \brief Timer6 Hardware UpCount Event config + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwCntUp Hardware UpCount Event + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwCntUp(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_cnt_t enTimer6HwCntUp) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_COUNT_TYPE(enTimer6HwCntUp)); + + u32Val = TMR6x->HCUPR; + TMR6x->HCUPR = u32Val | (1ul << enTimer6HwCntUp); + + return Ok; +} + +/************************************************************** + * \brief Clear Timer6 Hardware UpCount Event + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ************************************************************/ +en_result_t Timer6_ClearHwCntUp(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HCUPR = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Set Timer6 Hardware DownCount Event + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwCntDwn Hardware DownCount Event + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwCntDwn(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_cnt_t enTimer6HwCntDwn) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_COUNT_TYPE(enTimer6HwCntDwn)); + + u32Val = TMR6x->HCDOR; + TMR6x->HCDOR = u32Val | (1ul << enTimer6HwCntDwn); + + return Ok; +} + +/******************************************************************************* + * \brief Clear Timer6 Hardware DownCount Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearHwCntDwn(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HCDOR = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Config Hardware Start Event + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwStart Hardware Start Event + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwStart(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwStart) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_STA_STP_CLR_CAP_TYPE(enTimer6HwStart)); + + u32Val = TMR6x->HSTAR; + TMR6x->HSTAR = u32Val | (1ul << enTimer6HwStart); + + return Ok; +} + +/******************************************************************************* + * \brief Clear Hardware Start Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearHwStart(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HSTAR = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Enable Hardware Start Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_EnableHwStart(M4_TMR6_TypeDef *TMR6x) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u32Val = TMR6x->HSTAR; + TMR6x->HSTAR = u32Val | (1ul << 31u); + + return Ok; +} + +/******************************************************************************* + * \brief Disable Hardware Start Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_DisableHwStart(M4_TMR6_TypeDef *TMR6x) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u32Val = TMR6x->HSTAR; + TMR6x->HSTAR = u32Val & 0x7FFFFFFFul; + + return Ok; +} + +/******************************************************************************* + * \brief Config Hardware Stop Event + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwStop Hardware Stop Event + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwStop(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwStop) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_STA_STP_CLR_CAP_TYPE(enTimer6HwStop)); + + u32Val = TMR6x->HSTPR; + TMR6x->HSTPR = u32Val | (1ul << enTimer6HwStop); + + return Ok; +} + +/******************************************************************************* + * \brief Clear Hardware Stop Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearHwStop(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HSTPR = 0ul; + return Ok; +} + +/******************************************************************************* + * \brief Enable Hardware Stop Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_EnableHwStop(M4_TMR6_TypeDef *TMR6x) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u32Val = TMR6x->HSTPR; + TMR6x->HSTPR = u32Val | (1ul << 31u); + return Ok; +} + +/******************************************************************************* + * \brief Disable Hardware Stop Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_DisableHwStop(M4_TMR6_TypeDef *TMR6x) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u32Val = TMR6x->HSTPR; + TMR6x->HSTPR = u32Val & 0x7FFFFFFFul; + + return Ok; +} + +/******************************************************************************* + * \brief Config Hardware Clear Event + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwClear Hardware Clear Event + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwClear(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwClear) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_STA_STP_CLR_CAP_TYPE(enTimer6HwClear)); + + u32Val = TMR6x->HCLRR; + TMR6x->HCLRR = u32Val | (1ul << enTimer6HwClear); + + return Ok; +} + +/******************************************************************************* + * \brief Clear Hardware Clear Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearHwClear(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HCLRR = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Enable Hardware Clear Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_EnableHwClear(M4_TMR6_TypeDef *TMR6x) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u32Val = TMR6x->HCLRR; + TMR6x->HCLRR = u32Val | (1ul << 31u); + + return Ok; +} + +/******************************************************************************* + * \brief Disable Hardware Clear Event + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_DisableHwClear(M4_TMR6_TypeDef *TMR6x) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + u32Val = TMR6x->HCLRR; + TMR6x->HCLRR = u32Val & 0x7FFFFFFFul; + + return Ok; +} + +/******************************************************************************* + * \brief Config Hardware Capture Event A + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwCaptureA Hardware capture event A selection + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwCaptureA(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwCaptureA) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_STA_STP_CLR_CAP_TYPE(enTimer6HwCaptureA)); + + u32Val = TMR6x->HCPAR; + TMR6x->HCPAR = u32Val | (1ul << enTimer6HwCaptureA); + //TMR6x->PCONR_f.CAPMDA = 1; + + return Ok; +} + +/******************************************************************************* + * \brief Clear Hardware Capture Event A + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearHwCaptureA(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HCPAR = 0ul; + + return Ok; +} + +/******************************************************************************* + * \brief Config Hardware Capture Event B + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] enTimer6HwCaptureB Hardware capture event B selection + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigHwCaptureB(M4_TMR6_TypeDef *TMR6x, en_timer6_hw_trig_t enTimer6HwCaptureB) +{ + uint32_t u32Val; + + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_HW_STA_STP_CLR_CAP_TYPE(enTimer6HwCaptureB)); + + u32Val = TMR6x->HCPBR; + TMR6x->HCPBR = u32Val | (1ul << enTimer6HwCaptureB); + //TMR6x->PCONR_f.CAPMDB = 1; + + return Ok; +} + +/******************************************************************************* + * \brief Clear Hardware Capture Event B + * + * + * \param [in] TMR6x Timer6 unit + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ClearHwCaptureB(M4_TMR6_TypeDef *TMR6x) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + + TMR6x->HCPBR = 0ul; + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Set trigger source 0 of hardware event + ** + ** \param [in] enTriggerSrc Counter event trigger source + ** \arg 0-511 Used to trigger counter start/stop/clear/increment/decrement/capture + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t Timer6_SetTriggerSrc0(en_event_src_t enTriggerSrc) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_EVENT_SOURCE(enTriggerSrc)); + + M4_AOS->TMR6_HTSSR1_f.TRGSEL = enTriggerSrc; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set trigger source 1 of hardware event + ** + ** \param [in] enTriggerSrc Counter event trigger source + ** \arg 0-511 Used to trigger counter start/stop/clear/increment/decrement/capture + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t Timer6_SetTriggerSrc1(en_event_src_t enTriggerSrc) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_EVENT_SOURCE(enTriggerSrc)); + + M4_AOS->TMR6_HTSSR2_f.TRGSEL = enTriggerSrc; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timer6 common trigger for hardware trigger register 0 + ** + ** \param [in] enComTrigger Timer0 common trigger selection. See @ref en_timer6_com_trigger_t for details. + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None + ** + ******************************************************************************/ +void TIMER6_ComTriggerCmd0(en_timer6_com_trigger_t enComTrigger, en_functional_state_t enState) +{ + uint32_t u32ComTrig = (uint32_t)enComTrigger; + + DDL_ASSERT(IS_VALID_TIMER6_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (enState == Enable) + { + M4_AOS->TMR6_HTSSR1 |= (u32ComTrig << 30u); + } + else + { + M4_AOS->TMR6_HTSSR1 &= ~(u32ComTrig << 30u); + } +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timer6 common trigger for hardware trigger register 1 + ** + ** \param [in] enComTrigger Timer0 common trigger selection. See @ref en_timer6_com_trigger_t for details. + ** \param [in] enState Enable or disable the specified common trigger. + ** + ** \retval None + ** + ******************************************************************************/ +void TIMER6_ComTriggerCmd1(en_timer6_com_trigger_t enComTrigger, en_functional_state_t enState) +{ + uint32_t u32ComTrig = (uint32_t)enComTrigger; + + DDL_ASSERT(IS_VALID_TIMER6_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enState)); + + if (enState == Enable) + { + M4_AOS->TMR6_HTSSR2 |= (u32ComTrig << 30u); + } + else + { + M4_AOS->TMR6_HTSSR2 &= ~(u32ComTrig << 30u); + } +} + +/******************************************************************************* + * \brief Z phase input mask config + * + * + * \param [in] TMR6x Timer6 unit + * \param [in] pstcTimer6ZMaskCfg Z phase input mask config pointer + * + * \retval Ok: Set successfully + * + ******************************************************************************/ +en_result_t Timer6_ConfigZMask(M4_TMR6_TypeDef *TMR6x, const stc_timer6_zmask_cfg_t* pstcTimer6ZMaskCfg) +{ + DDL_ASSERT(IS_VALID_NORMAL_TIMER6_UNIT(TMR6x)); + DDL_ASSERT(IS_VALID_ZPHASE_MASK_PRD(pstcTimer6ZMaskCfg->enZMaskCycle)); + + TMR6x->GCONR_f.ZMSKVAL = pstcTimer6ZMaskCfg->enZMaskCycle; + TMR6x->GCONR_f.ZMSKPOS = pstcTimer6ZMaskCfg->bFltPosCntMaksEn; + TMR6x->GCONR_f.ZMSKREV = pstcTimer6ZMaskCfg->bFltRevCntMaksEn; + + return Ok; +} + + +//@} // Timer6Group + +#endif /* DDL_TIMER6_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_timera.c b/driver/src/hc32f460_timera.c new file mode 100644 index 0000000..d458886 --- /dev/null +++ b/driver/src/hc32f460_timera.c @@ -0,0 +1,1972 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_timera.c + ** + ** A detailed description is available at + ** @link TimeraGroup Timer A description @endlink + ** + ** - 2018-11-08 CDT First version for Device Driver Library of + ** Timera. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_timera.h" +#include "hc32f460_utility.h" + +#if (DDL_TIMERA_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup TimeraGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter valid check for normal timera unit */ +#define IS_VALID_NORMAL_TIMERA_UNIT(x) \ +( (M4_TMRA1 == (x)) || \ + (M4_TMRA2 == (x)) || \ + (M4_TMRA3 == (x)) || \ + (M4_TMRA4 == (x)) || \ + (M4_TMRA5 == (x)) || \ + (M4_TMRA6 == (x))) + +/*!< Parameter valid check for sync startup timera unit */ +#define IS_VALID_SYNC_STARTUP_TIMERA_UNIT(x) \ +( (M4_TMRA2 == (x)) || \ + (M4_TMRA3 == (x)) || \ + (M4_TMRA4 == (x)) || \ + (M4_TMRA5 == (x)) || \ + (M4_TMRA6 == (x))) + +/*!< Parameter valid check for Count clock division */ +#define IS_VALID_COUNT_CLK_DIV(x) \ +( (TimeraPclkDiv1 == (x)) || \ + (TimeraPclkDiv2 == (x)) || \ + (TimeraPclkDiv4 == (x)) || \ + (TimeraPclkDiv8 == (x)) || \ + (TimeraPclkDiv16 == (x)) || \ + (TimeraPclkDiv32 == (x)) || \ + (TimeraPclkDiv64 == (x)) || \ + (TimeraPclkDiv128 == (x)) || \ + (TimeraPclkDiv256 == (x)) || \ + (TimeraPclkDiv512 == (x)) || \ + (TimeraPclkDiv1024 == (x))) + +/*!< Parameter valid check for count mode */ +#define IS_VALID_COUNT_MODE(x) \ +( (TimeraCountModeSawtoothWave == (x)) || \ + (TimeraCountModeTriangularWave == (x))) + +/*!< Parameter valid check for count direction */ +#define IS_VALID_COUNT_DIR(x) \ +( (TimeraCountDirUp == (x)) || \ + (TimeraCountDirDown == (x))) + +/*!< Parameter valid check for normal timera channel */ +#define IS_VALID_NORMAL_TIMERA_CHANNEL(x) \ +( (TimeraCh1 == (x)) || \ + (TimeraCh2 == (x)) || \ + (TimeraCh3 == (x)) || \ + (TimeraCh4 == (x)) || \ + (TimeraCh5 == (x)) || \ + (TimeraCh6 == (x)) || \ + (TimeraCh7 == (x)) || \ + (TimeraCh8 == (x))) + +/*!< Parameter valid check for set cache channel */ +#define IS_VALID_SET_CACHE_CHANNEL(x) \ +( (TimeraCh1 == (x)) || \ + (TimeraCh3 == (x)) || \ + (TimeraCh5 == (x)) || \ + (TimeraCh7 == (x))) + +/*!< Parameter valid check for enable cache channel */ +#define IS_VALID_ENABLE_CACHE_CHANNEL(x) \ +( (TimeraCh1 == (x)) || \ + (TimeraCh3 == (x)) || \ + (TimeraCh5 == (x)) || \ + (TimeraCh7 == (x))) + +/*!< Parameter valid check for timera count start output status */ +#define IS_VALID_COUNT_START_OUTPUT(x) \ +( (TimeraCountStartOutputLow == (x)) || \ + (TimeraCountStartOutputHigh == (x)) || \ + (TimeraCountStartOutputKeep == (x))) + +/*!< Parameter valid check for timera count stop output status */ +#define IS_VALID_COUNT_STOP_OUTPUT(x) \ +( (TimeraCountStopOutputLow == (x)) || \ + (TimeraCountStopOutputHigh == (x)) || \ + (TimeraCountStopOutputKeep == (x))) + +/*!< Parameter valid check for compare match output status */ +#define IS_VALID_COMPARE_MATCH_OUTPUT(x) \ +( (TimeraCompareMatchOutputLow == (x)) || \ + (TimeraCompareMatchOutputHigh == (x)) || \ + (TimeraCompareMatchOutputKeep == (x)) || \ + (TimeraCompareMatchOutputReverse == (x))) + +/*!< Parameter valid check for period match output status */ +#define IS_VALID_PERIOD_MATCH_OUTPUT(x) \ +( (TimeraPeriodMatchOutputLow == (x)) || \ + (TimeraPeriodMatchOutputHigh == (x)) || \ + (TimeraPeriodMatchOutputKeep == (x)) || \ + (TimeraPeriodMatchOutputReverse == (x))) + +/*!< Parameter valid check for specify output status */ +#define IS_VALID_SPECIFY_OUTPUT_STATUS(x) \ +( (TimeraSpecifyOutputInvalid == (x)) || \ + (TimeraSpecifyOutputLow == (x)) || \ + (TimeraSpecifyOutputHigh == (x))) + +/*!< Parameter valid check for port filter clock */ +#define IS_VALID_PORT_FILTER_CLOCK(x) \ +( (TimeraFilterPclkDiv1 == (x)) || \ + (TimeraFilterPclkDiv4 == (x)) || \ + (TimeraFilterPclkDiv16 == (x)) || \ + (TimeraFilterPclkDiv64 == (x))) + +/*!< Parameter valid check for capture filter port source */ +#define IS_VALID_CAPTURE_FILTER_PORT_SOURCE(x) \ +( (TimeraFilterSourceCh1 == (x)) || \ + (TimeraFilterSourceCh2 == (x)) || \ + (TimeraFilterSourceCh3 == (x)) || \ + (TimeraFilterSourceCh4 == (x)) || \ + (TimeraFilterSourceCh5 == (x)) || \ + (TimeraFilterSourceCh6 == (x)) || \ + (TimeraFilterSourceCh7 == (x)) || \ + (TimeraFilterSourceCh8 == (x)) || \ + (TimeraFilterSourceTrig == (x))) + +/*!< Parameter valid check for coding filter port source */ +#define IS_VALID_CODING_FILTER_PORT_SOURCE(x) \ +( (TimeraFilterSourceClkA == (x)) || \ + (TimeraFilterSourceClkB == (x)) || \ + (TimeraFilterSourceTrig == (x))) + +/*!< Parameter valid check for interrupt request source */ +#define IS_VALID_IRQ_SOURCE(x) \ +( (TimeraIrqCaptureOrCompareCh1 == (x)) || \ + (TimeraIrqCaptureOrCompareCh2 == (x)) || \ + (TimeraIrqCaptureOrCompareCh3 == (x)) || \ + (TimeraIrqCaptureOrCompareCh4 == (x)) || \ + (TimeraIrqCaptureOrCompareCh5 == (x)) || \ + (TimeraIrqCaptureOrCompareCh6 == (x)) || \ + (TimeraIrqCaptureOrCompareCh7 == (x)) || \ + (TimeraIrqCaptureOrCompareCh8 == (x)) || \ + (TimeraIrqOverflow == (x)) || \ + (TimeraIrqUnderflow == (x))) + +/*!< Parameter valid check for flag type */ +#define IS_VALID_FLAG_TYPE(x) \ +( (TimeraFlagCaptureOrCompareCh1 == (x)) || \ + (TimeraFlagCaptureOrCompareCh2 == (x)) || \ + (TimeraFlagCaptureOrCompareCh3 == (x)) || \ + (TimeraFlagCaptureOrCompareCh4 == (x)) || \ + (TimeraFlagCaptureOrCompareCh5 == (x)) || \ + (TimeraFlagCaptureOrCompareCh6 == (x)) || \ + (TimeraFlagCaptureOrCompareCh7 == (x)) || \ + (TimeraFlagCaptureOrCompareCh8 == (x)) || \ + (TimeraFlagOverflow == (x)) || \ + (TimeraFlagUnderflow == (x))) + +/*! Parameter valid check for common trigger. */ +#define IS_VALID_COM_TRIGGER(x) \ +( (TimeraComTrigger_1 == (x)) || \ + (TimeraComTrigger_2 == (x)) || \ + (TimeraComTrigger_1_2 == (x))) + +/*!< Parameter valid check for event source */ +#define IS_VALID_EVENT_SOURCE(x) ((x) <= 511u) + +/*!< Timera registers reset value */ +#define TIMERA_REG_CNTER_RESET_VALUE (0x0000u) +#define TIMERA_REG_PERAR_RESET_VALUE (0xFFFFu) +#define TIMERA_REG_CMPAR_RESET_VALUE (0xFFFFu) +#define TIMERA_REG_BCSTR_RESET_VALUE (0x0002u) +#define TIMERA_REG_ICONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_ECONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_FCONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_STFLR_RESET_VALUE (0x0000u) +#define TIMERA_REG_BCONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_CCONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_PCONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_HCONR_RESET_VALUE (0x0000u) +#define TIMERA_REG_HCUPR_RESET_VALUE (0x0000u) +#define TIMERA_REG_HCDOR_RESET_VALUE (0x0000u) + +#define TIMERA_REG_HTSSR0_RESET_VALUE (0x000001FFul) +#define TIMERA_REG_HTSSR1_RESET_VALUE (0x000001FFul) + +/*!< Timera calculate register address of channel */ +#define TIMERA_CALC_REG_ADDR(reg, chl) ((uint32_t)(&(reg)) + (chl)*0x4u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief De-Initialize Timera unit + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_DeInit(M4_TMRA_TypeDef *TIMERAx) +{ + en_result_t enRet = ErrorInvalidParameter; + uint32_t u32Cnt = 0u; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + TIMERAx->CNTER = TIMERA_REG_CNTER_RESET_VALUE; + TIMERAx->PERAR = TIMERA_REG_PERAR_RESET_VALUE; + TIMERAx->BCSTR = TIMERA_REG_BCSTR_RESET_VALUE; + TIMERAx->ICONR = TIMERA_REG_ICONR_RESET_VALUE; + TIMERAx->ECONR = TIMERA_REG_ECONR_RESET_VALUE; + TIMERAx->FCONR = TIMERA_REG_FCONR_RESET_VALUE; + TIMERAx->STFLR = TIMERA_REG_STFLR_RESET_VALUE; + TIMERAx->HCONR = TIMERA_REG_HCONR_RESET_VALUE; + TIMERAx->HCUPR = TIMERA_REG_HCUPR_RESET_VALUE; + TIMERAx->HCDOR = TIMERA_REG_HCDOR_RESET_VALUE; + + for (u32Cnt = 0u; u32Cnt < 8u; u32Cnt++) + { + *(__IO uint16_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, u32Cnt) = TIMERA_REG_CMPAR_RESET_VALUE; + } + for (u32Cnt = 0u; u32Cnt < 4u; u32Cnt++) + { + *(__IO uint16_t *)TIMERA_CALC_REG_ADDR(TIMERAx->BCONR1, u32Cnt * 2u) = TIMERA_REG_BCONR_RESET_VALUE; + } + for (u32Cnt = 0u; u32Cnt < 8u; u32Cnt++) + { + *(__IO uint16_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CCONR1, u32Cnt) = TIMERA_REG_CCONR_RESET_VALUE; + } + for (u32Cnt = 0u; u32Cnt < 8u; u32Cnt++) + { + *(__IO uint16_t *)TIMERA_CALC_REG_ADDR(TIMERAx->PCONR1, u32Cnt) = TIMERA_REG_PCONR_RESET_VALUE; + } + + M4_AOS->TMRA_HTSSR0 = TIMERA_REG_HTSSR0_RESET_VALUE; + M4_AOS->TMRA_HTSSR1 = TIMERA_REG_HTSSR1_RESET_VALUE; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize Timera unit base function + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] pstcBaseInit Pointer to timera base init configuration + ** \arg See the struct #stc_timera_base_init_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidMode Unit 1 sync startup invalid + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcBaseInit == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_BaseInit(M4_TMRA_TypeDef *TIMERAx, const stc_timera_base_init_t *pstcBaseInit) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcBaseInit)) + { + DDL_ASSERT(IS_VALID_COUNT_CLK_DIV(pstcBaseInit->enClkDiv)); + DDL_ASSERT(IS_VALID_COUNT_MODE(pstcBaseInit->enCntMode)); + DDL_ASSERT(IS_VALID_COUNT_DIR(pstcBaseInit->enCntDir)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcBaseInit->enSyncStartupEn)); + + /* Configure control status register */ + TIMERAx->BCSTR_f.CKDIV = pstcBaseInit->enClkDiv; + TIMERAx->BCSTR_f.MODE = pstcBaseInit->enCntMode; + TIMERAx->BCSTR_f.DIR = pstcBaseInit->enCntDir; + + /* Unit 1 sync startup invalid */ + if ((M4_TMRA1 == TIMERAx) && (Enable == pstcBaseInit->enSyncStartupEn)) + { + enRet = ErrorInvalidMode; + } + else + { + TIMERAx->BCSTR_f.SYNST = pstcBaseInit->enSyncStartupEn; + enRet = Ok; + } + + /* Configure period value register */ + TIMERAx->PERAR = pstcBaseInit->u16PeriodVal; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timera current count value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] u16Cnt Timera current count value + ** \arg 0-0xFFFF + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SetCurrCount(M4_TMRA_TypeDef *TIMERAx, uint16_t u16Cnt) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + TIMERAx->CNTER = u16Cnt; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timera current count value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \retval uint16_t Timera current count value + ** + ******************************************************************************/ +uint16_t TIMERA_GetCurrCount(M4_TMRA_TypeDef *TIMERAx) +{ + uint16_t u16CurrCntVal = 0u; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + u16CurrCntVal = (uint16_t)TIMERAx->CNTER; + } + + return u16CurrCntVal; +} + +/** + ******************************************************************************* + ** \brief Set Timera period value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] u16Period Timera period value + ** \arg 0-0xFFFF + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SetPeriodValue(M4_TMRA_TypeDef *TIMERAx, uint16_t u16Period) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + TIMERAx->PERAR = u16Period; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timera period count value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \retval uint16_t Timera current period value + ** + ******************************************************************************/ +uint16_t TIMERA_GetPeriodValue(M4_TMRA_TypeDef *TIMERAx) +{ + uint16_t u16PeriodVal = 0u; + + /* Check parameters */ + if (IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + u16PeriodVal = (uint16_t)TIMERAx->PERAR; + } + + return u16PeriodVal; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera software synchronous startup + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable synchronous startup + ** \arg Enable Enable synchronous startup + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SyncStartupCmd(M4_TMRA_TypeDef *TIMERAx, en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_SYNC_STARTUP_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + TIMERAx->BCSTR_f.SYNST = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera startup + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera startup + ** \arg Enable Enable timera startup + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_Cmd(M4_TMRA_TypeDef *TIMERAx, en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + TIMERAx->BCSTR_f.START = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize Timera unit compare function + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \param [in] pstcCompareInit Pointer to timera compare init configuration + ** \arg See the struct #stc_timera_compare_init_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcCompareInit == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_CompareInit(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + const stc_timera_compare_init_t *pstcCompareInit) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_pconr_field_t *pstcTimeraPort; + __IO stc_tmra_bconr_field_t *pstcTimeraCache; + __IO stc_tmra_cmpar_field_t *pstcTimeraCompare; + __IO stc_tmra_cconr_field_t *pstcTimeraCapture; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcCompareInit)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + DDL_ASSERT(IS_VALID_COUNT_START_OUTPUT(pstcCompareInit->enStartCountOutput)); + DDL_ASSERT(IS_VALID_COUNT_STOP_OUTPUT(pstcCompareInit->enStopCountOutput)); + DDL_ASSERT(IS_VALID_COMPARE_MATCH_OUTPUT(pstcCompareInit->enCompareMatchOutput)); + DDL_ASSERT(IS_VALID_PERIOD_MATCH_OUTPUT(pstcCompareInit->enPeriodMatchOutput)); + DDL_ASSERT(IS_VALID_SPECIFY_OUTPUT_STATUS(pstcCompareInit->enSpecifyOutput)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCompareInit->enCacheEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCompareInit->enTriangularCrestTransEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCompareInit->enTriangularTroughTransEn)); + + /* Configure port control register */ + pstcTimeraPort = (stc_tmra_pconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->PCONR1, enChannel); + pstcTimeraPort->STAC = pstcCompareInit->enStartCountOutput; + pstcTimeraPort->STPC = pstcCompareInit->enStopCountOutput; + pstcTimeraPort->CMPC = pstcCompareInit->enCompareMatchOutput; + pstcTimeraPort->PERC = pstcCompareInit->enPeriodMatchOutput; + pstcTimeraPort->FORC = pstcCompareInit->enSpecifyOutput; + + /* Configure cache control register */ + if ((TimeraCh1 == enChannel) || (TimeraCh3 == enChannel) || + (TimeraCh5 == enChannel) || (TimeraCh7 == enChannel)) + { + pstcTimeraCache = (stc_tmra_bconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->BCONR1, enChannel); + pstcTimeraCache->BSE0 = pstcCompareInit->enTriangularCrestTransEn; + pstcTimeraCache->BSE1 = pstcCompareInit->enTriangularTroughTransEn; + pstcTimeraCache->BEN = pstcCompareInit->enCacheEn; + /* Configure compare cache value register */ + pstcTimeraCompare = (stc_tmra_cmpar_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, enChannel + 1); + pstcTimeraCompare->CMP = pstcCompareInit->u16CompareCacheVal; + } + + /* Configure compare value register */ + pstcTimeraCompare = (stc_tmra_cmpar_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, enChannel); + pstcTimeraCompare->CMP = pstcCompareInit->u16CompareVal; + + /* Set compare output function */ + pstcTimeraCapture = (stc_tmra_cconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CCONR1, enChannel); + pstcTimeraCapture->CAPMD = 0u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timera compare value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \param [in] u16CompareVal Timera campare value + ** \arg 0-0xFFFF + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SetCompareValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + uint16_t u16CompareVal) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_cmpar_field_t *pstcTimeraCompare; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + + pstcTimeraCompare = (stc_tmra_cmpar_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, enChannel); + pstcTimeraCompare->CMP = u16CompareVal; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timera compare value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \retval uint16_t Timera compare value + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +uint16_t TIMERA_GetCompareValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel) +{ + uint16_t u16CompareVal = 0u; + __IO stc_tmra_cmpar_field_t *pstcTimeraCompare; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + + pstcTimeraCompare = (stc_tmra_cmpar_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, enChannel); + u16CompareVal = (uint16_t)pstcTimeraCompare->CMP; + } + + return u16CompareVal; +} + +/** + ******************************************************************************* + ** \brief Set Timera compare cache value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh7 Timera channel 7 + ** + ** \param [in] u16CompareCache Timera compare cache value + ** \arg 0-0xFFFF + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SetCacheValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + uint16_t u16CompareCache) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_cmpar_field_t *pstcTimeraCompare; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_SET_CACHE_CHANNEL(enChannel)); + + pstcTimeraCompare = (stc_tmra_cmpar_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, enChannel + 1); + pstcTimeraCompare->CMP = u16CompareCache; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera compare cache + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh7 Timera channel 7 + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera compare cache + ** \arg Enable Enable timera compare cache + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_CompareCacheCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_bconr_field_t *pstcTimeraCache; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_ENABLE_CACHE_CHANNEL(enChannel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + /* Configure cache control register */ + pstcTimeraCache = (stc_tmra_bconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->BCONR1, enChannel); + pstcTimeraCache->BEN = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Specify Timera port output status + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \param [in] enOutputSta Timera port output status + ** \arg TimeraSpecifyOutputInvalid Port output invalid + ** \arg TimeraSpecifyOutputLow Port output low level from next period + ** \arg TimeraSpecifyOutputHigh Port output high level from next period + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SpecifyOutputSta(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_timera_specify_output_t enOutputSta) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_pconr_field_t *pstcTimeraPort; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + DDL_ASSERT(IS_VALID_SPECIFY_OUTPUT_STATUS(enOutputSta)); + + pstcTimeraPort = (stc_tmra_pconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->PCONR1, enChannel); + pstcTimeraPort->FORC = enOutputSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera compare function + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera compare channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera compare function + ** \arg Enable Enable timera compare function + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_CompareCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_pconr_field_t *pstcTimeraPort; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + pstcTimeraPort = (stc_tmra_pconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->PCONR1, enChannel); + pstcTimeraPort->OUTEN = enNewSta; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize Timera unit capture function + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera capture channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \param [in] pstcCapInit Pointer to timera capture init configuration + ** \arg See the struct #stc_timera_capture_init_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcCapInit == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_CaptureInit(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + const stc_timera_capture_init_t *pstcCapInit) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_cconr_field_t *pstcTimeraCapture; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcCapInit)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enCapturePwmRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enCapturePwmFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enCaptureSpecifyEventEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enCaptureTrigFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enCaptureTrigRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enPwmFilterEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCapInit->enTrigFilterEn)); + DDL_ASSERT(IS_VALID_PORT_FILTER_CLOCK(pstcCapInit->enPwmClkDiv)); + DDL_ASSERT(IS_VALID_PORT_FILTER_CLOCK(pstcCapInit->enTrigClkDiv)); + + /* Configure capture control register */ + pstcTimeraCapture = (stc_tmra_cconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CCONR1, enChannel); + pstcTimeraCapture->HICP0 = pstcCapInit->enCapturePwmRisingEn; + pstcTimeraCapture->HICP1 = pstcCapInit->enCapturePwmFallingEn; + pstcTimeraCapture->HICP2 = pstcCapInit->enCaptureSpecifyEventEn; + pstcTimeraCapture->NOFICKCP = pstcCapInit->enPwmClkDiv; + pstcTimeraCapture->NOFIENCP = pstcCapInit->enPwmFilterEn; + + /* TIMA__TRIG port capture function only valid for TimeraCh3 */ + if (TimeraCh3 == enChannel) + { + pstcTimeraCapture->HICP3 = pstcCapInit->enCaptureTrigRisingEn; + pstcTimeraCapture->HICP4 = pstcCapInit->enCaptureTrigFallingEn; + /* Configure filter control register */ + TIMERAx->FCONR_f.NOFICKTG = pstcCapInit->enTrigClkDiv; + TIMERAx->FCONR_f.NOFIENTG = pstcCapInit->enTrigFilterEn; + } + + /* Set capture input function */ + pstcTimeraCapture->CAPMD = 1u; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera capture filter + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enFilterPort Timera capture filter input port + ** \arg TimeraFilterSourceCh1 TIMA__PWM1 input port + ** \arg TimeraFilterSourceCh2 TIMA__PWM2 input port + ** \arg TimeraFilterSourceCh3 TIMA__PWM3 input port + ** \arg TimeraFilterSourceCh4 TIMA__PWM4 input port + ** \arg TimeraFilterSourceCh5 TIMA__PWM5 input port + ** \arg TimeraFilterSourceCh6 TIMA__PWM6 input port + ** \arg TimeraFilterSourceCh7 TIMA__PWM7 input port + ** \arg TimeraFilterSourceCh8 TIMA__PWM8 input port + ** \arg TimeraFilterSourceTrig TIMA__TRIG input port + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera capture filter + ** \arg Enable Enable timera capture filter + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_CaptureFilterCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_filter_source_t enFilterPort, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + __IO stc_tmra_cconr_field_t *pstcTimeraCapture; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_CAPTURE_FILTER_PORT_SOURCE(enFilterPort)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + if (TimeraFilterSourceTrig == enFilterPort) + { + TIMERAx->FCONR_f.NOFIENTG = enNewSta; + } + else + { + pstcTimeraCapture = (stc_tmra_cconr_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CCONR1, enFilterPort); + pstcTimeraCapture->NOFIENCP = enNewSta; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timera capture value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera capture channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \retval uint16_t Timera capture value + ** + ******************************************************************************/ +uint16_t TIMERA_GetCaptureValue(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel) +{ + uint16_t u16CapVal = 0u; + __IO stc_tmra_cmpar_field_t *pstcTimeraCompare; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + + pstcTimeraCompare = (stc_tmra_cmpar_field_t *)TIMERA_CALC_REG_ADDR(TIMERAx->CMPAR1, enChannel); + u16CapVal = (uint16_t)pstcTimeraCompare->CMP; + } + + return u16CapVal; +} + +/** + ******************************************************************************* + ** \brief Initialize Timera unit orthogonal coding function + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] pstcCodingInit Pointer to timera orthogonal coding configuration + ** \arg See the struct #stc_timera_orthogonal_coding_init_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcCodingInit == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_OrthogonalCodingInit(M4_TMRA_TypeDef *TIMERAx, const stc_timera_orthogonal_coding_init_t *pstcCodingInit) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcCodingInit)) + { + DDL_ASSERT(IS_VALID_PORT_FILTER_CLOCK(pstcCodingInit->enTrigClkDiv)); + DDL_ASSERT(IS_VALID_PORT_FILTER_CLOCK(pstcCodingInit->enClkBClkDiv)); + DDL_ASSERT(IS_VALID_PORT_FILTER_CLOCK(pstcCodingInit->enClkAClkDiv)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enTrigFilterEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enClkBFilterEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enClkAFilterEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkALowAndClkBRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkALowAndClkBFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkAHighAndClkBRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkAHighAndClkBFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkBLowAndClkARisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkBLowAndClkAFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkBHighAndClkARisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncClkBHighAndClkAFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncTrigRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncTrigFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncSpecifyEventTriggerEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncAnotherUnitOverflowEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enIncAnotherUnitUnderflowEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkALowAndClkBRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkALowAndClkBFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkAHighAndClkBRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkAHighAndClkBFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkBLowAndClkARisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkBLowAndClkAFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkBHighAndClkARisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecClkBHighAndClkAFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecTrigRisingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecTrigFallingEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecSpecifyEventTriggerEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecAnotherUnitOverflowEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcCodingInit->enDecAnotherUnitUnderflowEn)); + + /* Configure hardware increase event register */ + TIMERAx->HCUPR_f.HCUP0 = pstcCodingInit->enIncClkALowAndClkBRisingEn; + TIMERAx->HCUPR_f.HCUP1 = pstcCodingInit->enIncClkALowAndClkBFallingEn; + TIMERAx->HCUPR_f.HCUP2 = pstcCodingInit->enIncClkAHighAndClkBRisingEn; + TIMERAx->HCUPR_f.HCUP3 = pstcCodingInit->enIncClkAHighAndClkBFallingEn; + TIMERAx->HCUPR_f.HCUP4 = pstcCodingInit->enIncClkBLowAndClkARisingEn; + TIMERAx->HCUPR_f.HCUP5 = pstcCodingInit->enIncClkBLowAndClkAFallingEn; + TIMERAx->HCUPR_f.HCUP6 = pstcCodingInit->enIncClkBHighAndClkARisingEn; + TIMERAx->HCUPR_f.HCUP7 = pstcCodingInit->enIncClkBHighAndClkAFallingEn; + TIMERAx->HCUPR_f.HCUP8 = pstcCodingInit->enIncTrigRisingEn; + TIMERAx->HCUPR_f.HCUP9 = pstcCodingInit->enIncTrigFallingEn; + TIMERAx->HCUPR_f.HCUP10 = pstcCodingInit->enIncSpecifyEventTriggerEn; + TIMERAx->HCUPR_f.HCUP11 = pstcCodingInit->enIncAnotherUnitOverflowEn; + TIMERAx->HCUPR_f.HCUP12 = pstcCodingInit->enIncAnotherUnitUnderflowEn; + + /* Configure hardware decrease event register */ + TIMERAx->HCDOR_f.HCDO0 = pstcCodingInit->enDecClkALowAndClkBRisingEn; + TIMERAx->HCDOR_f.HCDO1 = pstcCodingInit->enDecClkALowAndClkBFallingEn; + TIMERAx->HCDOR_f.HCDO2 = pstcCodingInit->enDecClkAHighAndClkBRisingEn; + TIMERAx->HCDOR_f.HCDO3 = pstcCodingInit->enDecClkAHighAndClkBFallingEn; + TIMERAx->HCDOR_f.HCDO4 = pstcCodingInit->enDecClkBLowAndClkARisingEn; + TIMERAx->HCDOR_f.HCDO5 = pstcCodingInit->enDecClkBLowAndClkAFallingEn; + TIMERAx->HCDOR_f.HCDO6 = pstcCodingInit->enDecClkBHighAndClkARisingEn; + TIMERAx->HCDOR_f.HCDO7 = pstcCodingInit->enDecClkBHighAndClkAFallingEn; + TIMERAx->HCDOR_f.HCDO8 = pstcCodingInit->enDecTrigRisingEn; + TIMERAx->HCDOR_f.HCDO9 = pstcCodingInit->enDecTrigFallingEn; + TIMERAx->HCDOR_f.HCDO10 = pstcCodingInit->enDecSpecifyEventTriggerEn; + TIMERAx->HCDOR_f.HCDO11 = pstcCodingInit->enDecAnotherUnitOverflowEn; + TIMERAx->HCDOR_f.HCDO12 = pstcCodingInit->enDecAnotherUnitUnderflowEn; + + /* Configure filter control register */ + TIMERAx->FCONR_f.NOFICKTG = pstcCodingInit->enTrigClkDiv; + TIMERAx->FCONR_f.NOFIENTG = pstcCodingInit->enTrigFilterEn; + TIMERAx->FCONR_f.NOFICKCB = pstcCodingInit->enClkBClkDiv; + TIMERAx->FCONR_f.NOFIENCB = pstcCodingInit->enClkBFilterEn; + TIMERAx->FCONR_f.NOFICKCA = pstcCodingInit->enClkAClkDiv; + TIMERAx->FCONR_f.NOFIENCA = pstcCodingInit->enClkAFilterEn; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set Timera orthogonal coding value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] u16CodingCnt Timera orthogonal coding value + ** \arg 0-0xFFFF + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_SetOrthogonalCodingCount(M4_TMRA_TypeDef *TIMERAx, uint16_t u16CodingCnt) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + TIMERAx->CNTER = u16CodingCnt; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timera orthogonal coding value + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \retval uint16_t Timera orthogonal coding value + ** + ******************************************************************************/ +uint16_t TIMERA_GetOrthogonalCodingCount(M4_TMRA_TypeDef *TIMERAx) +{ + uint16_t u16CodingCnt = 0u; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + u16CodingCnt = (uint16_t)TIMERAx->CNTER; + } + + return u16CodingCnt; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera orthogonal coding filter + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enFilterPort Timera orthogonal coding filter input port + ** \arg TimeraFilterSourceClkA TIMA__CLKA input port + ** \arg TimeraFilterSourceClkB TIMA__CLKB input port + ** \arg TimeraFilterSourceTrig TIMA__TRIG input port + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera orthogonal coding filter + ** \arg Enable Enable timera orthogonal coding filter + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_OrthogonalCodingFilterCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_filter_source_t enFilterPort, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_CODING_FILTER_PORT_SOURCE(enFilterPort)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + switch (enFilterPort) + { + case TimeraFilterSourceClkA: + TIMERAx->FCONR_f.NOFIENCA = enNewSta; + break; + case TimeraFilterSourceClkB: + TIMERAx->FCONR_f.NOFIENCB = enNewSta; + break; + case TimeraFilterSourceTrig: + TIMERAx->FCONR_f.NOFIENTG = enNewSta; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize Timera unit hardware trigger event function + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] pstcHwTriggerInit Pointer to timera hardware trigger event configuration + ** \arg See the struct #stc_timera_hw_trigger_init_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcHwTriggerInit == NULL + ** + ** \note If sync startup(BCSTR.SYNST) bit set 1 trigger hardware sync startup when HCONR.HSTA1~0 bit set + ** + ******************************************************************************/ +en_result_t TIMERA_HwTriggerInit(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_trigger_init_t *pstcHwTriggerInit) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcHwTriggerInit)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwStartup.enTrigRisingStartupEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwStartup.enTrigFallingStartupEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwStartup.enSpecifyEventStartupEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwStop.enTrigRisingStopEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwStop.enTrigFallingStopEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwStop.enSpecifyEventStopEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enTrigRisingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enTrigFallingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enSpecifyEventClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enAnotherUnitTrigRisingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enAnotherUnitTrigFallingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enChannel3RisingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwTriggerInit->stcHwClear.enChannel3FallingClearEn)); + + /* Configure hardware startup conditions */ + TIMERAx->HCONR_f.HSTA0 = pstcHwTriggerInit->stcHwStartup.enTrigRisingStartupEn; + TIMERAx->HCONR_f.HSTA1 = pstcHwTriggerInit->stcHwStartup.enTrigFallingStartupEn; + TIMERAx->HCONR_f.HSTA2 = pstcHwTriggerInit->stcHwStartup.enSpecifyEventStartupEn; + + /* Configure hardware stop conditions */ + TIMERAx->HCONR_f.HSTP0 = pstcHwTriggerInit->stcHwStop.enTrigRisingStopEn; + TIMERAx->HCONR_f.HSTP1 = pstcHwTriggerInit->stcHwStop.enTrigFallingStopEn; + TIMERAx->HCONR_f.HSTP2 = pstcHwTriggerInit->stcHwStop.enSpecifyEventStopEn; + + /* Configure hardware clear conditions */ + TIMERAx->HCONR_f.HCLE0 = pstcHwTriggerInit->stcHwClear.enTrigRisingClearEn; + TIMERAx->HCONR_f.HCLE1 = pstcHwTriggerInit->stcHwClear.enTrigFallingClearEn; + TIMERAx->HCONR_f.HCLE2 = pstcHwTriggerInit->stcHwClear.enSpecifyEventClearEn; + TIMERAx->HCONR_f.HCLE3 = pstcHwTriggerInit->stcHwClear.enAnotherUnitTrigRisingClearEn; + TIMERAx->HCONR_f.HCLE4 = pstcHwTriggerInit->stcHwClear.enAnotherUnitTrigFallingClearEn; + TIMERAx->HCONR_f.HCLE5 = pstcHwTriggerInit->stcHwClear.enChannel3RisingClearEn; + TIMERAx->HCONR_f.HCLE6 = pstcHwTriggerInit->stcHwClear.enChannel3FallingClearEn; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Timera hardware startup Config + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] pstcHwStartup Pointer to timera hardware startup configuration + ** \arg See the struct #stc_timera_hw_startup_config_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcHwStartup == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_HwStartupConfig(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_startup_config_t *pstcHwStartup) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcHwStartup)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwStartup->enTrigRisingStartupEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwStartup->enTrigFallingStartupEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwStartup->enSpecifyEventStartupEn)); + + TIMERAx->HCONR_f.HSTA0 = pstcHwStartup->enTrigRisingStartupEn; + TIMERAx->HCONR_f.HSTA1 = pstcHwStartup->enTrigFallingStartupEn; + TIMERAx->HCONR_f.HSTA2 = pstcHwStartup->enSpecifyEventStartupEn; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Timera hardware stop Config + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] pstcHwStop Pointer to timera hardware stop configuration + ** \arg See the struct #stc_timera_hw_stop_config_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcHwStop == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_HwStopConfig(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_stop_config_t *pstcHwStop) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcHwStop)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwStop->enTrigRisingStopEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwStop->enTrigFallingStopEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwStop->enSpecifyEventStopEn)); + + TIMERAx->HCONR_f.HSTP0 = pstcHwStop->enTrigRisingStopEn; + TIMERAx->HCONR_f.HSTP1 = pstcHwStop->enTrigFallingStopEn; + TIMERAx->HCONR_f.HSTP2 = pstcHwStop->enSpecifyEventStopEn; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Timera hardware clear Config + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] pstcHwClear Pointer to timera hardware clear configuration + ** \arg See the struct #stc_timera_hw_clear_config_t + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** - pstcHwClear == NULL + ** + ******************************************************************************/ +en_result_t TIMERA_HwClearConfig(M4_TMRA_TypeDef *TIMERAx, const stc_timera_hw_clear_config_t *pstcHwClear) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx) && (NULL != pstcHwClear)) + { + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enTrigRisingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enTrigFallingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enSpecifyEventClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enAnotherUnitTrigRisingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enAnotherUnitTrigFallingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enChannel3RisingClearEn)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcHwClear->enChannel3FallingClearEn)); + + TIMERAx->HCONR_f.HCLE0 = pstcHwClear->enTrigRisingClearEn; + TIMERAx->HCONR_f.HCLE1 = pstcHwClear->enTrigFallingClearEn; + TIMERAx->HCONR_f.HCLE2 = pstcHwClear->enSpecifyEventClearEn; + TIMERAx->HCONR_f.HCLE3 = pstcHwClear->enAnotherUnitTrigRisingClearEn; + TIMERAx->HCONR_f.HCLE4 = pstcHwClear->enAnotherUnitTrigFallingClearEn; + TIMERAx->HCONR_f.HCLE5 = pstcHwClear->enChannel3RisingClearEn; + TIMERAx->HCONR_f.HCLE6 = pstcHwClear->enChannel3FallingClearEn; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera interrupt request + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enIrq Timera interrupt request + ** \arg TimeraIrqCaptureOrCompareCh1 Channel 1 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh2 Channel 2 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh3 Channel 3 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh4 Channel 4 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh5 Channel 5 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh6 Channel 6 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh7 Channel 7 interrupt request + ** \arg TimeraIrqCaptureOrCompareCh8 Channel 8 interrupt request + ** \arg TimeraIrqOverflow Count overflow interrupt request + ** \arg TimeraIrqUnderflow Count underflow interrupt request + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera interrupt request + ** \arg Enable Enable timera interrupt request + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_IrqCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_irq_type_t enIrq, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_IRQ_SOURCE(enIrq)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + switch (enIrq) + { + case TimeraIrqCaptureOrCompareCh1: + TIMERAx->ICONR_f.ITEN1 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh2: + TIMERAx->ICONR_f.ITEN2 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh3: + TIMERAx->ICONR_f.ITEN3 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh4: + TIMERAx->ICONR_f.ITEN4 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh5: + TIMERAx->ICONR_f.ITEN5 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh6: + TIMERAx->ICONR_f.ITEN6 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh7: + TIMERAx->ICONR_f.ITEN7 = enNewSta; + break; + case TimeraIrqCaptureOrCompareCh8: + TIMERAx->ICONR_f.ITEN8 = enNewSta; + break; + case TimeraIrqOverflow: + TIMERAx->BCSTR_f.ITENOVF = enNewSta; + break; + case TimeraIrqUnderflow: + TIMERAx->BCSTR_f.ITENUDF = enNewSta; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable Timera event request + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enChannel Timera event request channel + ** \arg TimeraCh1 Timera channel 1 + ** \arg TimeraCh2 Timera channel 2 + ** \arg TimeraCh3 Timera channel 3 + ** \arg TimeraCh4 Timera channel 4 + ** \arg TimeraCh5 Timera channel 5 + ** \arg TimeraCh6 Timera channel 6 + ** \arg TimeraCh7 Timera channel 7 + ** \arg TimeraCh8 Timera channel 8 + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable timera event request + ** \arg Enable Enable timera event request + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_EventCmd(M4_TMRA_TypeDef *TIMERAx, en_timera_channel_t enChannel, + en_functional_state_t enNewSta) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_NORMAL_TIMERA_CHANNEL(enChannel)); + + switch (enChannel) + { + case TimeraCh1: + TIMERAx->ECONR_f.ETEN1 = enNewSta; + break; + case TimeraCh2: + TIMERAx->ECONR_f.ETEN2 = enNewSta; + break; + case TimeraCh3: + TIMERAx->ECONR_f.ETEN3 = enNewSta; + break; + case TimeraCh4: + TIMERAx->ECONR_f.ETEN4 = enNewSta; + break; + case TimeraCh5: + TIMERAx->ECONR_f.ETEN5 = enNewSta; + break; + case TimeraCh6: + TIMERAx->ECONR_f.ETEN6 = enNewSta; + break; + case TimeraCh7: + TIMERAx->ECONR_f.ETEN7 = enNewSta; + break; + case TimeraCh8: + TIMERAx->ECONR_f.ETEN8 = enNewSta; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get Timera flag status + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enFlag Timera flag type + ** \arg TimeraFlagCaptureOrCompareCh1 Channel 1 match flag + ** \arg TimeraFlagCaptureOrCompareCh2 Channel 2 match flag + ** \arg TimeraFlagCaptureOrCompareCh3 Channel 3 match flag + ** \arg TimeraFlagCaptureOrCompareCh4 Channel 4 match flag + ** \arg TimeraFlagCaptureOrCompareCh5 Channel 5 match flag + ** \arg TimeraFlagCaptureOrCompareCh6 Channel 6 match flag + ** \arg TimeraFlagCaptureOrCompareCh7 Channel 7 match flag + ** \arg TimeraFlagCaptureOrCompareCh8 Channel 8 match flag + ** \arg TimeraFlagOverflow Count overflow flag + ** \arg TimeraFlagUnderflow Count underflow flag + ** + ** \retval Set Flag is set + ** \retval Reset Flag is reset + ** + ******************************************************************************/ +en_flag_status_t TIMERA_GetFlag(M4_TMRA_TypeDef *TIMERAx, en_timera_flag_type_t enFlag) +{ + en_flag_status_t enFlagSta = Reset; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case TimeraFlagCaptureOrCompareCh1: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF1; + break; + case TimeraFlagCaptureOrCompareCh2: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF2; + break; + case TimeraFlagCaptureOrCompareCh3: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF3; + break; + case TimeraFlagCaptureOrCompareCh4: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF4; + break; + case TimeraFlagCaptureOrCompareCh5: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF5; + break; + case TimeraFlagCaptureOrCompareCh6: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF6; + break; + case TimeraFlagCaptureOrCompareCh7: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF7; + break; + case TimeraFlagCaptureOrCompareCh8: + enFlagSta = (en_flag_status_t)TIMERAx->STFLR_f.CMPF8; + break; + case TimeraFlagOverflow: + enFlagSta = (en_flag_status_t)TIMERAx->BCSTR_f.OVFF; + break; + case TimeraFlagUnderflow: + enFlagSta = (en_flag_status_t)TIMERAx->BCSTR_f.UDFF; + break; + default: + break; + } + } + + return enFlagSta; +} + +/** + ******************************************************************************* + ** \brief Clear Timera flag status + ** + ** \param [in] TIMERAx Pointer to timera unit configuration address + ** \arg M4_TMRA1 Timera unit 1 configuration Address + ** \arg M4_TMRA2 Timera unit 2 configuration Address + ** \arg M4_TMRA3 Timera unit 3 configuration Address + ** \arg M4_TMRA4 Timera unit 4 configuration Address + ** \arg M4_TMRA5 Timera unit 5 configuration Address + ** \arg M4_TMRA6 Timera unit 6 configuration Address + ** + ** \param [in] enFlag Timera flag type + ** \arg TimeraFlagCaptureOrCompareCh1 Channel 1 match flag + ** \arg TimeraFlagCaptureOrCompareCh2 Channel 2 match flag + ** \arg TimeraFlagCaptureOrCompareCh3 Channel 3 match flag + ** \arg TimeraFlagCaptureOrCompareCh4 Channel 4 match flag + ** \arg TimeraFlagCaptureOrCompareCh5 Channel 5 match flag + ** \arg TimeraFlagCaptureOrCompareCh6 Channel 6 match flag + ** \arg TimeraFlagCaptureOrCompareCh7 Channel 7 match flag + ** \arg TimeraFlagCaptureOrCompareCh8 Channel 8 match flag + ** \arg TimeraFlagOverflow Count overflow flag + ** \arg TimeraFlagUnderflow Count underflow flag + ** + ** \retval Ok Process successfully done + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - TIMERAx is invalid + ** + ******************************************************************************/ +en_result_t TIMERA_ClearFlag(M4_TMRA_TypeDef *TIMERAx, en_timera_flag_type_t enFlag) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check parameters */ + if(IS_VALID_NORMAL_TIMERA_UNIT(TIMERAx)) + { + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case TimeraFlagCaptureOrCompareCh1: + TIMERAx->STFLR_f.CMPF1 = 0u; + break; + case TimeraFlagCaptureOrCompareCh2: + TIMERAx->STFLR_f.CMPF2 = 0u; + break; + case TimeraFlagCaptureOrCompareCh3: + TIMERAx->STFLR_f.CMPF3 = 0u; + break; + case TimeraFlagCaptureOrCompareCh4: + TIMERAx->STFLR_f.CMPF4 = 0u; + break; + case TimeraFlagCaptureOrCompareCh5: + TIMERAx->STFLR_f.CMPF5 = 0u; + break; + case TimeraFlagCaptureOrCompareCh6: + TIMERAx->STFLR_f.CMPF6 = 0u; + break; + case TimeraFlagCaptureOrCompareCh7: + TIMERAx->STFLR_f.CMPF7 = 0u; + break; + case TimeraFlagCaptureOrCompareCh8: + TIMERAx->STFLR_f.CMPF8 = 0u; + break; + case TimeraFlagOverflow: + TIMERAx->BCSTR_f.OVFF = 0u; + break; + case TimeraFlagUnderflow: + TIMERAx->BCSTR_f.UDFF = 0u; + break; + default: + break; + } + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set counter event trigger source + ** + ** \param [in] enTriggerSrc Counter event trigger source + ** \arg 0-511 Used to trigger counter start/stop/clear/increment/decrement + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t TIMERA_SetCountTriggerSrc(en_event_src_t enTriggerSrc) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_EVENT_SOURCE(enTriggerSrc)); + + M4_AOS->TMRA_HTSSR0_f.TRGSEL = enTriggerSrc; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set capture event trigger source + ** + ** \param [in] enTriggerSrc Capture event trigger source + ** \arg 0-511 Used to trigger the capture function + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t TIMERA_SetCaptureTriggerSrc(en_event_src_t enTriggerSrc) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_EVENT_SOURCE(enTriggerSrc)); + + M4_AOS->TMRA_HTSSR1_f.TRGSEL = enTriggerSrc; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable TimerA counter common trigger. + ** + ** \param [in] enComTrigger TimerA common trigger selection. + ** \arg TimeraComTrigger_1 Select common trigger 1 + ** \arg TimeraComTrigger_2 Select common trigger 2 + ** \arg TimeraComTrigger_1_2 Select common trigger 1 and 2 + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable the specified common trigger. + ** \arg Enable Enable the specified common trigger. + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t TIMERA_CountComTriggerCmd(en_timera_com_trigger_t enComTrigger, en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + uint32_t u32ComTrig; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + u32ComTrig = (uint32_t)enComTrigger << 30u; + if (enNewSta == Enable) + { + M4_AOS->TMRA_HTSSR0 |= u32ComTrig; + } + else + { + M4_AOS->TMRA_HTSSR0 &= ~u32ComTrig; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Enable or disable TimerA capture common trigger. + ** + ** \param [in] enComTrigger TimerA common trigger selection. + ** \arg TimeraComTrigger_1 Select common trigger 1 + ** \arg TimeraComTrigger_2 Select common trigger 2 + ** \arg TimeraComTrigger_1_2 Select common trigger 1 and 2 + ** + ** \param [in] enNewSta The function new state + ** \arg Disable Disable the specified common trigger. + ** \arg Enable Enable the specified common trigger. + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t TIMERA_CaptureComTriggerCmd(en_timera_com_trigger_t enComTrigger, en_functional_state_t enNewSta) +{ + en_result_t enRet = Ok; + uint32_t u32ComTrig; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_COM_TRIGGER(enComTrigger)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewSta)); + + u32ComTrig = (uint32_t)enComTrigger << 30u; + if (enNewSta == Enable) + { + M4_AOS->TMRA_HTSSR1 |= u32ComTrig; + } + else + { + M4_AOS->TMRA_HTSSR1 &= ~u32ComTrig; + } + + return enRet; +} + +//@} // TimeraGroup + +#endif /* DDL_TIMERA_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_trng.c b/driver/src/hc32f460_trng.c new file mode 100644 index 0000000..95a994a --- /dev/null +++ b/driver/src/hc32f460_trng.c @@ -0,0 +1,263 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_trng.c + ** + ** A detailed description is available at + ** @link TrngGroup Trng description @endlink + ** + ** - 2018-10-20 CDT First version for Device Driver Library of Trng. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_trng.h" +#include "hc32f460_utility.h" + +#if (DDL_TRNG_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup TrngGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Parameter validity check for TRNG load control. */ +#define IS_TRNG_LOAD_CTRL(CTRL) \ +( ((CTRL) == TrngLoadNewInitValue_Enable) || \ + ((CTRL) == TrngLoadNewInitValue_Disable)) + +/*! Parameter validity check for TRNG shift count. */ +#define IS_TRNG_SHIFT_COUNT(COUNT) \ +( ((COUNT) == TrngShiftCount_32) || \ + ((COUNT) == TrngShiftCount_64) || \ + ((COUNT) == TrngShiftCount_128) || \ + ((COUNT) == TrngShiftCount_256)) + + +#define RANDOM_NUM_LENGTH (2u) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initializes the TRNG. + ** + ** \param [in] pstcInit Pointer to TRNG initialization structure. + ** \arg enLoadCtrl + ** \- TrngLoadNewInitValue_Enable Data register load new initial value before + ** random number is generated. + ** \- TrngLoadNewInitValue_Disable Data register do not load new initial value + ** before random number is generated. + ** + ** \arg enShiftCount Shift count control bit when capturing random noise. + ** \- TrngShiftCount_32 Shift 32 times. + ** \- TrngShiftCount_64 Shift 64 times. + ** \- TrngShiftCount_128 Shift 128 times. + ** \- TrngShiftCount_256 Shift 256 times. + ** + ** \retval Ok No error occurred. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t TRNG_Init(const stc_trng_init_t *pstcInit) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (NULL != pstcInit) + { + /* Parameter validity check */ + DDL_ASSERT(IS_TRNG_LOAD_CTRL(pstcInit->enLoadCtrl)); + DDL_ASSERT(IS_TRNG_SHIFT_COUNT(pstcInit->enShiftCount)); + + /* Stop TRNG generating*/ + bM4_TRNG_CR_RUN = 0u; + + /* Turn off TRNG circuit */ + bM4_TRNG_CR_EN = 0u; + + M4_TRNG->MR_f.LOAD = pstcInit->enLoadCtrl; + M4_TRNG->MR_f.CNT = pstcInit->enShiftCount; + + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Deinitializes the TRNG. + ** + ** \param None. + ** + ** \retval None. + ** + ******************************************************************************/ +void TRNG_DeInit(void) +{ + /* Stop TRNG generating*/ + bM4_TRNG_CR_RUN = 0u; + + /* Turn off TRNG circuit */ + bM4_TRNG_CR_EN = 0u; + + /* Set the value of all registers to the reset value. */ + M4_TRNG->CR = 0u; + M4_TRNG->MR = 0x12ul; + M4_TRNG->DR0 = 0x08000000ul; + M4_TRNG->DR0 = 0x08000200ul; +} + +/** + ******************************************************************************* + ** \brief Start TRNG and generate random number. + ** + ** \param [out] pu32Random The destination address where the random + ** number will be stored. + ** \param [in] u8Length Random number length(in word). + ** TRNG generates two random numbers(2 words) at one time. + ** u8Length >= 2, both random numbers will be read. + ** u8Length < 2, only one random number will be read. + ** \param [in] u32Timeout Timeout value. + ** + ** \retval Ok No error occurred. + ** \retval ErrorTimeout TRNG works timeout. + ** \retval ErrorInvalidParameter Parameter error. + ** + ******************************************************************************/ +en_result_t TRNG_Generate(uint32_t *pu32Random, uint8_t u8Length, uint32_t u32Timeout) +{ + en_result_t enRet = ErrorInvalidParameter; + uint32_t u32TrngTimeout; + __IO uint32_t u32TimeCount; + + if ((NULL != pu32Random) && (0u != u32Timeout) && (0u != u8Length)) + { + /* 10 is the number of required instructions cycles for the below loop statement. */ + u32TrngTimeout = u32Timeout * (SystemCoreClock / 10u / 1000u); + + /* Turn on TRNG circuit. */ + bM4_TRNG_CR_EN = 1u; + + /* Start TRNG to generate random number. */ + bM4_TRNG_CR_RUN = 1u; + + /* wait generation done and check if timeout. */ + u32TimeCount = 0u; + enRet = ErrorTimeout; + while (u32TimeCount < u32TrngTimeout) + { + if (bM4_TRNG_CR_RUN == 0u) + { + enRet = Ok; + break; + } + u32TimeCount++; + } + + if (Ok == enRet) + { + /* read the random number. */ + pu32Random[0u] = M4_TRNG->DR0; + if (u8Length >= RANDOM_NUM_LENGTH) + { + pu32Random[1u] = M4_TRNG->DR1; + } + } + + /* Stop TRNG generating. */ + bM4_TRNG_CR_RUN = 0u; + + /* Turn off TRNG circuit. */ + bM4_TRNG_CR_EN = 0u; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Start TRNG only. + ** + ** \param None. + ** + ** \retval None. + ** + ******************************************************************************/ +void TRNG_StartIT(void) +{ + /* Turn on TRNG circuit. */ + bM4_TRNG_CR_EN = 1u; + + /* Start TRNG to generate random number. */ + bM4_TRNG_CR_RUN = 1u; +} + +/** + ******************************************************************************* + ** \brief Get random number. + ** + ** \param [out] pu32Random The destination address where the random + ** number will be stored. + ** \param [in] u8Length Random number length(in word). + ** TRNG generates two random numbers(2 words) at one time. + ** u8Length >= 2, both random numbers will be read. + ** u8Length < 2, only one random number will be read. + ** + ** \retval None. + ** + ******************************************************************************/ +void TRNG_GetRandomNum(uint32_t *pu32Random, uint8_t u8Length) +{ + if ((NULL != pu32Random) && (0u != u8Length)) + { + pu32Random[0u] = M4_TRNG->DR0; + if (u8Length >= RANDOM_NUM_LENGTH) + { + pu32Random[1u] = M4_TRNG->DR1; + } + + /* Stop TRNG generating */ + bM4_TRNG_CR_RUN = 0u; + + /* Turn off TRNG circuit */ + bM4_TRNG_CR_EN = 0u; + } +} + +//@} // TrngGroup + +#endif /* DDL_TRNG_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_usart.c b/driver/src/hc32f460_usart.c new file mode 100644 index 0000000..8ad5614 --- /dev/null +++ b/driver/src/hc32f460_usart.c @@ -0,0 +1,1640 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_usart.c + ** + ** A detailed description is available at + ** @link UsartGroup USART description @endlink + ** + ** - 2018-11-27 CDT First version for Device Driver Library of USART. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_usart.h" +#include "hc32f460_utility.h" + +#if (DDL_USART_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup UsartGroup + ******************************************************************************/ + +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/*!< Parameter valid check for USART Instances. */ +#define IS_VALID_USART(__USARTx__) \ +( (M4_USART1 == (__USARTx__)) || \ + (M4_USART2 == (__USARTx__)) || \ + (M4_USART3 == (__USARTx__)) || \ + (M4_USART4 == (__USARTx__))) + +/*!< Parameter valid check for USART clock prescale. */ +#define IS_VALID_USART_CLK_DIV(x) \ +( (UsartClkDiv_1 == (x)) || \ + (UsartClkDiv_4 == (x)) || \ + (UsartClkDiv_16 == (x)) || \ + (UsartClkDiv_64 == (x))) + +/*!< Parameter valid check for USART function type. */ +#define IS_VALID_USART_FUNC(x) \ +( (UsartRx == (x)) || \ + (UsartTx == (x)) || \ + (UsartCts == (x)) || \ + (UsartRxInt == (x)) || \ + (UsartTimeOut == (x)) || \ + (UsartSmartCard == (x)) || \ + (UsartSilentMode == (x)) || \ + (UsartTxEmptyInt == (x)) || \ + (UsartTimeOutInt == (x)) || \ + (UsartTxCmpltInt == (x)) || \ + (UsartParityCheck == (x)) || \ + (UsartNoiseFilter == (x)) || \ + (UsartFracBaudrate == (x)) || \ + (UsartMulProcessor == (x)) || \ + (UsartTxAndTxEmptyInt == (x))) + +/*!< Parameter valid check for USART function type. */ +#define IS_VALID_USART_STATUS(x) \ +( (UsartRxMpb == (x)) || \ + (UsartTxEmpty == (x)) || \ + (UsartFrameErr == (x)) || \ + (UsartRxNoEmpty == (x)) || \ + (UsartRxTimeOut == (x)) || \ + (UsartParityErr == (x)) || \ + (UsartOverrunErr == (x)) || \ + (UsartTxComplete == (x))) + +/*!< Parameter valid check for USART clock mode. */ +#define IS_VALID_USART_CLK_MODE(x) \ +( (UsartExtClk == (x)) || \ + (UsartIntClkCkOutput == (x)) || \ + (UsartIntClkCkNoOutput == (x))) + +/*!< Parameter valid check for USART stop bit. */ +#define IS_VALID_USART_STOP_BIT(x) \ +( (UsartOneStopBit == (x)) || \ + (UsartTwoStopBit == (x))) + +/*!< Parameter valid check for USART parity bit. */ +#define IS_VALID_USART_PARITY_BIT(x) \ +( (UsartParityOdd == (x)) || \ + (UsartParityEven == (x)) || \ + (UsartParityNone == (x))) + +/*!< Parameter valid check for USART data length. */ +#define IS_VALID_USART_DATA_LEN(x) \ +( (UsartDataBits8 == (x)) || \ + (UsartDataBits9 == (x))) + +/*!< Parameter valid check for USART data direction. */ +#define IS_VALID_USART_DATA_DIR(x) \ +( (UsartDataLsbFirst == (x)) || \ + (UsartDataMsbFirst == (x))) + +/*!< Parameter valid check for USART sample mode. */ +#define IS_VALID_USART_SAMPLE_MODE(x) \ +( (UsartSampleBit8 == (x)) || \ + (UsartSampleBit16 == (x))) + +/*!< Parameter valid check for USART sample mode. */ +#define IS_VALID_USART_HW_FLOW_MODE(x) \ +( (UsartRtsEnable == (x)) || \ + (UsartCtsEnable == (x))) + +/*!< Parameter valid check for USART detect mode. */ +#define IS_VALID_USART_SB_DETECT_MODE(x) \ +( (UsartStartBitLowLvl == (x)) || \ + (UsartStartBitFallEdge == (x))) + +/*!< Parameter valid check for USART mode. */ +#define IS_VALID_USART_MODE(x) \ +( (UsartUartMode == (x)) || \ + (UsartClkSyncMode == (x)) || \ + (UsartSmartCardMode == (x))) + +/*!< Parameter valid check for USART ETU clocks number. */ +#define IS_VALID_USART_ETU_CLK(x) \ +( (UsartScEtuClk32 == (x)) || \ + (UsartScEtuClk64 == (x)) || \ + (UsartScEtuClk128 == (x)) || \ + (UsartScEtuClk256 == (x)) || \ + (UsartScEtuClk372 == (x))) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ +static uint32_t UsartGetClk(const M4_USART_TypeDef *USARTx); +static en_result_t SetUartBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate); +static en_result_t SetClkSyncBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate); +static en_result_t SetScBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate); + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initialize UART mode of the specified USART. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] pstcInitCfg Pointer to USART mode configure structure + ** \arg This parameter detail refer @ref stc_usart_uart_init_t + ** + ** \retval Ok USART is initialized normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx is invalid + ** - pstcInitCfg == NULL + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t USART_UART_Init(M4_USART_TypeDef *USARTx, + const stc_usart_uart_init_t *pstcInitCfg) +{ + stc_usart_pr_field_t PR_f = {0}; + stc_usart_cr1_field_t CR1_f = {0}; + stc_usart_cr2_field_t CR2_f = {0}; + stc_usart_cr3_field_t CR3_f = {0}; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx && pstcInitCfg pointer */ + if ((IS_VALID_USART(USARTx)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_USART_CLK_DIV(pstcInitCfg->enClkDiv)); + DDL_ASSERT(IS_VALID_USART_CLK_MODE(pstcInitCfg->enClkMode)); + DDL_ASSERT(IS_VALID_USART_STOP_BIT(pstcInitCfg->enStopBit)); + DDL_ASSERT(IS_VALID_USART_PARITY_BIT(pstcInitCfg->enParity)); + DDL_ASSERT(IS_VALID_USART_DATA_DIR(pstcInitCfg->enDirection)); + DDL_ASSERT(IS_VALID_USART_DATA_LEN(pstcInitCfg->enDataLength)); + DDL_ASSERT(IS_VALID_USART_HW_FLOW_MODE(pstcInitCfg->enHwFlow)); + DDL_ASSERT(IS_VALID_USART_SAMPLE_MODE(pstcInitCfg->enSampleMode)); + DDL_ASSERT(IS_VALID_USART_SB_DETECT_MODE(pstcInitCfg->enDetectMode)); + + /* Set default value */ + USARTx->CR1 = (uint32_t)0x801B0000ul; + USARTx->CR2 = (uint32_t)0x00000000ul; + USARTx->CR3 = (uint32_t)0x00000000ul; + USARTx->BRR = (uint32_t)0x0000FFFFul; + USARTx->PR = (uint32_t)0x00000000ul; + + /* Set USART mode */ + CR3_f.SCEN = (uint32_t)0ul; + CR1_f.MS = (uint32_t)0ul; + + PR_f.PSC = (uint32_t)(pstcInitCfg->enClkDiv); + CR1_f.M = (uint32_t)(pstcInitCfg->enDataLength); + CR1_f.ML = (uint32_t)(pstcInitCfg->enDirection); + CR2_f.STOP = (uint32_t)(pstcInitCfg->enStopBit); + CR2_f.CLKC = (uint32_t)(pstcInitCfg->enClkMode); + + switch(pstcInitCfg->enParity) + { + case UsartParityNone: + CR1_f.PCE = (uint32_t)0ul; + break; + case UsartParityEven: + CR1_f.PS = (uint32_t)0ul; + CR1_f.PCE = (uint32_t)1ul; + break; + case UsartParityOdd: + CR1_f.PS = (uint32_t)1ul; + CR1_f.PCE = (uint32_t)1ul; + break; + default: + break; + } + + CR3_f.CTSE = (uint32_t)(pstcInitCfg->enHwFlow); + CR1_f.SBS = (uint32_t)(pstcInitCfg->enDetectMode); + CR1_f.OVER8 = (uint32_t)(pstcInitCfg->enSampleMode); + + USARTx->PR_f = PR_f; + USARTx->CR2_f= CR2_f; + USARTx->CR3_f= CR3_f; + USARTx->CR1_f= CR1_f; + enRet = Ok; + } + + return enRet; +} +/** + ******************************************************************************* + ** \brief Initialize clock sync mode of the specified USART. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] pstcInitCfg Pointer to clock sync mode configure structure + ** \arg This parameter detail refer @ref stc_usart_clksync_init_t + ** + ** \retval Ok USART is initialized normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx is invalid + ** - pstcInitCfg == NULL + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t USART_CLKSYNC_Init(M4_USART_TypeDef *USARTx, + const stc_usart_clksync_init_t *pstcInitCfg) +{ + stc_usart_pr_field_t PR_f = {0}; + stc_usart_cr1_field_t CR1_f = {0}; + stc_usart_cr2_field_t CR2_f = {0}; + stc_usart_cr3_field_t CR3_f = {0}; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx && pstcInitCfg pointer */ + if ((IS_VALID_USART(USARTx)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_USART_CLK_DIV(pstcInitCfg->enClkDiv)); + DDL_ASSERT(IS_VALID_USART_CLK_MODE(pstcInitCfg->enClkMode)); + DDL_ASSERT(IS_VALID_USART_DATA_DIR(pstcInitCfg->enDirection)); + DDL_ASSERT(IS_VALID_USART_HW_FLOW_MODE(pstcInitCfg->enHwFlow)); + + /* Set default value */ + USARTx->CR1 = (uint32_t)0x801B0000ul; + USARTx->CR2 = (uint32_t)0x00000000ul; + USARTx->CR3 = (uint32_t)0x00000000ul; + USARTx->BRR = (uint32_t)0x0000FFFFul; + USARTx->PR = (uint32_t)0x00000000ul; + + /* Set Clock Sync mode */ + CR3_f.SCEN = (uint32_t)0ul; + CR1_f.MS = (uint32_t)1ul; + CR1_f.ML = (uint32_t)(pstcInitCfg->enDirection); + PR_f.PSC = (uint32_t)(pstcInitCfg->enClkDiv); + CR2_f.CLKC = (uint32_t)(pstcInitCfg->enClkMode); + CR3_f.CTSE = (uint32_t)(pstcInitCfg->enHwFlow); + + USARTx->PR_f = PR_f; + USARTx->CR2_f= CR2_f; + USARTx->CR3_f= CR3_f; + USARTx->CR1_f= CR1_f; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Initialize smart card mode of the specified USART. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] pstcInitCfg Pointer to smart card mode configure structure + ** \arg This parameter detail refer @ref stc_usart_sc_init_t + ** + ** \retval Ok USART is initialized normally + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx is invalid + ** - pstcInitCfg == NULL + ** - Other invalid configuration + ** + ******************************************************************************/ +en_result_t USART_SC_Init(M4_USART_TypeDef *USARTx, + const stc_usart_sc_init_t *pstcInitCfg) +{ + stc_usart_pr_field_t PR_f = {0}; + stc_usart_cr1_field_t CR1_f = {0}; + stc_usart_cr2_field_t CR2_f = {0}; + stc_usart_cr3_field_t CR3_f = {0}; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx && pstcInitCfg pointer */ + if ((IS_VALID_USART(USARTx)) && (NULL != pstcInitCfg)) + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_USART_CLK_DIV(pstcInitCfg->enClkDiv)); + DDL_ASSERT(IS_VALID_USART_CLK_MODE(pstcInitCfg->enClkMode)); + DDL_ASSERT(IS_VALID_USART_DATA_DIR(pstcInitCfg->enDirection)); + + /* Set default value */ + USARTx->CR1 = (uint32_t)0x801B0000ul; + USARTx->CR2 = (uint32_t)0x00000000ul; + USARTx->CR3 = (uint32_t)0x00000000ul; + USARTx->BRR = (uint32_t)0x0000FFFFul; + USARTx->PR = (uint32_t)0x00000000ul; + + CR1_f.PCE = (uint32_t)1ul; + CR1_f.ML = (uint32_t)(pstcInitCfg->enDirection); + CR2_f.CLKC = (uint32_t)(pstcInitCfg->enClkMode); + CR3_f.SCEN = (uint32_t)1ul; /* Set USART mode */ + CR3_f.BCN = (uint32_t)UsartScEtuClk372; /* ETU = 372 * CK */ + PR_f.PSC = (uint32_t)(pstcInitCfg->enClkDiv); + + USARTx->PR_f = PR_f; + USARTx->CR2_f= CR2_f; + USARTx->CR3_f= CR3_f; + USARTx->CR1_f= CR1_f; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief De-Initializes the specified USART. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval Ok USART is de-initialized normally + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_DeInit(M4_USART_TypeDef *USARTx) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check for USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + /* Set default value */ + USARTx->CR1 = (uint32_t)0x801B0000ul; + USARTx->CR2 = (uint32_t)0x00000000ul; + USARTx->CR3 = (uint32_t)0x00000000ul; + USARTx->BRR = (uint32_t)0x0000FFFFul; + USARTx->PR = (uint32_t)0x00000000ul; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get flag status + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enStatus Choose need get status's flag + ** \arg UsartParityError Parity check error + ** \arg UsartFrameError Frame error + ** \arg UsartOverRunError Overrun error + ** \arg UsartRxRegNoEmpty Rx register is no empty + ** \arg UsartTxComplete Transfer completely + ** \arg UsartTxRegNoEmpty Tx register is no empty + ** \arg UsartRxTimeOut Data receive timeout + ** \arg UsartRxDataType Data is multiple processor id or normal data. + ** + ** \retval Set Flag is set. + ** \retval Reset Flag is reset or enStatus is invalid. + ** + ******************************************************************************/ +en_flag_status_t USART_GetStatus(M4_USART_TypeDef *USARTx, + en_usart_status_t enStatus) +{ + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + DDL_ASSERT(IS_VALID_USART_STATUS(enStatus)); + + return ((USARTx->SR & enStatus) ? Set : Reset); +} + +/** + ******************************************************************************* + ** \brief Clear the specified USART status + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enStatus The specified status + ** \arg UsartParityErr Parity check error + ** \arg UsartFrameErr Frame error + ** \arg UsartOverRunErr Overrun error + ** \arg UsartRxTimeOut Data receive timeout + ** + ** \retval Ok Clear flag successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx is invalid + ** - enStatus is invalid + ** + ******************************************************************************/ +en_result_t USART_ClearStatus(M4_USART_TypeDef *USARTx, + en_usart_status_t enStatus) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + enRet = Ok; + switch (enStatus) + { + case UsartParityErr: + USARTx->CR1_f.CPE = 1ul; + break; + case UsartFrameErr: + USARTx->CR1_f.CFE = 1ul; + break; + case UsartOverrunErr: + USARTx->CR1_f.CORE = 1ul; + break; + case UsartRxTimeOut: + USARTx->CR1_f.CRTOF = 1ul; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Configure USART function. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enFunc USART function selection + ** \arg UsartTimeOut UART RX timeout function + ** \arg UsartTimeOutInt UART RX timeout interrupt function + ** \arg UsartRx UART RX function + ** \arg UsartTx UART TX function + ** \arg UsartSilentMode USART silent function + ** \arg UsartRxInt USART RX interrupt function + ** \arg UsartTxCmpltInt USART TX complete interrupt function + ** \arg UsartTxEmptyInt USART TX empty interrupt function + ** \arg UsartParityCheck USART Parity check function + ** \arg UsartFracBaudrate USART fractional baudrate function + ** \arg UsartNoiseFilter USART noise filter function + ** \param [in] enCmd USART functional state + ** \arg Enable Enable the specified USART function + ** \arg Disable Disable the specified USART function + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx == NULL + ** + ******************************************************************************/ +en_result_t USART_FuncCmd(M4_USART_TypeDef *USARTx, + en_usart_func_t enFunc, + en_functional_state_t enCmd) +{ + uint32_t u32Addr; + __IO stc_usart_cr1_field_t CR1_f; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + enRet = Ok; + switch(enFunc) + { + case UsartRx: + USARTx->CR1_f.RE = (uint32_t)enCmd; + break; + case UsartRxInt: + USARTx->CR1_f.RIE = (uint32_t)enCmd; + break; + case UsartTx: + USARTx->CR1_f.TE = (uint32_t)enCmd; + break; + case UsartTxEmptyInt: + USARTx->CR1_f.TXEIE = (uint32_t)enCmd; + break; + case UsartTimeOut: + USARTx->CR1_f.RTOE = (uint32_t)enCmd; + break; + case UsartTimeOutInt: + USARTx->CR1_f.RTOIE = (uint32_t)enCmd; + break; + case UsartSilentMode: + USARTx->CR1_f.SLME = (uint32_t)enCmd; + break; + case UsartParityCheck: + USARTx->CR1_f.PCE = (uint32_t)enCmd; + break; + case UsartNoiseFilter: + USARTx->CR1_f.NFE = (uint32_t)enCmd; + break; + case UsartTxCmpltInt: + USARTx->CR1_f.TCIE = (uint32_t)enCmd; + break; + case UsartTxAndTxEmptyInt: + CR1_f = USARTx->CR1_f; + CR1_f.TE = (uint32_t)enCmd; + CR1_f.TXEIE = (uint32_t)enCmd; + u32Addr = (uint32_t)&CR1_f; + USARTx->CR1 = *(__IO uint32_t *)u32Addr; + break; + case UsartFracBaudrate: + USARTx->CR1_f.FBME = (uint32_t)enCmd; + break; + case UsartMulProcessor: + USARTx->CR2_f.MPE = (uint32_t)enCmd; + break; + case UsartSmartCard: + USARTx->CR3_f.SCEN = (uint32_t)enCmd; + break; + case UsartCts: + USARTx->CR3_f.CTSE = (uint32_t)enCmd; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set USART parity bit. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enParity USART parity selection + ** \arg UsartParityNone USART none parity + ** \arg UsartParityEven USART even parity + ** \arg UsartParityOdd USART odd parity + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx is invalid + ** - enParity is invalid + ** + ******************************************************************************/ +en_result_t USART_SetParity(M4_USART_TypeDef *USARTx, + en_usart_parity_t enParity) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + enRet = Ok; + switch(enParity) + { + case UsartParityNone: + USARTx->CR1_f.PCE = (uint32_t)0ul; + break; + case UsartParityEven: + USARTx->CR1_f.PS = (uint32_t)0ul; + USARTx->CR1_f.PCE = (uint32_t)1u; + break; + case UsartParityOdd: + USARTx->CR1_f.PS = (uint32_t)1ul; + USARTx->CR1_f.PCE = (uint32_t)1ul; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART parity bit. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartParityNone USART none parity + ** \retval UsartParityEven USART even parity + ** \retval UsartParityOdd USART odd parity + ** + ******************************************************************************/ +en_usart_parity_t USART_GetParity(M4_USART_TypeDef *USARTx) +{ + en_usart_parity_t enParity = UsartParityNone; + + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + if(0ul == USARTx->CR1_f.PCE) + { + enParity = UsartParityNone; + } + else if(0ul == USARTx->CR1_f.PS) + { + enParity = UsartParityEven; + } + else + { + enParity = UsartParityOdd; + } + + return enParity; +} + +/** + ******************************************************************************* + ** \brief Set USART over sampling. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enSampleMode USART parity selection + ** \arg UsartSampleBit16 16 Bit + ** \arg UsartSampleBit8 8 Bit + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetOverSampling(M4_USART_TypeDef *USARTx, + en_usart_sample_mode_t enSampleMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_SAMPLE_MODE(enSampleMode)); + + USARTx->CR1_f.OVER8 = (uint32_t)enSampleMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART over sampling. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartSampleBit16 16 Bit + ** \retval UsartSampleBit8 8 Bit + ** + ******************************************************************************/ +en_usart_sample_mode_t USART_GetOverSampling(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_sample_mode_t)USARTx->CR1_f.OVER8; +} + +/** + ******************************************************************************* + ** \brief Set USART data transfer direction. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enDir USART data direction selection + ** \arg UsartDataLsbFirst USART data LSB first + ** \arg UsartDataMsbFirst USART data MSB first + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetTransferDirection(M4_USART_TypeDef *USARTx, + en_usart_data_dir_t enDir) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_DATA_DIR(enDir)); + + USARTx->CR1_f.ML = (uint32_t)enDir; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART data transfer direction. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartDataLsbFirst USART data LSB first + ** \retval UsartDataMsbFirst USART data MSB first + ** + ******************************************************************************/ +en_usart_data_dir_t USART_GetTransferDirection(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_data_dir_t)(USARTx->CR1_f.ML); +} + +/** + ******************************************************************************* + ** \brief Set USART data bit length. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enDataLen USART data bit length + ** \arg UsartDataBits8 8 Bit + ** \arg UsartDataBits8 9 Bit + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetDataLength(M4_USART_TypeDef *USARTx, + en_usart_data_len_t enDataLen) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_DATA_LEN(enDataLen)); + + USARTx->CR1_f.M = (uint32_t)enDataLen; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART data bit length. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartDataBits8 Data bit length:8 Bits + ** \retval UsartDataBits8 Data bit length:9 Bits + ** + ******************************************************************************/ +en_usart_data_len_t USART_GetDataLength(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_data_len_t)(USARTx->CR1_f.M); +} + +/** + ******************************************************************************* + ** \brief Set USART clock mode. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enClkMode USART clock mode selection + ** \arg UsartExtClk Select external clock source + ** \arg UsartIntClkCkOutput Select internal clock source and output clock + ** \arg UsartIntClkCkNoOutput Select internal clock source and don't output clock + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetClkMode(M4_USART_TypeDef *USARTx, + en_usart_clk_mode_t enClkMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_CLK_MODE(enClkMode)); + + USARTx->CR2_f.CLKC = (uint32_t)enClkMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART clock mode. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartExtClk Select external clock source + ** \retval UsartIntClkCkOutput Select internal clock source and output clock + ** \retval UsartIntClkCkNoOutput Select internal clock source and don't output clock + ** + ******************************************************************************/ +en_usart_clk_mode_t USART_GetClkMode(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_clk_mode_t)(USARTx->CR2_f.CLKC); +} + +/** + ******************************************************************************* + ** \brief Set USART mode. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enMode USART clock mode selection + ** \arg UsartUartMode UART mode + ** \arg UsartClkSyncMode Clock sync mode + ** \arg UsartSmartCardMode Smart card mode + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter If one of following cases matches: + ** - USARTx is invalid + ** - enMode is invalid + ** + ******************************************************************************/ +en_result_t USART_SetMode(M4_USART_TypeDef *USARTx, + en_usart_mode_t enMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if(IS_VALID_USART(USARTx)) + { + enRet = Ok; + switch(enMode) + { + case UsartUartMode: + USARTx->CR3_f.SCEN = (uint32_t)0ul; + USARTx->CR1_f.MS = (uint32_t)0ul; + break; + case UsartClkSyncMode: + USARTx->CR3_f.SCEN = (uint32_t)0ul; + USARTx->CR1_f.MS = (uint32_t)1ul; + break; + case UsartSmartCardMode: + USARTx->CR3_f.SCEN = (uint32_t)1ul; + break; + default: + enRet = ErrorInvalidParameter; + break; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART mode. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartUartMode UART mode + ** \retval UsartClkSyncMode Clock sync mode + ** \retval UsartSmartCardMode Smart card mode + ** + ******************************************************************************/ +en_usart_mode_t USART_GetMode(M4_USART_TypeDef *USARTx) +{ + en_usart_mode_t enMode; + + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + if (1ul == USARTx->CR3_f.SCEN) + { + enMode = UsartSmartCardMode; + } + else if (1ul == USARTx->CR1_f.MS) + { + enMode = UsartClkSyncMode; + } + else + { + enMode = UsartUartMode; + } + + return enMode; +} + +/** + ******************************************************************************* + ** \brief Set USART stop bit length. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enStopBit USART stop bit selection + ** \arg UsartOneStopBit 1 Stop Bit + ** \arg UsartTwoStopBits 2 Stop Bit + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetStopBitsLength(M4_USART_TypeDef *USARTx, + en_usart_stop_bit_t enStopBit) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_STOP_BIT(enStopBit)); + + USARTx->CR2_f.STOP = (uint32_t)enStopBit; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART stop bit length. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartOneStopBit 1 Stop Bit + ** \retval UsartTwoStopBits 2 Stop Bit + ** + ******************************************************************************/ +en_usart_stop_bit_t USART_GetStopBitsLength(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_stop_bit_t)(USARTx->CR2_f.STOP); +} + +/** + ******************************************************************************* + ** \brief Set USART detect mode. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enDetectMode USART start bit detect mode + ** \arg UsartStartBitLowLvl Start bit: RD pin low level + ** \arg UsartStartBitFallEdge Start bit: RD pin falling edge + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetSbDetectMode(M4_USART_TypeDef *USARTx, + en_usart_sb_detect_mode_t enDetectMode) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_SB_DETECT_MODE(enDetectMode)); + + USARTx->CR1_f.SBS = (uint32_t)enDetectMode; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART detect mode. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartStartBitLowLvl Start bit: RD pin low level + ** \retval UsartStartBitFallEdge Start bit: RD pin falling edge + ** + ******************************************************************************/ +en_usart_sb_detect_mode_t USART_GetSbDetectMode(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_sb_detect_mode_t)(USARTx->CR1_f.SBS); +} + + +/** + ******************************************************************************* + ** \brief Set USART hardware flow control. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enHwFlowCtrl Hardware flow control + ** \arg UsartRtsEnable Enable RTS + ** \arg UsartCtsEnable Enable CTS + ** + ** \retval Ok Set successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetHwFlowCtrl(M4_USART_TypeDef *USARTx, + en_usart_hw_flow_ctrl_t enHwFlowCtrl) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_HW_FLOW_MODE(enHwFlowCtrl)); + + USARTx->CR3_f.CTSE = (uint32_t)enHwFlowCtrl; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART hardware flow control. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartRtsEnable Enable RTS + ** \retval UsartCtsEnable Enable CTS + ** + ******************************************************************************/ +en_usart_hw_flow_ctrl_t USART_GetHwFlowCtrl(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_hw_flow_ctrl_t)(USARTx->CR3_f.CTSE); +} + +/** + ******************************************************************************* + ** \brief Set USART clock prescale. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enClkPrescale USART clock prescale + ** \arg UsartClkDiv_0 PCLK/1 + ** \arg UsartClkDiv_4 PCLK/4 + ** \arg UsartClkDiv_16 PCLK/16 + ** \arg UsartClkDiv_64 PCLK/64 + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetClockDiv(M4_USART_TypeDef *USARTx, + en_usart_clk_div_t enClkPrescale) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_CLK_DIV(enClkPrescale)); + + USARTx->PR_f.PSC = (uint32_t)enClkPrescale; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART clock division. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartClkDiv_0 PCLK/1 + ** \retval UsartClkDiv_4 PCLK/4 + ** \retval UsartClkDiv_16 PCLK/16 + ** \retval UsartClkDiv_64 PCLK/64 + ** + ******************************************************************************/ +en_usart_clk_div_t USART_GetClockDiv(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_clk_div_t)(USARTx->PR_f.PSC); +} + +/** + ******************************************************************************* + ** \brief Set USART ETU clocks of smart card. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] enEtuClk ETU clocks of smart card + ** \arg UsartScEtuClk32 1 etu = 32/f + ** \arg UsartScEtuClk64 1 etu = 64/f + ** \arg UsartScEtuClk93 1 etu = 93/f + ** \arg UsartScEtuClk128 1 etu = 128/f + ** \arg UsartScEtuClk186 1 etu = 186/f + ** \arg UsartScEtuClk256 1 etu = 256/f + ** \arg UsartScEtuClk372 1 etu = 372/f + ** \arg UsartScEtuClk512 1 etu = 512/f + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetScEtuClk(M4_USART_TypeDef *USARTx, + en_usart_sc_etu_clk_t enEtuClk) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + /* Check parameter */ + DDL_ASSERT(IS_VALID_USART_ETU_CLK(enEtuClk)); + + USARTx->CR3_f.BCN = (uint32_t)enEtuClk; + enRet = Ok; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set USART ETU clocks of smart card. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval UsartScEtuClk32 1 etu = 32/f + ** \retval UsartScEtuClk64 1 etu = 64/f + ** \retval UsartScEtuClk93 1 etu = 93/f + ** \retval UsartScEtuClk128 1 etu = 128/f + ** \retval UsartScEtuClk186 1 etu = 186/f + ** \retval UsartScEtuClk256 1 etu = 256/f + ** \retval UsartScEtuClk372 1 etu = 372/f + ** \retval UsartScEtuClk512 1 etu = 512/f + ** + ******************************************************************************/ +en_usart_sc_etu_clk_t USART_GetScEtuClk(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return (en_usart_sc_etu_clk_t)(USARTx->CR3_f.BCN); +} + +/** + ****************************************************************************** + ** \brief Write UART data buffer + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] u16Data Send data + ** + ** \retval Ok Data has been successfully sent + ** + ******************************************************************************/ +en_result_t USART_SendData(M4_USART_TypeDef *USARTx, uint16_t u16Data) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + USARTx->DR_f.TDR = (uint32_t)u16Data; + + return Ok; +} + +/** + ******************************************************************************* + ** \brief Read UART data buffer + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval Receive data + ** + ******************************************************************************/ +uint16_t USART_RecData(M4_USART_TypeDef *USARTx) +{ + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + return ((uint16_t)(USARTx->DR_f.RDR)); +} + +/** + ******************************************************************************* + ** \brief Set USART baudrate + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] u32Baudrate Baudrate + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +en_result_t USART_SetBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate) +{ + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + if(1ul == USARTx->CR3_f.SCEN) + { + enRet = SetScBaudrate(USARTx, u32Baudrate); + } + else if(1ul == USARTx->CR1_f.MS) + { + enRet = SetClkSyncBaudrate(USARTx, u32Baudrate); + } + else + { + enRet = SetUartBaudrate(USARTx, u32Baudrate); + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set UART mode baudrate + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] u32Baudrate Baudrate + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +static en_result_t SetUartBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate) +{ + uint32_t B = 0ul; + uint32_t C = 0ul; + uint32_t OVER8 = 0ul; + float32_t DIV = 0.0f; + uint64_t u64Tmp = 0u; + uint32_t DIV_Integer = 0ul; + uint32_t DIV_Fraction = 0xFFFFFFFFul; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + C = UsartGetClk(USARTx); + + if (C > 0ul) + { + B = u32Baudrate; + OVER8 = USARTx->CR1_f.OVER8; + /* FBME = 0 Calculation formula */ + /* B = C / (8 * (2 - OVER8) * (DIV_Integer + 1)) */ + /* DIV_Integer = (C / (B * 8 * (2 - OVER8))) - 1 */ + DIV = ((float)C / ((float)B * 8.0f * (2.0f - (float)OVER8))) - 1.0f; + DIV_Integer = (uint32_t)(DIV); + + if (!((DIV < 0.0f) || (DIV_Integer > 0xFFul))) + { + enRet = Ok; + if ((DIV - (float32_t)DIV_Integer) > 0.00001f) + { + /* FBME = 1 Calculation formula */ + /* B = C * (128 + DIV_Fraction) / (8 * (2 - OVER8) * (DIV_Integer + 1) * 256) */ + /* DIV_Fraction = ((8 * (2 - OVER8) * (DIV_Integer + 1) * 256 * B) / C) - 128 */ + /* E = (C * (128 + DIV_Fraction) / (8 * (2 - OVER8) * (DIV_Integer + 1) * 256 * B)) - 1 */ + /* DIV_Fraction = (((2 - OVER8) * (DIV_Integer + 1) * 2048 * B) / C) - 128 */ + u64Tmp = (uint64_t)(((uint64_t)2ul - (uint64_t)OVER8) * ((uint64_t)DIV_Integer + 1ul) * (uint64_t)B); + DIV_Fraction = (uint32_t)(2048ul * u64Tmp / C - 128ul); + if (DIV_Fraction > 0x7Ful) + { + enRet = ErrorInvalidParameter; + } + } + + if (Ok == enRet) + { + USARTx->CR1_f.FBME = (DIV_Fraction > 0x7Ful) ? 0ul : 1ul; + USARTx->BRR_f.DIV_FRACTION = DIV_Fraction; + USARTx->BRR_f.DIV_INTEGER = DIV_Integer; + } + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set smart card mode baudrate + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] u32Baudrate Baudrate + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +static en_result_t SetScBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate) +{ + uint32_t B = 0ul; + uint32_t C = 0ul; + uint32_t S = 0ul; + float32_t DIV = 0.0f; + uint64_t u64Tmp = 0u; + uint32_t DIV_Integer = 0ul; + uint32_t DIV_Fraction = 0xFFFFFFFFul; + const uint16_t au16EtuClkCnts[] = {32u, 64u, 93u, 128u, 186u, 256u, 372u, 512u}; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + C = UsartGetClk(USARTx); + + if (C > 0ul) + { + B = u32Baudrate; + S = au16EtuClkCnts[USARTx->CR3_f.BCN]; + + /* FBME = 0 Calculation formula */ + /* B = C / (2 * S * (DIV_Integer + 1)) */ + /* DIV_Integer = (C / (B * 2 * S)) - 1 */ + DIV = ((float)C / ((float)B * (float)S * 2.0f)) - 1.0f; + DIV_Integer = (uint32_t)DIV; + + if (!((DIV < 0.0f) || (DIV_Integer > 0xFFul))) + { + enRet = Ok; + if ((DIV - (float32_t)DIV_Integer) > 0.00001f) + { + /* FBME = 1 Calculation formula */ + /* B = C * (128 + DIV_Fraction) / ((2 * S) * (DIV_Integer + 1) * 256) */ + /* DIV_Fraction = ((2 * S) * (DIV_Integer + 1) * 256 * B / C) - 128 */ + /* DIV_Fraction = ((DIV_Integer + 1) * B * S * 512 / C) - 128 */ + u64Tmp = (uint64_t)(((uint64_t)DIV_Integer + 1ul) * B * S); + DIV_Fraction = (uint32_t)(512ul * u64Tmp / C - 128ul); + if (DIV_Fraction > 0x7Ful) + { + enRet = ErrorInvalidParameter; + } + } + + if (Ok == enRet) + { + USARTx->CR1_f.FBME = (DIV_Fraction > 0x7Ful) ? 0ul : 1ul; + USARTx->BRR_f.DIV_FRACTION = DIV_Fraction; + USARTx->BRR_f.DIV_INTEGER = DIV_Integer; + } + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set synchronous clock mode baudrate + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** \param [in] u32Baudrate Baudrate + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +static en_result_t SetClkSyncBaudrate(M4_USART_TypeDef *USARTx, + uint32_t u32Baudrate) +{ + uint32_t C = 0ul; + uint32_t B = 0ul; + uint64_t u64Tmp = 0u; + float32_t DIV = 0.0f; + uint32_t DIV_Integer = 0ul; + uint32_t DIV_Fraction = 0xFFFFFFFFul; + en_result_t enRet = ErrorInvalidParameter; + + /* Check USARTx pointer */ + if (IS_VALID_USART(USARTx)) + { + C = UsartGetClk(USARTx); + if (C > 0ul) + { + B = u32Baudrate; + + /* FBME = 0 Calculation formula */ + /* B = C / (4 * (DIV_Integer + 1)) */ + /* DIV_Integer = (C / (B * 4)) - 1 */ + DIV = ((float)C / ((float)B * 4.0f)) - 1.0f; + DIV_Integer = (uint32_t)DIV; + + if (!((DIV < 0.0f) || (DIV_Integer > 0xFFul))) + { + enRet = Ok; + if ((DIV - (float32_t)DIV_Integer) > 0.00001f) + { + /* FBME = 1 Calculation formula */ + /* B = C * (128 + DIV_Fraction) / (4 * (DIV_Integer + 1) * 256) */ + /* DIV_Fraction = (4 * (DIV_Integer + 1) * 256 * B / C) - 128 */ + /* DIV_Fraction = ((DIV_Integer + 1) * B * 1024 / C) - 128 */ + u64Tmp = (uint64_t)(((uint64_t)DIV_Integer + 1ul) * (uint64_t)B); + DIV_Fraction = (uint32_t)(1024ul * u64Tmp / C - 128ul); + if (DIV_Fraction > 0x7Ful) + { + enRet = ErrorInvalidParameter; + } + } + + if (Ok == enRet) + { + USARTx->CR1_f.FBME = (DIV_Fraction > 0x7Ful) ? 0ul : 1ul; + USARTx->BRR_f.DIV_FRACTION = DIV_Fraction; + USARTx->BRR_f.DIV_INTEGER = DIV_Integer; + } + } + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get USART clock + ** + ** \param [in] USARTx Pointer to USART instance register base + ** \arg M4_USART1 USART unit 1 instance register base + ** \arg M4_USART2 USART unit 2 instance register base + ** \arg M4_USART3 USART unit 3 instance register base + ** \arg M4_USART4 USART unit 4 instance register base + ** + ** \retval USART clock frequency + ** + ******************************************************************************/ +static uint32_t UsartGetClk(const M4_USART_TypeDef *USARTx) +{ + uint32_t u32PClk1 = 0ul; + uint32_t u32UartClk = 0ul; + + /* Check USARTx pointer */ + DDL_ASSERT(IS_VALID_USART(USARTx)); + + u32PClk1 = SystemCoreClock / (1ul << M4_SYSREG->CMU_SCFGR_f.PCLK1S); + u32UartClk = u32PClk1 / (1ul << (2ul * USARTx->PR_f.PSC)); + + return u32UartClk; +} + +//@} // UsartGroup + +#endif /* DDL_USART_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_utility.c b/driver/src/hc32f460_utility.c new file mode 100644 index 0000000..e619d64 --- /dev/null +++ b/driver/src/hc32f460_utility.c @@ -0,0 +1,531 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_utility.c + ** + ** A detailed description is available at + ** @link DdlUtilityGroup Ddl Utility description @endlink + ** + ** - 2018-11-02 CDT First version for Device Driver Library Utility. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_utility.h" + +#if (DDL_UTILITY_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup DdlUtilityGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +#if (DDL_PRINT_ENABLE == DDL_ON) +/*!< Parameter valid check for USART Instances. */ +#define IS_VALID_UART(x) \ +( (M4_USART1 == (x)) || \ + (M4_USART2 == (x)) || \ + (M4_USART3 == (x)) || \ + (M4_USART4 == (x))) + +#define UART_EnableClk(x) \ +do { \ + if (M4_USART1 == (x)) \ + { \ + M4_MSTP->FCG1_f.USART1 = 0ul; \ + } \ + else if (M4_USART2 == (x)) \ + { \ + M4_MSTP->FCG1_f.USART2 = 0ul; \ + } \ + else if (M4_USART3 == (x)) \ + { \ + M4_MSTP->FCG1_f.USART3 = 0ul; \ + } \ + else \ + { \ + M4_MSTP->FCG1_f.USART4 = 0ul; \ + } \ +} while (0) +#endif + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ +static uint32_t m_u32TickStep = 0UL; +static __IO uint32_t m_u32TickCount = 0UL; + +#if (DDL_PRINT_ENABLE == DDL_ON) +static M4_USART_TypeDef *m_PrintfDevice; +static uint32_t m_u32PrintfTimeout; +#endif + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +#if (DDL_PRINT_ENABLE == DDL_ON) +/** + ******************************************************************************* + ** \brief UART transmit. + ** + ** \param [in] USARTx Pointer to USART instance register base + ** This parameter can be one of the following values: + ** @arg M4_USART1: USART unit 1 instance register base + ** @arg M4_USART2: USART unit 2 instance register base + ** @arg M4_USART3: USART unit 3 instance register base + ** @arg M4_USART4: USART unit 4 instance register base + ** \param [in] cData The data for transmitting + ** + ** \retval An en_result_t enumeration value: + ** - Ok: Send successfully + ** - ErrorTimeout: Send timeout + ** - ErrorInvalidParameter: The parameter USARTx is invalid + ** + ******************************************************************************/ +static en_result_t UartPutChar(M4_USART_TypeDef *USARTx, char cData) +{ + uint32_t u32TxEmpty; + en_result_t enRet = ErrorInvalidParameter; + __IO uint32_t u32Timeout = m_u32PrintfTimeout; + + if (NULL != USARTx) + { + /* Wait TX data register empty */ + do + { + u32Timeout--; + u32TxEmpty = USARTx->SR_f.TXE; + } while ((u32Timeout > 0ul) && (0ul == u32TxEmpty)); + + if (u32TxEmpty > 0ul) + { + USARTx->DR = (uint32_t)cData; + enRet = Ok; + } + else + { + enRet = ErrorTimeout; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Set synchronous clock mode baudrate + ** + ** \param [in] USARTx Pointer to USART instance register base + ** This parameter can be one of the following values: + ** @arg M4_USART1: USART unit 1 instance register base + ** @arg M4_USART2: USART unit 2 instance register base + ** @arg M4_USART3: USART unit 3 instance register base + ** @arg M4_USART4: USART unit 4 instance register base + ** \param [in] u32Baudrate Baudrate + ** + ** \retval Ok Configure successfully. + ** \retval ErrorInvalidParameter USARTx is invalid + ** + ******************************************************************************/ +static en_result_t SetUartBaudrate(M4_USART_TypeDef *USARTx, uint32_t u32Baudrate) +{ + uint32_t B; + uint32_t C; + uint32_t OVER8; + float32_t DIV; + uint64_t u64Tmp; + uint32_t DIV_Integer; + uint32_t DIV_Fraction; + uint32_t u32PClk1; + uint32_t u32UartClk; + en_result_t enRet = ErrorInvalidParameter; + + u32PClk1 = SystemCoreClock / (1ul << (M4_SYSREG->CMU_SCFGR_f.PCLK1S)); + u32UartClk = u32PClk1 / (1ul << (2ul * (USARTx->PR_f.PSC))); + + B = u32Baudrate; + C = u32UartClk; + DIV_Fraction = 0ul; + + if ((0ul != C) && (0ul != B)) + { + OVER8 = USARTx->CR1_f.OVER8; + + /* FBME = 0 Calculation formula */ + /* B = C / (8 * (2 - OVER8) * (DIV_Integer + 1)) */ + /* DIV_Integer = (C / (B * 8 * (2 - OVER8))) - 1 */ + DIV = ((float)C / ((float)B * 8.0f * (2.0f - (float)OVER8))) - 1.0f; + DIV_Integer = (uint32_t)(DIV); + + if ((DIV < 0.0f) || (DIV_Integer > 0xFFul)) + { + enRet = ErrorInvalidParameter; + } + else + { + if ((DIV - (float32_t)DIV_Integer) > 0.00001f) + { + /* FBME = 1 Calculation formula */ + /* B = C * (128 + DIV_Fraction) / (8 * (2 - OVER8) * (DIV_Integer + 1) * 256) */ + /* DIV_Fraction = ((8 * (2 - OVER8) * (DIV_Integer + 1) * 256 * B) / C) - 128 */ + /* E = (C * (128 + DIV_Fraction) / (8 * (2 - OVER8) * (DIV_Integer + 1) * 256 * B)) - 1 */ + /* DIV_Fraction = (((2 - OVER8) * (DIV_Integer + 1) * 2048 * B) / C) - 128 */ + u64Tmp = (2u - (uint64_t)OVER8) * ((uint64_t)DIV_Integer + 1u) * (uint64_t)B; + DIV_Fraction = (uint32_t)(2048ul * u64Tmp/C - 128ul); + } + + USARTx->CR1_f.FBME = (DIV_Fraction > 0UL) ? 1ul : 0ul; + USARTx->BRR_f.DIV_FRACTION = DIV_Fraction; + USARTx->BRR_f.DIV_INTEGER = DIV_Integer; + enRet = Ok; + } + } + + return enRet; +} + +#if defined ( __GNUC__ ) && !defined (__CC_ARM) +/** + ******************************************************************************* + ** \brief Re-target _write function. + ** + ** \param [in] fd + ** \param [in] data + ** \param [in] size + ** + ** \retval int32_t + ** + ******************************************************************************/ +int32_t _write(int fd, char data[], int32_t size) +{ + int32_t i = -1; + + if (NULL != data) + { + (void)fd; /* Prevent unused argument compilation warning */ + + for (i = 0; i < size; i++) + { + if (Ok != UartPutChar(m_PrintfDevice, data[i])) + { + break; + } + } + } + + return i ? i : -1; +} + +#else +/** + ******************************************************************************* + ** \brief Re-target fputc function. + ** + ** \param [in] ch + ** \param [in] f + ** + ** \retval int32_t + ** + ******************************************************************************/ +int32_t fputc(int32_t ch, FILE *f) +{ + (void)f; /* Prevent unused argument compilation warning */ + + return (Ok == UartPutChar(m_PrintfDevice, (char)ch)) ? ch: -1; +} +#endif + +/** + ******************************************************************************* + ** \brief Debug printf initialization function + ** + ** \param [in] UARTx Pointer to USART instance register base + ** This parameter can be one of the following values: + ** @arg M4_USART1: USART unit 1 instance register base + ** @arg M4_USART2: USART unit 2 instance register base + ** @arg M4_USART3: USART unit 3 instance register base + ** @arg M4_USART4: USART unit 4 instance register base + ** \param [in] u32Baudrate Baudrate + ** \param [in] PortInit The pointer of printf port initialization function + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t UART_PrintfInit(M4_USART_TypeDef *UARTx, + uint32_t u32Baudrate, + void (*PortInit)(void)) +{ + en_result_t enRet = ErrorInvalidParameter; + + if (IS_VALID_UART(UARTx) && (0ul != u32Baudrate) && (NULL != PortInit)) + { + /* Initialize port */ + PortInit(); + + /* Enable clock */ + UART_EnableClk(UARTx); + + /* Initialize USART */ + UARTx->CR1_f.ML = 0ul; /* LSB */ + UARTx->CR1_f.MS = 0ul; /* UART mode */ + UARTx->CR1_f.OVER8 = 1ul; /* 8bit sampling mode */ + UARTx->CR1_f.M = 0ul; /* 8 bit data length */ + UARTx->CR1_f.PCE = 0ul; /* no parity bit */ + + /* Set baudrate */ + if(Ok != SetUartBaudrate(UARTx, u32Baudrate)) + { + enRet = Error; + } + else + { + UARTx->CR2 = 0ul; /* 1 stop bit, single uart mode */ + UARTx->CR3 = 0ul; /* CTS disable, Smart Card mode disable */ + UARTx->CR1_f.TE = 1ul; /* TX enable */ + + m_PrintfDevice = UARTx; + m_u32PrintfTimeout = (SystemCoreClock / u32Baudrate); + } + } + + return enRet; +} +#endif /* DDL_PRINT_ENABLE */ + +/** + ******************************************************************************* + ** \brief Delay function, delay 1ms approximately + ** + ** \param [in] u32Cnt ms + ** + ** \retval none + ** + ******************************************************************************/ +void Ddl_Delay1ms(uint32_t u32Cnt) +{ + volatile uint32_t i; + uint32_t u32Cyc; + + u32Cyc = SystemCoreClock; + u32Cyc = u32Cyc / 10000ul; + while (u32Cnt-- > 0ul) + { + i = u32Cyc; + while (i-- > 0ul) + { + ; + } + } +} + +/** + ******************************************************************************* + ** \brief Delay function, delay 1us approximately + ** + ** \param [in] u32Cnt us + ** + ** \retval none + ** + ******************************************************************************/ +void Ddl_Delay1us(uint32_t u32Cnt) +{ + uint32_t u32Cyc; + volatile uint32_t i; + + if(SystemCoreClock > 10000000ul) + { + u32Cyc = SystemCoreClock / 10000000ul; + while(u32Cnt-- > 0ul) + { + i = u32Cyc; + while (i-- > 0ul) + { + ; + } + } + } + else + { + while(u32Cnt-- > 0ul) + { + ; + } + } +} + +/** + ******************************************************************************* + ** \brief This function Initializes the interrupt frequency of the SysTick. + ** + ** \param [in] u32Freq SysTick interrupt frequency (1 to 1000). + ** + ** \retval Ok SysTick Initializes succeed + ** \retval Error SysTick Initializes failed + ** + ******************************************************************************/ +__WEAKDEF en_result_t SysTick_Init(uint32_t u32Freq) +{ + en_result_t enRet = Error; + + if ((0UL != u32Freq) && (u32Freq <= 1000UL)) + { + m_u32TickStep = 1000UL / u32Freq; + /* Configure the SysTick interrupt */ + if (0UL == SysTick_Config(SystemCoreClock / u32Freq)) + { + enRet = Ok; + } + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief This function provides minimum delay (in milliseconds). + ** + ** \param [in] u32Delay Delay specifies the delay time. + ** + ** \retval None + ** + ******************************************************************************/ +__WEAKDEF void SysTick_Delay(uint32_t u32Delay) +{ + const uint32_t tickStart = SysTick_GetTick(); + uint32_t tickEnd; + uint32_t tickMax; + + if (m_u32TickStep != 0UL) + { + tickMax = 0xFFFFFFFFUL / m_u32TickStep * m_u32TickStep; + /* Add a freq to guarantee minimum wait */ + if ((u32Delay >= tickMax) || ((tickMax - u32Delay) < m_u32TickStep)) + { + tickEnd = tickMax; + } + else + { + tickEnd = u32Delay + m_u32TickStep; + } + + while ((SysTick_GetTick() - tickStart) < tickEnd) + { + } + } +} + +/** + ******************************************************************************* + ** \brief This function is called to increment a global variable "u32TickCount". + ** \note This variable is incremented in SysTick ISR. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +__WEAKDEF void SysTick_IncTick(void) +{ + m_u32TickCount += m_u32TickStep; +} + +/** + ******************************************************************************* + ** \brief Provides a tick value in millisecond. + ** + ** \param None + ** + ** \retval Tick value + ** + ******************************************************************************/ +__WEAKDEF uint32_t SysTick_GetTick(void) +{ + return m_u32TickCount; +} + +/** + ******************************************************************************* + ** \brief Suspend SysTick increment. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +__WEAKDEF void SysTick_Suspend(void) +{ + /* Disable SysTick Interrupt */ + SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; +} + +/** + ******************************************************************************* + ** \brief Resume SysTick increment. + ** + ** \param None + ** + ** \retval None + ** + ******************************************************************************/ +__WEAKDEF void SysTick_Resume(void) +{ + /* Enable SysTick Interrupt */ + SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; +} + +/** + ******************************************************************************* + ** \brief ddl assert error handle function + ** + ** \param [in] file Point to the current assert the wrong file + ** \param [in] line Point line assert the wrong file in the current + ** + ******************************************************************************/ +#ifdef __DEBUG +__WEAKDEF void Ddl_AssertHandler(uint8_t *file, int16_t line) +{ + /* Users can re-implement this function to print information */ +#if (DDL_PRINT_ENABLE == DDL_ON) + printf("Wrong parameters value: file %s on line %d\r\n", file, line); +#else + (void)file; + (void)line; +#endif + for (;;) + { + ; + } +} +#endif /* __DEBUG */ + +//@} // DdlUtilityGroup + +#endif /* DDL_UTILITY_ENABLE */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/driver/src/hc32f460_wdt.c b/driver/src/hc32f460_wdt.c new file mode 100644 index 0000000..c4c56d9 --- /dev/null +++ b/driver/src/hc32f460_wdt.c @@ -0,0 +1,254 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32f460_wdt.c + ** + ** A detailed description is available at + ** @link WdtGroup Watchdog Counter description @endlink + ** + ** - 2018-10-18 CDT First version for Device Driver Library of WDT. + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32f460_wdt.h" +#include "hc32f460_utility.h" + +#if (DDL_WDT_ENABLE == DDL_ON) + +/** + ******************************************************************************* + ** \addtogroup WdtGroup + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Local type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Local pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*!< Parameter validity check for count cycle */ +#define IS_VALID_COUNT_CYCLE(x) \ +( (WdtCountCycle256 == (x)) || \ + (WdtCountCycle4096 == (x)) || \ + (WdtCountCycle16384 == (x)) || \ + (WdtCountCycle65536 == (x))) + +/*!< Parameter validity check for clock division */ +#define IS_VALID_CLOCK_DIV(x) \ +( (WdtPclk3Div4 == (x)) || \ + (WdtPclk3Div64 == (x)) || \ + (WdtPclk3Div128 == (x)) || \ + (WdtPclk3Div256 == (x)) || \ + (WdtPclk3Div512 == (x)) || \ + (WdtPclk3Div1024 == (x)) || \ + (WdtPclk3Div2048 == (x)) || \ + (WdtPclk3Div8192 == (x))) + +/*!< Parameter validity check for allow refresh percent range */ +#define IS_VALID_ALLOW_REFRESH_RANGE(x) \ +( (WdtRefresh100Pct == (x)) || \ + (WdtRefresh0To25Pct == (x)) || \ + (WdtRefresh25To50Pct == (x)) || \ + (WdtRefresh0To50Pct == (x)) || \ + (WdtRefresh50To75Pct == (x)) || \ + (WdtRefresh0To25PctAnd50To75Pct == (x)) || \ + (WdtRefresh25To75Pct == (x)) || \ + (WdtRefresh0To75Pct == (x)) || \ + (WdtRefresh75To100Pct == (x)) || \ + (WdtRefresh0To25PctAnd75To100Pct == (x)) || \ + (WdtRefresh25To50PctAnd75To100Pct == (x)) || \ + (WdtRefresh0To50PctAnd75To100Pct == (x)) || \ + (WdtRefresh50To100Pct == (x)) || \ + (WdtRefresh0To25PctAnd50To100Pct == (x)) || \ + (WdtRefresh25To100Pct == (x)) || \ + (WdtRefresh0To100Pct == (x))) + +/*!< Parameter validity check for event request type */ +#define IS_VALID_EVENT_REQUEST_TYPE(x) \ +( (WdtTriggerInterruptRequest == (x)) || \ + (WdtTriggerResetRequest == (x))) + +/*!< Parameter validity check for flag type */ +#define IS_VALID_FLAG_TYPE(x) \ +( (WdtFlagCountUnderflow == (x)) || \ + (WdtFlagRefreshError == (x))) + +/*!< WDT_RR register refresh key */ +#define WDT_REFRESH_START_KEY ((uint16_t)0x0123) +#define WDT_REFRESH_END_KEY ((uint16_t)0x3210) + +/******************************************************************************* + * Global variable definitions (declared in header file with 'extern') + ******************************************************************************/ + +/******************************************************************************* + * Local function prototypes ('static') + ******************************************************************************/ + +/******************************************************************************* + * Local variable definitions ('static') + ******************************************************************************/ + +/******************************************************************************* + * Function implementation - global ('extern') and local ('static') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief Initialize WDT function + ** + ** \param [in] pstcWdtInit Pointer to WDT init configuration + ** \arg See the struct #stc_wdt_init_t + ** + ** \retval Ok Process successfully done + ** \retval Error Parameter error + ** + ******************************************************************************/ +en_result_t WDT_Init(const stc_wdt_init_t *pstcWdtInit) +{ + en_result_t enRet = Ok; + uint32_t regTemp; + + if (NULL == pstcWdtInit) + { + enRet = Error; + } + else + { + /* Check parameters */ + DDL_ASSERT(IS_VALID_COUNT_CYCLE(pstcWdtInit->enCountCycle)); + DDL_ASSERT(IS_VALID_CLOCK_DIV(pstcWdtInit->enClkDiv)); + DDL_ASSERT(IS_VALID_ALLOW_REFRESH_RANGE(pstcWdtInit->enRefreshRange)); + DDL_ASSERT(IS_FUNCTIONAL_STATE(pstcWdtInit->enSleepModeCountEn)); + DDL_ASSERT(IS_VALID_EVENT_REQUEST_TYPE(pstcWdtInit->enRequestType)); + + /* software start mode */ + regTemp = ((((uint32_t)pstcWdtInit->enRequestType) << 31) | \ + (((uint32_t)(bool)(!pstcWdtInit->enSleepModeCountEn)) << 16) | \ + (((uint32_t)pstcWdtInit->enRefreshRange) << 8) | \ + (((uint32_t)pstcWdtInit->enClkDiv) << 4) | \ + ((uint32_t)pstcWdtInit->enCountCycle)); + /* store the new value */ + M4_WDT->CR = regTemp; + } + + return enRet; +} + +/** + ******************************************************************************* + ** \brief WDT refresh counter(First refresh start count when software start) + ** + ** \param [in] None + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t WDT_RefreshCounter(void) +{ + en_result_t enRet = Ok; + + M4_WDT->RR = WDT_REFRESH_START_KEY; + M4_WDT->RR = WDT_REFRESH_END_KEY; + + return enRet; +} + +/** + ******************************************************************************* + ** \brief Get WDT counter current count value + ** + ** \param [in] None + ** + ** \retval uint16_t WDT counter current count value + ** + ******************************************************************************/ +uint16_t WDT_GetCountValue(void) +{ + return ((uint16_t)M4_WDT->SR_f.CNT); +} + +/** + ******************************************************************************* + ** \brief Get WDT flag status + ** + ** \param [in] enFlag WDT flag type + ** \arg WdtFlagCountUnderflow Count underflow flag + ** \arg WdtFlagRefreshError Refresh error flag + ** + ** \retval Set Flag is set + ** \retval Reset Flag is reset + ** + ******************************************************************************/ +en_flag_status_t WDT_GetFlag(en_wdt_flag_type_t enFlag) +{ + en_flag_status_t enFlagSta = Reset; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case WdtFlagCountUnderflow: + enFlagSta = (en_flag_status_t)M4_WDT->SR_f.UDF; + break; + case WdtFlagRefreshError: + enFlagSta = (en_flag_status_t)M4_WDT->SR_f.REF; + break; + default: + break; + } + + return enFlagSta; +} + +/** + ******************************************************************************* + ** \brief Clear WDT flag status + ** + ** \param [in] enFlag WDT flag type + ** \arg WdtFlagCountUnderflow Count underflow flag + ** \arg WdtFlagRefreshError Refresh error flag + ** + ** \retval Ok Process successfully done + ** + ******************************************************************************/ +en_result_t WDT_ClearFlag(en_wdt_flag_type_t enFlag) +{ + en_result_t enRet = Ok; + + /* Check parameters */ + DDL_ASSERT(IS_VALID_FLAG_TYPE(enFlag)); + + switch (enFlag) + { + case WdtFlagCountUnderflow: + M4_WDT->SR_f.UDF = 0u; + break; + case WdtFlagRefreshError: + M4_WDT->SR_f.REF = 0u; + break; + default: + break; + } + + return enRet; +} + +//@} // WdtGroup + +#endif /* DDL_WDT_ENABLE */ + +/****************************************************************************** + * EOF (not truncated) + *****************************************************************************/ diff --git a/mcu/common/hc32_common.h b/mcu/common/hc32_common.h new file mode 100644 index 0000000..f8424c8 --- /dev/null +++ b/mcu/common/hc32_common.h @@ -0,0 +1,219 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32_common.h + ** + ** A detailed description is available at + ** @link Hc32CommonGroup Hc32 Series Comm Part description @endlink + ** + ** - 2018-10-18 CDT First version for Hc32 Series of common part. + ** + ******************************************************************************/ +#ifndef __HC32_COMMON_H__ +#define __HC32_COMMON_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include +#include +#include +#include + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup Hc32CommonGroup Hc32 Series Common Part(HC32COMMON) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ +/** + ******************************************************************************* + ** \brief single precision floating point number (4 byte) + ******************************************************************************/ +typedef float float32_t; + +/** + ******************************************************************************* + ** \brief double precision floating point number (8 byte) + ******************************************************************************/ +typedef double float64_t; + +/** + ******************************************************************************* + ** \brief function pointer type to void/void function + ******************************************************************************/ +typedef void (*func_ptr_t)(void); + +/** + ******************************************************************************* + ** \brief function pointer type to void/uint8_t function + ******************************************************************************/ +typedef void (*func_ptr_arg1_t)(uint8_t); + +/** + ******************************************************************************* + ** \brief functional state + ******************************************************************************/ +typedef enum en_functional_state +{ + Disable = 0u, + Enable = 1u, +} en_functional_state_t; + +/** + ******************************************************************************* + ** \brief flag status + ******************************************************************************/ +typedef enum en_flag_status +{ + Reset = 0u, + Set = 1u, +} en_flag_status_t, en_int_status_t; + +/** + ******************************************************************************* + ** \brief generic error codes + ******************************************************************************/ +typedef enum en_result +{ + Ok = 0u, ///< No error + Error = 1u, ///< Non-specific error code + ErrorAddressAlignment = 2u, ///< Address alignment does not match + ErrorAccessRights = 3u, ///< Wrong mode (e.g. user/system) mode is set + ErrorInvalidParameter = 4u, ///< Provided parameter is not valid + ErrorOperationInProgress = 5u, ///< A conflicting or requested operation is still in progress + ErrorInvalidMode = 6u, ///< Operation not allowed in current mode + ErrorUninitialized = 7u, ///< Module (or part of it) was not initialized properly + ErrorBufferFull = 8u, ///< Circular buffer can not be written because the buffer is full + ErrorTimeout = 9u, ///< Time Out error occurred (e.g. I2C arbitration lost, Flash time-out, etc.) + ErrorNotReady = 10u, ///< A requested final state is not reached + OperationInProgress = 11u, ///< Indicator for operation in progress (e.g. ADC conversion not finished, DMA channel used, etc.) +} en_result_t; + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ + +/** + ******************************************************************************* + ** \brief Device include + ******************************************************************************/ +#if defined(HC32F460) +#include "hc32f460.h" +#include "system_hc32f460.h" +#elif defined(HC32xxxx) +#include "hc32xxxx.h" +#include "system_hc32xxxx.h" +#else +#error "Please select first the target HC32xxxx device used in your application (in hc32xxxx.h file)" +#endif + +/*! Weak and Align compiler definition */ +#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ + #ifndef __WEAKDEF + #define __WEAKDEF __attribute__((weak)) + #endif /* __WEAKDEF */ + #ifndef __ALIGN_BEGIN + #define __ALIGN_BEGIN __attribute__((aligned (4))) + #endif /* __ALIGN_BEGIN */ + #ifndef __NOINLINE + #define __NOINLINE __attribute__((noinline)) + #endif /* __NOINLINE */ + #ifndef __UNUSED + #define __UNUSED __attribute__((unused)) + #endif /* __UNUSED */ + #ifndef __RAM_FUNC + #define __RAM_FUNC __attribute__((long_call, section(".ramfunc"))) + /* Usage: void __RAM_FUNC foo(void) */ + #endif /* __RAM_FUNC */ +#elif defined (__ICCARM__) ///< IAR Compiler +#define __WEAKDEF __weak +#define __ALIGN_BEGIN _Pragma("data_alignment=4") +#define __NOINLINE _Pragma("optimize = no_inline") +#define __UNUSED __attribute__((unused)) +#define __RAM_FUNC __ramfunc +#elif defined (__CC_ARM) ///< ARM Compiler +#define __WEAKDEF __attribute__((weak)) +#define __ALIGN_BEGIN __align(4) +#define __NOINLINE __attribute__((noinline)) +#define __UNUSED __attribute__((unused)) +/* RAM functions are defined using the toolchain options. + Functions that are executed in RAM should reside in a separate source module. + Using the 'Options for File' dialog you can simply change the 'Code / Const' + area of a module to a memory space in physical RAM. */ +#define __RAM_FUNC +#else +#error "unsupported compiler!!" +#endif /* __GNUC__ */ + +/*! Pointer correspond to zero value */ +#if !defined (NULL) +#define NULL (0) +#endif + +/*! Memory clear */ +#define MEM_ZERO_STRUCT(x) do { \ + memset((void*)&(x), 0l, (sizeof(x))); \ + }while(0) + +/*! Decimal to BCD */ +#define DEC2BCD(x) ((((x) / 10u) << 4u) + ((x) % 10u)) + +/*! BCD to decimal */ +#define BCD2DEC(x) ((((x) >> 4u) * 10u) + ((x) & 0x0Fu)) + +/*! Returns the minimum value out of two values */ +#define MIN(x, y) ((x) < (y) ? (x) : (y)) + +/*! Returns the maximum value out of two values */ +#define MAX(x, y) ((x) > (y) ? (x) : (y)) + +/*! Returns the dimension of an array */ +#define ARRAY_SZ(X) (sizeof((X)) / sizeof((X)[0])) + +/*! Check if it is a functional state */ +#define IS_FUNCTIONAL_STATE(state) (((state) == Disable) || ((state) == Enable)) + +#define BIT_SET(value,bit) ((value) |= (bit)) + +#define BIT_CLEAR(value,bit) ((value) &= ~(bit)) + +#define BIT_READ(value,bit) ((value) & (bit)) + +#define BIT_VALUE(index) (1ul << (index)) + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ + +//@} // Hc32CommonGroup + +#ifdef __cplusplus +} +#endif + +#endif /* __HC32_COMMON_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/mcu/common/hc32_ddl.h b/mcu/common/hc32_ddl.h new file mode 100644 index 0000000..adee0e9 --- /dev/null +++ b/mcu/common/hc32_ddl.h @@ -0,0 +1,267 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file hc32_ddl.h + ** + ** A detailed description is available at + ** @link Hc32DdlGroup Hc32 Series Ddl description @endlink + ** + ** - 2018-10-22 CDT First version for Hc32 Series Device Driver + ** Library. + ** + ******************************************************************************/ +#ifndef __HC32_DDL_H__ +#define __HC32_DDL_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" +#include "ddl_config.h" + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + ******************************************************************************* + ** \defgroup Hc32DdlGroup Hc32 Series Device Driver Library(HC32DDL) + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global type definitions ('typedef') + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('#define') + ******************************************************************************/ +/*! Defined use device driver library */ +#if !defined (USE_DEVICE_DRIVER_LIB) +/** + ******************************************************************************* + ** \brief Comment the line below if you will not use the device driver library. + ** In this case, the application code will be based on direct access to + ** peripherals registers. + ******************************************************************************/ +/* #define USE_DEVICE_DRIVER_LIB */ +#endif /* USE_DEVICE_DRIVER_LIB */ + +/** + ******************************************************************************* + ** \brief Hc32 Series device driver library version number + ******************************************************************************/ +#define HC32_DDL_VERSION_MAIN (0x02u) ///< [31:24] main version +#define HC32_DDL_VERSION_SUB1 (0x00u) ///< [23:16] sub1 version +#define HC32_DDL_VERSION_SUB2 (0x00u) ///< [15:8] sub2 version +#define HC32_DDL_VERSION_RC (0x00u) ///< [7:0] release candidate +#define HC32_DDL_VERSION ((HC32_DDL_VERSION_MAIN << 24) | \ + (HC32_DDL_VERSION_SUB1 << 16) | \ + (HC32_DDL_VERSION_SUB2 << 8 ) | \ + (HC32_DDL_VERSION_RC)) + +/*! Use device driver library */ +#if defined (USE_DEVICE_DRIVER_LIB) +/** + ******************************************************************************* + ** \brief Include module's header file + ******************************************************************************/ +#if (DDL_ADC_ENABLE == DDL_ON) +#include "hc32f460_adc.h" +#endif /* DDL_ADC_ENABLE */ + +#if (DDL_AES_ENABLE == DDL_ON) +#include "hc32f460_aes.h" +#endif /* DDL_AES_ENABLE */ + +#if (DDL_CAN_ENABLE == DDL_ON) +#include "hc32f460_can.h" +#endif /* DDL_CAN_ENABLE */ + +#if (DDL_CLK_ENABLE == DDL_ON) +#include "hc32f460_clk.h" +#endif /* DDL_CLK_ENABLE */ + +#if (DDL_CMP_ENABLE == DDL_ON) +#include "hc32f460_cmp.h" +#endif /* DDL_CMP_ENABLE */ + +#if (DDL_CRC_ENABLE == DDL_ON) +#include "hc32f460_crc.h" +#endif /* DDL_CRC_ENABLE */ + +#if (DDL_DCU_ENABLE == DDL_ON) +#include "hc32f460_dcu.h" +#endif /* DDL_DCU_ENABLE */ + +#if (DDL_DMAC_ENABLE == DDL_ON) +#include "hc32f460_dmac.h" +#endif /* DDL_DMAC_ENABLE */ + +#if (DDL_EFM_ENABLE == DDL_ON) +#include "hc32f460_efm.h" +#endif /* DDL_EFM_ENABLE */ + +#if (DDL_EMB_ENABLE == DDL_ON) +#include "hc32f460_emb.h" +#endif /* DDL_EMB_ENABLE */ + +#if (DDL_EVENT_PORT_ENABLE == DDL_ON) +#include "hc32f460_event_port.h" +#endif /* DDL_EVENT_PORT_ENABLE */ + +#if (DDL_EXINT_NMI_SWI_ENABLE == DDL_ON) +#include "hc32f460_exint_nmi_swi.h" +#endif /* DDL_EXINT_NMI_SWI_ENABLE */ + +#if (DDL_GPIO_ENABLE == DDL_ON) +#include "hc32f460_gpio.h" +#endif /* DDL_GPIO_ENABLE */ + +#if (DDL_HASH_ENABLE == DDL_ON) +#include "hc32f460_hash.h" +#endif /* DDL_HASH_ENABLE */ + +#if (DDL_I2C_ENABLE == DDL_ON) +#include "hc32f460_i2c.h" +#endif /* DDL_I2C_ENABLE */ + +#if (DDL_I2S_ENABLE == DDL_ON) +#include "hc32f460_i2s.h" +#endif /* DDL_I2S_ENABLE */ + +#if (DDL_ICG_ENABLE == DDL_ON) +#include "hc32f460_icg.h" +#endif /* DDL_ICG_ENABLE */ + +#if (DDL_INTERRUPTS_ENABLE == DDL_ON) +#include "hc32f460_interrupts.h" +#endif /* DDL_INTERRUPTS_ENABLE */ + +#if (DDL_KEYSCAN_ENABLE == DDL_ON) +#include "hc32f460_keyscan.h" +#endif /* DDL_KEYSCAN_ENABLE */ + +#if (DDL_MPU_ENABLE == DDL_ON) +#include "hc32f460_mpu.h" +#endif /* DDL_MPU_ENABLE */ + +#if (DDL_OTS_ENABLE == DDL_ON) +#include "hc32f460_ots.h" +#endif /* DDL_OTS_ENABLE */ + +#if (DDL_PWC_ENABLE == DDL_ON) +#include "hc32f460_pwc.h" +#endif /* DDL_PWC_ENABLE */ + +#if (DDL_QSPI_ENABLE == DDL_ON) +#include "hc32f460_qspi.h" +#endif /* DDL_QSPI_ENABLE */ + +#if (DDL_RMU_ENABLE == DDL_ON) +#include "hc32f460_rmu.h" +#endif /* DDL_RMU_ENABLE */ + +#if (DDL_RTC_ENABLE == DDL_ON) +#include "hc32f460_rtc.h" +#endif /* DDL_RTC_ENABLE */ + +#if (DDL_SDIOC_ENABLE == DDL_ON) +#include "hc32f460_sdioc.h" +#endif /* DDL_SDIOC_ENABLE */ + +#if (DDL_SPI_ENABLE == DDL_ON) +#include "hc32f460_spi.h" +#endif /* DDL_SPI_ENABLE */ + +#if (DDL_SRAM_ENABLE == DDL_ON) +#include "hc32f460_sram.h" +#endif /* DDL_SRAM_ENABLE */ + +#if (DDL_SWDT_ENABLE == DDL_ON) +#include "hc32f460_swdt.h" +#endif /* DDL_SWDT_ENABLE */ + +#if (DDL_TIMER0_ENABLE == DDL_ON) +#include "hc32f460_timer0.h" +#endif /* DDL_TIMER0_ENABLE */ + +#if (DDL_TIMER4_CNT_ENABLE == DDL_ON) +#include "hc32f460_timer4_cnt.h" +#endif /* DDL_TIMER4_CNT_ENABLE */ + +#if (DDL_TIMER4_EMB_ENABLE == DDL_ON) +#include "hc32f460_timer4_emb.h" +#endif /* DDL_TIMER4_EMB_ENABLE */ + +#if (DDL_TIMER4_OCO_ENABLE == DDL_ON) +#include "hc32f460_timer4_oco.h" +#endif /* DDL_TIMER4_OCO_ENABLE */ + +#if (DDL_TIMER4_PWM_ENABLE == DDL_ON) +#include "hc32f460_timer4_pwm.h" +#endif /* DDL_TIMER4_PWM_ENABLE */ + +#if (DDL_TIMER4_SEVT_ENABLE == DDL_ON) +#include "hc32f460_timer4_sevt.h" +#endif /* DDL_TIMER4_SEVT_ENABLE */ + +#if (DDL_TIMER6_ENABLE == DDL_ON) +#include "hc32f460_timer6.h" +#endif /* DDL_TIMER6_ENABLE */ + +#if (DDL_TIMERA_ENABLE == DDL_ON) +#include "hc32f460_timera.h" +#endif /* DDL_TIMERA_ENABLE */ + +#if (DDL_TRNG_ENABLE == DDL_ON) +#include "hc32f460_trng.h" +#endif /* DDL_TRNG_ENABLE */ + +#if (DDL_USART_ENABLE == DDL_ON) +#include "hc32f460_usart.h" +#endif /* DDL_USART_ENABLE */ + +#if (DDL_USBFS_ENABLE == DDL_ON) +#include "hc32f460_usbfs.h" +#endif /* DDL_USBFS_ENABLE */ + +#if (DDL_UTILITY_ENABLE == DDL_ON) +#include "hc32f460_utility.h" +#endif /* DDL_UTILITY_ENABLE */ + +#if (DDL_WDT_ENABLE == DDL_ON) +#include "hc32f460_wdt.h" +#endif /* DDL_WDT_ENABLE */ + + +#endif /* USE_DEVICE_DRIVER_LIB */ + +/******************************************************************************* + * Global variable definitions ('extern') + ******************************************************************************/ + +/******************************************************************************* + * Global function prototypes (definition in C source) + ******************************************************************************/ + +//@} // Hc32DdlGroup + +#ifdef __cplusplus +} +#endif + +#endif /* __HC32_DDL_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/mcu/common/hc32f460.h b/mcu/common/hc32f460.h new file mode 100644 index 0000000..fabb78c --- /dev/null +++ b/mcu/common/hc32f460.h @@ -0,0 +1,30602 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file HC32F460.h + ** + ** Auto generate. + ** Headerfile for HC32F460 series MCU + ** + ** History: + ** + ** - 2020-12-16 1.03 First version for Device Driver Library of HC32F460 series MCU. + ** + ******************************************************************************/ + +#ifndef __HC32F460_H__ +#define __HC32F460_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************* + * Configuration of the Cortex-M4 Processor and Core Peripherals + ******************************************************************************/ +#define __CM4_REV 0x0001 /*!< Core revision r0p1 */ +#define __MPU_PRESENT 1 /*!< HC32F460 provides an MPU */ +#define __NVIC_PRIO_BITS 4 /*!< HC32F460 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1 /*!< FPU present */ + +/******************************************************************************* + * Interrupt Number Definition + ******************************************************************************/ +typedef enum IRQn +{ + NMI_IRQn = -14, /* 2 Non Maskable */ + HardFault_IRQn = -13, /* 3 Hard Fault */ + MemManageFault_IRQn = -12, /* 4 MemManage Fault */ + BusFault_IRQn = -11, /* 5 Bus Fault */ + UsageFault_IRQn = -10, /* 6 Usage Fault */ + SVC_IRQn = -5, /* 11 SV Call */ + DM_IRQn = -4, /* 12 Debug Monitor */ + PendSV_IRQn = -2, /* 14 Pend SV */ + SysTick_IRQn = -1, /* 15 System Tick */ + Int000_IRQn = 0, + Int001_IRQn = 1, + Int002_IRQn = 2, + Int003_IRQn = 3, + Int004_IRQn = 4, + Int005_IRQn = 5, + Int006_IRQn = 6, + Int007_IRQn = 7, + Int008_IRQn = 8, + Int009_IRQn = 9, + Int010_IRQn = 10, + Int011_IRQn = 11, + Int012_IRQn = 12, + Int013_IRQn = 13, + Int014_IRQn = 14, + Int015_IRQn = 15, + Int016_IRQn = 16, + Int017_IRQn = 17, + Int018_IRQn = 18, + Int019_IRQn = 19, + Int020_IRQn = 20, + Int021_IRQn = 21, + Int022_IRQn = 22, + Int023_IRQn = 23, + Int024_IRQn = 24, + Int025_IRQn = 25, + Int026_IRQn = 26, + Int027_IRQn = 27, + Int028_IRQn = 28, + Int029_IRQn = 29, + Int030_IRQn = 30, + Int031_IRQn = 31, + Int032_IRQn = 32, + Int033_IRQn = 33, + Int034_IRQn = 34, + Int035_IRQn = 35, + Int036_IRQn = 36, + Int037_IRQn = 37, + Int038_IRQn = 38, + Int039_IRQn = 39, + Int040_IRQn = 40, + Int041_IRQn = 41, + Int042_IRQn = 42, + Int043_IRQn = 43, + Int044_IRQn = 44, + Int045_IRQn = 45, + Int046_IRQn = 46, + Int047_IRQn = 47, + Int048_IRQn = 48, + Int049_IRQn = 49, + Int050_IRQn = 50, + Int051_IRQn = 51, + Int052_IRQn = 52, + Int053_IRQn = 53, + Int054_IRQn = 54, + Int055_IRQn = 55, + Int056_IRQn = 56, + Int057_IRQn = 57, + Int058_IRQn = 58, + Int059_IRQn = 59, + Int060_IRQn = 60, + Int061_IRQn = 61, + Int062_IRQn = 62, + Int063_IRQn = 63, + Int064_IRQn = 64, + Int065_IRQn = 65, + Int066_IRQn = 66, + Int067_IRQn = 67, + Int068_IRQn = 68, + Int069_IRQn = 69, + Int070_IRQn = 70, + Int071_IRQn = 71, + Int072_IRQn = 72, + Int073_IRQn = 73, + Int074_IRQn = 74, + Int075_IRQn = 75, + Int076_IRQn = 76, + Int077_IRQn = 77, + Int078_IRQn = 78, + Int079_IRQn = 79, + Int080_IRQn = 80, + Int081_IRQn = 81, + Int082_IRQn = 82, + Int083_IRQn = 83, + Int084_IRQn = 84, + Int085_IRQn = 85, + Int086_IRQn = 86, + Int087_IRQn = 87, + Int088_IRQn = 88, + Int089_IRQn = 89, + Int090_IRQn = 90, + Int091_IRQn = 91, + Int092_IRQn = 92, + Int093_IRQn = 93, + Int094_IRQn = 94, + Int095_IRQn = 95, + Int096_IRQn = 96, + Int097_IRQn = 97, + Int098_IRQn = 98, + Int099_IRQn = 99, + Int100_IRQn = 100, + Int101_IRQn = 101, + Int102_IRQn = 102, + Int103_IRQn = 103, + Int104_IRQn = 104, + Int105_IRQn = 105, + Int106_IRQn = 106, + Int107_IRQn = 107, + Int108_IRQn = 108, + Int109_IRQn = 109, + Int110_IRQn = 110, + Int111_IRQn = 111, + Int112_IRQn = 112, + Int113_IRQn = 113, + Int114_IRQn = 114, + Int115_IRQn = 115, + Int116_IRQn = 116, + Int117_IRQn = 117, + Int118_IRQn = 118, + Int119_IRQn = 119, + Int120_IRQn = 120, + Int121_IRQn = 121, + Int122_IRQn = 122, + Int123_IRQn = 123, + Int124_IRQn = 124, + Int125_IRQn = 125, + Int126_IRQn = 126, + Int127_IRQn = 127, + Int128_IRQn = 128, + Int129_IRQn = 129, + Int130_IRQn = 130, + Int131_IRQn = 131, + Int132_IRQn = 132, + Int133_IRQn = 133, + Int134_IRQn = 134, + Int135_IRQn = 135, + Int136_IRQn = 136, + Int137_IRQn = 137, + Int138_IRQn = 138, + Int139_IRQn = 139, + Int140_IRQn = 140, + Int141_IRQn = 141, + Int142_IRQn = 142, + Int143_IRQn = 143, + +}IRQn_Type; + +#include +#include + +/** + ******************************************************************************* + ** \brief Event number enumeration + ******************************************************************************/ +typedef enum en_event_src +{ + EVT_SWI_IRQ0 = 0u, + EVT_SWI_IRQ1 = 1u, + EVT_SWI_IRQ2 = 2u, + EVT_SWI_IRQ3 = 3u, + EVT_SWI_IRQ4 = 4u, + EVT_SWI_IRQ5 = 5u, + EVT_SWI_IRQ6 = 6u, + EVT_SWI_IRQ7 = 7u, + EVT_SWI_IRQ8 = 8u, + EVT_SWI_IRQ9 = 9u, + EVT_SWI_IRQ10 = 10u, + EVT_SWI_IRQ11 = 11u, + EVT_SWI_IRQ12 = 12u, + EVT_SWI_IRQ13 = 13u, + EVT_SWI_IRQ14 = 14u, + EVT_SWI_IRQ15 = 15u, + EVT_SWI_IRQ16 = 16u, + EVT_SWI_IRQ17 = 17u, + EVT_SWI_IRQ18 = 18u, + EVT_SWI_IRQ19 = 19u, + EVT_SWI_IRQ20 = 20u, + EVT_SWI_IRQ21 = 21u, + EVT_SWI_IRQ22 = 22u, + EVT_SWI_IRQ23 = 23u, + EVT_SWI_IRQ24 = 24u, + EVT_SWI_IRQ25 = 25u, + EVT_SWI_IRQ26 = 26u, + EVT_SWI_IRQ27 = 27u, + EVT_SWI_IRQ28 = 28u, + EVT_SWI_IRQ29 = 29u, + EVT_SWI_IRQ30 = 30u, + EVT_SWI_IRQ31 = 31u, + + /* External Interrupt. */ + EVT_PORT_EIRQ0 = 0u, + EVT_PORT_EIRQ1 = 1u, + EVT_PORT_EIRQ2 = 2u, + EVT_PORT_EIRQ3 = 3u, + EVT_PORT_EIRQ4 = 4u, + EVT_PORT_EIRQ5 = 5u, + EVT_PORT_EIRQ6 = 6u, + EVT_PORT_EIRQ7 = 7u, + EVT_PORT_EIRQ8 = 8u, + EVT_PORT_EIRQ9 = 9u, + EVT_PORT_EIRQ10 = 10u, + EVT_PORT_EIRQ11 = 11u, + EVT_PORT_EIRQ12 = 12u, + EVT_PORT_EIRQ13 = 13u, + EVT_PORT_EIRQ14 = 14u, + EVT_PORT_EIRQ15 = 15u, + + /* DMAC */ + EVT_DMA1_TC0 = 32u, + EVT_DMA1_TC1 = 33u, + EVT_DMA1_TC2 = 34u, + EVT_DMA1_TC3 = 35u, + EVT_DMA2_TC0 = 36u, + EVT_DMA2_TC1 = 37u, + EVT_DMA2_TC2 = 38u, + EVT_DMA2_TC3 = 39u, + EVT_DMA1_BTC0 = 40u, + EVT_DMA1_BTC1 = 41u, + EVT_DMA1_BTC2 = 42u, + EVT_DMA1_BTC3 = 43u, + EVT_DMA2_BTC0 = 44u, + EVT_DMA2_BTC1 = 45u, + EVT_DMA2_BTC2 = 46u, + EVT_DMA2_BTC3 = 47u, + + /* EFM */ + EVT_EFM_OPTEND = 52u, + + /* USB SOF */ + EVT_USBFS_SOF = 53u, + + /* DCU */ + EVT_DCU1 = 55u, + EVT_DCU2 = 56u, + EVT_DCU3 = 57u, + EVT_DCU4 = 58u, + + /* TIMER 0 */ + EVT_TMR01_GCMA = 64u, + EVT_TMR01_GCMB = 65u, + EVT_TMR02_GCMA = 66u, + EVT_TMR02_GCMB = 67u, + + /* RTC */ + EVT_RTC_ALM = 81u, + EVT_RTC_PRD = 82u, + + /* TIMER 6 */ + EVT_TMR61_GCMA = 96u, + EVT_TMR61_GCMB = 97u, + EVT_TMR61_GCMC = 98u, + EVT_TMR61_GCMD = 99u, + EVT_TMR61_GCME = 100u, + EVT_TMR61_GCMF = 101u, + EVT_TMR61_GOVF = 102u, + EVT_TMR61_GUDF = 103u, + EVT_TMR61_SCMA = 107u, + EVT_TMR61_SCMB = 108u, + EVT_TMR62_GCMA = 112u, + EVT_TMR62_GCMB = 113u, + EVT_TMR62_GCMC = 114u, + EVT_TMR62_GCMD = 115u, + EVT_TMR62_GCME = 116u, + EVT_TMR62_GCMF = 117u, + EVT_TMR62_GOVF = 118u, + EVT_TMR62_GUDF = 119u, + EVT_TMR62_SCMA = 123u, + EVT_TMR62_SCMB = 124u, + EVT_TMR63_GCMA = 128u, + EVT_TMR63_GCMB = 129u, + EVT_TMR63_GCMC = 130u, + EVT_TMR63_GCMD = 131u, + EVT_TMR63_GCME = 132u, + EVT_TMR63_GCMF = 133u, + EVT_TMR63_GOVF = 134u, + EVT_TMR63_GUDF = 135u, + EVT_TMR63_SCMA = 139u, + EVT_TMR63_SCMB = 140u, + + /* TIMER A */ + EVT_TMRA1_OVF = 256u, + EVT_TMRA1_UDF = 257u, + EVT_TMRA1_CMP = 258u, + EVT_TMRA2_OVF = 259u, + EVT_TMRA2_UDF = 260u, + EVT_TMRA2_CMP = 261u, + EVT_TMRA3_OVF = 262u, + EVT_TMRA3_UDF = 263u, + EVT_TMRA3_CMP = 264u, + EVT_TMRA4_OVF = 265u, + EVT_TMRA4_UDF = 266u, + EVT_TMRA4_CMP = 267u, + EVT_TMRA5_OVF = 268u, + EVT_TMRA5_UDF = 269u, + EVT_TMRA5_CMP = 270u, + EVT_TMRA6_OVF = 272u, + EVT_TMRA6_UDF = 273u, + EVT_TMRA6_CMP = 274u, + + /* USART */ + EVT_USART1_EI = 278u, + EVT_USART1_RI = 279u, + EVT_USART1_TI = 280u, + EVT_USART1_TCI = 281u, + EVT_USART1_RTO = 282u, + EVT_USART2_EI = 283u, + EVT_USART2_RI = 284u, + EVT_USART2_TI = 285u, + EVT_USART2_TCI = 286u, + EVT_USART2_RTO = 287u, + EVT_USART3_EI = 288u, + EVT_USART3_RI = 289u, + EVT_USART3_TI = 290u, + EVT_USART3_TCI = 291u, + EVT_USART3_RTO = 292u, + EVT_USART4_EI = 293u, + EVT_USART4_RI = 294u, + EVT_USART4_TI = 295u, + EVT_USART4_TCI = 296u, + EVT_USART4_RTO = 297u, + + /* SPI */ + EVT_SPI1_SPRI = 299u, + EVT_SPI1_SPTI = 300u, + EVT_SPI1_SPII = 301u, + EVT_SPI1_SPEI = 302u, + EVT_SPI1_SPTEND = 303u, + EVT_SPI2_SPRI = 304u, + EVT_SPI2_SPTI = 305u, + EVT_SPI2_SPII = 306u, + EVT_SPI2_SPEI = 307u, + EVT_SPI2_SPTEND = 308u, + EVT_SPI3_SPRI = 309u, + EVT_SPI3_SPTI = 310u, + EVT_SPI3_SPII = 311u, + EVT_SPI3_SPEI = 312u, + EVT_SPI3_SPTEND = 313u, + EVT_SPI4_SPRI = 314u, + EVT_SPI4_SPTI = 315u, + EVT_SPI4_SPII = 316u, + EVT_SPI4_SPEI = 317u, + EVT_SPI4_SPTEND = 318u, + + /* AOS */ + EVT_AOS_STRG = 319u, + + /* TIMER 4 */ + EVT_TMR41_SCMUH = 368u, + EVT_TMR41_SCMUL = 369u, + EVT_TMR41_SCMVH = 370u, + EVT_TMR41_SCMVL = 371u, + EVT_TMR41_SCMWH = 372u, + EVT_TMR41_SCMWL = 373u, + EVT_TMR42_SCMUH = 374u, + EVT_TMR42_SCMUL = 375u, + EVT_TMR42_SCMVH = 376u, + EVT_TMR42_SCMVL = 377u, + EVT_TMR42_SCMWH = 378u, + EVT_TMR42_SCMWL = 379u, + EVT_TMR43_SCMUH = 384u, + EVT_TMR43_SCMUL = 385u, + EVT_TMR43_SCMVH = 386u, + EVT_TMR43_SCMVL = 387u, + EVT_TMR43_SCMWH = 388u, + EVT_TMR43_SCMWL = 389u, + + /* EVENT PORT */ + EVT_EVENT_PORT1 = 394u, + EVT_EVENT_PORT2 = 395u, + EVT_EVENT_PORT3 = 396u, + EVT_EVENT_PORT4 = 397u, + + /* I2S */ + EVT_I2S1_TXIRQOUT = 400u, + EVT_I2S1_RXIRQOUT = 401u, + EVT_I2S2_TXIRQOUT = 403u, + EVT_I2S2_RXIRQOUT = 404u, + EVT_I2S3_TXIRQOUT = 406u, + EVT_I2S3_RXIRQOUT = 407u, + EVT_I2S4_TXIRQOUT = 409u, + EVT_I2S4_RXIRQOUT = 410u, + + /* COMPARATOR */ + EVT_ACMP1 = 416u, + EVT_ACMP2 = 417u, + EVT_ACMP3 = 418u, + + /* I2C */ + EVT_I2C1_RXI = 420u, + EVT_I2C1_TXI = 421u, + EVT_I2C1_TEI = 422u, + EVT_I2C1_EEI = 423u, + EVT_I2C2_RXI = 424u, + EVT_I2C2_TXI = 425u, + EVT_I2C2_TEI = 426u, + EVT_I2C2_EEI = 427u, + EVT_I2C3_RXI = 428u, + EVT_I2C3_TXI = 429u, + EVT_I2C3_TEI = 430u, + EVT_I2C3_EEI = 431u, + + /* PVD */ + EVT_PVD_PVD1 = 433u, + EVT_PVD_PVD2 = 434u, + + /* OTS */ + EVT_OTS = 435u, + + /* WDT */ + EVT_WDT_REFUDF = 439u, + + /* ADC */ + EVT_ADC1_EOCA = 448u, + EVT_ADC1_EOCB = 449u, + EVT_ADC1_CHCMP = 450u, + EVT_ADC1_SEQCMP = 451u, + EVT_ADC2_EOCA = 452u, + EVT_ADC2_EOCB = 453u, + EVT_ADC2_CHCMP = 454u, + EVT_ADC2_SEQCMP = 455u, + + /* TRNG */ + EVT_TRNG_END = 456u, + + /* SDIO */ + EVT_SDIOC1_DMAR = 480u, + EVT_SDIOC1_DMAW = 481u, + EVT_SDIOC2_DMAR = 483u, + EVT_SDIOC2_DMAW = 484u, + EVT_MAX = 511u, +}en_event_src_t; + +/** + ******************************************************************************* + ** \brief Interrupt number enumeration + ******************************************************************************/ +typedef enum en_int_src +{ + INT_SWI_IRQ0 = 0u, + INT_SWI_IRQ1 = 1u, + INT_SWI_IRQ2 = 2u, + INT_SWI_IRQ3 = 3u, + INT_SWI_IRQ4 = 4u, + INT_SWI_IRQ5 = 5u, + INT_SWI_IRQ6 = 6u, + INT_SWI_IRQ7 = 7u, + INT_SWI_IRQ8 = 8u, + INT_SWI_IRQ9 = 9u, + INT_SWI_IRQ10 = 10u, + INT_SWI_IRQ11 = 11u, + INT_SWI_IRQ12 = 12u, + INT_SWI_IRQ13 = 13u, + INT_SWI_IRQ14 = 14u, + INT_SWI_IRQ15 = 15u, + INT_SWI_IRQ16 = 16u, + INT_SWI_IRQ17 = 17u, + INT_SWI_IRQ18 = 18u, + INT_SWI_IRQ19 = 19u, + INT_SWI_IRQ20 = 20u, + INT_SWI_IRQ21 = 21u, + INT_SWI_IRQ22 = 22u, + INT_SWI_IRQ23 = 23u, + INT_SWI_IRQ24 = 24u, + INT_SWI_IRQ25 = 25u, + INT_SWI_IRQ26 = 26u, + INT_SWI_IRQ27 = 27u, + INT_SWI_IRQ28 = 28u, + INT_SWI_IRQ29 = 29u, + INT_SWI_IRQ30 = 30u, + INT_SWI_IRQ31 = 31u, + + /* External Interrupt. */ + INT_PORT_EIRQ0 = 0u, + INT_PORT_EIRQ1 = 1u, + INT_PORT_EIRQ2 = 2u, + INT_PORT_EIRQ3 = 3u, + INT_PORT_EIRQ4 = 4u, + INT_PORT_EIRQ5 = 5u, + INT_PORT_EIRQ6 = 6u, + INT_PORT_EIRQ7 = 7u, + INT_PORT_EIRQ8 = 8u, + INT_PORT_EIRQ9 = 9u, + INT_PORT_EIRQ10 = 10u, + INT_PORT_EIRQ11 = 11u, + INT_PORT_EIRQ12 = 12u, + INT_PORT_EIRQ13 = 13u, + INT_PORT_EIRQ14 = 14u, + INT_PORT_EIRQ15 = 15u, + + /* DMAC */ + INT_DMA1_TC0 = 32u, + INT_DMA1_TC1 = 33u, + INT_DMA1_TC2 = 34u, + INT_DMA1_TC3 = 35u, + INT_DMA2_TC0 = 36u, + INT_DMA2_TC1 = 37u, + INT_DMA2_TC2 = 38u, + INT_DMA2_TC3 = 39u, + INT_DMA1_BTC0 = 40u, + INT_DMA1_BTC1 = 41u, + INT_DMA1_BTC2 = 42u, + INT_DMA1_BTC3 = 43u, + INT_DMA2_BTC0 = 44u, + INT_DMA2_BTC1 = 45u, + INT_DMA2_BTC2 = 46u, + INT_DMA2_BTC3 = 47u, + INT_DMA1_ERR = 48u, + INT_DMA2_ERR = 49u, + + /* EFM */ + INT_EFM_PEERR = 50u, + INT_EFM_COLERR = 51u, + INT_EFM_OPTEND = 52u, + + /* QSPI */ + INT_QSPI_INTR = 54u, + + /* DCU */ + INT_DCU1 = 55u, + INT_DCU2 = 56u, + INT_DCU3 = 57u, + INT_DCU4 = 58u, + + /* TIMER 0 */ + INT_TMR01_GCMA = 64u, + INT_TMR01_GCMB = 65u, + INT_TMR02_GCMA = 66u, + INT_TMR02_GCMB = 67u, + + /* RTC */ + INT_RTC_ALM = 81u, + INT_RTC_PRD = 82u, + + /* XTAL32 stop */ + INT_XTAL32_STOP = 84u, + + /* XTAL stop */ + INT_XTAL_STOP = 85u, + + /* wake-up timer */ + INT_WKTM_PRD = 86u, + + /* SWDT */ + INT_SWDT_REFUDF = 87u, + + /* TIMER 6 */ + INT_TMR61_GCMA = 96u, + INT_TMR61_GCMB = 97u, + INT_TMR61_GCMC = 98u, + INT_TMR61_GCMD = 99u, + INT_TMR61_GCME = 100u, + INT_TMR61_GCMF = 101u, + INT_TMR61_GOVF = 102u, + INT_TMR61_GUDF = 103u, + INT_TMR61_GDTE = 104u, + INT_TMR61_SCMA = 107u, + INT_TMR61_SCMB = 108u, + INT_TMR62_GCMA = 112u, + INT_TMR62_GCMB = 113u, + INT_TMR62_GCMC = 114u, + INT_TMR62_GCMD = 115u, + INT_TMR62_GCME = 116u, + INT_TMR62_GCMF = 117u, + INT_TMR62_GOVF = 118u, + INT_TMR62_GUDF = 119u, + INT_TMR62_GDTE = 120u, + INT_TMR62_SCMA = 123u, + INT_TMR62_SCMB = 124u, + INT_TMR63_GCMA = 128u, + INT_TMR63_GCMB = 129u, + INT_TMR63_GCMC = 130u, + INT_TMR63_GCMD = 131u, + INT_TMR63_GCME = 132u, + INT_TMR63_GCMF = 133u, + INT_TMR63_GOVF = 134u, + INT_TMR63_GUDF = 135u, + INT_TMR63_GDTE = 136u, + INT_TMR63_SCMA = 139u, + INT_TMR63_SCMB = 140u, + + /* TIMER A */ + INT_TMRA1_OVF = 256u, + INT_TMRA1_UDF = 257u, + INT_TMRA1_CMP = 258u, + INT_TMRA2_OVF = 259u, + INT_TMRA2_UDF = 260u, + INT_TMRA2_CMP = 261u, + INT_TMRA3_OVF = 262u, + INT_TMRA3_UDF = 263u, + INT_TMRA3_CMP = 264u, + INT_TMRA4_OVF = 265u, + INT_TMRA4_UDF = 266u, + INT_TMRA4_CMP = 267u, + INT_TMRA5_OVF = 268u, + INT_TMRA5_UDF = 269u, + INT_TMRA5_CMP = 270u, + INT_TMRA6_OVF = 272u, + INT_TMRA6_UDF = 273u, + INT_TMRA6_CMP = 274u, + + /* USB FS */ + INT_USBFS_GLB = 275u, + + /* USRAT */ + INT_USART1_EI = 278u, + INT_USART1_RI = 279u, + INT_USART1_TI = 280u, + INT_USART1_TCI = 281u, + INT_USART1_RTO = 282u, + INT_USART1_WUPI = 432u, + INT_USART2_EI = 283u, + INT_USART2_RI = 284u, + INT_USART2_TI = 285u, + INT_USART2_TCI = 286u, + INT_USART2_RTO = 287u, + INT_USART3_EI = 288u, + INT_USART3_RI = 289u, + INT_USART3_TI = 290u, + INT_USART3_TCI = 291u, + INT_USART3_RTO = 292u, + INT_USART4_EI = 293u, + INT_USART4_RI = 294u, + INT_USART4_TI = 295u, + INT_USART4_TCI = 296u, + INT_USART4_RTO = 297u, + + /* SPI */ + INT_SPI1_SPRI = 299u, + INT_SPI1_SPTI = 300u, + INT_SPI1_SPII = 301u, + INT_SPI1_SPEI = 302u, + INT_SPI2_SPRI = 304u, + INT_SPI2_SPTI = 305u, + INT_SPI2_SPII = 306u, + INT_SPI2_SPEI = 307u, + INT_SPI3_SPRI = 309u, + INT_SPI3_SPTI = 310u, + INT_SPI3_SPII = 311u, + INT_SPI3_SPEI = 312u, + INT_SPI4_SPRI = 314u, + INT_SPI4_SPTI = 315u, + INT_SPI4_SPII = 316u, + INT_SPI4_SPEI = 317u, + + /* TIMER 4 */ + INT_TMR41_GCMUH = 320u, + INT_TMR41_GCMUL = 321u, + INT_TMR41_GCMVH = 322u, + INT_TMR41_GCMVL = 323u, + INT_TMR41_GCMWH = 324u, + INT_TMR41_GCMWL = 325u, + INT_TMR41_GOVF = 326u, + INT_TMR41_GUDF = 327u, + INT_TMR41_RLOU = 328u, + INT_TMR41_RLOV = 329u, + INT_TMR41_RLOW = 330u, + INT_TMR42_GCMUH = 336u, + INT_TMR42_GCMUL = 337u, + INT_TMR42_GCMVH = 338u, + INT_TMR42_GCMVL = 339u, + INT_TMR42_GCMWH = 340u, + INT_TMR42_GCMWL = 341u, + INT_TMR42_GOVF = 342u, + INT_TMR42_GUDF = 343u, + INT_TMR42_RLOU = 344u, + INT_TMR42_RLOV = 345u, + INT_TMR42_RLOW = 346u, + INT_TMR43_GCMUH = 352u, + INT_TMR43_GCMUL = 353u, + INT_TMR43_GCMVH = 354u, + INT_TMR43_GCMVL = 355u, + INT_TMR43_GCMWH = 356u, + INT_TMR43_GCMWL = 357u, + INT_TMR43_GOVF = 358u, + INT_TMR43_GUDF = 359u, + INT_TMR43_RLOU = 360u, + INT_TMR43_RLOV = 361u, + INT_TMR43_RLOW = 362u, + + /* EMB */ + INT_EMB_GR0 = 390u, + INT_EMB_GR1 = 391u, + INT_EMB_GR2 = 392u, + INT_EMB_GR3 = 393u, + + /* EVENT PORT */ + INT_EVENT_PORT1 = 394u, + INT_EVENT_PORT2 = 395u, + INT_EVENT_PORT3 = 396u, + INT_EVENT_PORT4 = 397u, + + /* I2S */ + INT_I2S1_TXIRQOUT = 400u, + INT_I2S1_RXIRQOUT = 401u, + INT_I2S1_ERRIRQOUT = 402u, + INT_I2S2_TXIRQOUT = 403u, + INT_I2S2_RXIRQOUT = 404u, + INT_I2S2_ERRIRQOUT = 405u, + INT_I2S3_TXIRQOUT = 406u, + INT_I2S3_RXIRQOUT = 407u, + INT_I2S3_ERRIRQOUT = 408u, + INT_I2S4_TXIRQOUT = 409u, + INT_I2S4_RXIRQOUT = 410u, + INT_I2S4_ERRIRQOUT = 411u, + + /* COMPARATOR */ + INT_ACMP1 = 416u, + INT_ACMP2 = 417u, + INT_ACMP3 = 418u, + + /* I2C */ + INT_I2C1_RXI = 420u, + INT_I2C1_TXI = 421u, + INT_I2C1_TEI = 422u, + INT_I2C1_EEI = 423u, + INT_I2C2_RXI = 424u, + INT_I2C2_TXI = 425u, + INT_I2C2_TEI = 426u, + INT_I2C2_EEI = 427u, + INT_I2C3_RXI = 428u, + INT_I2C3_TXI = 429u, + INT_I2C3_TEI = 430u, + INT_I2C3_EEI = 431u, + + /* PVD */ + INT_PVD_PVD1 = 433u, + INT_PVD_PVD2 = 434u, + + /* Temp. sensor */ + INT_OTS = 435u, + + /* FCM */ + INT_FCMFERRI = 436u, + INT_FCMMENDI = 437u, + INT_FCMCOVFI = 438u, + + /* WDT */ + INT_WDT_REFUDF = 439u, + + /* ADC */ + INT_ADC1_EOCA = 448u, + INT_ADC1_EOCB = 449u, + INT_ADC1_CHCMP = 450u, + INT_ADC1_SEQCMP = 451u, + INT_ADC2_EOCA = 452u, + INT_ADC2_EOCB = 453u, + INT_ADC2_CHCMP = 454u, + INT_ADC2_SEQCMP = 455u, + + /* TRNG */ + INT_TRNG_END = 456u, + + /* SDIOC */ + INT_SDIOC1_SD = 482u, + INT_SDIOC2_SD = 485u, + + /* CAN */ + INT_CAN_INT = 486u, + + INT_MAX = 511u, +}en_int_src_t; + +/******************************************************************************/ +/* Device Specific Peripheral Registers structures */ +/******************************************************************************/ + +#if defined ( __CC_ARM ) +#pragma anon_unions +#endif + +typedef struct +{ + __IO uint8_t STRT : 1; + uint8_t RESERVED1 : 7; +} stc_adc_str_field_t; + +typedef struct +{ + __IO uint16_t MS : 2; + uint16_t RESERVED2 : 2; + __IO uint16_t ACCSEL : 2; + __IO uint16_t CLREN : 1; + __IO uint16_t DFMT : 1; + __IO uint16_t AVCNT : 3; + uint16_t RESERVED11 : 5; +} stc_adc_cr0_field_t; + +typedef struct +{ + uint16_t RESERVED0 : 2; + __IO uint16_t RSCHSEL : 1; + uint16_t RESERVED3 :13; +} stc_adc_cr1_field_t; + +typedef struct +{ + __IO uint16_t TRGSELA : 3; + uint16_t RESERVED3 : 4; + __IO uint16_t TRGENA : 1; + __IO uint16_t TRGSELB : 3; + uint16_t RESERVED11 : 4; + __IO uint16_t TRGENB : 1; +} stc_adc_trgsr_field_t; + +typedef struct +{ + __IO uint16_t CHSELA16 : 1; + uint16_t RESERVED1 :15; +} stc_adc_chselra1_field_t; + +typedef struct +{ + __IO uint16_t CHSELB16 : 1; + uint16_t RESERVED1 :15; +} stc_adc_chselrb1_field_t; + +typedef struct +{ + __IO uint16_t AVCHSEL16 : 1; + uint16_t RESERVED1 :15; +} stc_adc_avchselr1_field_t; + +typedef struct +{ + __IO uint16_t CH00MUX : 4; + __IO uint16_t CH01MUX : 4; + __IO uint16_t CH02MUX : 4; + __IO uint16_t CH03MUX : 4; +} stc_adc_chmuxr0_field_t; + +typedef struct +{ + __IO uint16_t CH04MUX : 4; + __IO uint16_t CH05MUX : 4; + __IO uint16_t CH06MUX : 4; + __IO uint16_t CH07MUX : 4; +} stc_adc_chmuxr1_field_t; + +typedef struct +{ + __IO uint16_t CH08MUX : 4; + __IO uint16_t CH09MUX : 4; + __IO uint16_t CH10MUX : 4; + __IO uint16_t CH11MUX : 4; +} stc_adc_chmuxr2_field_t; + +typedef struct +{ + __IO uint16_t CH12MUX : 4; + __IO uint16_t CH13MUX : 4; + __IO uint16_t CH14MUX : 4; + __IO uint16_t CH15MUX : 4; +} stc_adc_chmuxr3_field_t; + +typedef struct +{ + __IO uint8_t EOCAF : 1; + __IO uint8_t EOCBF : 1; + uint8_t RESERVED2 : 6; +} stc_adc_isr_field_t; + +typedef struct +{ + __IO uint8_t EOCAIEN : 1; + __IO uint8_t EOCBIEN : 1; + uint8_t RESERVED2 : 6; +} stc_adc_icr_field_t; + +typedef struct +{ + __IO uint16_t SYNCEN : 1; + uint16_t RESERVED1 : 3; + __IO uint16_t SYNCMD : 3; + uint16_t RESERVED7 : 1; + __IO uint16_t SYNCDLY : 8; +} stc_adc_synccr_field_t; + +typedef struct +{ + __IO uint16_t AWDEN : 1; + uint16_t RESERVED1 : 3; + __IO uint16_t AWDMD : 1; + uint16_t RESERVED5 : 1; + __IO uint16_t AWDSS : 2; + __IO uint16_t AWDIEN : 1; + uint16_t RESERVED9 : 7; +} stc_adc_awdcr_field_t; + +typedef struct +{ + __IO uint16_t AWDCH16 : 1; + uint16_t RESERVED1 :15; +} stc_adc_awdchsr1_field_t; + +typedef struct +{ + __IO uint16_t AWDF16 : 1; + uint16_t RESERVED1 :15; +} stc_adc_awdsr1_field_t; + +typedef struct +{ + __IO uint16_t PGACTL : 4; + uint16_t RESERVED4 :12; +} stc_adc_pgacr_field_t; + +typedef struct +{ + __IO uint16_t GAIN : 4; + uint16_t RESERVED4 :12; +} stc_adc_pgagsr_field_t; + +typedef struct +{ + __IO uint16_t PGAINSEL : 9; + uint16_t RESERVED9 : 7; +} stc_adc_pgainsr0_field_t; + +typedef struct +{ + __IO uint16_t PGAVSSEN : 1; + uint16_t RESERVED1 :15; +} stc_adc_pgainsr1_field_t; + +typedef struct +{ + __IO uint32_t START : 1; + __IO uint32_t MODE : 1; + uint32_t RESERVED2 :30; +} stc_aes_cr_field_t; + +typedef struct +{ + __IO uint32_t STRG : 1; + uint32_t RESERVED1 :31; +} stc_aos_int_sfttrg_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dcu1_trgsel_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dcu2_trgsel_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dcu3_trgsel_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dcu4_trgsel_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dma1_trgsel_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dma1_trgsel3_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dma2_trgsel_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_dma_trgselrc_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_tmr6_htssr_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_tmr0_htssr_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_port_pevnttrgsr12_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_port_pevnttrgsr34_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_tmra_htssr_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_ots_trg_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_adc1_itrgselr_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :21; + __IO uint32_t COMTRG_EN : 2; +} stc_aos_adc2_itrgselr_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :23; +} stc_aos_comtrg1_field_t; + +typedef struct +{ + __IO uint32_t TRGSEL : 9; + uint32_t RESERVED9 :23; +} stc_aos_comtrg2_field_t; + +typedef struct +{ + __IO uint32_t PDIR00 : 1; + __IO uint32_t PDIR01 : 1; + __IO uint32_t PDIR02 : 1; + __IO uint32_t PDIR03 : 1; + __IO uint32_t PDIR04 : 1; + __IO uint32_t PDIR05 : 1; + __IO uint32_t PDIR06 : 1; + __IO uint32_t PDIR07 : 1; + __IO uint32_t PDIR08 : 1; + __IO uint32_t PDIR09 : 1; + __IO uint32_t PDIR10 : 1; + __IO uint32_t PDIR11 : 1; + __IO uint32_t PDIR12 : 1; + __IO uint32_t PDIR13 : 1; + __IO uint32_t PDIR14 : 1; + __IO uint32_t PDIR15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntdirr_field_t; + +typedef struct +{ + __IO uint32_t PIN00 : 1; + __IO uint32_t PIN01 : 1; + __IO uint32_t PIN02 : 1; + __IO uint32_t PIN03 : 1; + __IO uint32_t PIN04 : 1; + __IO uint32_t PIN05 : 1; + __IO uint32_t PIN06 : 1; + __IO uint32_t PIN07 : 1; + __IO uint32_t PIN08 : 1; + __IO uint32_t PIN09 : 1; + __IO uint32_t PIN10 : 1; + __IO uint32_t PIN11 : 1; + __IO uint32_t PIN12 : 1; + __IO uint32_t PIN13 : 1; + __IO uint32_t PIN14 : 1; + __IO uint32_t PIN15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntidr_field_t; + +typedef struct +{ + __IO uint32_t POUT00 : 1; + __IO uint32_t POUT01 : 1; + __IO uint32_t POUT02 : 1; + __IO uint32_t POUT03 : 1; + __IO uint32_t POUT04 : 1; + __IO uint32_t POUT05 : 1; + __IO uint32_t POUT06 : 1; + __IO uint32_t POUT07 : 1; + __IO uint32_t POUT08 : 1; + __IO uint32_t POUT09 : 1; + __IO uint32_t POUT10 : 1; + __IO uint32_t POUT11 : 1; + __IO uint32_t POUT12 : 1; + __IO uint32_t POUT13 : 1; + __IO uint32_t POUT14 : 1; + __IO uint32_t POUT15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntodr_field_t; + +typedef struct +{ + __IO uint32_t POR00 : 1; + __IO uint32_t POR01 : 1; + __IO uint32_t POR02 : 1; + __IO uint32_t POR03 : 1; + __IO uint32_t POR04 : 1; + __IO uint32_t POR05 : 1; + __IO uint32_t POR06 : 1; + __IO uint32_t POR07 : 1; + __IO uint32_t POR08 : 1; + __IO uint32_t POR09 : 1; + __IO uint32_t POR10 : 1; + __IO uint32_t POR11 : 1; + __IO uint32_t POR12 : 1; + __IO uint32_t POR13 : 1; + __IO uint32_t POR14 : 1; + __IO uint32_t POR15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntorr_field_t; + +typedef struct +{ + __IO uint32_t POS00 : 1; + __IO uint32_t POS01 : 1; + __IO uint32_t POS02 : 1; + __IO uint32_t POS03 : 1; + __IO uint32_t POS04 : 1; + __IO uint32_t POS05 : 1; + __IO uint32_t POS06 : 1; + __IO uint32_t POS07 : 1; + __IO uint32_t POS08 : 1; + __IO uint32_t POS09 : 1; + __IO uint32_t POS10 : 1; + __IO uint32_t POS11 : 1; + __IO uint32_t POS12 : 1; + __IO uint32_t POS13 : 1; + __IO uint32_t POS14 : 1; + __IO uint32_t POS15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntosr_field_t; + +typedef struct +{ + __IO uint32_t RIS00 : 1; + __IO uint32_t RIS01 : 1; + __IO uint32_t RIS02 : 1; + __IO uint32_t RIS03 : 1; + __IO uint32_t RIS04 : 1; + __IO uint32_t RIS05 : 1; + __IO uint32_t RIS06 : 1; + __IO uint32_t RIS07 : 1; + __IO uint32_t RIS08 : 1; + __IO uint32_t RIS09 : 1; + __IO uint32_t RIS10 : 1; + __IO uint32_t RIS11 : 1; + __IO uint32_t RIS12 : 1; + __IO uint32_t RIS13 : 1; + __IO uint32_t RIS14 : 1; + __IO uint32_t RIS15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntrisr_field_t; + +typedef struct +{ + __IO uint32_t FAL00 : 1; + __IO uint32_t FAL01 : 1; + __IO uint32_t FAL02 : 1; + __IO uint32_t FAL03 : 1; + __IO uint32_t FAL04 : 1; + __IO uint32_t FAL05 : 1; + __IO uint32_t FAL06 : 1; + __IO uint32_t FAL07 : 1; + __IO uint32_t FAL08 : 1; + __IO uint32_t FAL09 : 1; + __IO uint32_t FAL10 : 1; + __IO uint32_t FAL11 : 1; + __IO uint32_t FAL12 : 1; + __IO uint32_t FAL13 : 1; + __IO uint32_t FAL14 : 1; + __IO uint32_t FAL15 : 1; + uint32_t RESERVED16 :16; +} stc_aos_pevntfal_field_t; + +typedef struct +{ + __IO uint32_t NFEN1 : 1; + __IO uint32_t DIVS1 : 2; + uint32_t RESERVED3 : 5; + __IO uint32_t NFEN2 : 1; + __IO uint32_t DIVS2 : 2; + uint32_t RESERVED11 : 5; + __IO uint32_t NFEN3 : 1; + __IO uint32_t DIVS3 : 2; + uint32_t RESERVED19 : 5; + __IO uint32_t NFEN4 : 1; + __IO uint32_t DIVS4 : 2; + uint32_t RESERVED27 : 5; +} stc_aos_pevntnfcr_field_t; + +typedef struct +{ + __IO uint8_t BUSOFF : 1; + __IO uint8_t TACTIVE : 1; + __IO uint8_t RACTIVE : 1; + __IO uint8_t TSSS : 1; + __IO uint8_t TPSS : 1; + __IO uint8_t LBMI : 1; + __IO uint8_t LBME : 1; + __IO uint8_t RESET : 1; +} stc_can_cfg_stat_field_t; + +typedef struct +{ + __IO uint8_t TSA : 1; + __IO uint8_t TSALL : 1; + __IO uint8_t TSONE : 1; + __IO uint8_t TPA : 1; + __IO uint8_t TPE : 1; + __IO uint8_t STBY : 1; + __IO uint8_t LOM : 1; + __IO uint8_t TBSEL : 1; +} stc_can_tcmd_field_t; + +typedef struct +{ + __IO uint8_t TSSTAT : 2; + uint8_t RESERVED2 : 2; + __IO uint8_t TTBM : 1; + __IO uint8_t TSMODE : 1; + __IO uint8_t TSNEXT : 1; + uint8_t RESERVED7 : 1; +} stc_can_tctrl_field_t; + +typedef struct +{ + __IO uint8_t RSSTAT : 2; + uint8_t RESERVED2 : 1; + __IO uint8_t RBALL : 1; + __IO uint8_t RREL : 1; + __IO uint8_t ROV : 1; + __IO uint8_t ROM : 1; + __IO uint8_t SACK : 1; +} stc_can_rctrl_field_t; + +typedef struct +{ + __IO uint8_t TSFF : 1; + __IO uint8_t EIE : 1; + __IO uint8_t TSIE : 1; + __IO uint8_t TPIE : 1; + __IO uint8_t RAFIE : 1; + __IO uint8_t RFIE : 1; + __IO uint8_t ROIE : 1; + __IO uint8_t RIE : 1; +} stc_can_rtie_field_t; + +typedef struct +{ + __IO uint8_t AIF : 1; + __IO uint8_t EIF : 1; + __IO uint8_t TSIF : 1; + __IO uint8_t TPIF : 1; + __IO uint8_t RAFIF : 1; + __IO uint8_t RFIF : 1; + __IO uint8_t ROIF : 1; + __IO uint8_t RIF : 1; +} stc_can_rtif_field_t; + +typedef struct +{ + __IO uint8_t BEIF : 1; + __IO uint8_t BEIE : 1; + __IO uint8_t ALIF : 1; + __IO uint8_t ALIE : 1; + __IO uint8_t EPIF : 1; + __IO uint8_t EPIE : 1; + __IO uint8_t EPASS : 1; + __IO uint8_t EWARN : 1; +} stc_can_errint_field_t; + +typedef struct +{ + __IO uint8_t EWL : 4; + __IO uint8_t AFWL : 4; +} stc_can_limit_field_t; + +typedef struct +{ + __IO uint32_t SEG_1 : 8; + __IO uint32_t SEG_2 : 7; + uint32_t RESERVED15 : 1; + __IO uint32_t SJW : 7; + uint32_t RESERVED23 : 1; + __IO uint32_t PRESC : 8; +} stc_can_bt_field_t; + +typedef struct +{ + __IO uint8_t ALC : 5; + __IO uint8_t KOER : 3; +} stc_can_ealcap_field_t; + +typedef struct +{ + __IO uint8_t ACFADR : 4; + uint8_t RESERVED4 : 1; + __IO uint8_t SELMASK : 1; + uint8_t RESERVED6 : 2; +} stc_can_acfctrl_field_t; + +typedef struct +{ + __IO uint8_t AE_1 : 1; + __IO uint8_t AE_2 : 1; + __IO uint8_t AE_3 : 1; + __IO uint8_t AE_4 : 1; + __IO uint8_t AE_5 : 1; + __IO uint8_t AE_6 : 1; + __IO uint8_t AE_7 : 1; + __IO uint8_t AE_8 : 1; +} stc_can_acfen_field_t; + +typedef struct +{ + __IO uint32_t ACODEORAMASK :29; + __IO uint32_t AIDE : 1; + __IO uint32_t AIDEE : 1; + uint32_t RESERVED31 : 1; +} stc_can_acf_field_t; + +typedef struct +{ + __IO uint8_t TBPTR : 6; + __IO uint8_t TBF : 1; + __IO uint8_t TBE : 1; +} stc_can_tbslot_field_t; + +typedef struct +{ + __IO uint8_t TTEN : 1; + __IO uint8_t T_PRESC : 2; + __IO uint8_t TTIF : 1; + __IO uint8_t TTIE : 1; + __IO uint8_t TEIF : 1; + __IO uint8_t WTIF : 1; + __IO uint8_t WTIE : 1; +} stc_can_ttcfg_field_t; + +typedef struct +{ + __IO uint32_t REF_ID :29; + uint32_t RESERVED29 : 2; + __IO uint32_t REF_IDE : 1; +} stc_can_ref_msg_field_t; + +typedef struct +{ + __IO uint16_t TTPTR : 6; + uint16_t RESERVED6 : 2; + __IO uint16_t TTYPE : 3; + uint16_t RESERVED11 : 1; + __IO uint16_t TEW : 4; +} stc_can_trg_cfg_field_t; + +typedef struct +{ + __IO uint16_t FLTSL : 3; + uint16_t RESERVED3 : 2; + __IO uint16_t EDGSL : 2; + __IO uint16_t IEN : 1; + __IO uint16_t CVSEN : 1; + uint16_t RESERVED9 : 3; + __IO uint16_t OUTEN : 1; + __IO uint16_t INV : 1; + __IO uint16_t CMPOE : 1; + __IO uint16_t CMPON : 1; +} stc_cmp_ctrl_field_t; + +typedef struct +{ + __IO uint16_t RVSL : 4; + uint16_t RESERVED4 : 4; + __IO uint16_t CVSL : 4; + __IO uint16_t C4SL : 3; + uint16_t RESERVED15 : 1; +} stc_cmp_vltsel_field_t; + +typedef struct +{ + __IO uint16_t OMON : 1; + uint16_t RESERVED1 : 7; + __IO uint16_t CVST : 4; + uint16_t RESERVED12 : 4; +} stc_cmp_mon_field_t; + +typedef struct +{ + __IO uint16_t STB : 4; + uint16_t RESERVED4 :12; +} stc_cmp_cvsstb_field_t; + +typedef struct +{ + __IO uint16_t PRD : 8; + uint16_t RESERVED8 : 8; +} stc_cmp_cvsprd_field_t; + +typedef struct +{ + __IO uint16_t DATA : 8; + uint16_t RESERVED8 : 8; +} stc_cmp_cr_dadr1_field_t; + +typedef struct +{ + __IO uint16_t DATA : 8; + uint16_t RESERVED8 : 8; +} stc_cmp_cr_dadr2_field_t; + +typedef struct +{ + __IO uint16_t DA1EN : 1; + __IO uint16_t DA2EN : 1; + uint16_t RESERVED2 :14; +} stc_cmp_cr_dacr_field_t; + +typedef struct +{ + __IO uint16_t DA1SW : 1; + __IO uint16_t DA2SW : 1; + uint16_t RESERVED2 : 2; + __IO uint16_t VREFSW : 1; + uint16_t RESERVED5 : 3; + __IO uint16_t WPRT : 8; +} stc_cmp_cr_rvadc_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 1; + __IO uint32_t CRC_SEL : 1; + __IO uint32_t REFIN : 1; + __IO uint32_t REFOUT : 1; + __IO uint32_t XOROUT : 1; + uint32_t RESERVED5 :27; +} stc_crc_cr_field_t; + +typedef struct +{ + __IO uint32_t FLAG : 1; + uint32_t RESERVED1 :31; +} stc_crc_flg_field_t; + +typedef struct +{ + __IO uint32_t AUTH : 1; + __IO uint32_t REMVLOCK : 1; + __IO uint32_t SAFTYLOCK1 : 1; + __IO uint32_t SAFTYLOCK2 : 1; + uint32_t RESERVED4 : 4; + __IO uint32_t CPUSTOP : 1; + __IO uint32_t CPUSLEEP : 1; + uint32_t RESERVED10 :22; +} stc_dbgc_mcustat_field_t; + +typedef struct +{ + __IO uint32_t EDBGRQ : 1; + __IO uint32_t RESTART : 1; + uint32_t RESERVED2 : 6; + __IO uint32_t DIRQ : 1; + uint32_t RESERVED9 :23; +} stc_dbgc_mcuctl_field_t; + +typedef struct +{ + __IO uint32_t ERASEREQ : 1; + __IO uint32_t ERASEACK : 1; + __IO uint32_t ERASEERR : 1; + uint32_t RESERVED3 :29; +} stc_dbgc_fmcctl_field_t; + +typedef struct +{ + __IO uint32_t CDBGPWRUPREQ : 1; + __IO uint32_t CDBGPWRUPACK : 1; + uint32_t RESERVED2 :30; +} stc_dbgc_mcudbgstat_field_t; + +typedef struct +{ + __IO uint32_t SWDTSTP : 1; + __IO uint32_t WDTSTP : 1; + __IO uint32_t RTCSTP : 1; + __IO uint32_t PVD0STP : 1; + __IO uint32_t PVD1STP : 1; + __IO uint32_t PVD2STP : 1; + uint32_t RESERVED6 : 8; + __IO uint32_t TMR01STP : 1; + __IO uint32_t TMR02STP : 1; + uint32_t RESERVED16 : 4; + __IO uint32_t TMR41STP : 1; + __IO uint32_t TMR42STP : 1; + __IO uint32_t TMR43STP : 1; + __IO uint32_t TM61STP : 1; + __IO uint32_t TM62STP : 1; + __IO uint32_t TMR63STP : 1; + __IO uint32_t TMRA1STP : 1; + __IO uint32_t TMRA2STP : 1; + __IO uint32_t TMRA3STP : 1; + __IO uint32_t TMRA4STP : 1; + __IO uint32_t TMRA5STP : 1; + __IO uint32_t TMRA6STP : 1; +} stc_dbgc_mcustpctl_field_t; + +typedef struct +{ + __IO uint32_t TRACEMODE : 2; + __IO uint32_t TRACEIOEN : 1; + uint32_t RESERVED3 :29; +} stc_dbgc_mcutracectl_field_t; + +typedef struct +{ + __IO uint32_t MODE : 3; + __IO uint32_t DATASIZE : 2; + uint32_t RESERVED5 : 3; + __IO uint32_t COMP_TRG : 1; + uint32_t RESERVED9 :22; + __IO uint32_t INTEN : 1; +} stc_dcu_ctl_field_t; + +typedef struct +{ + __IO uint32_t FLAG_OP : 1; + __IO uint32_t FLAG_LS2 : 1; + __IO uint32_t FLAG_EQ2 : 1; + __IO uint32_t FLAG_GT2 : 1; + __IO uint32_t FLAG_LS1 : 1; + __IO uint32_t FLAG_EQ1 : 1; + __IO uint32_t FLAG_GT1 : 1; + uint32_t RESERVED7 :25; +} stc_dcu_flag_field_t; + +typedef struct +{ + __IO uint32_t CLR_OP : 1; + __IO uint32_t CLR_LS2 : 1; + __IO uint32_t CLR_EQ2 : 1; + __IO uint32_t CLR_GT2 : 1; + __IO uint32_t CLR_LS1 : 1; + __IO uint32_t CLR_EQ1 : 1; + __IO uint32_t CLR_GT1 : 1; + uint32_t RESERVED7 :25; +} stc_dcu_flagclr_field_t; + +typedef struct +{ + __IO uint32_t INT_OP : 1; + __IO uint32_t INT_LS2 : 1; + __IO uint32_t INT_EQ2 : 1; + __IO uint32_t INT_GT2 : 1; + __IO uint32_t INT_LS1 : 1; + __IO uint32_t INT_EQ1 : 1; + __IO uint32_t INT_GT1 : 1; + __IO uint32_t INT_WIN : 2; + uint32_t RESERVED9 :23; +} stc_dcu_intsel_field_t; + +typedef struct +{ + __IO uint32_t EN : 1; + uint32_t RESERVED1 :31; +} stc_dma_en_field_t; + +typedef struct +{ + __IO uint32_t TRNERR : 4; + uint32_t RESERVED4 :12; + __IO uint32_t REQERR : 4; + uint32_t RESERVED20 :12; +} stc_dma_intstat0_field_t; + +typedef struct +{ + __IO uint32_t TC : 4; + uint32_t RESERVED4 :12; + __IO uint32_t BTC : 4; + uint32_t RESERVED20 :12; +} stc_dma_intstat1_field_t; + +typedef struct +{ + __IO uint32_t MSKTRNERR : 4; + uint32_t RESERVED4 :12; + __IO uint32_t MSKREQERR : 4; + uint32_t RESERVED20 :12; +} stc_dma_intmask0_field_t; + +typedef struct +{ + __IO uint32_t MSKTC : 4; + uint32_t RESERVED4 :12; + __IO uint32_t MSKBTC : 4; + uint32_t RESERVED20 :12; +} stc_dma_intmask1_field_t; + +typedef struct +{ + __IO uint32_t CLRTRNERR : 4; + uint32_t RESERVED4 :12; + __IO uint32_t CLRREQERR : 4; + uint32_t RESERVED20 :12; +} stc_dma_intclr0_field_t; + +typedef struct +{ + __IO uint32_t CLRTC : 4; + uint32_t RESERVED4 :12; + __IO uint32_t CLRBTC : 4; + uint32_t RESERVED20 :12; +} stc_dma_intclr1_field_t; + +typedef struct +{ + __IO uint32_t CHEN : 4; + uint32_t RESERVED4 :28; +} stc_dma_chen_field_t; + +typedef struct +{ + __IO uint32_t DMAACT : 1; + __IO uint32_t RCFGACT : 1; + uint32_t RESERVED2 :14; + __IO uint32_t CHACT : 4; + uint32_t RESERVED20 :12; +} stc_dma_chstat_field_t; + +typedef struct +{ + __IO uint32_t RCFGEN : 1; + __IO uint32_t RCFGLLP : 1; + uint32_t RESERVED2 : 6; + __IO uint32_t RCFGCHS : 4; + uint32_t RESERVED12 : 4; + __IO uint32_t SARMD : 2; + __IO uint32_t DARMD : 2; + __IO uint32_t CNTMD : 2; + uint32_t RESERVED22 :10; +} stc_dma_rcfgctl_field_t; + +typedef struct +{ + __IO uint32_t BLKSIZE :10; + uint32_t RESERVED10 : 6; + __IO uint32_t CNT :16; +} stc_dma_dtctl_field_t; + +typedef struct +{ + __IO uint32_t SRPT :10; + uint32_t RESERVED10 : 6; + __IO uint32_t DRPT :10; + uint32_t RESERVED26 : 6; +} stc_dma_rpt_field_t; + +typedef struct +{ + __IO uint32_t SRPTB :10; + uint32_t RESERVED10 : 6; + __IO uint32_t DRPTB :10; + uint32_t RESERVED26 : 6; +} stc_dma_rptb_field_t; + +typedef struct +{ + __IO uint32_t SOFFSET :20; + __IO uint32_t SNSCNT :12; +} stc_dma_snseqctl_field_t; + +typedef struct +{ + __IO uint32_t SNSDIST :20; + __IO uint32_t SNSCNTB :12; +} stc_dma_snseqctlb_field_t; + +typedef struct +{ + __IO uint32_t DOFFSET :20; + __IO uint32_t DNSCNT :12; +} stc_dma_dnseqctl_field_t; + +typedef struct +{ + __IO uint32_t DNSDIST :20; + __IO uint32_t DNSCNTB :12; +} stc_dma_dnseqctlb_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 2; + __IO uint32_t LLP :30; +} stc_dma_llp_field_t; + +typedef struct +{ + __IO uint32_t SINC : 2; + __IO uint32_t DINC : 2; + __IO uint32_t SRPTEN : 1; + __IO uint32_t DRPTEN : 1; + __IO uint32_t SNSEQEN : 1; + __IO uint32_t DNSEQEN : 1; + __IO uint32_t HSIZE : 2; + __IO uint32_t LLPEN : 1; + __IO uint32_t LLPRUN : 1; + __IO uint32_t IE : 1; + uint32_t RESERVED13 :19; +} stc_dma_ch0ctl_field_t; + +typedef struct +{ + __IO uint32_t BLKSIZE :10; + uint32_t RESERVED10 : 6; + __IO uint32_t CNT :16; +} stc_dma_mondtctl_field_t; + +typedef struct +{ + __IO uint32_t SRPT :10; + uint32_t RESERVED10 : 6; + __IO uint32_t DRPT :10; + uint32_t RESERVED26 : 6; +} stc_dma_monrpt_field_t; + +typedef struct +{ + __IO uint32_t SOFFSET :20; + __IO uint32_t SNSCNT :12; +} stc_dma_monsnseqctl_field_t; + +typedef struct +{ + __IO uint32_t DOFFSET :20; + __IO uint32_t DNSCNT :12; +} stc_dma_mondnseqctl_field_t; + +typedef struct +{ + __IO uint32_t SINC : 2; + __IO uint32_t DINC : 2; + __IO uint32_t SRPTEN : 1; + __IO uint32_t DRPTEN : 1; + __IO uint32_t SNSEQEN : 1; + __IO uint32_t DNSEQEN : 1; + __IO uint32_t HSIZE : 2; + __IO uint32_t LLPEN : 1; + __IO uint32_t LLPRUN : 1; + __IO uint32_t IE : 1; + uint32_t RESERVED13 :19; +} stc_dma_ch1ctl_field_t; + +typedef struct +{ + __IO uint32_t SINC : 2; + __IO uint32_t DINC : 2; + __IO uint32_t SRPTEN : 1; + __IO uint32_t DRPTEN : 1; + __IO uint32_t SNSEQEN : 1; + __IO uint32_t DNSEQEN : 1; + __IO uint32_t HSIZE : 2; + __IO uint32_t LLPEN : 1; + __IO uint32_t LLPRUN : 1; + __IO uint32_t IE : 1; + uint32_t RESERVED13 :19; +} stc_dma_ch2ctl_field_t; + +typedef struct +{ + __IO uint32_t SINC : 2; + __IO uint32_t DINC : 2; + __IO uint32_t SRPTEN : 1; + __IO uint32_t DRPTEN : 1; + __IO uint32_t SNSEQEN : 1; + __IO uint32_t DNSEQEN : 1; + __IO uint32_t HSIZE : 2; + __IO uint32_t LLPEN : 1; + __IO uint32_t LLPRUN : 1; + __IO uint32_t IE : 1; + uint32_t RESERVED13 :19; +} stc_dma_ch3ctl_field_t; + +typedef struct +{ + __IO uint32_t FAPRT :16; + uint32_t RESERVED16 :16; +} stc_efm_faprt_field_t; + +typedef struct +{ + __IO uint32_t FSTP : 1; + uint32_t RESERVED1 :31; +} stc_efm_fstp_field_t; + +typedef struct +{ + __IO uint32_t SLPMD : 1; + uint32_t RESERVED1 : 3; + __IO uint32_t FLWT : 4; + __IO uint32_t LVM : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t CACHE : 1; + uint32_t RESERVED17 : 7; + __IO uint32_t CRST : 1; + uint32_t RESERVED25 : 7; +} stc_efm_frmc_field_t; + +typedef struct +{ + __IO uint32_t PEMODE : 1; + uint32_t RESERVED1 : 3; + __IO uint32_t PEMOD : 3; + uint32_t RESERVED7 : 1; + __IO uint32_t BUSHLDCTL : 1; + uint32_t RESERVED9 :23; +} stc_efm_fwmc_field_t; + +typedef struct +{ + __IO uint32_t PEWERR : 1; + __IO uint32_t PEPRTERR : 1; + __IO uint32_t PGSZERR : 1; + __IO uint32_t PGMISMTCH : 1; + __IO uint32_t OPTEND : 1; + __IO uint32_t COLERR : 1; + uint32_t RESERVED6 : 2; + __IO uint32_t RDY : 1; + uint32_t RESERVED9 :23; +} stc_efm_fsr_field_t; + +typedef struct +{ + __IO uint32_t PEWERRCLR : 1; + __IO uint32_t PEPRTERRCLR : 1; + __IO uint32_t PGSZERRCLR : 1; + __IO uint32_t PGMISMTCHCLR : 1; + __IO uint32_t OPTENDCLR : 1; + __IO uint32_t COLERRCLR : 1; + uint32_t RESERVED6 :26; +} stc_efm_fsclr_field_t; + +typedef struct +{ + __IO uint32_t PEERRITE : 1; + __IO uint32_t OPTENDITE : 1; + __IO uint32_t COLERRITE : 1; + uint32_t RESERVED3 :29; +} stc_efm_fite_field_t; + +typedef struct +{ + __IO uint32_t FSWP : 1; + uint32_t RESERVED1 :31; +} stc_efm_fswp_field_t; + +typedef struct +{ + __IO uint32_t FPMTSW :19; + uint32_t RESERVED19 :13; +} stc_efm_fpmtsw_field_t; + +typedef struct +{ + __IO uint32_t FPMTEW :19; + uint32_t RESERVED19 :13; +} stc_efm_fpmtew_field_t; + +typedef struct +{ + __IO uint32_t REMPRT :16; + uint32_t RESERVED16 :16; +} stc_efm_mmf_remprt_field_t; + +typedef struct +{ + __IO uint32_t RM0SIZE : 5; + uint32_t RESERVED5 : 7; + __IO uint32_t RM0TADDR :17; + uint32_t RESERVED29 : 2; + __IO uint32_t EN0 : 1; +} stc_efm_mmf_remcr0_field_t; + +typedef struct +{ + __IO uint32_t RM1SIZE : 5; + uint32_t RESERVED5 : 7; + __IO uint32_t RM1TADDR :17; + uint32_t RESERVED29 : 2; + __IO uint32_t EN1 : 1; +} stc_efm_mmf_remcr1_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 1; + __IO uint32_t FRANDS :14; + uint32_t RESERVED15 : 1; + __IO uint32_t FRANDFG : 1; + uint32_t RESERVED17 :15; +} stc_efm_efm_frands_field_t; + +typedef struct +{ + __IO uint32_t PORTINEN : 1; + __IO uint32_t CMPEN : 3; + uint32_t RESERVED4 : 1; + __IO uint32_t OSCSTPEN : 1; + __IO uint32_t PWMSEN : 3; + uint32_t RESERVED9 :19; + __IO uint32_t NFSEL : 2; + __IO uint32_t NFEN : 1; + __IO uint32_t INVSEL : 1; +} stc_emb_ctl_field_t; + +typedef struct +{ + __IO uint32_t PWMLV : 3; + uint32_t RESERVED3 :29; +} stc_emb_pwmlv_field_t; + +typedef struct +{ + __IO uint32_t SOE : 1; + uint32_t RESERVED1 :31; +} stc_emb_soe_field_t; + +typedef struct +{ + __IO uint32_t PORTINF : 1; + __IO uint32_t PWMSF : 1; + __IO uint32_t CMPF : 1; + __IO uint32_t OSF : 1; + __IO uint32_t PORTINST : 1; + __IO uint32_t PWMST : 1; + uint32_t RESERVED6 :26; +} stc_emb_stat_field_t; + +typedef struct +{ + __IO uint32_t PORTINFCLR : 1; + __IO uint32_t PWMSFCLR : 1; + __IO uint32_t CMPFCLR : 1; + __IO uint32_t OSFCLR : 1; + uint32_t RESERVED4 :28; +} stc_emb_statclr_field_t; + +typedef struct +{ + __IO uint32_t PORTINTEN : 1; + __IO uint32_t PWMINTEN : 1; + __IO uint32_t CMPINTEN : 1; + __IO uint32_t OSINTEN : 1; + uint32_t RESERVED4 :28; +} stc_emb_inten_field_t; + +typedef struct +{ + __IO uint32_t LVR :16; + uint32_t RESERVED16 :16; +} stc_fcm_lvr_field_t; + +typedef struct +{ + __IO uint32_t UVR :16; + uint32_t RESERVED16 :16; +} stc_fcm_uvr_field_t; + +typedef struct +{ + __IO uint32_t CNTR :16; + uint32_t RESERVED16 :16; +} stc_fcm_cntr_field_t; + +typedef struct +{ + __IO uint32_t START : 1; + uint32_t RESERVED1 :31; +} stc_fcm_str_field_t; + +typedef struct +{ + __IO uint32_t MDIVS : 2; + uint32_t RESERVED2 : 2; + __IO uint32_t MCKS : 4; + uint32_t RESERVED8 :24; +} stc_fcm_mccr_field_t; + +typedef struct +{ + __IO uint32_t RDIVS : 2; + uint32_t RESERVED2 : 1; + __IO uint32_t RCKS : 4; + __IO uint32_t INEXS : 1; + __IO uint32_t DNFS : 2; + uint32_t RESERVED10 : 2; + __IO uint32_t EDGES : 2; + uint32_t RESERVED14 : 1; + __IO uint32_t EXREFE : 1; + uint32_t RESERVED16 :16; +} stc_fcm_rccr_field_t; + +typedef struct +{ + __IO uint32_t ERRIE : 1; + __IO uint32_t MENDIE : 1; + __IO uint32_t OVFIE : 1; + uint32_t RESERVED3 : 1; + __IO uint32_t ERRINTRS : 1; + uint32_t RESERVED5 : 2; + __IO uint32_t ERRE : 1; + uint32_t RESERVED8 :24; +} stc_fcm_rier_field_t; + +typedef struct +{ + __IO uint32_t ERRF : 1; + __IO uint32_t MENDF : 1; + __IO uint32_t OVF : 1; + uint32_t RESERVED3 :29; +} stc_fcm_sr_field_t; + +typedef struct +{ + __IO uint32_t ERRFCLR : 1; + __IO uint32_t MENDFCLR : 1; + __IO uint32_t OVFCLR : 1; + uint32_t RESERVED3 :29; +} stc_fcm_clr_field_t; + +typedef struct +{ + __IO uint32_t START : 1; + __IO uint32_t FST_GRP : 1; + uint32_t RESERVED2 :30; +} stc_hash_cr_field_t; + +typedef struct +{ + __IO uint32_t PE : 1; + __IO uint32_t SMBUS : 1; + __IO uint32_t SMBALRTEN : 1; + __IO uint32_t SMBDEFAULTEN : 1; + __IO uint32_t SMBHOSTEN : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t ENGC : 1; + __IO uint32_t RESTART : 1; + __IO uint32_t START : 1; + __IO uint32_t STOP : 1; + __IO uint32_t ACK : 1; + uint32_t RESERVED11 : 4; + __IO uint32_t SWRST : 1; + uint32_t RESERVED16 :16; +} stc_i2c_cr1_field_t; + +typedef struct +{ + __IO uint32_t STARTIE : 1; + __IO uint32_t SLADDR0IE : 1; + __IO uint32_t SLADDR1IE : 1; + __IO uint32_t TENDIE : 1; + __IO uint32_t STOPIE : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t RFULLIE : 1; + __IO uint32_t TEMPTYIE : 1; + uint32_t RESERVED8 : 1; + __IO uint32_t ARLOIE : 1; + uint32_t RESERVED10 : 2; + __IO uint32_t NACKIE : 1; + uint32_t RESERVED13 : 1; + __IO uint32_t TMOUTIE : 1; + uint32_t RESERVED15 : 5; + __IO uint32_t GENCALLIE : 1; + __IO uint32_t SMBDEFAULTIE : 1; + __IO uint32_t SMBHOSTIE : 1; + __IO uint32_t SMBALRTIE : 1; + uint32_t RESERVED24 : 8; +} stc_i2c_cr2_field_t; + +typedef struct +{ + __IO uint32_t TMOUTEN : 1; + __IO uint32_t LTMOUT : 1; + __IO uint32_t HTMOUT : 1; + uint32_t RESERVED3 : 4; + __IO uint32_t FACKEN : 1; + uint32_t RESERVED8 :24; +} stc_i2c_cr3_field_t; + +typedef struct +{ + __IO uint32_t SLADDR0 :10; + uint32_t RESERVED10 : 2; + __IO uint32_t SLADDR0EN : 1; + uint32_t RESERVED13 : 2; + __IO uint32_t ADDRMOD0 : 1; + uint32_t RESERVED16 :16; +} stc_i2c_slr0_field_t; + +typedef struct +{ + __IO uint32_t SLADDR1 :10; + uint32_t RESERVED10 : 2; + __IO uint32_t SLADDR1EN : 1; + uint32_t RESERVED13 : 2; + __IO uint32_t ADDRMOD1 : 1; + uint32_t RESERVED16 :16; +} stc_i2c_slr1_field_t; + +typedef struct +{ + __IO uint32_t TOUTLOW :16; + __IO uint32_t TOUTHIGH :16; +} stc_i2c_sltr_field_t; + +typedef struct +{ + __IO uint32_t STARTF : 1; + __IO uint32_t SLADDR0F : 1; + __IO uint32_t SLADDR1F : 1; + __IO uint32_t TENDF : 1; + __IO uint32_t STOPF : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t RFULLF : 1; + __IO uint32_t TEMPTYF : 1; + uint32_t RESERVED8 : 1; + __IO uint32_t ARLOF : 1; + __IO uint32_t ACKRF : 1; + uint32_t RESERVED11 : 1; + __IO uint32_t NACKF : 1; + uint32_t RESERVED13 : 1; + __IO uint32_t TMOUTF : 1; + uint32_t RESERVED15 : 1; + __IO uint32_t MSL : 1; + __IO uint32_t BUSY : 1; + __IO uint32_t TRA : 1; + uint32_t RESERVED19 : 1; + __IO uint32_t GENCALLF : 1; + __IO uint32_t SMBDEFAULTF : 1; + __IO uint32_t SMBHOSTF : 1; + __IO uint32_t SMBALRTF : 1; + uint32_t RESERVED24 : 8; +} stc_i2c_sr_field_t; + +typedef struct +{ + __IO uint32_t STARTFCLR : 1; + __IO uint32_t SLADDR0FCLR : 1; + __IO uint32_t SLADDR1FCLR : 1; + __IO uint32_t TENDFCLR : 1; + __IO uint32_t STOPFCLR : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t RFULLFCLR : 1; + __IO uint32_t TEMPTYFCLR : 1; + uint32_t RESERVED8 : 1; + __IO uint32_t ARLOFCLR : 1; + uint32_t RESERVED10 : 2; + __IO uint32_t NACKFCLR : 1; + uint32_t RESERVED13 : 1; + __IO uint32_t TMOUTFCLR : 1; + uint32_t RESERVED15 : 5; + __IO uint32_t GENCALLFCLR : 1; + __IO uint32_t SMBDEFAULTFCLR : 1; + __IO uint32_t SMBHOSTFCLR : 1; + __IO uint32_t SMBALRTFCLR : 1; + uint32_t RESERVED24 : 8; +} stc_i2c_clr_field_t; + +typedef struct +{ + __IO uint8_t DT : 8; +} stc_i2c_dtr_field_t; + +typedef struct +{ + __IO uint8_t DR : 8; +} stc_i2c_drr_field_t; + +typedef struct +{ + __IO uint32_t SLOWW : 5; + uint32_t RESERVED5 : 3; + __IO uint32_t SHIGHW : 5; + uint32_t RESERVED13 : 3; + __IO uint32_t FREQ : 3; + uint32_t RESERVED19 :13; +} stc_i2c_ccr_field_t; + +typedef struct +{ + __IO uint32_t DNF : 2; + uint32_t RESERVED2 : 2; + __IO uint32_t DNFEN : 1; + __IO uint32_t ANFEN : 1; + uint32_t RESERVED6 :26; +} stc_i2c_fltr_field_t; + +typedef struct +{ + __IO uint32_t TXE : 1; + __IO uint32_t TXIE : 1; + __IO uint32_t RXE : 1; + __IO uint32_t RXIE : 1; + __IO uint32_t EIE : 1; + __IO uint32_t WMS : 1; + __IO uint32_t ODD : 1; + __IO uint32_t MCKOE : 1; + __IO uint32_t TXBIRQWL : 3; + uint32_t RESERVED11 : 1; + __IO uint32_t RXBIRQWL : 3; + uint32_t RESERVED15 : 1; + __IO uint32_t FIFOR : 1; + __IO uint32_t CODECRC : 1; + __IO uint32_t I2SPLLSEL : 1; + __IO uint32_t SDOE : 1; + __IO uint32_t LRCKOE : 1; + __IO uint32_t CKOE : 1; + __IO uint32_t DUPLEX : 1; + __IO uint32_t CLKSEL : 1; + uint32_t RESERVED24 : 8; +} stc_i2s_ctrl_field_t; + +typedef struct +{ + __IO uint32_t TXBA : 1; + __IO uint32_t RXBA : 1; + __IO uint32_t TXBE : 1; + __IO uint32_t TXBF : 1; + __IO uint32_t RXBE : 1; + __IO uint32_t RXBF : 1; + uint32_t RESERVED6 :26; +} stc_i2s_sr_field_t; + +typedef struct +{ + __IO uint32_t TXERR : 1; + __IO uint32_t RXERR : 1; + uint32_t RESERVED2 :30; +} stc_i2s_er_field_t; + +typedef struct +{ + __IO uint32_t I2SSTD : 2; + __IO uint32_t DATLEN : 2; + __IO uint32_t CHLEN : 1; + __IO uint32_t PCMSYNC : 1; + uint32_t RESERVED6 :26; +} stc_i2s_cfgr_field_t; + +typedef struct +{ + __IO uint32_t I2SDIV : 8; + uint32_t RESERVED8 :24; +} stc_i2s_pr_field_t; + +typedef struct +{ + __IO uint32_t SWDTAUTS : 1; + __IO uint32_t SWDTITS : 1; + __IO uint32_t SWDTPERI : 2; + __IO uint32_t SWDTCKS : 4; + __IO uint32_t SWDTWDPT : 4; + __IO uint32_t SWDTSLPOFF : 1; + uint32_t RESERVED13 : 3; + __IO uint32_t WDTAUTS : 1; + __IO uint32_t WDTITS : 1; + __IO uint32_t WDTPERI : 2; + __IO uint32_t WDTCKS : 4; + __IO uint32_t WDTWDPT : 4; + __IO uint32_t WDTSLPOFF : 1; + uint32_t RESERVED29 : 3; +} stc_icg_icg0_field_t; + +typedef struct +{ + __IO uint32_t HRCFREQSEL : 1; + uint32_t RESERVED1 : 7; + __IO uint32_t HRCSTOP : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t BOR_LEV : 2; + __IO uint32_t BORDIS : 1; + uint32_t RESERVED19 : 7; + __IO uint32_t SMPCLK : 2; + __IO uint32_t NMITRG : 1; + __IO uint32_t NMIENR : 1; + __IO uint32_t NFEN : 1; + __IO uint32_t NMIICGENA : 1; +} stc_icg_icg1_field_t; + +typedef struct +{ + __IO uint32_t NMITRG : 1; + uint32_t RESERVED1 : 3; + __IO uint32_t NSMPCLK : 2; + uint32_t RESERVED6 : 1; + __IO uint32_t NFEN : 1; + uint32_t RESERVED8 :24; +} stc_intc_nmicr_field_t; + +typedef struct +{ + __IO uint32_t NMIENR : 1; + __IO uint32_t SWDTENR : 1; + __IO uint32_t PVD1ENR : 1; + __IO uint32_t PVD2ENR : 1; + uint32_t RESERVED4 : 1; + __IO uint32_t XTALSTPENR : 1; + uint32_t RESERVED6 : 2; + __IO uint32_t REPENR : 1; + __IO uint32_t RECCENR : 1; + __IO uint32_t BUSMENR : 1; + __IO uint32_t WDTENR : 1; + uint32_t RESERVED12 :20; +} stc_intc_nmienr_field_t; + +typedef struct +{ + __IO uint32_t NMIFR : 1; + __IO uint32_t SWDTFR : 1; + __IO uint32_t PVD1FR : 1; + __IO uint32_t PVD2FR : 1; + uint32_t RESERVED4 : 1; + __IO uint32_t XTALSTPFR : 1; + uint32_t RESERVED6 : 2; + __IO uint32_t REPFR : 1; + __IO uint32_t RECCFR : 1; + __IO uint32_t BUSMFR : 1; + __IO uint32_t WDTFR : 1; + uint32_t RESERVED12 :20; +} stc_intc_nmifr_field_t; + +typedef struct +{ + __IO uint32_t NMICFR : 1; + __IO uint32_t SWDTCFR : 1; + __IO uint32_t PVD1CFR : 1; + __IO uint32_t PVD2CFR : 1; + uint32_t RESERVED4 : 1; + __IO uint32_t XTALSTPCFR : 1; + uint32_t RESERVED6 : 2; + __IO uint32_t REPCFR : 1; + __IO uint32_t RECCCFR : 1; + __IO uint32_t BUSMCFR : 1; + __IO uint32_t WDTCFR : 1; + uint32_t RESERVED12 :20; +} stc_intc_nmicfr_field_t; + +typedef struct +{ + __IO uint32_t EIRQTRG : 2; + uint32_t RESERVED2 : 2; + __IO uint32_t EISMPCLK : 2; + uint32_t RESERVED6 : 1; + __IO uint32_t EFEN : 1; + uint32_t RESERVED8 :24; +} stc_intc_eirqcr_field_t; + +typedef struct +{ + __IO uint32_t EIRQWUEN :16; + __IO uint32_t SWDTWUEN : 1; + __IO uint32_t PVD1WUEN : 1; + __IO uint32_t PVD2WUEN : 1; + __IO uint32_t CMPI0WUEN : 1; + __IO uint32_t WKTMWUEN : 1; + __IO uint32_t RTCALMWUEN : 1; + __IO uint32_t RTCPRDWUEN : 1; + __IO uint32_t TMR0WUEN : 1; + uint32_t RESERVED24 : 1; + __IO uint32_t RXWUEN : 1; + uint32_t RESERVED26 : 6; +} stc_intc_wupen_field_t; + +typedef struct +{ + __IO uint32_t EIFR0 : 1; + __IO uint32_t EIFR1 : 1; + __IO uint32_t EIFR2 : 1; + __IO uint32_t EIFR3 : 1; + __IO uint32_t EIFR4 : 1; + __IO uint32_t EIFR5 : 1; + __IO uint32_t EIFR6 : 1; + __IO uint32_t EIFR7 : 1; + __IO uint32_t EIFR8 : 1; + __IO uint32_t EIFR9 : 1; + __IO uint32_t EIFR10 : 1; + __IO uint32_t EIFR11 : 1; + __IO uint32_t EIFR12 : 1; + __IO uint32_t EIFR13 : 1; + __IO uint32_t EIFR14 : 1; + __IO uint32_t EIFR15 : 1; + uint32_t RESERVED16 :16; +} stc_intc_eifr_field_t; + +typedef struct +{ + __IO uint32_t EICFR0 : 1; + __IO uint32_t EICFR1 : 1; + __IO uint32_t EICFR2 : 1; + __IO uint32_t EICFR3 : 1; + __IO uint32_t EICFR4 : 1; + __IO uint32_t EICFR5 : 1; + __IO uint32_t EICFR6 : 1; + __IO uint32_t EICFR7 : 1; + __IO uint32_t EICFR8 : 1; + __IO uint32_t EICFR9 : 1; + __IO uint32_t EICFR10 : 1; + __IO uint32_t EICFR11 : 1; + __IO uint32_t EICFR12 : 1; + __IO uint32_t EICFR13 : 1; + __IO uint32_t EICFR14 : 1; + __IO uint32_t EICFR15 : 1; + uint32_t RESERVED16 :16; +} stc_intc_eicfr_field_t; + +typedef struct +{ + __IO uint32_t INTSEL : 9; + uint32_t RESERVED9 :23; +} stc_intc_sel_field_t; + +typedef struct +{ + __IO uint32_t VSEL0 : 1; + __IO uint32_t VSEL1 : 1; + __IO uint32_t VSEL2 : 1; + __IO uint32_t VSEL3 : 1; + __IO uint32_t VSEL4 : 1; + __IO uint32_t VSEL5 : 1; + __IO uint32_t VSEL6 : 1; + __IO uint32_t VSEL7 : 1; + __IO uint32_t VSEL8 : 1; + __IO uint32_t VSEL9 : 1; + __IO uint32_t VSEL10 : 1; + __IO uint32_t VSEL11 : 1; + __IO uint32_t VSEL12 : 1; + __IO uint32_t VSEL13 : 1; + __IO uint32_t VSEL14 : 1; + __IO uint32_t VSEL15 : 1; + __IO uint32_t VSEL16 : 1; + __IO uint32_t VSEL17 : 1; + __IO uint32_t VSEL18 : 1; + __IO uint32_t VSEL19 : 1; + __IO uint32_t VSEL20 : 1; + __IO uint32_t VSEL21 : 1; + __IO uint32_t VSEL22 : 1; + __IO uint32_t VSEL23 : 1; + __IO uint32_t VSEL24 : 1; + __IO uint32_t VSEL25 : 1; + __IO uint32_t VSEL26 : 1; + __IO uint32_t VSEL27 : 1; + __IO uint32_t VSEL28 : 1; + __IO uint32_t VSEL29 : 1; + __IO uint32_t VSEL30 : 1; + __IO uint32_t VSEL31 : 1; +} stc_intc_vssel_field_t; + +typedef struct +{ + __IO uint32_t SWIE0 : 1; + __IO uint32_t SWIE1 : 1; + __IO uint32_t SWIE2 : 1; + __IO uint32_t SWIE3 : 1; + __IO uint32_t SWIE4 : 1; + __IO uint32_t SWIE5 : 1; + __IO uint32_t SWIE6 : 1; + __IO uint32_t SWIE7 : 1; + __IO uint32_t SWIE8 : 1; + __IO uint32_t SWIE9 : 1; + __IO uint32_t SWIE10 : 1; + __IO uint32_t SWIE11 : 1; + __IO uint32_t SWIE12 : 1; + __IO uint32_t SWIE13 : 1; + __IO uint32_t SWIE14 : 1; + __IO uint32_t SWIE15 : 1; + __IO uint32_t SWIE16 : 1; + __IO uint32_t SWIE17 : 1; + __IO uint32_t SWIE18 : 1; + __IO uint32_t SWIE19 : 1; + __IO uint32_t SWIE20 : 1; + __IO uint32_t SWIE21 : 1; + __IO uint32_t SWIE22 : 1; + __IO uint32_t SWIE23 : 1; + __IO uint32_t SWIE24 : 1; + __IO uint32_t SWIE25 : 1; + __IO uint32_t SWIE26 : 1; + __IO uint32_t SWIE27 : 1; + __IO uint32_t SWIE28 : 1; + __IO uint32_t SWIE29 : 1; + __IO uint32_t SWIE30 : 1; + __IO uint32_t SWIE31 : 1; +} stc_intc_swier_field_t; + +typedef struct +{ + __IO uint32_t EVTE0 : 1; + __IO uint32_t EVTE1 : 1; + __IO uint32_t EVTE2 : 1; + __IO uint32_t EVTE3 : 1; + __IO uint32_t EVTE4 : 1; + __IO uint32_t EVTE5 : 1; + __IO uint32_t EVTE6 : 1; + __IO uint32_t EVTE7 : 1; + __IO uint32_t EVTE8 : 1; + __IO uint32_t EVTE9 : 1; + __IO uint32_t EVTE10 : 1; + __IO uint32_t EVTE11 : 1; + __IO uint32_t EVTE12 : 1; + __IO uint32_t EVTE13 : 1; + __IO uint32_t EVTE14 : 1; + __IO uint32_t EVTE15 : 1; + __IO uint32_t EVTE16 : 1; + __IO uint32_t EVTE17 : 1; + __IO uint32_t EVTE18 : 1; + __IO uint32_t EVTE19 : 1; + __IO uint32_t EVTE20 : 1; + __IO uint32_t EVTE21 : 1; + __IO uint32_t EVTE22 : 1; + __IO uint32_t EVTE23 : 1; + __IO uint32_t EVTE24 : 1; + __IO uint32_t EVTE25 : 1; + __IO uint32_t EVTE26 : 1; + __IO uint32_t EVTE27 : 1; + __IO uint32_t EVTE28 : 1; + __IO uint32_t EVTE29 : 1; + __IO uint32_t EVTE30 : 1; + __IO uint32_t EVTE31 : 1; +} stc_intc_evter_field_t; + +typedef struct +{ + __IO uint32_t IER0 : 1; + __IO uint32_t IER1 : 1; + __IO uint32_t IER2 : 1; + __IO uint32_t IER3 : 1; + __IO uint32_t IER4 : 1; + __IO uint32_t IER5 : 1; + __IO uint32_t IER6 : 1; + __IO uint32_t IER7 : 1; + __IO uint32_t IER8 : 1; + __IO uint32_t IER9 : 1; + __IO uint32_t IER10 : 1; + __IO uint32_t IER11 : 1; + __IO uint32_t IER12 : 1; + __IO uint32_t IER13 : 1; + __IO uint32_t IER14 : 1; + __IO uint32_t IER15 : 1; + __IO uint32_t IER16 : 1; + __IO uint32_t IER17 : 1; + __IO uint32_t IER18 : 1; + __IO uint32_t IER19 : 1; + __IO uint32_t IER20 : 1; + __IO uint32_t IER21 : 1; + __IO uint32_t IER22 : 1; + __IO uint32_t IER23 : 1; + __IO uint32_t IER24 : 1; + __IO uint32_t IER25 : 1; + __IO uint32_t IER26 : 1; + __IO uint32_t IER27 : 1; + __IO uint32_t IER28 : 1; + __IO uint32_t IER29 : 1; + __IO uint32_t IER30 : 1; + __IO uint32_t IER31 : 1; +} stc_intc_ier_field_t; + +typedef struct +{ + __IO uint32_t KEYINSEL :16; + __IO uint32_t KEYOUTSEL : 3; + uint32_t RESERVED19 : 1; + __IO uint32_t CKSEL : 2; + uint32_t RESERVED22 : 2; + __IO uint32_t T_LLEVEL : 5; + __IO uint32_t T_HIZ : 3; +} stc_keyscan_scr_field_t; + +typedef struct +{ + __IO uint32_t SEN : 1; + uint32_t RESERVED1 :31; +} stc_keyscan_ser_field_t; + +typedef struct +{ + __IO uint32_t INDEX : 3; + uint32_t RESERVED3 :29; +} stc_keyscan_ssr_field_t; + +typedef struct +{ + __IO uint32_t MPURG0SIZE : 5; + __IO uint32_t MPURG0ADDR :27; +} stc_mpu_rgd0_field_t; + +typedef struct +{ + __IO uint32_t MPURG1SIZE : 5; + __IO uint32_t MPURG1ADDR :27; +} stc_mpu_rgd1_field_t; + +typedef struct +{ + __IO uint32_t MPURG2SIZE : 5; + __IO uint32_t MPURG2ADDR :27; +} stc_mpu_rgd2_field_t; + +typedef struct +{ + __IO uint32_t MPURG3SIZE : 5; + __IO uint32_t MPURG3ADDR :27; +} stc_mpu_rgd3_field_t; + +typedef struct +{ + __IO uint32_t MPURG4SIZE : 5; + __IO uint32_t MPURG4ADDR :27; +} stc_mpu_rgd4_field_t; + +typedef struct +{ + __IO uint32_t MPURG5SIZE : 5; + __IO uint32_t MPURG5ADDR :27; +} stc_mpu_rgd5_field_t; + +typedef struct +{ + __IO uint32_t MPURG6SIZE : 5; + __IO uint32_t MPURG6ADDR :27; +} stc_mpu_rgd6_field_t; + +typedef struct +{ + __IO uint32_t MPURG7SIZE : 5; + __IO uint32_t MPURG7ADDR :27; +} stc_mpu_rgd7_field_t; + +typedef struct +{ + __IO uint32_t MPURG8SIZE : 5; + __IO uint32_t MPURG8ADDR :27; +} stc_mpu_rgd8_field_t; + +typedef struct +{ + __IO uint32_t MPURG9SIZE : 5; + __IO uint32_t MPURG9ADDR :27; +} stc_mpu_rgd9_field_t; + +typedef struct +{ + __IO uint32_t MPURG10SIZE : 5; + __IO uint32_t MPURG10ADDR :27; +} stc_mpu_rgd10_field_t; + +typedef struct +{ + __IO uint32_t MPURG11SIZE : 5; + __IO uint32_t MPURG11ADDR :27; +} stc_mpu_rgd11_field_t; + +typedef struct +{ + __IO uint32_t MPURG12SIZE : 5; + __IO uint32_t MPURG12ADDR :27; +} stc_mpu_rgd12_field_t; + +typedef struct +{ + __IO uint32_t MPURG13SIZE : 5; + __IO uint32_t MPURG13ADDR :27; +} stc_mpu_rgd13_field_t; + +typedef struct +{ + __IO uint32_t MPURG14SIZE : 5; + __IO uint32_t MPURG14ADDR :27; +} stc_mpu_rgd14_field_t; + +typedef struct +{ + __IO uint32_t MPURG15SIZE : 5; + __IO uint32_t MPURG15ADDR :27; +} stc_mpu_rgd15_field_t; + +typedef struct +{ + __IO uint32_t S2RG0RP : 1; + __IO uint32_t S2RG0WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG0E : 1; + __IO uint32_t S1RG0RP : 1; + __IO uint32_t S1RG0WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG0E : 1; + __IO uint32_t FRG0RP : 1; + __IO uint32_t FRG0WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG0E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr0_field_t; + +typedef struct +{ + __IO uint32_t S2RG1RP : 1; + __IO uint32_t S2RG1WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG1E : 1; + __IO uint32_t S1RG1RP : 1; + __IO uint32_t S1RG1WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG1E : 1; + __IO uint32_t FRG1RP : 1; + __IO uint32_t FRG1WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG1E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr1_field_t; + +typedef struct +{ + __IO uint32_t S2RG2RP : 1; + __IO uint32_t S2RG2WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG2E : 1; + __IO uint32_t S1RG2RP : 1; + __IO uint32_t S1RG2WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG2E : 1; + __IO uint32_t FRG2RP : 1; + __IO uint32_t FRG2WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG2E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr2_field_t; + +typedef struct +{ + __IO uint32_t S2RG3RP : 1; + __IO uint32_t S2RG3WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG3E : 1; + __IO uint32_t S1RG3RP : 1; + __IO uint32_t S1RG3WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG3E : 1; + __IO uint32_t FRG3RP : 1; + __IO uint32_t FRG3WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG3E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr3_field_t; + +typedef struct +{ + __IO uint32_t S2RG4RP : 1; + __IO uint32_t S2RG4WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG4E : 1; + __IO uint32_t S1RG4RP : 1; + __IO uint32_t S1RG4WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG4E : 1; + __IO uint32_t FRG4RP : 1; + __IO uint32_t FRG4WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG4E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr4_field_t; + +typedef struct +{ + __IO uint32_t S2RG5RP : 1; + __IO uint32_t S2RG5WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG5E : 1; + __IO uint32_t S1RG5RP : 1; + __IO uint32_t S1RG5WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG5E : 1; + __IO uint32_t FRG5RP : 1; + __IO uint32_t FRG5WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG5E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr5_field_t; + +typedef struct +{ + __IO uint32_t S2RG6RP : 1; + __IO uint32_t S2RG6WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG6E : 1; + __IO uint32_t S1RG6RP : 1; + __IO uint32_t S1RG6WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG6E : 1; + __IO uint32_t FRG6RP : 1; + __IO uint32_t FRG6WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG6E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr6_field_t; + +typedef struct +{ + __IO uint32_t S2RG7RP : 1; + __IO uint32_t S2RG7WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG7E : 1; + __IO uint32_t S1RG7RP : 1; + __IO uint32_t S1RG7WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG7E : 1; + __IO uint32_t FRG7RP : 1; + __IO uint32_t FRG7WP : 1; + uint32_t RESERVED18 : 5; + __IO uint32_t FRG7E : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_rgcr7_field_t; + +typedef struct +{ + __IO uint32_t S2RG8RP : 1; + __IO uint32_t S2RG8WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG8E : 1; + __IO uint32_t S1RG8RP : 1; + __IO uint32_t S1RG8WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG8E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr8_field_t; + +typedef struct +{ + __IO uint32_t S2RG9RP : 1; + __IO uint32_t S2RG9WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG9E : 1; + __IO uint32_t S1RG9RP : 1; + __IO uint32_t S1RG9WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG9E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr9_field_t; + +typedef struct +{ + __IO uint32_t S2RG10RP : 1; + __IO uint32_t S2RG10WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG10E : 1; + __IO uint32_t S1RG10RP : 1; + __IO uint32_t S1RG10WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG10E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr10_field_t; + +typedef struct +{ + __IO uint32_t S2RG11RP : 1; + __IO uint32_t S2RG11WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG11E : 1; + __IO uint32_t S1RG11RP : 1; + __IO uint32_t S1RG11WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG11E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr11_field_t; + +typedef struct +{ + __IO uint32_t S2RG12RP : 1; + __IO uint32_t S2RG12WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG12E : 1; + __IO uint32_t S1RG12RP : 1; + __IO uint32_t S1RG12WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG12E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr12_field_t; + +typedef struct +{ + __IO uint32_t S2RG13RP : 1; + __IO uint32_t S2RG13WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG13E : 1; + __IO uint32_t S1RG13RP : 1; + __IO uint32_t S1RG13WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG13E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr13_field_t; + +typedef struct +{ + __IO uint32_t S2RG14RP : 1; + __IO uint32_t S2RG14WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG14E : 1; + __IO uint32_t S1RG14RP : 1; + __IO uint32_t S1RG14WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG14E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr14_field_t; + +typedef struct +{ + __IO uint32_t S2RG15RP : 1; + __IO uint32_t S2RG15WP : 1; + uint32_t RESERVED2 : 5; + __IO uint32_t S2RG15E : 1; + __IO uint32_t S1RG15RP : 1; + __IO uint32_t S1RG15WP : 1; + uint32_t RESERVED10 : 5; + __IO uint32_t S1RG15E : 1; + uint32_t RESERVED16 :16; +} stc_mpu_rgcr15_field_t; + +typedef struct +{ + __IO uint32_t SMPU2BRP : 1; + __IO uint32_t SMPU2BWP : 1; + __IO uint32_t SMPU2ACT : 2; + uint32_t RESERVED4 : 3; + __IO uint32_t SMPU2E : 1; + __IO uint32_t SMPU1BRP : 1; + __IO uint32_t SMPU1BWP : 1; + __IO uint32_t SMPU1ACT : 2; + uint32_t RESERVED12 : 3; + __IO uint32_t SMPU1E : 1; + __IO uint32_t FMPUBRP : 1; + __IO uint32_t FMPUBWP : 1; + __IO uint32_t FMPUACT : 2; + uint32_t RESERVED20 : 3; + __IO uint32_t FMPUE : 1; + uint32_t RESERVED24 : 8; +} stc_mpu_cr_field_t; + +typedef struct +{ + __IO uint32_t SMPU2EAF : 1; + uint32_t RESERVED1 : 7; + __IO uint32_t SMPU1EAF : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t FMPUEAF : 1; + uint32_t RESERVED17 :15; +} stc_mpu_sr_field_t; + +typedef struct +{ + __IO uint32_t SMPU2ECLR : 1; + uint32_t RESERVED1 : 7; + __IO uint32_t SMPU1ECLR : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t FMPUECLR : 1; + uint32_t RESERVED17 :15; +} stc_mpu_eclr_field_t; + +typedef struct +{ + __IO uint32_t MPUWE : 1; + __IO uint32_t WKEY :15; + uint32_t RESERVED16 :16; +} stc_mpu_wp_field_t; + +typedef struct +{ + __IO uint32_t SRAMH : 1; + uint32_t RESERVED1 : 3; + __IO uint32_t SRAM12 : 1; + uint32_t RESERVED5 : 3; + __IO uint32_t SRAM3 : 1; + uint32_t RESERVED9 : 1; + __IO uint32_t SRAMRET : 1; + uint32_t RESERVED11 : 3; + __IO uint32_t DMA1 : 1; + __IO uint32_t DMA2 : 1; + __IO uint32_t FCM : 1; + __IO uint32_t AOS : 1; + uint32_t RESERVED18 : 2; + __IO uint32_t AES : 1; + __IO uint32_t HASH : 1; + __IO uint32_t TRNG : 1; + __IO uint32_t CRC : 1; + __IO uint32_t DCU1 : 1; + __IO uint32_t DCU2 : 1; + __IO uint32_t DCU3 : 1; + __IO uint32_t DCU4 : 1; + uint32_t RESERVED28 : 3; + __IO uint32_t KEY : 1; +} stc_mstp_fcg0_field_t; + +typedef struct +{ + __IO uint32_t CAN : 1; + uint32_t RESERVED1 : 2; + __IO uint32_t QSPI : 1; + __IO uint32_t IIC1 : 1; + __IO uint32_t IIC2 : 1; + __IO uint32_t IIC3 : 1; + uint32_t RESERVED7 : 1; + __IO uint32_t USBFS : 1; + uint32_t RESERVED9 : 1; + __IO uint32_t SDIOC1 : 1; + __IO uint32_t SDIOC2 : 1; + __IO uint32_t I2S1 : 1; + __IO uint32_t I2S2 : 1; + __IO uint32_t I2S3 : 1; + __IO uint32_t I2S4 : 1; + __IO uint32_t SPI1 : 1; + __IO uint32_t SPI2 : 1; + __IO uint32_t SPI3 : 1; + __IO uint32_t SPI4 : 1; + uint32_t RESERVED20 : 4; + __IO uint32_t USART1 : 1; + __IO uint32_t USART2 : 1; + __IO uint32_t USART3 : 1; + __IO uint32_t USART4 : 1; + uint32_t RESERVED28 : 4; +} stc_mstp_fcg1_field_t; + +typedef struct +{ + __IO uint32_t TIMER0_1 : 1; + __IO uint32_t TIMER0_2 : 1; + __IO uint32_t TIMERA_1 : 1; + __IO uint32_t TIMERA_2 : 1; + __IO uint32_t TIMERA_3 : 1; + __IO uint32_t TIMERA_4 : 1; + __IO uint32_t TIMERA_5 : 1; + __IO uint32_t TIMERA_6 : 1; + __IO uint32_t TIMER4_1 : 1; + __IO uint32_t TIMER4_2 : 1; + __IO uint32_t TIMER4_3 : 1; + uint32_t RESERVED11 : 4; + __IO uint32_t EMB : 1; + __IO uint32_t TIMER6_1 : 1; + __IO uint32_t TIMER6_2 : 1; + __IO uint32_t TIMER6_3 : 1; + uint32_t RESERVED19 :13; +} stc_mstp_fcg2_field_t; + +typedef struct +{ + __IO uint32_t ADC1 : 1; + __IO uint32_t ADC2 : 1; + uint32_t RESERVED2 : 6; + __IO uint32_t CMP : 1; + uint32_t RESERVED9 : 3; + __IO uint32_t OTS : 1; + uint32_t RESERVED13 :19; +} stc_mstp_fcg3_field_t; + +typedef struct +{ + __IO uint32_t PRT0 : 1; + uint32_t RESERVED1 :15; + __IO uint32_t FCG0PCWE :16; +} stc_mstp_fcg0pc_field_t; + +typedef struct +{ + __IO uint16_t OTSST : 1; + __IO uint16_t OTSCK : 1; + __IO uint16_t OTSIE : 1; + __IO uint16_t TSSTP : 1; + uint16_t RESERVED4 :12; +} stc_ots_ctl_field_t; + +typedef struct +{ + __IO uint32_t TSOFS : 8; + __IO uint32_t TSSLP :24; +} stc_ots_lpr_field_t; + +typedef struct +{ + __IO uint32_t DFB : 1; + __IO uint32_t SOFEN : 1; + uint32_t RESERVED2 :30; +} stc_peric_usbfs_syctlreg_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 1; + __IO uint32_t SELMMC1 : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t SELMMC2 : 1; + uint32_t RESERVED4 :28; +} stc_peric_sdioc_syctlreg_field_t; + +typedef struct +{ + __IO uint16_t PIN00 : 1; + __IO uint16_t PIN01 : 1; + __IO uint16_t PIN02 : 1; + __IO uint16_t PIN03 : 1; + __IO uint16_t PIN04 : 1; + __IO uint16_t PIN05 : 1; + __IO uint16_t PIN06 : 1; + __IO uint16_t PIN07 : 1; + __IO uint16_t PIN08 : 1; + __IO uint16_t PIN09 : 1; + __IO uint16_t PIN10 : 1; + __IO uint16_t PIN11 : 1; + __IO uint16_t PIN12 : 1; + __IO uint16_t PIN13 : 1; + __IO uint16_t PIN14 : 1; + __IO uint16_t PIN15 : 1; +} stc_port_pidr_field_t; + +typedef struct +{ + __IO uint16_t POUT00 : 1; + __IO uint16_t POUT01 : 1; + __IO uint16_t POUT02 : 1; + __IO uint16_t POUT03 : 1; + __IO uint16_t POUT04 : 1; + __IO uint16_t POUT05 : 1; + __IO uint16_t POUT06 : 1; + __IO uint16_t POUT07 : 1; + __IO uint16_t POUT08 : 1; + __IO uint16_t POUT09 : 1; + __IO uint16_t POUT10 : 1; + __IO uint16_t POUT11 : 1; + __IO uint16_t POUT12 : 1; + __IO uint16_t POUT13 : 1; + __IO uint16_t POUT14 : 1; + __IO uint16_t POUT15 : 1; +} stc_port_podr_field_t; + +typedef struct +{ + __IO uint16_t POUTE00 : 1; + __IO uint16_t POUTE01 : 1; + __IO uint16_t POUTE02 : 1; + __IO uint16_t POUTE03 : 1; + __IO uint16_t POUTE04 : 1; + __IO uint16_t POUTE05 : 1; + __IO uint16_t POUTE06 : 1; + __IO uint16_t POUTE07 : 1; + __IO uint16_t POUTE08 : 1; + __IO uint16_t POUTE09 : 1; + __IO uint16_t POUTE10 : 1; + __IO uint16_t POUTE11 : 1; + __IO uint16_t POUTE12 : 1; + __IO uint16_t POUTE13 : 1; + __IO uint16_t POUTE14 : 1; + __IO uint16_t POUTE15 : 1; +} stc_port_poer_field_t; + +typedef struct +{ + __IO uint16_t POS00 : 1; + __IO uint16_t POS01 : 1; + __IO uint16_t POS02 : 1; + __IO uint16_t POS03 : 1; + __IO uint16_t POS04 : 1; + __IO uint16_t POS05 : 1; + __IO uint16_t POS06 : 1; + __IO uint16_t POS07 : 1; + __IO uint16_t POS08 : 1; + __IO uint16_t POS09 : 1; + __IO uint16_t POS10 : 1; + __IO uint16_t POS11 : 1; + __IO uint16_t POS12 : 1; + __IO uint16_t POS13 : 1; + __IO uint16_t POS14 : 1; + __IO uint16_t POS15 : 1; +} stc_port_posr_field_t; + +typedef struct +{ + __IO uint16_t POR00 : 1; + __IO uint16_t POR01 : 1; + __IO uint16_t POR02 : 1; + __IO uint16_t POR03 : 1; + __IO uint16_t POR04 : 1; + __IO uint16_t POR05 : 1; + __IO uint16_t POR06 : 1; + __IO uint16_t POR07 : 1; + __IO uint16_t POR08 : 1; + __IO uint16_t POR09 : 1; + __IO uint16_t POR10 : 1; + __IO uint16_t POR11 : 1; + __IO uint16_t POR12 : 1; + __IO uint16_t POR13 : 1; + __IO uint16_t POR14 : 1; + __IO uint16_t POR15 : 1; +} stc_port_porr_field_t; + +typedef struct +{ + __IO uint16_t POT00 : 1; + __IO uint16_t POT01 : 1; + __IO uint16_t POT02 : 1; + __IO uint16_t POT03 : 1; + __IO uint16_t POT04 : 1; + __IO uint16_t POT05 : 1; + __IO uint16_t POT06 : 1; + __IO uint16_t POT07 : 1; + __IO uint16_t POT08 : 1; + __IO uint16_t POT09 : 1; + __IO uint16_t POT10 : 1; + __IO uint16_t POT11 : 1; + __IO uint16_t POT12 : 1; + __IO uint16_t POT13 : 1; + __IO uint16_t POT14 : 1; + __IO uint16_t POT15 : 1; +} stc_port_potr_field_t; + +typedef struct +{ + __IO uint16_t PIN00 : 1; + __IO uint16_t PIN01 : 1; + __IO uint16_t PIN02 : 1; + uint16_t RESERVED3 :13; +} stc_port_pidrh_field_t; + +typedef struct +{ + __IO uint16_t POUT00 : 1; + __IO uint16_t POUT01 : 1; + __IO uint16_t POUT02 : 1; + uint16_t RESERVED3 :13; +} stc_port_podrh_field_t; + +typedef struct +{ + __IO uint16_t POUTE00 : 1; + __IO uint16_t POUTE01 : 1; + __IO uint16_t POUTE02 : 1; + uint16_t RESERVED3 :13; +} stc_port_poerh_field_t; + +typedef struct +{ + __IO uint16_t POS00 : 1; + __IO uint16_t POS01 : 1; + __IO uint16_t POS02 : 1; + uint16_t RESERVED3 :13; +} stc_port_posrh_field_t; + +typedef struct +{ + __IO uint16_t POR00 : 1; + __IO uint16_t POR01 : 1; + __IO uint16_t POR02 : 1; + uint16_t RESERVED3 :13; +} stc_port_porrh_field_t; + +typedef struct +{ + __IO uint16_t POT00 : 1; + __IO uint16_t POT01 : 1; + __IO uint16_t POT02 : 1; + uint16_t RESERVED3 :13; +} stc_port_potrh_field_t; + +typedef struct +{ + __IO uint16_t SPFE : 5; + uint16_t RESERVED5 :11; +} stc_port_pspcr_field_t; + +typedef struct +{ + __IO uint16_t BFSEL : 4; + uint16_t RESERVED4 :10; + __IO uint16_t RDWT : 2; +} stc_port_pccr_field_t; + +typedef struct +{ + __IO uint16_t PINAE : 6; + uint16_t RESERVED6 :10; +} stc_port_pinaer_field_t; + +typedef struct +{ + __IO uint16_t WE : 1; + uint16_t RESERVED1 : 7; + __IO uint16_t WP : 8; +} stc_port_pwpr_field_t; + +typedef struct +{ + __IO uint16_t POUT : 1; + __IO uint16_t POUTE : 1; + __IO uint16_t NOD : 1; + uint16_t RESERVED3 : 1; + __IO uint16_t DRV : 2; + __IO uint16_t PUU : 1; + uint16_t RESERVED7 : 1; + __IO uint16_t PIN : 1; + __IO uint16_t INVE : 1; + uint16_t RESERVED10 : 2; + __IO uint16_t INTE : 1; + uint16_t RESERVED13 : 1; + __IO uint16_t LTE : 1; + __IO uint16_t DDIS : 1; +} stc_port_pcr_field_t; + +typedef struct +{ + __IO uint16_t FSEL : 6; + uint16_t RESERVED6 : 2; + __IO uint16_t BFE : 1; + uint16_t RESERVED9 : 7; +} stc_port_pfsr_field_t; + +typedef struct +{ + __IO uint32_t MDSEL : 3; + __IO uint32_t PFE : 1; + __IO uint32_t PFSAE : 1; + __IO uint32_t DCOME : 1; + __IO uint32_t XIPE : 1; + __IO uint32_t SPIMD3 : 1; + __IO uint32_t IPRSL : 2; + __IO uint32_t APRSL : 2; + __IO uint32_t DPRSL : 2; + uint32_t RESERVED14 : 2; + __IO uint32_t DIV : 6; + uint32_t RESERVED22 :10; +} stc_qspi_cr_field_t; + +typedef struct +{ + __IO uint32_t SSHW : 4; + __IO uint32_t SSNW : 2; + uint32_t RESERVED6 :26; +} stc_qspi_cscr_field_t; + +typedef struct +{ + __IO uint32_t AWSL : 2; + __IO uint32_t FOUR_BIC : 1; + uint32_t RESERVED3 : 1; + __IO uint32_t SSNHD : 1; + __IO uint32_t SSNLD : 1; + __IO uint32_t WPOL : 1; + uint32_t RESERVED7 : 1; + __IO uint32_t DMCYCN : 4; + uint32_t RESERVED12 : 3; + __IO uint32_t DUTY : 1; + uint32_t RESERVED16 :16; +} stc_qspi_fcr_field_t; + +typedef struct +{ + __IO uint32_t BUSY : 1; + uint32_t RESERVED1 : 5; + __IO uint32_t XIPF : 1; + __IO uint32_t RAER : 1; + __IO uint32_t PFNUM : 5; + uint32_t RESERVED13 : 1; + __IO uint32_t PFFUL : 1; + __IO uint32_t PFAN : 1; + uint32_t RESERVED16 :16; +} stc_qspi_sr_field_t; + +typedef struct +{ + __IO uint32_t DCOM : 8; + uint32_t RESERVED8 :24; +} stc_qspi_dcom_field_t; + +typedef struct +{ + __IO uint32_t RIC : 8; + uint32_t RESERVED8 :24; +} stc_qspi_ccmd_field_t; + +typedef struct +{ + __IO uint32_t XIPMC : 8; + uint32_t RESERVED8 :24; +} stc_qspi_xcmd_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 7; + __IO uint32_t RAERCLR : 1; + uint32_t RESERVED8 :24; +} stc_qspi_sr2_field_t; + +typedef struct +{ + uint32_t RESERVED0 :26; + __IO uint32_t EXADR : 6; +} stc_qspi_exar_field_t; + +typedef struct +{ + __IO uint32_t RESET : 1; + uint32_t RESERVED1 :31; +} stc_rtc_cr0_field_t; + +typedef struct +{ + __IO uint32_t PRDS : 3; + __IO uint32_t AMPM : 1; + __IO uint32_t ALMFCLR : 1; + __IO uint32_t ONEHZOE : 1; + __IO uint32_t ONEHZSEL : 1; + __IO uint32_t START : 1; + uint32_t RESERVED8 :24; +} stc_rtc_cr1_field_t; + +typedef struct +{ + __IO uint32_t RWREQ : 1; + __IO uint32_t RWEN : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t ALMF : 1; + uint32_t RESERVED4 : 1; + __IO uint32_t PRDIE : 1; + __IO uint32_t ALMIE : 1; + __IO uint32_t ALME : 1; + uint32_t RESERVED8 :24; +} stc_rtc_cr2_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 4; + __IO uint32_t LRCEN : 1; + uint32_t RESERVED5 : 2; + __IO uint32_t RCKSEL : 1; + uint32_t RESERVED8 :24; +} stc_rtc_cr3_field_t; + +typedef struct +{ + __IO uint32_t SECU : 4; + __IO uint32_t SECD : 3; + uint32_t RESERVED7 :25; +} stc_rtc_sec_field_t; + +typedef struct +{ + __IO uint32_t MINU : 4; + __IO uint32_t MIND : 3; + uint32_t RESERVED7 :25; +} stc_rtc_min_field_t; + +typedef struct +{ + __IO uint32_t HOURU : 4; + __IO uint32_t HOURD : 2; + uint32_t RESERVED6 :26; +} stc_rtc_hour_field_t; + +typedef struct +{ + __IO uint32_t WEEK : 3; + uint32_t RESERVED3 :29; +} stc_rtc_week_field_t; + +typedef struct +{ + __IO uint32_t DAYU : 4; + __IO uint32_t DAYD : 2; + uint32_t RESERVED6 :26; +} stc_rtc_day_field_t; + +typedef struct +{ + __IO uint32_t MON : 5; + uint32_t RESERVED5 :27; +} stc_rtc_mon_field_t; + +typedef struct +{ + __IO uint32_t YEARU : 4; + __IO uint32_t YEARD : 4; + uint32_t RESERVED8 :24; +} stc_rtc_year_field_t; + +typedef struct +{ + __IO uint32_t ALMMINU : 4; + __IO uint32_t ALMMIND : 3; + uint32_t RESERVED7 :25; +} stc_rtc_almmin_field_t; + +typedef struct +{ + __IO uint32_t ALMHOURU : 4; + __IO uint32_t ALMHOURD : 2; + uint32_t RESERVED6 :26; +} stc_rtc_almhour_field_t; + +typedef struct +{ + __IO uint32_t ALMWEEK : 7; + uint32_t RESERVED7 :25; +} stc_rtc_almweek_field_t; + +typedef struct +{ + __IO uint32_t COMP8 : 1; + uint32_t RESERVED1 : 6; + __IO uint32_t COMPEN : 1; + uint32_t RESERVED8 :24; +} stc_rtc_errcrh_field_t; + +typedef struct +{ + __IO uint32_t COMP : 8; + uint32_t RESERVED8 :24; +} stc_rtc_errcrl_field_t; + +typedef struct +{ + __IO uint16_t TBS :12; + uint16_t RESERVED12 : 4; +} stc_sdioc_blksize_field_t; + +typedef struct +{ + uint16_t RESERVED0 : 1; + __IO uint16_t BCE : 1; + __IO uint16_t ATCEN : 2; + __IO uint16_t DDIR : 1; + __IO uint16_t MULB : 1; + uint16_t RESERVED6 :10; +} stc_sdioc_transmode_field_t; + +typedef struct +{ + __IO uint16_t RESTYP : 2; + uint16_t RESERVED2 : 1; + __IO uint16_t CCE : 1; + __IO uint16_t ICE : 1; + __IO uint16_t DAT : 1; + __IO uint16_t TYP : 2; + __IO uint16_t IDX : 6; + uint16_t RESERVED14 : 2; +} stc_sdioc_cmd_field_t; + +typedef struct +{ + __IO uint32_t CIC : 1; + __IO uint32_t CID : 1; + __IO uint32_t DA : 1; + uint32_t RESERVED3 : 5; + __IO uint32_t WTA : 1; + __IO uint32_t RTA : 1; + __IO uint32_t BWE : 1; + __IO uint32_t BRE : 1; + uint32_t RESERVED12 : 4; + __IO uint32_t CIN : 1; + __IO uint32_t CSS : 1; + __IO uint32_t CDL : 1; + __IO uint32_t WPL : 1; + __IO uint32_t DATL : 4; + __IO uint32_t CMDL : 1; + uint32_t RESERVED25 : 7; +} stc_sdioc_pstat_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 1; + __IO uint8_t DW : 1; + __IO uint8_t HSEN : 1; + uint8_t RESERVED3 : 2; + __IO uint8_t EXDW : 1; + __IO uint8_t CDTL : 1; + __IO uint8_t CDSS : 1; +} stc_sdioc_hostcon_field_t; + +typedef struct +{ + __IO uint8_t PWON : 1; + uint8_t RESERVED1 : 7; +} stc_sdioc_pwrcon_field_t; + +typedef struct +{ + __IO uint8_t SABGR : 1; + __IO uint8_t CR : 1; + __IO uint8_t RWC : 1; + __IO uint8_t IABG : 1; + uint8_t RESERVED4 : 4; +} stc_sdioc_blkgpcon_field_t; + +typedef struct +{ + __IO uint16_t ICE : 1; + uint16_t RESERVED1 : 1; + __IO uint16_t CE : 1; + uint16_t RESERVED3 : 5; + __IO uint16_t FS : 8; +} stc_sdioc_clkcon_field_t; + +typedef struct +{ + __IO uint8_t DTO : 4; + uint8_t RESERVED4 : 4; +} stc_sdioc_toutcon_field_t; + +typedef struct +{ + __IO uint8_t RSTA : 1; + __IO uint8_t RSTC : 1; + __IO uint8_t RSTD : 1; + uint8_t RESERVED3 : 5; +} stc_sdioc_sftrst_field_t; + +typedef struct +{ + __IO uint16_t CC : 1; + __IO uint16_t TC : 1; + __IO uint16_t BGE : 1; + uint16_t RESERVED3 : 1; + __IO uint16_t BWR : 1; + __IO uint16_t BRR : 1; + __IO uint16_t CIST : 1; + __IO uint16_t CRM : 1; + __IO uint16_t CINT : 1; + uint16_t RESERVED9 : 6; + __IO uint16_t EI : 1; +} stc_sdioc_norintst_field_t; + +typedef struct +{ + __IO uint16_t CTOE : 1; + __IO uint16_t CCE : 1; + __IO uint16_t CEBE : 1; + __IO uint16_t CIE : 1; + __IO uint16_t DTOE : 1; + __IO uint16_t DCE : 1; + __IO uint16_t DEBE : 1; + uint16_t RESERVED7 : 1; + __IO uint16_t ACE : 1; + uint16_t RESERVED9 : 7; +} stc_sdioc_errintst_field_t; + +typedef struct +{ + __IO uint16_t CCEN : 1; + __IO uint16_t TCEN : 1; + __IO uint16_t BGEEN : 1; + uint16_t RESERVED3 : 1; + __IO uint16_t BWREN : 1; + __IO uint16_t BRREN : 1; + __IO uint16_t CISTEN : 1; + __IO uint16_t CRMEN : 1; + __IO uint16_t CINTEN : 1; + uint16_t RESERVED9 : 7; +} stc_sdioc_norintsten_field_t; + +typedef struct +{ + __IO uint16_t CTOEEN : 1; + __IO uint16_t CCEEN : 1; + __IO uint16_t CEBEEN : 1; + __IO uint16_t CIEEN : 1; + __IO uint16_t DTOEEN : 1; + __IO uint16_t DCEEN : 1; + __IO uint16_t DEBEEN : 1; + uint16_t RESERVED7 : 1; + __IO uint16_t ACEEN : 1; + uint16_t RESERVED9 : 7; +} stc_sdioc_errintsten_field_t; + +typedef struct +{ + __IO uint16_t CCSEN : 1; + __IO uint16_t TCSEN : 1; + __IO uint16_t BGESEN : 1; + uint16_t RESERVED3 : 1; + __IO uint16_t BWRSEN : 1; + __IO uint16_t BRRSEN : 1; + __IO uint16_t CISTSEN : 1; + __IO uint16_t CRMSEN : 1; + __IO uint16_t CINTSEN : 1; + uint16_t RESERVED9 : 7; +} stc_sdioc_norintsgen_field_t; + +typedef struct +{ + __IO uint16_t CTOESEN : 1; + __IO uint16_t CCESEN : 1; + __IO uint16_t CEBESEN : 1; + __IO uint16_t CIESEN : 1; + __IO uint16_t DTOESEN : 1; + __IO uint16_t DCESEN : 1; + __IO uint16_t DEBESEN : 1; + uint16_t RESERVED7 : 1; + __IO uint16_t ACESEN : 1; + uint16_t RESERVED9 : 7; +} stc_sdioc_errintsgen_field_t; + +typedef struct +{ + __IO uint16_t NE : 1; + __IO uint16_t TOE : 1; + __IO uint16_t CE : 1; + __IO uint16_t EBE : 1; + __IO uint16_t IE : 1; + uint16_t RESERVED5 : 2; + __IO uint16_t CMDE : 1; + uint16_t RESERVED8 : 8; +} stc_sdioc_atcerrst_field_t; + +typedef struct +{ + __IO uint16_t FNE : 1; + __IO uint16_t FTOE : 1; + __IO uint16_t FCE : 1; + __IO uint16_t FEBE : 1; + __IO uint16_t FIE : 1; + uint16_t RESERVED5 : 2; + __IO uint16_t FCMDE : 1; + uint16_t RESERVED8 : 8; +} stc_sdioc_fea_field_t; + +typedef struct +{ + __IO uint16_t FCTOE : 1; + __IO uint16_t FCCE : 1; + __IO uint16_t FCEBE : 1; + __IO uint16_t FCIE : 1; + __IO uint16_t FDTOE : 1; + __IO uint16_t FDCE : 1; + __IO uint16_t FDEBE : 1; + uint16_t RESERVED7 : 1; + __IO uint16_t FACE : 1; + uint16_t RESERVED9 : 7; +} stc_sdioc_fee_field_t; + +typedef struct +{ + __IO uint32_t SPIMDS : 1; + __IO uint32_t TXMDS : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t MSTR : 1; + __IO uint32_t SPLPBK : 1; + __IO uint32_t SPLPBK2 : 1; + __IO uint32_t SPE : 1; + __IO uint32_t CSUSPE : 1; + __IO uint32_t EIE : 1; + __IO uint32_t TXIE : 1; + __IO uint32_t RXIE : 1; + __IO uint32_t IDIE : 1; + __IO uint32_t MODFE : 1; + __IO uint32_t PATE : 1; + __IO uint32_t PAOE : 1; + __IO uint32_t PAE : 1; + uint32_t RESERVED16 :16; +} stc_spi_cr1_field_t; + +typedef struct +{ + __IO uint32_t FTHLV : 2; + uint32_t RESERVED2 : 4; + __IO uint32_t SPRDTD : 1; + uint32_t RESERVED7 : 1; + __IO uint32_t SS0PV : 1; + __IO uint32_t SS1PV : 1; + __IO uint32_t SS2PV : 1; + __IO uint32_t SS3PV : 1; + uint32_t RESERVED12 : 8; + __IO uint32_t MSSI : 3; + uint32_t RESERVED23 : 1; + __IO uint32_t MSSDL : 3; + uint32_t RESERVED27 : 1; + __IO uint32_t MIDI : 3; + uint32_t RESERVED31 : 1; +} stc_spi_cfg1_field_t; + +typedef struct +{ + __IO uint32_t OVRERF : 1; + __IO uint32_t IDLNF : 1; + __IO uint32_t MODFERF : 1; + __IO uint32_t PERF : 1; + __IO uint32_t UDRERF : 1; + __IO uint32_t TDEF : 1; + uint32_t RESERVED6 : 1; + __IO uint32_t RDFF : 1; + uint32_t RESERVED8 :24; +} stc_spi_sr_field_t; + +typedef struct +{ + __IO uint32_t CPHA : 1; + __IO uint32_t CPOL : 1; + __IO uint32_t MBR : 3; + __IO uint32_t SSA : 3; + __IO uint32_t DSIZE : 4; + __IO uint32_t LSBF : 1; + __IO uint32_t MIDIE : 1; + __IO uint32_t MSSDLE : 1; + __IO uint32_t MSSIE : 1; + uint32_t RESERVED16 :16; +} stc_spi_cfg2_field_t; + +typedef struct +{ + __IO uint32_t SRAM12_RWT : 3; + uint32_t RESERVED3 : 1; + __IO uint32_t SRAM12_WWT : 3; + uint32_t RESERVED7 : 1; + __IO uint32_t SRAM3_RWT : 3; + uint32_t RESERVED11 : 1; + __IO uint32_t SRAM3_WWT : 3; + uint32_t RESERVED15 : 1; + __IO uint32_t SRAMH_RWT : 3; + uint32_t RESERVED19 : 1; + __IO uint32_t SRAMH_WWT : 3; + uint32_t RESERVED23 : 1; + __IO uint32_t SRAMR_RWT : 3; + uint32_t RESERVED27 : 1; + __IO uint32_t SRAMR_WWT : 3; + uint32_t RESERVED31 : 1; +} stc_sramc_wtcr_field_t; + +typedef struct +{ + __IO uint32_t WTPRC : 1; + __IO uint32_t WTPRKW : 7; + uint32_t RESERVED8 :24; +} stc_sramc_wtpr_field_t; + +typedef struct +{ + __IO uint32_t PYOAD : 1; + uint32_t RESERVED1 :15; + __IO uint32_t ECCOAD : 1; + uint32_t RESERVED17 : 7; + __IO uint32_t ECCMOD : 2; + uint32_t RESERVED26 : 6; +} stc_sramc_ckcr_field_t; + +typedef struct +{ + __IO uint32_t CKPRC : 1; + __IO uint32_t CKPRKW : 7; + uint32_t RESERVED8 :24; +} stc_sramc_ckpr_field_t; + +typedef struct +{ + __IO uint32_t SRAM3_1ERR : 1; + __IO uint32_t SRAM3_2ERR : 1; + __IO uint32_t SRAM12_PYERR : 1; + __IO uint32_t SRAMH_PYERR : 1; + __IO uint32_t SRAMR_PYERR : 1; + uint32_t RESERVED5 :27; +} stc_sramc_cksr_field_t; + +typedef struct +{ + __IO uint32_t CNT :16; + __IO uint32_t UDF : 1; + __IO uint32_t REF : 1; + uint32_t RESERVED18 :14; +} stc_swdt_sr_field_t; + +typedef struct +{ + __IO uint32_t RF :16; + uint32_t RESERVED16 :16; +} stc_swdt_rr_field_t; + +typedef struct +{ + __IO uint16_t FLNWT : 1; + __IO uint16_t CKSMRC : 1; + uint16_t RESERVED2 :13; + __IO uint16_t STOP : 1; +} stc_sysreg_pwr_stpmcr_field_t; + +typedef struct +{ + __IO uint16_t PERICKSEL : 4; + uint16_t RESERVED4 :12; +} stc_sysreg_cmu_pericksel_field_t; + +typedef struct +{ + __IO uint16_t I2S1CKSEL : 4; + __IO uint16_t I2S2CKSEL : 4; + __IO uint16_t I2S3CKSEL : 4; + __IO uint16_t I2S4CKSEL : 4; +} stc_sysreg_cmu_i2scksel_field_t; + +typedef struct +{ + __IO uint32_t RAMPDC0 : 1; + __IO uint32_t RAMPDC1 : 1; + __IO uint32_t RAMPDC2 : 1; + __IO uint32_t RAMPDC3 : 1; + __IO uint32_t RAMPDC4 : 1; + __IO uint32_t RAMPDC5 : 1; + __IO uint32_t RAMPDC6 : 1; + __IO uint32_t RAMPDC7 : 1; + __IO uint32_t RAMPDC8 : 1; + uint32_t RESERVED9 :23; +} stc_sysreg_pwr_rampc0_field_t; + +typedef struct +{ + __IO uint32_t AESRDP : 1; + __IO uint32_t AESWRP : 1; + __IO uint32_t HASHRDP : 1; + __IO uint32_t HASHWRP : 1; + __IO uint32_t TRNGRDP : 1; + __IO uint32_t TRNGWRP : 1; + __IO uint32_t CRCRDP : 1; + __IO uint32_t CRCWRP : 1; + __IO uint32_t FMCRDP : 1; + __IO uint32_t FMCWRP : 1; + uint32_t RESERVED10 : 2; + __IO uint32_t WDTRDP : 1; + __IO uint32_t WDTWRP : 1; + __IO uint32_t SWDTRDP : 1; + __IO uint32_t SWDTWRP : 1; + __IO uint32_t BKSRAMRDP : 1; + __IO uint32_t BKSRAMWRP : 1; + __IO uint32_t RTCRDP : 1; + __IO uint32_t RTCWRP : 1; + __IO uint32_t DMPURDP : 1; + __IO uint32_t DMPUWRP : 1; + __IO uint32_t SRAMCRDP : 1; + __IO uint32_t SRAMCWRP : 1; + __IO uint32_t INTCRDP : 1; + __IO uint32_t INTCWRP : 1; + __IO uint32_t SYSCRDP : 1; + __IO uint32_t SYSCWRP : 1; + __IO uint32_t MSTPRDP : 1; + __IO uint32_t MSTPWRP : 1; + uint32_t RESERVED30 : 1; + __IO uint32_t BUSERRE : 1; +} stc_sysreg_mpu_ippr_field_t; + +typedef struct +{ + __IO uint32_t PCLK0S : 3; + uint32_t RESERVED3 : 1; + __IO uint32_t PCLK1S : 3; + uint32_t RESERVED7 : 1; + __IO uint32_t PCLK2S : 3; + uint32_t RESERVED11 : 1; + __IO uint32_t PCLK3S : 3; + uint32_t RESERVED15 : 1; + __IO uint32_t PCLK4S : 3; + uint32_t RESERVED19 : 1; + __IO uint32_t EXCKS : 3; + uint32_t RESERVED23 : 1; + __IO uint32_t HCLKS : 3; + uint32_t RESERVED27 : 5; +} stc_sysreg_cmu_scfgr_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 4; + __IO uint8_t USBCKS : 4; +} stc_sysreg_cmu_ufsckcfgr_field_t; + +typedef struct +{ + __IO uint8_t CKSW : 3; + uint8_t RESERVED3 : 5; +} stc_sysreg_cmu_ckswr_field_t; + +typedef struct +{ + __IO uint8_t MPLLOFF : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_pllcr_field_t; + +typedef struct +{ + __IO uint8_t UPLLOFF : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_upllcr_field_t; + +typedef struct +{ + __IO uint8_t XTALSTP : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_xtalcr_field_t; + +typedef struct +{ + __IO uint8_t HRCSTP : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_hrccr_field_t; + +typedef struct +{ + __IO uint8_t MRCSTP : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_mrccr_field_t; + +typedef struct +{ + __IO uint8_t HRCSTBF : 1; + uint8_t RESERVED1 : 2; + __IO uint8_t XTALSTBF : 1; + uint8_t RESERVED4 : 1; + __IO uint8_t MPLLSTBF : 1; + __IO uint8_t UPLLSTBF : 1; + uint8_t RESERVED7 : 1; +} stc_sysreg_cmu_oscstbsr_field_t; + +typedef struct +{ + __IO uint8_t MCO1SEL : 4; + __IO uint8_t MCO1DIV : 3; + __IO uint8_t MCO1EN : 1; +} stc_sysreg_cmu_mco1cfgr_field_t; + +typedef struct +{ + __IO uint8_t MCO2SEL : 4; + __IO uint8_t MCO2DIV : 3; + __IO uint8_t MCO2EN : 1; +} stc_sysreg_cmu_mco2cfgr_field_t; + +typedef struct +{ + __IO uint8_t TPIUCKS : 2; + uint8_t RESERVED2 : 5; + __IO uint8_t TPIUCKOE : 1; +} stc_sysreg_cmu_tpiuckcfgr_field_t; + +typedef struct +{ + __IO uint8_t XTALSTDIE : 1; + __IO uint8_t XTALSTDRE : 1; + __IO uint8_t XTALSTDRIS : 1; + uint8_t RESERVED3 : 4; + __IO uint8_t XTALSTDE : 1; +} stc_sysreg_cmu_xtalstdcr_field_t; + +typedef struct +{ + __IO uint8_t XTALSTDF : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_xtalstdsr_field_t; + +typedef struct +{ + __IO uint8_t XTALSTB : 4; + uint8_t RESERVED4 : 4; +} stc_sysreg_cmu_xtalstbcr_field_t; + +typedef struct +{ + __IO uint16_t PORF : 1; + __IO uint16_t PINRF : 1; + __IO uint16_t BORF : 1; + __IO uint16_t PVD1RF : 1; + __IO uint16_t PVD2RF : 1; + __IO uint16_t WDRF : 1; + __IO uint16_t SWDRF : 1; + __IO uint16_t PDRF : 1; + __IO uint16_t SWRF : 1; + __IO uint16_t MPUERF : 1; + __IO uint16_t RAPERF : 1; + __IO uint16_t RAECRF : 1; + __IO uint16_t CKFERF : 1; + __IO uint16_t XTALERF : 1; + __IO uint16_t MULTIRF : 1; + __IO uint16_t CLRF : 1; +} stc_sysreg_rmu_rstf0_field_t; + +typedef struct +{ + __IO uint8_t PVD1NMIS : 1; + uint8_t RESERVED1 : 3; + __IO uint8_t PVD2NMIS : 1; + uint8_t RESERVED5 : 3; +} stc_sysreg_pwr_pvdicr_field_t; + +typedef struct +{ + __IO uint8_t PVD1MON : 1; + __IO uint8_t PVD1DETFLG : 1; + uint8_t RESERVED2 : 2; + __IO uint8_t PVD2MON : 1; + __IO uint8_t PVD2DETFLG : 1; + uint8_t RESERVED6 : 2; +} stc_sysreg_pwr_pvddsr_field_t; + +typedef struct +{ + __IO uint32_t MPLLM : 5; + uint32_t RESERVED5 : 2; + __IO uint32_t PLLSRC : 1; + __IO uint32_t MPLLN : 9; + uint32_t RESERVED17 : 3; + __IO uint32_t MPLLR : 4; + __IO uint32_t MPLLQ : 4; + __IO uint32_t MPLLP : 4; +} stc_sysreg_cmu_pllcfgr_field_t; + +typedef struct +{ + __IO uint32_t UPLLM : 5; + uint32_t RESERVED5 : 3; + __IO uint32_t UPLLN : 9; + uint32_t RESERVED17 : 3; + __IO uint32_t UPLLR : 4; + __IO uint32_t UPLLQ : 4; + __IO uint32_t UPLLP : 4; +} stc_sysreg_cmu_upllcfgr_field_t; + +typedef struct +{ + __IO uint16_t FPRCB0 : 1; + __IO uint16_t FPRCB1 : 1; + __IO uint16_t FPRCB2 : 1; + __IO uint16_t FPRCB3 : 1; + uint16_t RESERVED4 : 4; + __IO uint16_t FPRCWE : 8; +} stc_sysreg_pwr_fprc_field_t; + +typedef struct +{ + __IO uint8_t PDMDS : 2; + __IO uint8_t VVDRSD : 1; + __IO uint8_t RETRAMSD : 1; + __IO uint8_t IORTN : 2; + uint8_t RESERVED6 : 1; + __IO uint8_t PWDN : 1; +} stc_sysreg_pwr_pwrc0_field_t; + +typedef struct +{ + __IO uint8_t VPLLSD : 1; + __IO uint8_t VHRCSD : 1; + uint8_t RESERVED2 : 4; + __IO uint8_t STPDAS : 2; +} stc_sysreg_pwr_pwrc1_field_t; + +typedef struct +{ + __IO uint8_t DDAS : 4; + __IO uint8_t DVS : 2; + uint8_t RESERVED6 : 2; +} stc_sysreg_pwr_pwrc2_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 2; + __IO uint8_t PDTS : 1; + uint8_t RESERVED3 : 5; +} stc_sysreg_pwr_pwrc3_field_t; + +typedef struct +{ + __IO uint8_t WKE00 : 1; + __IO uint8_t WKE01 : 1; + __IO uint8_t WKE02 : 1; + __IO uint8_t WKE03 : 1; + __IO uint8_t WKE10 : 1; + __IO uint8_t WKE11 : 1; + __IO uint8_t WKE12 : 1; + __IO uint8_t WKE13 : 1; +} stc_sysreg_pwr_pdwke0_field_t; + +typedef struct +{ + __IO uint8_t WKE20 : 1; + __IO uint8_t WKE21 : 1; + __IO uint8_t WKE22 : 1; + __IO uint8_t WKE23 : 1; + __IO uint8_t WKE30 : 1; + __IO uint8_t WKE31 : 1; + __IO uint8_t WKE32 : 1; + __IO uint8_t WKE33 : 1; +} stc_sysreg_pwr_pdwke1_field_t; + +typedef struct +{ + __IO uint8_t VD1WKE : 1; + __IO uint8_t VD2WKE : 1; + __IO uint8_t NMIWKE : 1; + uint8_t RESERVED3 : 1; + __IO uint8_t RTCPRDWKE : 1; + __IO uint8_t RTCALMWKE : 1; + uint8_t RESERVED6 : 1; + __IO uint8_t WKTMWKE : 1; +} stc_sysreg_pwr_pdwke2_field_t; + +typedef struct +{ + __IO uint8_t WK0EGS : 1; + __IO uint8_t WK1EGS : 1; + __IO uint8_t WK2EGS : 1; + __IO uint8_t WK3EGS : 1; + __IO uint8_t VD1EGS : 1; + __IO uint8_t VD2EGS : 1; + __IO uint8_t NMIEGS : 1; + uint8_t RESERVED7 : 1; +} stc_sysreg_pwr_pdwkes_field_t; + +typedef struct +{ + __IO uint8_t PTWK0F : 1; + __IO uint8_t PTWK1F : 1; + __IO uint8_t PTWK2F : 1; + __IO uint8_t PTWK3F : 1; + __IO uint8_t VD1WKF : 1; + __IO uint8_t VD2WKF : 1; + __IO uint8_t NMIWKF : 1; + uint8_t RESERVED7 : 1; +} stc_sysreg_pwr_pdwkf0_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 4; + __IO uint8_t RTCPRDWKF : 1; + __IO uint8_t RTCALMWKF : 1; + uint8_t RESERVED6 : 1; + __IO uint8_t WKTMWKF : 1; +} stc_sysreg_pwr_pdwkf1_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 7; + __IO uint8_t ADBUFE : 1; +} stc_sysreg_pwr_pwcmr_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 4; + __IO uint8_t XTALDRV : 2; + __IO uint8_t XTALMS : 1; + __IO uint8_t SUPDRV : 1; +} stc_sysreg_cmu_xtalcfgr_field_t; + +typedef struct +{ + __IO uint8_t EXVCCINEN : 1; + uint8_t RESERVED1 : 4; + __IO uint8_t PVD1EN : 1; + __IO uint8_t PVD2EN : 1; + uint8_t RESERVED7 : 1; +} stc_sysreg_pwr_pvdcr0_field_t; + +typedef struct +{ + __IO uint8_t PVD1IRE : 1; + __IO uint8_t PVD1IRS : 1; + __IO uint8_t PVD1CMPOE : 1; + uint8_t RESERVED3 : 1; + __IO uint8_t PVD2IRE : 1; + __IO uint8_t PVD2IRS : 1; + __IO uint8_t PVD2CMPOE : 1; + uint8_t RESERVED7 : 1; +} stc_sysreg_pwr_pvdcr1_field_t; + +typedef struct +{ + __IO uint8_t PVD1NFDIS : 1; + __IO uint8_t PVD1NFCKS : 2; + uint8_t RESERVED3 : 1; + __IO uint8_t PVD2NFDIS : 1; + __IO uint8_t PVD2NFCKS : 2; + uint8_t RESERVED7 : 1; +} stc_sysreg_pwr_pvdfcr_field_t; + +typedef struct +{ + __IO uint8_t PVD1LVL : 3; + uint8_t RESERVED3 : 1; + __IO uint8_t PVD2LVL : 3; + uint8_t RESERVED7 : 1; +} stc_sysreg_pwr_pvdlcr_field_t; + +typedef struct +{ + __IO uint8_t XTAL32STP : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_xtal32cr_field_t; + +typedef struct +{ + __IO uint8_t XTAL32DRV : 3; + uint8_t RESERVED3 : 5; +} stc_sysreg_cmu_xtal32cfgr_field_t; + +typedef struct +{ + __IO uint8_t XTAL32NF : 2; + uint8_t RESERVED2 : 6; +} stc_sysreg_cmu_xtal32nfr_field_t; + +typedef struct +{ + __IO uint8_t LRCSTP : 1; + uint8_t RESERVED1 : 7; +} stc_sysreg_cmu_lrccr_field_t; + +typedef struct +{ + uint8_t RESERVED0 : 7; + __IO uint8_t CSDIS : 1; +} stc_sysreg_pwr_xtal32cs_field_t; + +typedef struct +{ + __IO uint32_t CNTA :16; + uint32_t RESERVED16 :16; +} stc_tmr0_cntar_field_t; + +typedef struct +{ + __IO uint32_t CNTB :16; + uint32_t RESERVED16 :16; +} stc_tmr0_cntbr_field_t; + +typedef struct +{ + __IO uint32_t CMPA :16; + uint32_t RESERVED16 :16; +} stc_tmr0_cmpar_field_t; + +typedef struct +{ + __IO uint32_t CMPB :16; + uint32_t RESERVED16 :16; +} stc_tmr0_cmpbr_field_t; + +typedef struct +{ + __IO uint32_t CSTA : 1; + __IO uint32_t CAPMDA : 1; + __IO uint32_t INTENA : 1; + uint32_t RESERVED3 : 1; + __IO uint32_t CKDIVA : 4; + __IO uint32_t SYNSA : 1; + __IO uint32_t SYNCLKA : 1; + __IO uint32_t ASYNCLKA : 1; + uint32_t RESERVED11 : 1; + __IO uint32_t HSTAA : 1; + __IO uint32_t HSTPA : 1; + __IO uint32_t HCLEA : 1; + __IO uint32_t HICPA : 1; + __IO uint32_t CSTB : 1; + __IO uint32_t CAPMDB : 1; + __IO uint32_t INTENB : 1; + uint32_t RESERVED19 : 1; + __IO uint32_t CKDIVB : 4; + __IO uint32_t SYNSB : 1; + __IO uint32_t SYNCLKB : 1; + __IO uint32_t ASYNCLKB : 1; + uint32_t RESERVED27 : 1; + __IO uint32_t HSTAB : 1; + __IO uint32_t HSTPB : 1; + __IO uint32_t HCLEB : 1; + __IO uint32_t HICPB : 1; +} stc_tmr0_bconr_field_t; + +typedef struct +{ + __IO uint32_t CMAF : 1; + uint32_t RESERVED1 :15; + __IO uint32_t CMBF : 1; + uint32_t RESERVED17 :15; +} stc_tmr0_stflr_field_t; + +typedef struct +{ + __IO uint16_t OCEH : 1; + __IO uint16_t OCEL : 1; + __IO uint16_t OCPH : 1; + __IO uint16_t OCPL : 1; + __IO uint16_t OCIEH : 1; + __IO uint16_t OCIEL : 1; + __IO uint16_t OCFH : 1; + __IO uint16_t OCFL : 1; + uint16_t RESERVED8 : 8; +} stc_tmr4_ocsr_field_t; + +typedef struct +{ + __IO uint16_t CHBUFEN : 2; + __IO uint16_t CLBUFEN : 2; + __IO uint16_t MHBUFEN : 2; + __IO uint16_t MLBUFEN : 2; + __IO uint16_t LMCH : 1; + __IO uint16_t LMCL : 1; + __IO uint16_t LMMH : 1; + __IO uint16_t LMML : 1; + __IO uint16_t MCECH : 1; + __IO uint16_t MCECL : 1; + uint16_t RESERVED14 : 2; +} stc_tmr4_ocer_field_t; + +typedef struct +{ + __IO uint16_t OCFDCH : 1; + __IO uint16_t OCFPKH : 1; + __IO uint16_t OCFUCH : 1; + __IO uint16_t OCFZRH : 1; + __IO uint16_t OPDCH : 2; + __IO uint16_t OPPKH : 2; + __IO uint16_t OPUCH : 2; + __IO uint16_t OPZRH : 2; + __IO uint16_t OPNPKH : 2; + __IO uint16_t OPNZRH : 2; +} stc_tmr4_ocmrh_field_t; + +typedef struct +{ + __IO uint32_t OCFDCL : 1; + __IO uint32_t OCFPKL : 1; + __IO uint32_t OCFUCL : 1; + __IO uint32_t OCFZRL : 1; + __IO uint32_t OPDCL : 2; + __IO uint32_t OPPKL : 2; + __IO uint32_t OPUCL : 2; + __IO uint32_t OPZRL : 2; + __IO uint32_t OPNPKL : 2; + __IO uint32_t OPNZRL : 2; + __IO uint32_t EOPNDCL : 2; + __IO uint32_t EOPNUCL : 2; + __IO uint32_t EOPDCL : 2; + __IO uint32_t EOPPKL : 2; + __IO uint32_t EOPUCL : 2; + __IO uint32_t EOPZRL : 2; + __IO uint32_t EOPNPKL : 2; + __IO uint32_t EOPNZRL : 2; +} stc_tmr4_ocmrl_field_t; + +typedef struct +{ + __IO uint16_t CKDIV : 4; + __IO uint16_t CLEAR : 1; + __IO uint16_t MODE : 1; + __IO uint16_t STOP : 1; + __IO uint16_t BUFEN : 1; + __IO uint16_t IRQPEN : 1; + __IO uint16_t IRQPF : 1; + uint16_t RESERVED10 : 3; + __IO uint16_t IRQZEN : 1; + __IO uint16_t IRQZF : 1; + __IO uint16_t ECKEN : 1; +} stc_tmr4_ccsr_field_t; + +typedef struct +{ + __IO uint16_t ZIM : 4; + __IO uint16_t PIM : 4; + __IO uint16_t ZIC : 4; + __IO uint16_t PIC : 4; +} stc_tmr4_cvpr_field_t; + +typedef struct +{ + __IO uint16_t DIVCK : 4; + __IO uint16_t PWMMD : 2; + __IO uint16_t LVLS : 2; + uint16_t RESERVED8 : 8; +} stc_tmr4_pocr_field_t; + +typedef struct +{ + __IO uint16_t RTIDU : 1; + __IO uint16_t RTIDV : 1; + __IO uint16_t RTIDW : 1; + uint16_t RESERVED3 : 1; + __IO uint16_t RTIFU : 1; + __IO uint16_t RTICU : 1; + __IO uint16_t RTEU : 1; + __IO uint16_t RTSU : 1; + __IO uint16_t RTIFV : 1; + __IO uint16_t RTICV : 1; + __IO uint16_t RTEV : 1; + __IO uint16_t RTSV : 1; + __IO uint16_t RTIFW : 1; + __IO uint16_t RTICW : 1; + __IO uint16_t RTEW : 1; + __IO uint16_t RTSW : 1; +} stc_tmr4_rcsr_field_t; + +typedef struct +{ + __IO uint16_t BUFEN : 2; + __IO uint16_t EVTOS : 3; + __IO uint16_t LMC : 1; + uint16_t RESERVED6 : 2; + __IO uint16_t EVTMS : 1; + __IO uint16_t EVTDS : 1; + uint16_t RESERVED10 : 2; + __IO uint16_t DEN : 1; + __IO uint16_t PEN : 1; + __IO uint16_t UEN : 1; + __IO uint16_t ZEN : 1; +} stc_tmr4_scsr_field_t; + +typedef struct +{ + __IO uint16_t AMC : 4; + uint16_t RESERVED4 : 2; + __IO uint16_t MZCE : 1; + __IO uint16_t MPCE : 1; + uint16_t RESERVED8 : 8; +} stc_tmr4_scmr_field_t; + +typedef struct +{ + uint16_t RESERVED0 : 7; + __IO uint16_t HOLD : 1; + uint16_t RESERVED8 : 8; +} stc_tmr4_ecsr_field_t; + +typedef struct +{ + __IO uint16_t EMBVAL : 2; + uint16_t RESERVED2 :14; +} stc_tmr4_cr_ecer1_field_t; + +typedef struct +{ + __IO uint16_t EMBVAL : 2; + uint16_t RESERVED2 :14; +} stc_tmr4_cr_ecer2_field_t; + +typedef struct +{ + __IO uint16_t EMBVAL : 2; + uint16_t RESERVED2 :14; +} stc_tmr4_cr_ecer3_field_t; + +typedef struct +{ + __IO uint32_t CNT :16; + uint32_t RESERVED16 :16; +} stc_tmr6_cnter_field_t; + +typedef struct +{ + __IO uint32_t PERA :16; + uint32_t RESERVED16 :16; +} stc_tmr6_perar_field_t; + +typedef struct +{ + __IO uint32_t PERB :16; + uint32_t RESERVED16 :16; +} stc_tmr6_perbr_field_t; + +typedef struct +{ + __IO uint32_t PERC :16; + uint32_t RESERVED16 :16; +} stc_tmr6_percr_field_t; + +typedef struct +{ + __IO uint32_t GCMA :16; + uint32_t RESERVED16 :16; +} stc_tmr6_gcmar_field_t; + +typedef struct +{ + __IO uint32_t GCMB :16; + uint32_t RESERVED16 :16; +} stc_tmr6_gcmbr_field_t; + +typedef struct +{ + __IO uint32_t GCMC :16; + uint32_t RESERVED16 :16; +} stc_tmr6_gcmcr_field_t; + +typedef struct +{ + __IO uint32_t GCMD :16; + uint32_t RESERVED16 :16; +} stc_tmr6_gcmdr_field_t; + +typedef struct +{ + __IO uint32_t GCME :16; + uint32_t RESERVED16 :16; +} stc_tmr6_gcmer_field_t; + +typedef struct +{ + __IO uint32_t GCMF :16; + uint32_t RESERVED16 :16; +} stc_tmr6_gcmfr_field_t; + +typedef struct +{ + __IO uint32_t SCMA :16; + uint32_t RESERVED16 :16; +} stc_tmr6_scmar_field_t; + +typedef struct +{ + __IO uint32_t SCMB :16; + uint32_t RESERVED16 :16; +} stc_tmr6_scmbr_field_t; + +typedef struct +{ + __IO uint32_t SCMC :16; + uint32_t RESERVED16 :16; +} stc_tmr6_scmcr_field_t; + +typedef struct +{ + __IO uint32_t SCMD :16; + uint32_t RESERVED16 :16; +} stc_tmr6_scmdr_field_t; + +typedef struct +{ + __IO uint32_t SCME :16; + uint32_t RESERVED16 :16; +} stc_tmr6_scmer_field_t; + +typedef struct +{ + __IO uint32_t SCMF :16; + uint32_t RESERVED16 :16; +} stc_tmr6_scmfr_field_t; + +typedef struct +{ + __IO uint32_t DTUA :16; + uint32_t RESERVED16 :16; +} stc_tmr6_dtuar_field_t; + +typedef struct +{ + __IO uint32_t DTDA :16; + uint32_t RESERVED16 :16; +} stc_tmr6_dtdar_field_t; + +typedef struct +{ + __IO uint32_t DTUB :16; + uint32_t RESERVED16 :16; +} stc_tmr6_dtubr_field_t; + +typedef struct +{ + __IO uint32_t DTDB :16; + uint32_t RESERVED16 :16; +} stc_tmr6_dtdbr_field_t; + +typedef struct +{ + __IO uint32_t START : 1; + __IO uint32_t MODE : 3; + __IO uint32_t CKDIV : 3; + uint32_t RESERVED7 : 1; + __IO uint32_t DIR : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t ZMSKREV : 1; + __IO uint32_t ZMSKPOS : 1; + __IO uint32_t ZMSKVAL : 2; + uint32_t RESERVED20 :12; +} stc_tmr6_gconr_field_t; + +typedef struct +{ + __IO uint32_t INTENA : 1; + __IO uint32_t INTENB : 1; + __IO uint32_t INTENC : 1; + __IO uint32_t INTEND : 1; + __IO uint32_t INTENE : 1; + __IO uint32_t INTENF : 1; + __IO uint32_t INTENOVF : 1; + __IO uint32_t INTENUDF : 1; + __IO uint32_t INTENDTE : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t INTENSAU : 1; + __IO uint32_t INTENSAD : 1; + __IO uint32_t INTENSBU : 1; + __IO uint32_t INTENSBD : 1; + uint32_t RESERVED20 :12; +} stc_tmr6_iconr_field_t; + +typedef struct +{ + __IO uint32_t CAPMDA : 1; + __IO uint32_t STACA : 1; + __IO uint32_t STPCA : 1; + __IO uint32_t STASTPSA : 1; + __IO uint32_t CMPCA : 2; + __IO uint32_t PERCA : 2; + __IO uint32_t OUTENA : 1; + uint32_t RESERVED9 : 2; + __IO uint32_t EMBVALA : 2; + uint32_t RESERVED13 : 3; + __IO uint32_t CAPMDB : 1; + __IO uint32_t STACB : 1; + __IO uint32_t STPCB : 1; + __IO uint32_t STASTPSB : 1; + __IO uint32_t CMPCB : 2; + __IO uint32_t PERCB : 2; + __IO uint32_t OUTENB : 1; + uint32_t RESERVED25 : 2; + __IO uint32_t EMBVALB : 2; + uint32_t RESERVED29 : 3; +} stc_tmr6_pconr_field_t; + +typedef struct +{ + __IO uint32_t BENA : 1; + __IO uint32_t BSEA : 1; + __IO uint32_t BENB : 1; + __IO uint32_t BSEB : 1; + uint32_t RESERVED4 : 4; + __IO uint32_t BENP : 1; + __IO uint32_t BSEP : 1; + uint32_t RESERVED10 : 6; + __IO uint32_t BENSPA : 1; + __IO uint32_t BSESPA : 1; + uint32_t RESERVED18 : 2; + __IO uint32_t BTRSPA : 2; + uint32_t RESERVED22 : 2; + __IO uint32_t BENSPB : 1; + __IO uint32_t BSESPB : 1; + uint32_t RESERVED26 : 2; + __IO uint32_t BTRSPB : 2; + uint32_t RESERVED30 : 2; +} stc_tmr6_bconr_field_t; + +typedef struct +{ + __IO uint32_t DTCEN : 1; + uint32_t RESERVED1 : 3; + __IO uint32_t DTBENU : 1; + __IO uint32_t DTBEND : 1; + uint32_t RESERVED6 : 2; + __IO uint32_t SEPA : 1; + uint32_t RESERVED9 :23; +} stc_tmr6_dconr_field_t; + +typedef struct +{ + __IO uint32_t NOFIENGA : 1; + __IO uint32_t NOFICKGA : 2; + uint32_t RESERVED3 : 1; + __IO uint32_t NOFIENGB : 1; + __IO uint32_t NOFICKGB : 2; + uint32_t RESERVED7 : 9; + __IO uint32_t NOFIENTA : 1; + __IO uint32_t NOFICKTA : 2; + uint32_t RESERVED19 : 1; + __IO uint32_t NOFIENTB : 1; + __IO uint32_t NOFICKTB : 2; + uint32_t RESERVED23 : 9; +} stc_tmr6_fconr_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 8; + __IO uint32_t SPPERIA : 1; + __IO uint32_t SPPERIB : 1; + uint32_t RESERVED10 : 6; + __IO uint32_t PCNTE : 2; + __IO uint32_t PCNTS : 3; + uint32_t RESERVED21 :11; +} stc_tmr6_vperr_field_t; + +typedef struct +{ + __IO uint32_t CMAF : 1; + __IO uint32_t CMBF : 1; + __IO uint32_t CMCF : 1; + __IO uint32_t CMDF : 1; + __IO uint32_t CMEF : 1; + __IO uint32_t CMFF : 1; + __IO uint32_t OVFF : 1; + __IO uint32_t UDFF : 1; + __IO uint32_t DTEF : 1; + __IO uint32_t CMSAUF : 1; + __IO uint32_t CMSADF : 1; + __IO uint32_t CMSBUF : 1; + __IO uint32_t CMSBDF : 1; + uint32_t RESERVED13 : 8; + __IO uint32_t VPERNUM : 3; + uint32_t RESERVED24 : 7; + __IO uint32_t DIRF : 1; +} stc_tmr6_stflr_field_t; + +typedef struct +{ + __IO uint32_t HSTA0 : 1; + __IO uint32_t HSTA1 : 1; + uint32_t RESERVED2 : 2; + __IO uint32_t HSTA4 : 1; + __IO uint32_t HSTA5 : 1; + __IO uint32_t HSTA6 : 1; + __IO uint32_t HSTA7 : 1; + __IO uint32_t HSTA8 : 1; + __IO uint32_t HSTA9 : 1; + __IO uint32_t HSTA10 : 1; + __IO uint32_t HSTA11 : 1; + uint32_t RESERVED12 :19; + __IO uint32_t STARTS : 1; +} stc_tmr6_hstar_field_t; + +typedef struct +{ + __IO uint32_t HSTP0 : 1; + __IO uint32_t HSTP1 : 1; + uint32_t RESERVED2 : 2; + __IO uint32_t HSTP4 : 1; + __IO uint32_t HSTP5 : 1; + __IO uint32_t HSTP6 : 1; + __IO uint32_t HSTP7 : 1; + __IO uint32_t HSTP8 : 1; + __IO uint32_t HSTP9 : 1; + __IO uint32_t HSTP10 : 1; + __IO uint32_t HSTP11 : 1; + uint32_t RESERVED12 :19; + __IO uint32_t STOPS : 1; +} stc_tmr6_hstpr_field_t; + +typedef struct +{ + __IO uint32_t HCLE0 : 1; + __IO uint32_t HCLE1 : 1; + uint32_t RESERVED2 : 2; + __IO uint32_t HCLE4 : 1; + __IO uint32_t HCLE5 : 1; + __IO uint32_t HCLE6 : 1; + __IO uint32_t HCLE7 : 1; + __IO uint32_t HCLE8 : 1; + __IO uint32_t HCLE9 : 1; + __IO uint32_t HCLE10 : 1; + __IO uint32_t HCLE11 : 1; + uint32_t RESERVED12 :19; + __IO uint32_t CLEARS : 1; +} stc_tmr6_hclrr_field_t; + +typedef struct +{ + __IO uint32_t HCPA0 : 1; + __IO uint32_t HCPA1 : 1; + uint32_t RESERVED2 : 2; + __IO uint32_t HCPA4 : 1; + __IO uint32_t HCPA5 : 1; + __IO uint32_t HCPA6 : 1; + __IO uint32_t HCPA7 : 1; + __IO uint32_t HCPA8 : 1; + __IO uint32_t HCPA9 : 1; + __IO uint32_t HCPA10 : 1; + __IO uint32_t HCPA11 : 1; + uint32_t RESERVED12 :20; +} stc_tmr6_hcpar_field_t; + +typedef struct +{ + __IO uint32_t HCPB0 : 1; + __IO uint32_t HCPB1 : 1; + uint32_t RESERVED2 : 2; + __IO uint32_t HCPB4 : 1; + __IO uint32_t HCPB5 : 1; + __IO uint32_t HCPB6 : 1; + __IO uint32_t HCPB7 : 1; + __IO uint32_t HCPB8 : 1; + __IO uint32_t HCPB9 : 1; + __IO uint32_t HCPB10 : 1; + __IO uint32_t HCPB11 : 1; + uint32_t RESERVED12 :20; +} stc_tmr6_hcpbr_field_t; + +typedef struct +{ + __IO uint32_t HCUP0 : 1; + __IO uint32_t HCUP1 : 1; + __IO uint32_t HCUP2 : 1; + __IO uint32_t HCUP3 : 1; + __IO uint32_t HCUP4 : 1; + __IO uint32_t HCUP5 : 1; + __IO uint32_t HCUP6 : 1; + __IO uint32_t HCUP7 : 1; + __IO uint32_t HCUP8 : 1; + __IO uint32_t HCUP9 : 1; + __IO uint32_t HCUP10 : 1; + __IO uint32_t HCUP11 : 1; + uint32_t RESERVED12 : 4; + __IO uint32_t HCUP16 : 1; + __IO uint32_t HCUP17 : 1; + uint32_t RESERVED18 :14; +} stc_tmr6_hcupr_field_t; + +typedef struct +{ + __IO uint32_t HCDO0 : 1; + __IO uint32_t HCDO1 : 1; + __IO uint32_t HCDO2 : 1; + __IO uint32_t HCDO3 : 1; + __IO uint32_t HCDO4 : 1; + __IO uint32_t HCDO5 : 1; + __IO uint32_t HCDO6 : 1; + __IO uint32_t HCDO7 : 1; + __IO uint32_t HCDO8 : 1; + __IO uint32_t HCDO9 : 1; + __IO uint32_t HCDO10 : 1; + __IO uint32_t HCDO11 : 1; + uint32_t RESERVED12 : 4; + __IO uint32_t HCDO16 : 1; + __IO uint32_t HCDO17 : 1; + uint32_t RESERVED18 :14; +} stc_tmr6_hcdor_field_t; + +typedef struct +{ + __IO uint32_t SSTA1 : 1; + __IO uint32_t SSTA2 : 1; + __IO uint32_t SSTA3 : 1; + uint32_t RESERVED3 :13; + __IO uint32_t RESV0 : 1; + uint32_t RESERVED17 : 7; + __IO uint32_t RESV : 1; + uint32_t RESERVED25 : 7; +} stc_tmr6_cr_sstar_field_t; + +typedef struct +{ + __IO uint32_t SSTP1 : 1; + __IO uint32_t SSTP2 : 1; + __IO uint32_t SSTP3 : 1; + uint32_t RESERVED3 :29; +} stc_tmr6_cr_sstpr_field_t; + +typedef struct +{ + __IO uint32_t SCLE1 : 1; + __IO uint32_t SCLE2 : 1; + __IO uint32_t SCLE3 : 1; + uint32_t RESERVED3 :29; +} stc_tmr6_cr_sclrr_field_t; + +typedef struct +{ + __IO uint32_t CNT :16; + uint32_t RESERVED16 :16; +} stc_tmra_cnter_field_t; + +typedef struct +{ + __IO uint32_t PER :16; + uint32_t RESERVED16 :16; +} stc_tmra_perar_field_t; + +typedef struct +{ + __IO uint32_t CMP :16; + uint32_t RESERVED16 :16; +} stc_tmra_cmpar_field_t; + +typedef struct +{ + __IO uint32_t START : 1; + __IO uint32_t DIR : 1; + __IO uint32_t MODE : 1; + __IO uint32_t SYNST : 1; + __IO uint32_t CKDIV : 4; + uint32_t RESERVED8 : 4; + __IO uint32_t ITENOVF : 1; + __IO uint32_t ITENUDF : 1; + __IO uint32_t OVFF : 1; + __IO uint32_t UDFF : 1; + uint32_t RESERVED16 :16; +} stc_tmra_bcstr_field_t; + +typedef struct +{ + __IO uint32_t HSTA0 : 1; + __IO uint32_t HSTA1 : 1; + __IO uint32_t HSTA2 : 1; + uint32_t RESERVED3 : 1; + __IO uint32_t HSTP0 : 1; + __IO uint32_t HSTP1 : 1; + __IO uint32_t HSTP2 : 1; + uint32_t RESERVED7 : 1; + __IO uint32_t HCLE0 : 1; + __IO uint32_t HCLE1 : 1; + __IO uint32_t HCLE2 : 1; + uint32_t RESERVED11 : 1; + __IO uint32_t HCLE3 : 1; + __IO uint32_t HCLE4 : 1; + __IO uint32_t HCLE5 : 1; + __IO uint32_t HCLE6 : 1; + uint32_t RESERVED16 :16; +} stc_tmra_hconr_field_t; + +typedef struct +{ + __IO uint32_t HCUP0 : 1; + __IO uint32_t HCUP1 : 1; + __IO uint32_t HCUP2 : 1; + __IO uint32_t HCUP3 : 1; + __IO uint32_t HCUP4 : 1; + __IO uint32_t HCUP5 : 1; + __IO uint32_t HCUP6 : 1; + __IO uint32_t HCUP7 : 1; + __IO uint32_t HCUP8 : 1; + __IO uint32_t HCUP9 : 1; + __IO uint32_t HCUP10 : 1; + __IO uint32_t HCUP11 : 1; + __IO uint32_t HCUP12 : 1; + uint32_t RESERVED13 :19; +} stc_tmra_hcupr_field_t; + +typedef struct +{ + __IO uint32_t HCDO0 : 1; + __IO uint32_t HCDO1 : 1; + __IO uint32_t HCDO2 : 1; + __IO uint32_t HCDO3 : 1; + __IO uint32_t HCDO4 : 1; + __IO uint32_t HCDO5 : 1; + __IO uint32_t HCDO6 : 1; + __IO uint32_t HCDO7 : 1; + __IO uint32_t HCDO8 : 1; + __IO uint32_t HCDO9 : 1; + __IO uint32_t HCDO10 : 1; + __IO uint32_t HCDO11 : 1; + __IO uint32_t HCDO12 : 1; + uint32_t RESERVED13 :19; +} stc_tmra_hcdor_field_t; + +typedef struct +{ + __IO uint32_t ITEN1 : 1; + __IO uint32_t ITEN2 : 1; + __IO uint32_t ITEN3 : 1; + __IO uint32_t ITEN4 : 1; + __IO uint32_t ITEN5 : 1; + __IO uint32_t ITEN6 : 1; + __IO uint32_t ITEN7 : 1; + __IO uint32_t ITEN8 : 1; + uint32_t RESERVED8 :24; +} stc_tmra_iconr_field_t; + +typedef struct +{ + __IO uint32_t ETEN1 : 1; + __IO uint32_t ETEN2 : 1; + __IO uint32_t ETEN3 : 1; + __IO uint32_t ETEN4 : 1; + __IO uint32_t ETEN5 : 1; + __IO uint32_t ETEN6 : 1; + __IO uint32_t ETEN7 : 1; + __IO uint32_t ETEN8 : 1; + uint32_t RESERVED8 :24; +} stc_tmra_econr_field_t; + +typedef struct +{ + __IO uint32_t NOFIENTG : 1; + __IO uint32_t NOFICKTG : 2; + uint32_t RESERVED3 : 5; + __IO uint32_t NOFIENCA : 1; + __IO uint32_t NOFICKCA : 2; + uint32_t RESERVED11 : 1; + __IO uint32_t NOFIENCB : 1; + __IO uint32_t NOFICKCB : 2; + uint32_t RESERVED15 :17; +} stc_tmra_fconr_field_t; + +typedef struct +{ + __IO uint32_t CMPF1 : 1; + __IO uint32_t CMPF2 : 1; + __IO uint32_t CMPF3 : 1; + __IO uint32_t CMPF4 : 1; + __IO uint32_t CMPF5 : 1; + __IO uint32_t CMPF6 : 1; + __IO uint32_t CMPF7 : 1; + __IO uint32_t CMPF8 : 1; + uint32_t RESERVED8 :24; +} stc_tmra_stflr_field_t; + +typedef struct +{ + __IO uint32_t BEN : 1; + __IO uint32_t BSE0 : 1; + __IO uint32_t BSE1 : 1; + uint32_t RESERVED3 :29; +} stc_tmra_bconr_field_t; + +typedef struct +{ + __IO uint32_t CAPMD : 1; + uint32_t RESERVED1 : 3; + __IO uint32_t HICP0 : 1; + __IO uint32_t HICP1 : 1; + __IO uint32_t HICP2 : 1; + uint32_t RESERVED7 : 1; + __IO uint32_t HICP3 : 1; + __IO uint32_t HICP4 : 1; + uint32_t RESERVED10 : 2; + __IO uint32_t NOFIENCP : 1; + __IO uint32_t NOFICKCP : 2; + uint32_t RESERVED15 :17; +} stc_tmra_cconr_field_t; + +typedef struct +{ + __IO uint32_t STAC : 2; + __IO uint32_t STPC : 2; + __IO uint32_t CMPC : 2; + __IO uint32_t PERC : 2; + __IO uint32_t FORC : 2; + uint32_t RESERVED10 : 2; + __IO uint32_t OUTEN : 1; + uint32_t RESERVED13 :19; +} stc_tmra_pconr_field_t; + +typedef struct +{ + __IO uint32_t EN : 1; + __IO uint32_t RUN : 1; + uint32_t RESERVED2 :30; +} stc_trng_cr_field_t; + +typedef struct +{ + __IO uint32_t LOAD : 1; + uint32_t RESERVED1 : 1; + __IO uint32_t CNT : 3; + uint32_t RESERVED5 :27; +} stc_trng_mr_field_t; + +typedef struct +{ + __IO uint32_t PE : 1; + __IO uint32_t FE : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t ORE : 1; + uint32_t RESERVED4 : 1; + __IO uint32_t RXNE : 1; + __IO uint32_t TC : 1; + __IO uint32_t TXE : 1; + __IO uint32_t RTOF : 1; + uint32_t RESERVED9 : 7; + __IO uint32_t MPB : 1; + uint32_t RESERVED17 :15; +} stc_usart_sr_field_t; + +typedef struct +{ + __IO uint32_t TDR : 9; + __IO uint32_t MPID : 1; + uint32_t RESERVED10 : 6; + __IO uint32_t RDR : 9; + uint32_t RESERVED25 : 7; +} stc_usart_dr_field_t; + +typedef struct +{ + __IO uint32_t DIV_FRACTION : 7; + uint32_t RESERVED7 : 1; + __IO uint32_t DIV_INTEGER : 8; + uint32_t RESERVED16 :16; +} stc_usart_brr_field_t; + +typedef struct +{ + __IO uint32_t RTOE : 1; + __IO uint32_t RTOIE : 1; + __IO uint32_t RE : 1; + __IO uint32_t TE : 1; + __IO uint32_t SLME : 1; + __IO uint32_t RIE : 1; + __IO uint32_t TCIE : 1; + __IO uint32_t TXEIE : 1; + uint32_t RESERVED8 : 1; + __IO uint32_t PS : 1; + __IO uint32_t PCE : 1; + uint32_t RESERVED11 : 1; + __IO uint32_t M : 1; + uint32_t RESERVED13 : 2; + __IO uint32_t OVER8 : 1; + __IO uint32_t CPE : 1; + __IO uint32_t CFE : 1; + uint32_t RESERVED18 : 1; + __IO uint32_t CORE : 1; + __IO uint32_t CRTOF : 1; + uint32_t RESERVED21 : 3; + __IO uint32_t MS : 1; + uint32_t RESERVED25 : 3; + __IO uint32_t ML : 1; + __IO uint32_t FBME : 1; + __IO uint32_t NFE : 1; + __IO uint32_t SBS : 1; +} stc_usart_cr1_field_t; + +typedef struct +{ + __IO uint32_t MPE : 1; + uint32_t RESERVED1 :10; + __IO uint32_t CLKC : 2; + __IO uint32_t STOP : 1; + uint32_t RESERVED14 :18; +} stc_usart_cr2_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 5; + __IO uint32_t SCEN : 1; + uint32_t RESERVED6 : 3; + __IO uint32_t CTSE : 1; + uint32_t RESERVED10 :11; + __IO uint32_t BCN : 3; + uint32_t RESERVED24 : 8; +} stc_usart_cr3_field_t; + +typedef struct +{ + __IO uint32_t PSC : 2; + uint32_t RESERVED2 :30; +} stc_usart_pr_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 6; + __IO uint32_t VBUSOVEN : 1; + __IO uint32_t VBUSVAL : 1; + uint32_t RESERVED8 :24; +} stc_usbfs_usbfs_gvbuscfg_field_t; + +typedef struct +{ + __IO uint32_t GINTMSK : 1; + __IO uint32_t HBSTLEN : 4; + __IO uint32_t DMAEN : 1; + uint32_t RESERVED6 : 1; + __IO uint32_t TXFELVL : 1; + __IO uint32_t PTXFELVL : 1; + uint32_t RESERVED9 :23; +} stc_usbfs_gahbcfg_field_t; + +typedef struct +{ + __IO uint32_t TOCAL : 3; + uint32_t RESERVED3 : 3; + __IO uint32_t PHYSEL : 1; + uint32_t RESERVED7 : 3; + __IO uint32_t TRDT : 4; + uint32_t RESERVED14 :15; + __IO uint32_t FHMOD : 1; + __IO uint32_t FDMOD : 1; + uint32_t RESERVED31 : 1; +} stc_usbfs_gusbcfg_field_t; + +typedef struct +{ + __IO uint32_t CSRST : 1; + __IO uint32_t HSRST : 1; + __IO uint32_t FCRST : 1; + uint32_t RESERVED3 : 1; + __IO uint32_t RXFFLSH : 1; + __IO uint32_t TXFFLSH : 1; + __IO uint32_t TXFNUM : 5; + uint32_t RESERVED11 :19; + __IO uint32_t DMAREQ : 1; + __IO uint32_t AHBIDL : 1; +} stc_usbfs_grstctl_field_t; + +typedef struct +{ + __IO uint32_t CMOD : 1; + __IO uint32_t MMIS : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t SOF : 1; + __IO uint32_t RXFNE : 1; + __IO uint32_t NPTXFE : 1; + __IO uint32_t GINAKEFF : 1; + __IO uint32_t GONAKEFF : 1; + uint32_t RESERVED8 : 2; + __IO uint32_t ESUSP : 1; + __IO uint32_t USBSUSP : 1; + __IO uint32_t USBRST : 1; + __IO uint32_t ENUMDNE : 1; + __IO uint32_t ISOODRP : 1; + __IO uint32_t EOPF : 1; + uint32_t RESERVED16 : 2; + __IO uint32_t IEPINT : 1; + __IO uint32_t OEPINT : 1; + __IO uint32_t IISOIXFR : 1; + __IO uint32_t IPXFR_INCOMPISOOUT : 1; + __IO uint32_t DATAFSUSP : 1; + uint32_t RESERVED23 : 1; + __IO uint32_t HPRTINT : 1; + __IO uint32_t HCINT : 1; + __IO uint32_t PTXFE : 1; + uint32_t RESERVED27 : 1; + __IO uint32_t CIDSCHG : 1; + __IO uint32_t DISCINT : 1; + __IO uint32_t VBUSVINT : 1; + __IO uint32_t WKUINT : 1; +} stc_usbfs_gintsts_field_t; + +typedef struct +{ + uint32_t RESERVED0 : 1; + __IO uint32_t MMISM : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t SOFM : 1; + __IO uint32_t RXFNEM : 1; + __IO uint32_t NPTXFEM : 1; + __IO uint32_t GINAKEFFM : 1; + __IO uint32_t GONAKEFFM : 1; + uint32_t RESERVED8 : 2; + __IO uint32_t ESUSPM : 1; + __IO uint32_t USBSUSPM : 1; + __IO uint32_t USBRSTM : 1; + __IO uint32_t ENUMDNEM : 1; + __IO uint32_t ISOODRPM : 1; + __IO uint32_t EOPFM : 1; + uint32_t RESERVED16 : 2; + __IO uint32_t IEPIM : 1; + __IO uint32_t OEPIM : 1; + __IO uint32_t IISOIXFRM : 1; + __IO uint32_t IPXFRM_INCOMPISOOUTM : 1; + __IO uint32_t DATAFSUSPM : 1; + uint32_t RESERVED23 : 1; + __IO uint32_t HPRTIM : 1; + __IO uint32_t HCIM : 1; + __IO uint32_t PTXFEM : 1; + uint32_t RESERVED27 : 1; + __IO uint32_t CIDSCHGM : 1; + __IO uint32_t DISCIM : 1; + __IO uint32_t VBUSVIM : 1; + __IO uint32_t WKUIM : 1; +} stc_usbfs_gintmsk_field_t; + +typedef struct +{ + __IO uint32_t CHNUM_EPNUM : 4; + __IO uint32_t BCNT :11; + __IO uint32_t DPID : 2; + __IO uint32_t PKTSTS : 4; + uint32_t RESERVED21 :11; +} stc_usbfs_grxstsr_field_t; + +typedef struct +{ + __IO uint32_t CHNUM_EPNUM : 4; + __IO uint32_t BCNT :11; + __IO uint32_t DPID : 2; + __IO uint32_t PKTSTS : 4; + uint32_t RESERVED21 :11; +} stc_usbfs_grxstsp_field_t; + +typedef struct +{ + __IO uint32_t RXFD :11; + uint32_t RESERVED11 :21; +} stc_usbfs_grxfsiz_field_t; + +typedef struct +{ + __IO uint32_t NPTXFSA :16; + __IO uint32_t NPTXFD :16; +} stc_usbfs_hnptxfsiz_field_t; + +typedef struct +{ + __IO uint32_t NPTXFSAV :16; + __IO uint32_t NPTQXSAV : 8; + __IO uint32_t NPTXQTOP : 7; + uint32_t RESERVED31 : 1; +} stc_usbfs_hnptxsts_field_t; + +typedef struct +{ + __IO uint32_t PTXSA :12; + uint32_t RESERVED12 : 4; + __IO uint32_t PTXFD :11; + uint32_t RESERVED27 : 5; +} stc_usbfs_hptxfsiz_field_t; + +typedef struct +{ + __IO uint32_t INEPTXSA :12; + uint32_t RESERVED12 : 4; + __IO uint32_t INEPTXFD :10; + uint32_t RESERVED26 : 6; +} stc_usbfs_dieptxf_field_t; + +typedef struct +{ + __IO uint32_t FSLSPCS : 2; + __IO uint32_t FSLSS : 1; + uint32_t RESERVED3 :29; +} stc_usbfs_hcfg_field_t; + +typedef struct +{ + __IO uint32_t FRIVL :16; + uint32_t RESERVED16 :16; +} stc_usbfs_hfir_field_t; + +typedef struct +{ + __IO uint32_t FRNUM :16; + __IO uint32_t FTREM :16; +} stc_usbfs_hfnum_field_t; + +typedef struct +{ + __IO uint32_t PTXFSAVL :16; + __IO uint32_t PTXQSAV : 8; + __IO uint32_t PTXQTOP : 8; +} stc_usbfs_hptxsts_field_t; + +typedef struct +{ + __IO uint32_t HAINT :12; + uint32_t RESERVED12 :20; +} stc_usbfs_haint_field_t; + +typedef struct +{ + __IO uint32_t HAINTM :12; + uint32_t RESERVED12 :20; +} stc_usbfs_haintmsk_field_t; + +typedef struct +{ + __IO uint32_t PCSTS : 1; + __IO uint32_t PCDET : 1; + __IO uint32_t PENA : 1; + __IO uint32_t PENCHNG : 1; + uint32_t RESERVED4 : 2; + __IO uint32_t PRES : 1; + __IO uint32_t PSUSP : 1; + __IO uint32_t PRST : 1; + uint32_t RESERVED9 : 1; + __IO uint32_t PLSTS : 2; + __IO uint32_t PWPR : 1; + uint32_t RESERVED13 : 4; + __IO uint32_t PSPD : 2; + uint32_t RESERVED19 :13; +} stc_usbfs_hprt_field_t; + +typedef struct +{ + __IO uint32_t MPSIZ :11; + __IO uint32_t EPNUM : 4; + __IO uint32_t EPDIR : 1; + uint32_t RESERVED16 : 1; + __IO uint32_t LSDEV : 1; + __IO uint32_t EPTYP : 2; + uint32_t RESERVED20 : 2; + __IO uint32_t DAD : 7; + __IO uint32_t ODDFRM : 1; + __IO uint32_t CHDIS : 1; + __IO uint32_t CHENA : 1; +} stc_usbfs_hcchar_field_t; + +typedef struct +{ + __IO uint32_t XFRC : 1; + __IO uint32_t CHH : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t STALL : 1; + __IO uint32_t NAK : 1; + __IO uint32_t ACK : 1; + uint32_t RESERVED6 : 1; + __IO uint32_t TXERR : 1; + __IO uint32_t BBERR : 1; + __IO uint32_t FRMOR : 1; + __IO uint32_t DTERR : 1; + uint32_t RESERVED11 :21; +} stc_usbfs_hcint_field_t; + +typedef struct +{ + __IO uint32_t XFRCM : 1; + __IO uint32_t CHHM : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t STALLM : 1; + __IO uint32_t NAKM : 1; + __IO uint32_t ACKM : 1; + uint32_t RESERVED6 : 1; + __IO uint32_t TXERRM : 1; + __IO uint32_t BBERRM : 1; + __IO uint32_t FRMORM : 1; + __IO uint32_t DTERRM : 1; + uint32_t RESERVED11 :21; +} stc_usbfs_hcintmsk_field_t; + +typedef struct +{ + __IO uint32_t XFRSIZ :19; + __IO uint32_t PKTCNT :10; + __IO uint32_t DPID : 2; + uint32_t RESERVED31 : 1; +} stc_usbfs_hctsiz_field_t; + +typedef struct +{ + __IO uint32_t DSPD : 2; + __IO uint32_t NZLSOHSK : 1; + uint32_t RESERVED3 : 1; + __IO uint32_t DAD : 7; + __IO uint32_t PFIVL : 2; + uint32_t RESERVED13 :19; +} stc_usbfs_dcfg_field_t; + +typedef struct +{ + __IO uint32_t RWUSIG : 1; + __IO uint32_t SDIS : 1; + __IO uint32_t GINSTS : 1; + __IO uint32_t GONSTS : 1; + uint32_t RESERVED4 : 3; + __IO uint32_t SGINAK : 1; + __IO uint32_t CGINAK : 1; + __IO uint32_t SGONAK : 1; + __IO uint32_t CGONAK : 1; + __IO uint32_t POPRGDNE : 1; + uint32_t RESERVED12 :20; +} stc_usbfs_dctl_field_t; + +typedef struct +{ + __IO uint32_t SUSPSTS : 1; + __IO uint32_t ENUMSPD : 2; + __IO uint32_t EERR : 1; + uint32_t RESERVED4 : 4; + __IO uint32_t FNSOF :14; + uint32_t RESERVED22 :10; +} stc_usbfs_dsts_field_t; + +typedef struct +{ + __IO uint32_t XFRCM : 1; + __IO uint32_t EPDM : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t TOM : 1; + __IO uint32_t ITTXFEMSK : 1; + __IO uint32_t INEPNMM : 1; + __IO uint32_t INEPNEM : 1; + uint32_t RESERVED7 :25; +} stc_usbfs_diepmsk_field_t; + +typedef struct +{ + __IO uint32_t XFRCM : 1; + __IO uint32_t EPDM : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t STUPM : 1; + __IO uint32_t OTEPDM : 1; + uint32_t RESERVED5 :27; +} stc_usbfs_doepmsk_field_t; + +typedef struct +{ + __IO uint32_t IEPINT : 6; + uint32_t RESERVED6 :10; + __IO uint32_t OEPINT : 6; + uint32_t RESERVED22 :10; +} stc_usbfs_daint_field_t; + +typedef struct +{ + __IO uint32_t IEPINTM : 6; + uint32_t RESERVED6 :10; + __IO uint32_t OEPINTM : 6; + uint32_t RESERVED22 :10; +} stc_usbfs_daintmsk_field_t; + +typedef struct +{ + __IO uint32_t INEPTXFEM : 6; + uint32_t RESERVED6 :26; +} stc_usbfs_diepempmsk_field_t; + +typedef struct +{ + __IO uint32_t MPSIZ : 2; + uint32_t RESERVED2 :13; + __IO uint32_t USBAEP : 1; + uint32_t RESERVED16 : 1; + __IO uint32_t NAKSTS : 1; + __IO uint32_t EPTYP : 2; + uint32_t RESERVED20 : 1; + __IO uint32_t STALL : 1; + __IO uint32_t TXFNUM : 4; + __IO uint32_t CNAK : 1; + __IO uint32_t SNAK : 1; + uint32_t RESERVED28 : 2; + __IO uint32_t EPDIS : 1; + __IO uint32_t EPENA : 1; +} stc_usbfs_diepctl0_field_t; + +typedef struct +{ + __IO uint32_t XFRC : 1; + __IO uint32_t EPDISD : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t TOC : 1; + __IO uint32_t TTXFE : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t INEPNE : 1; + __IO uint32_t TXFE : 1; + uint32_t RESERVED8 :24; +} stc_usbfs_diepint0_field_t; + +typedef struct +{ + __IO uint32_t XFRSIZ : 7; + uint32_t RESERVED7 :12; + __IO uint32_t PKTCNT : 2; + uint32_t RESERVED21 :11; +} stc_usbfs_dieptsiz0_field_t; + +typedef struct +{ + __IO uint32_t INEPTFSAV :16; + uint32_t RESERVED16 :16; +} stc_usbfs_dtxfsts0_field_t; + +typedef struct +{ + __IO uint32_t MPSIZ :11; + uint32_t RESERVED11 : 4; + __IO uint32_t USBAEP : 1; + __IO uint32_t EONUM_DPID : 1; + __IO uint32_t NAKSTS : 1; + __IO uint32_t EPTYP : 2; + uint32_t RESERVED20 : 1; + __IO uint32_t STALL : 1; + __IO uint32_t TXFNUM : 4; + __IO uint32_t CNAK : 1; + __IO uint32_t SNAK : 1; + __IO uint32_t SD0PID_SEVNFRM : 1; + __IO uint32_t SODDFRM : 1; + __IO uint32_t EPDIS : 1; + __IO uint32_t EPENA : 1; +} stc_usbfs_diepctl_field_t; + +typedef struct +{ + __IO uint32_t XFRC : 1; + __IO uint32_t EPDISD : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t TOC : 1; + __IO uint32_t TTXFE : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t INEPNE : 1; + __IO uint32_t TXFE : 1; + uint32_t RESERVED8 :24; +} stc_usbfs_diepint_field_t; + +typedef struct +{ + __IO uint32_t XFRSIZ :19; + __IO uint32_t PKTCNT :10; + uint32_t RESERVED29 : 3; +} stc_usbfs_dieptsiz_field_t; + +typedef struct +{ + __IO uint32_t INEPTFSAV :16; + uint32_t RESERVED16 :16; +} stc_usbfs_dtxfsts_field_t; + +typedef struct +{ + __IO uint32_t MPSIZ : 2; + uint32_t RESERVED2 :13; + __IO uint32_t USBAEP : 1; + uint32_t RESERVED16 : 1; + __IO uint32_t NAKSTS : 1; + __IO uint32_t EPTYP : 2; + __IO uint32_t SNPM : 1; + __IO uint32_t STALL : 1; + uint32_t RESERVED22 : 4; + __IO uint32_t CNAK : 1; + __IO uint32_t SNAK : 1; + uint32_t RESERVED28 : 2; + __IO uint32_t EPDIS : 1; + __IO uint32_t EPENA : 1; +} stc_usbfs_doepctl0_field_t; + +typedef struct +{ + __IO uint32_t XFRC : 1; + __IO uint32_t EPDISD : 1; + uint32_t RESERVED2 : 1; + __IO uint32_t STUP : 1; + __IO uint32_t OTEPDIS : 1; + uint32_t RESERVED5 : 1; + __IO uint32_t B2BSTUP : 1; + uint32_t RESERVED7 :25; +} stc_usbfs_doepint_field_t; + +typedef struct +{ + __IO uint32_t XFRSIZ : 7; + uint32_t RESERVED7 :12; + __IO uint32_t PKTCNT : 1; + uint32_t RESERVED20 : 9; + __IO uint32_t STUPCNT : 2; + uint32_t RESERVED31 : 1; +} stc_usbfs_doeptsiz0_field_t; + +typedef struct +{ + __IO uint32_t MPSIZ :11; + uint32_t RESERVED11 : 4; + __IO uint32_t USBAEP : 1; + __IO uint32_t DPID : 1; + __IO uint32_t NAKSTS : 1; + __IO uint32_t EPTYP : 2; + __IO uint32_t SNPM : 1; + __IO uint32_t STALL : 1; + uint32_t RESERVED22 : 4; + __IO uint32_t CNAK : 1; + __IO uint32_t SNAK : 1; + __IO uint32_t SD0PID : 1; + __IO uint32_t SD1PID : 1; + __IO uint32_t EPDIS : 1; + __IO uint32_t EPENA : 1; +} stc_usbfs_doepctl_field_t; + +typedef struct +{ + __IO uint32_t XFRSIZ :19; + __IO uint32_t PKTCNT :10; + uint32_t RESERVED29 : 3; +} stc_usbfs_doeptsiz_field_t; + +typedef struct +{ + __IO uint32_t STPPCLK : 1; + __IO uint32_t GATEHCLK : 1; + uint32_t RESERVED2 :30; +} stc_usbfs_pcgcctl_field_t; + +typedef struct +{ + __IO uint32_t PERI : 2; + uint32_t RESERVED2 : 2; + __IO uint32_t CKS : 4; + __IO uint32_t WDPT : 4; + uint32_t RESERVED12 : 4; + __IO uint32_t SLPOFF : 1; + uint32_t RESERVED17 :14; + __IO uint32_t ITS : 1; +} stc_wdt_cr_field_t; + +typedef struct +{ + __IO uint32_t CNT :16; + __IO uint32_t UDF : 1; + __IO uint32_t REF : 1; + uint32_t RESERVED18 :14; +} stc_wdt_sr_field_t; + +typedef struct +{ + __IO uint32_t RF :16; + uint32_t RESERVED16 :16; +} stc_wdt_rr_field_t; + +typedef struct +{ + __IO uint16_t WKTMCMP :12; + __IO uint16_t WKOVF : 1; + __IO uint16_t WKCKS : 2; + __IO uint16_t WKTCE : 1; +} stc_wktm_cr_field_t; + + +typedef struct +{ + union + { + __IO uint8_t STR; + stc_adc_str_field_t STR_f; + }; + uint8_t RESERVED1[1]; + union + { + __IO uint16_t CR0; + stc_adc_cr0_field_t CR0_f; + }; + union + { + __IO uint16_t CR1; + stc_adc_cr1_field_t CR1_f; + }; + uint8_t RESERVED3[4]; + union + { + __IO uint16_t TRGSR; + stc_adc_trgsr_field_t TRGSR_f; + }; + __IO uint16_t CHSELRA0; + union + { + __IO uint16_t CHSELRA1; + stc_adc_chselra1_field_t CHSELRA1_f; + }; + __IO uint16_t CHSELRB0; + union + { + __IO uint16_t CHSELRB1; + stc_adc_chselrb1_field_t CHSELRB1_f; + }; + __IO uint16_t AVCHSELR0; + union + { + __IO uint16_t AVCHSELR1; + stc_adc_avchselr1_field_t AVCHSELR1_f; + }; + uint8_t RESERVED10[8]; + __IO uint8_t SSTR0; + __IO uint8_t SSTR1; + __IO uint8_t SSTR2; + __IO uint8_t SSTR3; + __IO uint8_t SSTR4; + __IO uint8_t SSTR5; + __IO uint8_t SSTR6; + __IO uint8_t SSTR7; + __IO uint8_t SSTR8; + __IO uint8_t SSTR9; + __IO uint8_t SSTR10; + __IO uint8_t SSTR11; + __IO uint8_t SSTR12; + __IO uint8_t SSTR13; + __IO uint8_t SSTR14; + __IO uint8_t SSTR15; + __IO uint8_t SSTRL; + uint8_t RESERVED27[7]; + union + { + __IO uint16_t CHMUXR0; + stc_adc_chmuxr0_field_t CHMUXR0_f; + }; + union + { + __IO uint16_t CHMUXR1; + stc_adc_chmuxr1_field_t CHMUXR1_f; + }; + union + { + __IO uint16_t CHMUXR2; + stc_adc_chmuxr2_field_t CHMUXR2_f; + }; + union + { + __IO uint16_t CHMUXR3; + stc_adc_chmuxr3_field_t CHMUXR3_f; + }; + uint8_t RESERVED31[6]; + union + { + __IO uint8_t ISR; + stc_adc_isr_field_t ISR_f; + }; + union + { + __IO uint8_t ICR; + stc_adc_icr_field_t ICR_f; + }; + uint8_t RESERVED33[4]; + union + { + __IO uint16_t SYNCCR; + stc_adc_synccr_field_t SYNCCR_f; + }; + uint8_t RESERVED34[2]; + __IO uint16_t DR0; + __IO uint16_t DR1; + __IO uint16_t DR2; + __IO uint16_t DR3; + __IO uint16_t DR4; + __IO uint16_t DR5; + __IO uint16_t DR6; + __IO uint16_t DR7; + __IO uint16_t DR8; + __IO uint16_t DR9; + __IO uint16_t DR10; + __IO uint16_t DR11; + __IO uint16_t DR12; + __IO uint16_t DR13; + __IO uint16_t DR14; + __IO uint16_t DR15; + __IO uint16_t DR16; + uint8_t RESERVED51[46]; + union + { + __IO uint16_t AWDCR; + stc_adc_awdcr_field_t AWDCR_f; + }; + uint8_t RESERVED52[2]; + __IO uint16_t AWDDR0; + __IO uint16_t AWDDR1; + uint8_t RESERVED54[4]; + __IO uint16_t AWDCHSR0; + union + { + __IO uint16_t AWDCHSR1; + stc_adc_awdchsr1_field_t AWDCHSR1_f; + }; + __IO uint16_t AWDSR0; + union + { + __IO uint16_t AWDSR1; + stc_adc_awdsr1_field_t AWDSR1_f; + }; + uint8_t RESERVED58[12]; + union + { + __IO uint16_t PGACR; + stc_adc_pgacr_field_t PGACR_f; + }; + union + { + __IO uint16_t PGAGSR; + stc_adc_pgagsr_field_t PGAGSR_f; + }; + uint8_t RESERVED60[8]; + union + { + __IO uint16_t PGAINSR0; + stc_adc_pgainsr0_field_t PGAINSR0_f; + }; + union + { + __IO uint16_t PGAINSR1; + stc_adc_pgainsr1_field_t PGAINSR1_f; + }; +}M4_ADC_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR; + stc_aes_cr_field_t CR_f; + }; + uint8_t RESERVED1[12]; + __IO uint32_t DR0; + __IO uint32_t DR1; + __IO uint32_t DR2; + __IO uint32_t DR3; + __IO uint32_t KR0; + __IO uint32_t KR1; + __IO uint32_t KR2; + __IO uint32_t KR3; +}M4_AES_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t INT_SFTTRG; + stc_aos_int_sfttrg_field_t INT_SFTTRG_f; + }; + union + { + __IO uint32_t DCU1_TRGSEL; + stc_aos_dcu1_trgsel_field_t DCU1_TRGSEL_f; + }; + union + { + __IO uint32_t DCU2_TRGSEL; + stc_aos_dcu2_trgsel_field_t DCU2_TRGSEL_f; + }; + union + { + __IO uint32_t DCU3_TRGSEL; + stc_aos_dcu3_trgsel_field_t DCU3_TRGSEL_f; + }; + union + { + __IO uint32_t DCU4_TRGSEL; + stc_aos_dcu4_trgsel_field_t DCU4_TRGSEL_f; + }; + union + { + __IO uint32_t DMA1_TRGSEL0; + stc_aos_dma1_trgsel_field_t DMA1_TRGSEL0_f; + }; + union + { + __IO uint32_t DMA1_TRGSEL1; + stc_aos_dma1_trgsel_field_t DMA1_TRGSEL1_f; + }; + union + { + __IO uint32_t DMA1_TRGSEL2; + stc_aos_dma1_trgsel_field_t DMA1_TRGSEL2_f; + }; + union + { + __IO uint32_t DMA1_TRGSEL3; + stc_aos_dma1_trgsel3_field_t DMA1_TRGSEL3_f; + }; + union + { + __IO uint32_t DMA2_TRGSEL0; + stc_aos_dma2_trgsel_field_t DMA2_TRGSEL0_f; + }; + union + { + __IO uint32_t DMA2_TRGSEL1; + stc_aos_dma2_trgsel_field_t DMA2_TRGSEL1_f; + }; + union + { + __IO uint32_t DMA2_TRGSEL2; + stc_aos_dma2_trgsel_field_t DMA2_TRGSEL2_f; + }; + union + { + __IO uint32_t DMA2_TRGSEL3; + stc_aos_dma2_trgsel_field_t DMA2_TRGSEL3_f; + }; + union + { + __IO uint32_t DMA_TRGSELRC; + stc_aos_dma_trgselrc_field_t DMA_TRGSELRC_f; + }; + union + { + __IO uint32_t TMR6_HTSSR1; + stc_aos_tmr6_htssr_field_t TMR6_HTSSR1_f; + }; + union + { + __IO uint32_t TMR6_HTSSR2; + stc_aos_tmr6_htssr_field_t TMR6_HTSSR2_f; + }; + union + { + __IO uint32_t TMR0_HTSSR; + stc_aos_tmr0_htssr_field_t TMR0_HTSSR_f; + }; + union + { + __IO uint32_t PORT_PEVNTTRGSR12; + stc_aos_port_pevnttrgsr12_field_t PORT_PEVNTTRGSR12_f; + }; + union + { + __IO uint32_t PORT_PEVNTTRGSR34; + stc_aos_port_pevnttrgsr34_field_t PORT_PEVNTTRGSR34_f; + }; + union + { + __IO uint32_t TMRA_HTSSR0; + stc_aos_tmra_htssr_field_t TMRA_HTSSR0_f; + }; + union + { + __IO uint32_t TMRA_HTSSR1; + stc_aos_tmra_htssr_field_t TMRA_HTSSR1_f; + }; + union + { + __IO uint32_t OTS_TRG; + stc_aos_ots_trg_field_t OTS_TRG_f; + }; + union + { + __IO uint32_t ADC1_ITRGSELR0; + stc_aos_adc1_itrgselr_field_t ADC1_ITRGSELR0_f; + }; + union + { + __IO uint32_t ADC1_ITRGSELR1; + stc_aos_adc1_itrgselr_field_t ADC1_ITRGSELR1_f; + }; + union + { + __IO uint32_t ADC2_ITRGSELR0; + stc_aos_adc2_itrgselr_field_t ADC2_ITRGSELR0_f; + }; + union + { + __IO uint32_t ADC2_ITRGSELR1; + stc_aos_adc2_itrgselr_field_t ADC2_ITRGSELR1_f; + }; + union + { + __IO uint32_t COMTRG1; + stc_aos_comtrg1_field_t COMTRG1_f; + }; + union + { + __IO uint32_t COMTRG2; + stc_aos_comtrg2_field_t COMTRG2_f; + }; + uint8_t RESERVED28[144]; + union + { + __IO uint32_t PEVNTDIRR1; + stc_aos_pevntdirr_field_t PEVNTDIRR1_f; + }; + union + { + __IO uint32_t PEVNTIDR1; + stc_aos_pevntidr_field_t PEVNTIDR1_f; + }; + union + { + __IO uint32_t PEVNTODR1; + stc_aos_pevntodr_field_t PEVNTODR1_f; + }; + union + { + __IO uint32_t PEVNTORR1; + stc_aos_pevntorr_field_t PEVNTORR1_f; + }; + union + { + __IO uint32_t PEVNTOSR1; + stc_aos_pevntosr_field_t PEVNTOSR1_f; + }; + union + { + __IO uint32_t PEVNTRISR1; + stc_aos_pevntrisr_field_t PEVNTRISR1_f; + }; + union + { + __IO uint32_t PEVNTFAL1; + stc_aos_pevntfal_field_t PEVNTFAL1_f; + }; + union + { + __IO uint32_t PEVNTDIRR2; + stc_aos_pevntdirr_field_t PEVNTDIRR2_f; + }; + union + { + __IO uint32_t PEVNTIDR2; + stc_aos_pevntidr_field_t PEVNTIDR2_f; + }; + union + { + __IO uint32_t PEVNTODR2; + stc_aos_pevntodr_field_t PEVNTODR2_f; + }; + union + { + __IO uint32_t PEVNTORR2; + stc_aos_pevntorr_field_t PEVNTORR2_f; + }; + union + { + __IO uint32_t PEVNTOSR2; + stc_aos_pevntosr_field_t PEVNTOSR2_f; + }; + union + { + __IO uint32_t PEVNTRISR2; + stc_aos_pevntrisr_field_t PEVNTRISR2_f; + }; + union + { + __IO uint32_t PEVNTFAL2; + stc_aos_pevntfal_field_t PEVNTFAL2_f; + }; + union + { + __IO uint32_t PEVNTDIRR3; + stc_aos_pevntdirr_field_t PEVNTDIRR3_f; + }; + union + { + __IO uint32_t PEVNTIDR3; + stc_aos_pevntidr_field_t PEVNTIDR3_f; + }; + union + { + __IO uint32_t PEVNTODR3; + stc_aos_pevntodr_field_t PEVNTODR3_f; + }; + union + { + __IO uint32_t PEVNTORR3; + stc_aos_pevntorr_field_t PEVNTORR3_f; + }; + union + { + __IO uint32_t PEVNTOSR3; + stc_aos_pevntosr_field_t PEVNTOSR3_f; + }; + union + { + __IO uint32_t PEVNTRISR3; + stc_aos_pevntrisr_field_t PEVNTRISR3_f; + }; + union + { + __IO uint32_t PEVNTFAL3; + stc_aos_pevntfal_field_t PEVNTFAL3_f; + }; + union + { + __IO uint32_t PEVNTDIRR4; + stc_aos_pevntdirr_field_t PEVNTDIRR4_f; + }; + union + { + __IO uint32_t PEVNTIDR4; + stc_aos_pevntidr_field_t PEVNTIDR4_f; + }; + union + { + __IO uint32_t PEVNTODR4; + stc_aos_pevntodr_field_t PEVNTODR4_f; + }; + union + { + __IO uint32_t PEVNTORR4; + stc_aos_pevntorr_field_t PEVNTORR4_f; + }; + union + { + __IO uint32_t PEVNTOSR4; + stc_aos_pevntosr_field_t PEVNTOSR4_f; + }; + union + { + __IO uint32_t PEVNTRISR4; + stc_aos_pevntrisr_field_t PEVNTRISR4_f; + }; + union + { + __IO uint32_t PEVNTFAL4; + stc_aos_pevntfal_field_t PEVNTFAL4_f; + }; + union + { + __IO uint32_t PEVNTNFCR; + stc_aos_pevntnfcr_field_t PEVNTNFCR_f; + }; +}M4_AOS_TypeDef; + +typedef struct +{ + __IO uint32_t RBUF; + uint8_t RESERVED1[76]; + __IO uint32_t TBUF; + uint8_t RESERVED2[76]; + union + { + __IO uint8_t CFG_STAT; + stc_can_cfg_stat_field_t CFG_STAT_f; + }; + union + { + __IO uint8_t TCMD; + stc_can_tcmd_field_t TCMD_f; + }; + union + { + __IO uint8_t TCTRL; + stc_can_tctrl_field_t TCTRL_f; + }; + union + { + __IO uint8_t RCTRL; + stc_can_rctrl_field_t RCTRL_f; + }; + union + { + __IO uint8_t RTIE; + stc_can_rtie_field_t RTIE_f; + }; + union + { + __IO uint8_t RTIF; + stc_can_rtif_field_t RTIF_f; + }; + union + { + __IO uint8_t ERRINT; + stc_can_errint_field_t ERRINT_f; + }; + union + { + __IO uint8_t LIMIT; + stc_can_limit_field_t LIMIT_f; + }; + union + { + __IO uint32_t BT; + stc_can_bt_field_t BT_f; + }; + uint8_t RESERVED11[4]; + union + { + __IO uint8_t EALCAP; + stc_can_ealcap_field_t EALCAP_f; + }; + uint8_t RESERVED12[1]; + __IO uint8_t RECNT; + __IO uint8_t TECNT; + union + { + __IO uint8_t ACFCTRL; + stc_can_acfctrl_field_t ACFCTRL_f; + }; + uint8_t RESERVED15[1]; + union + { + __IO uint8_t ACFEN; + stc_can_acfen_field_t ACFEN_f; + }; + uint8_t RESERVED16[1]; + union + { + __IO uint32_t ACF; + stc_can_acf_field_t ACF_f; + }; + uint8_t RESERVED17[2]; + union + { + __IO uint8_t TBSLOT; + stc_can_tbslot_field_t TBSLOT_f; + }; + union + { + __IO uint8_t TTCFG; + stc_can_ttcfg_field_t TTCFG_f; + }; + union + { + __IO uint32_t REF_MSG; + stc_can_ref_msg_field_t REF_MSG_f; + }; + union + { + __IO uint16_t TRG_CFG; + stc_can_trg_cfg_field_t TRG_CFG_f; + }; + __IO uint16_t TT_TRIG; + __IO uint16_t TT_WTRIG; +}M4_CAN_TypeDef; + +typedef struct +{ + union + { + __IO uint16_t CTRL; + stc_cmp_ctrl_field_t CTRL_f; + }; + union + { + __IO uint16_t VLTSEL; + stc_cmp_vltsel_field_t VLTSEL_f; + }; + union + { + __IO uint16_t MON; + stc_cmp_mon_field_t MON_f; + }; + union + { + __IO uint16_t CVSSTB; + stc_cmp_cvsstb_field_t CVSSTB_f; + }; + union + { + __IO uint16_t CVSPRD; + stc_cmp_cvsprd_field_t CVSPRD_f; + }; +}M4_CMP_TypeDef; + +typedef struct +{ + uint8_t RESERVED0[256]; + union + { + __IO uint16_t DADR1; + stc_cmp_cr_dadr1_field_t DADR1_f; + }; + union + { + __IO uint16_t DADR2; + stc_cmp_cr_dadr2_field_t DADR2_f; + }; + uint8_t RESERVED2[4]; + union + { + __IO uint16_t DACR; + stc_cmp_cr_dacr_field_t DACR_f; + }; + uint8_t RESERVED3[2]; + union + { + __IO uint16_t RVADC; + stc_cmp_cr_rvadc_field_t RVADC_f; + }; +}M4_CMP_CR_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR; + stc_crc_cr_field_t CR_f; + }; + __IO uint32_t RESLT; + uint8_t RESERVED2[4]; + union + { + __IO uint32_t FLG; + stc_crc_flg_field_t FLG_f; + }; + uint8_t RESERVED3[112]; + __IO uint32_t DAT0; + __IO uint32_t DAT1; + __IO uint32_t DAT2; + __IO uint32_t DAT3; + __IO uint32_t DAT4; + __IO uint32_t DAT5; + __IO uint32_t DAT6; + __IO uint32_t DAT7; + __IO uint32_t DAT8; + __IO uint32_t DAT9; + __IO uint32_t DAT10; + __IO uint32_t DAT11; + __IO uint32_t DAT12; + __IO uint32_t DAT13; + __IO uint32_t DAT14; + __IO uint32_t DAT15; + __IO uint32_t DAT16; + __IO uint32_t DAT17; + __IO uint32_t DAT18; + __IO uint32_t DAT19; + __IO uint32_t DAT20; + __IO uint32_t DAT21; + __IO uint32_t DAT22; + __IO uint32_t DAT23; + __IO uint32_t DAT24; + __IO uint32_t DAT25; + __IO uint32_t DAT26; + __IO uint32_t DAT27; + __IO uint32_t DAT28; + __IO uint32_t DAT29; + __IO uint32_t DAT30; + __IO uint32_t DAT31; +}M4_CRC_TypeDef; + +typedef struct +{ + __IO uint32_t AUTHID0; + __IO uint32_t AUTHID1; + __IO uint32_t AUTHID2; + __IO uint32_t RESV0; + union + { + __IO uint32_t MCUSTAT; + stc_dbgc_mcustat_field_t MCUSTAT_f; + }; + union + { + __IO uint32_t MCUCTL; + stc_dbgc_mcuctl_field_t MCUCTL_f; + }; + union + { + __IO uint32_t FMCCTL; + stc_dbgc_fmcctl_field_t FMCCTL_f; + }; + union + { + __IO uint32_t MCUDBGSTAT; + stc_dbgc_mcudbgstat_field_t MCUDBGSTAT_f; + }; + union + { + __IO uint32_t MCUSTPCTL; + stc_dbgc_mcustpctl_field_t MCUSTPCTL_f; + }; + union + { + __IO uint32_t MCUTRACECTL; + stc_dbgc_mcutracectl_field_t MCUTRACECTL_f; + }; +}M4_DBGC_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CTL; + stc_dcu_ctl_field_t CTL_f; + }; + union + { + __IO uint32_t FLAG; + stc_dcu_flag_field_t FLAG_f; + }; + __IO uint32_t DATA0; + __IO uint32_t DATA1; + __IO uint32_t DATA2; + union + { + __IO uint32_t FLAGCLR; + stc_dcu_flagclr_field_t FLAGCLR_f; + }; + union + { + __IO uint32_t INTSEL; + stc_dcu_intsel_field_t INTSEL_f; + }; +}M4_DCU_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t EN; + stc_dma_en_field_t EN_f; + }; + union + { + __IO uint32_t INTSTAT0; + stc_dma_intstat0_field_t INTSTAT0_f; + }; + union + { + __IO uint32_t INTSTAT1; + stc_dma_intstat1_field_t INTSTAT1_f; + }; + union + { + __IO uint32_t INTMASK0; + stc_dma_intmask0_field_t INTMASK0_f; + }; + union + { + __IO uint32_t INTMASK1; + stc_dma_intmask1_field_t INTMASK1_f; + }; + union + { + __IO uint32_t INTCLR0; + stc_dma_intclr0_field_t INTCLR0_f; + }; + union + { + __IO uint32_t INTCLR1; + stc_dma_intclr1_field_t INTCLR1_f; + }; + union + { + __IO uint32_t CHEN; + stc_dma_chen_field_t CHEN_f; + }; + uint8_t RESERVED8[4]; + union + { + __IO uint32_t CHSTAT; + stc_dma_chstat_field_t CHSTAT_f; + }; + uint8_t RESERVED9[4]; + union + { + __IO uint32_t RCFGCTL; + stc_dma_rcfgctl_field_t RCFGCTL_f; + }; + uint8_t RESERVED10[16]; + __IO uint32_t SAR0; + __IO uint32_t DAR0; + union + { + __IO uint32_t DTCTL0; + stc_dma_dtctl_field_t DTCTL0_f; + }; + union + { + __IO uint32_t RPT0; + stc_dma_rpt_field_t RPT0_f; + __IO uint32_t RPTB0; + stc_dma_rptb_field_t RPTB0_f; + }; + union + { + __IO uint32_t SNSEQCTL0; + stc_dma_snseqctl_field_t SNSEQCTL0_f; + __IO uint32_t SNSEQCTLB0; + stc_dma_snseqctlb_field_t SNSEQCTLB0_f; + }; + union + { + __IO uint32_t DNSEQCTL0; + stc_dma_dnseqctl_field_t DNSEQCTL0_f; + __IO uint32_t DNSEQCTLB0; + stc_dma_dnseqctlb_field_t DNSEQCTLB0_f; + }; + union + { + __IO uint32_t LLP0; + stc_dma_llp_field_t LLP0_f; + }; + union + { + __IO uint32_t CH0CTL; + stc_dma_ch0ctl_field_t CH0CTL_f; + }; + __IO uint32_t MONSAR0; + __IO uint32_t MONDAR0; + union + { + __IO uint32_t MONDTCTL0; + stc_dma_mondtctl_field_t MONDTCTL0_f; + }; + union + { + __IO uint32_t MONRPT0; + stc_dma_monrpt_field_t MONRPT0_f; + }; + union + { + __IO uint32_t MONSNSEQCTL0; + stc_dma_monsnseqctl_field_t MONSNSEQCTL0_f; + }; + union + { + __IO uint32_t MONDNSEQCTL0; + stc_dma_mondnseqctl_field_t MONDNSEQCTL0_f; + }; + uint8_t RESERVED27[8]; + __IO uint32_t SAR1; + __IO uint32_t DAR1; + union + { + __IO uint32_t DTCTL1; + stc_dma_dtctl_field_t DTCTL1_f; + }; + union + { + __IO uint32_t RPT1; + stc_dma_rpt_field_t RPT1_f; + __IO uint32_t RPTB1; + stc_dma_rptb_field_t RPTB1_f; + }; + union + { + __IO uint32_t SNSEQCTL1; + stc_dma_snseqctl_field_t SNSEQCTL1_f; + __IO uint32_t SNSEQCTLB1; + stc_dma_snseqctlb_field_t SNSEQCTLB1_f; + }; + union + { + __IO uint32_t DNSEQCTL1; + stc_dma_dnseqctl_field_t DNSEQCTL1_f; + __IO uint32_t DNSEQCTLB1; + stc_dma_dnseqctlb_field_t DNSEQCTLB1_f; + }; + union + { + __IO uint32_t LLP1; + stc_dma_llp_field_t LLP1_f; + }; + union + { + __IO uint32_t CH1CTL; + stc_dma_ch1ctl_field_t CH1CTL_f; + }; + __IO uint32_t MONSAR1; + __IO uint32_t MONDAR1; + union + { + __IO uint32_t MONDTCTL1; + stc_dma_mondtctl_field_t MONDTCTL1_f; + }; + union + { + __IO uint32_t MONRPT1; + stc_dma_monrpt_field_t MONRPT1_f; + }; + union + { + __IO uint32_t MONSNSEQCTL1; + stc_dma_monsnseqctl_field_t MONSNSEQCTL1_f; + }; + union + { + __IO uint32_t MONDNSEQCTL1; + stc_dma_mondnseqctl_field_t MONDNSEQCTL1_f; + }; + uint8_t RESERVED44[8]; + __IO uint32_t SAR2; + __IO uint32_t DAR2; + union + { + __IO uint32_t DTCTL2; + stc_dma_dtctl_field_t DTCTL2_f; + }; + union + { + __IO uint32_t RPT2; + stc_dma_rpt_field_t RPT2_f; + __IO uint32_t RPTB2; + stc_dma_rptb_field_t RPTB2_f; + }; + union + { + __IO uint32_t SNSEQCTL2; + stc_dma_snseqctl_field_t SNSEQCTL2_f; + __IO uint32_t SNSEQCTLB2; + stc_dma_snseqctlb_field_t SNSEQCTLB2_f; + }; + union + { + __IO uint32_t DNSEQCTL2; + stc_dma_dnseqctl_field_t DNSEQCTL2_f; + __IO uint32_t DNSEQCTLB2; + stc_dma_dnseqctlb_field_t DNSEQCTLB2_f; + }; + union + { + __IO uint32_t LLP2; + stc_dma_llp_field_t LLP2_f; + }; + union + { + __IO uint32_t CH2CTL; + stc_dma_ch2ctl_field_t CH2CTL_f; + }; + __IO uint32_t MONSAR2; + __IO uint32_t MONDAR2; + union + { + __IO uint32_t MONDTCTL2; + stc_dma_mondtctl_field_t MONDTCTL2_f; + }; + union + { + __IO uint32_t MONRPT2; + stc_dma_monrpt_field_t MONRPT2_f; + }; + union + { + __IO uint32_t MONSNSEQCTL2; + stc_dma_monsnseqctl_field_t MONSNSEQCTL2_f; + }; + union + { + __IO uint32_t MONDNSEQCTL2; + stc_dma_mondnseqctl_field_t MONDNSEQCTL2_f; + }; + uint8_t RESERVED61[8]; + __IO uint32_t SAR3; + __IO uint32_t DAR3; + union + { + __IO uint32_t DTCTL3; + stc_dma_dtctl_field_t DTCTL3_f; + }; + union + { + __IO uint32_t RPT3; + stc_dma_rpt_field_t RPT3_f; + __IO uint32_t RPTB3; + stc_dma_rptb_field_t RPTB3_f; + }; + union + { + __IO uint32_t SNSEQCTL3; + stc_dma_snseqctl_field_t SNSEQCTL3_f; + __IO uint32_t SNSEQCTLB3; + stc_dma_snseqctlb_field_t SNSEQCTLB3_f; + }; + union + { + __IO uint32_t DNSEQCTL3; + stc_dma_dnseqctl_field_t DNSEQCTL3_f; + __IO uint32_t DNSEQCTLB3; + stc_dma_dnseqctlb_field_t DNSEQCTLB3_f; + }; + union + { + __IO uint32_t LLP3; + stc_dma_llp_field_t LLP3_f; + }; + union + { + __IO uint32_t CH3CTL; + stc_dma_ch3ctl_field_t CH3CTL_f; + }; + __IO uint32_t MONSAR3; + __IO uint32_t MONDAR3; + union + { + __IO uint32_t MONDTCTL3; + stc_dma_mondtctl_field_t MONDTCTL3_f; + }; + union + { + __IO uint32_t MONRPT3; + stc_dma_monrpt_field_t MONRPT3_f; + }; + union + { + __IO uint32_t MONSNSEQCTL3; + stc_dma_monsnseqctl_field_t MONSNSEQCTL3_f; + }; + union + { + __IO uint32_t MONDNSEQCTL3; + stc_dma_mondnseqctl_field_t MONDNSEQCTL3_f; + }; +}M4_DMA_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t FAPRT; + stc_efm_faprt_field_t FAPRT_f; + }; + union + { + __IO uint32_t FSTP; + stc_efm_fstp_field_t FSTP_f; + }; + union + { + __IO uint32_t FRMC; + stc_efm_frmc_field_t FRMC_f; + }; + union + { + __IO uint32_t FWMC; + stc_efm_fwmc_field_t FWMC_f; + }; + union + { + __IO uint32_t FSR; + stc_efm_fsr_field_t FSR_f; + }; + union + { + __IO uint32_t FSCLR; + stc_efm_fsclr_field_t FSCLR_f; + }; + union + { + __IO uint32_t FITE; + stc_efm_fite_field_t FITE_f; + }; + union + { + __IO uint32_t FSWP; + stc_efm_fswp_field_t FSWP_f; + }; + union + { + __IO uint32_t FPMTSW; + stc_efm_fpmtsw_field_t FPMTSW_f; + }; + union + { + __IO uint32_t FPMTEW; + stc_efm_fpmtew_field_t FPMTEW_f; + }; + uint8_t RESERVED10[40]; + __IO uint32_t UQID1; + __IO uint32_t UQID2; + __IO uint32_t UQID3; + uint8_t RESERVED13[164]; + union + { + __IO uint32_t MMF_REMPRT; + stc_efm_mmf_remprt_field_t MMF_REMPRT_f; + }; + union + { + __IO uint32_t MMF_REMCR0; + stc_efm_mmf_remcr0_field_t MMF_REMCR0_f; + }; + union + { + __IO uint32_t MMF_REMCR1; + stc_efm_mmf_remcr1_field_t MMF_REMCR1_f; + }; + uint8_t RESERVED16[248]; + union + { + __IO uint32_t EFM_FRANDS; + stc_efm_efm_frands_field_t EFM_FRANDS_f; + }; +}M4_EFM_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CTL; + stc_emb_ctl_field_t CTL_f; + }; + union + { + __IO uint32_t PWMLV; + stc_emb_pwmlv_field_t PWMLV_f; + }; + union + { + __IO uint32_t SOE; + stc_emb_soe_field_t SOE_f; + }; + union + { + __IO uint32_t STAT; + stc_emb_stat_field_t STAT_f; + }; + union + { + __IO uint32_t STATCLR; + stc_emb_statclr_field_t STATCLR_f; + }; + union + { + __IO uint32_t INTEN; + stc_emb_inten_field_t INTEN_f; + }; +}M4_EMB_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t LVR; + stc_fcm_lvr_field_t LVR_f; + }; + union + { + __IO uint32_t UVR; + stc_fcm_uvr_field_t UVR_f; + }; + union + { + __IO uint32_t CNTR; + stc_fcm_cntr_field_t CNTR_f; + }; + union + { + __IO uint32_t STR; + stc_fcm_str_field_t STR_f; + }; + union + { + __IO uint32_t MCCR; + stc_fcm_mccr_field_t MCCR_f; + }; + union + { + __IO uint32_t RCCR; + stc_fcm_rccr_field_t RCCR_f; + }; + union + { + __IO uint32_t RIER; + stc_fcm_rier_field_t RIER_f; + }; + union + { + __IO uint32_t SR; + stc_fcm_sr_field_t SR_f; + }; + union + { + __IO uint32_t CLR; + stc_fcm_clr_field_t CLR_f; + }; +}M4_FCM_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR; + stc_hash_cr_field_t CR_f; + }; + uint8_t RESERVED1[12]; + __IO uint32_t HR7; + __IO uint32_t HR6; + __IO uint32_t HR5; + __IO uint32_t HR4; + __IO uint32_t HR3; + __IO uint32_t HR2; + __IO uint32_t HR1; + __IO uint32_t HR0; + uint8_t RESERVED9[16]; + __IO uint32_t DR15; + __IO uint32_t DR14; + __IO uint32_t DR13; + __IO uint32_t DR12; + __IO uint32_t DR11; + __IO uint32_t DR10; + __IO uint32_t DR9; + __IO uint32_t DR8; + __IO uint32_t DR7; + __IO uint32_t DR6; + __IO uint32_t DR5; + __IO uint32_t DR4; + __IO uint32_t DR3; + __IO uint32_t DR2; + __IO uint32_t DR1; + __IO uint32_t DR0; +}M4_HASH_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR1; + stc_i2c_cr1_field_t CR1_f; + }; + union + { + __IO uint32_t CR2; + stc_i2c_cr2_field_t CR2_f; + }; + union + { + __IO uint32_t CR3; + stc_i2c_cr3_field_t CR3_f; + }; + uint8_t RESERVED3[4]; + union + { + __IO uint32_t SLR0; + stc_i2c_slr0_field_t SLR0_f; + }; + union + { + __IO uint32_t SLR1; + stc_i2c_slr1_field_t SLR1_f; + }; + union + { + __IO uint32_t SLTR; + stc_i2c_sltr_field_t SLTR_f; + }; + union + { + __IO uint32_t SR; + stc_i2c_sr_field_t SR_f; + }; + union + { + __IO uint32_t CLR; + stc_i2c_clr_field_t CLR_f; + }; + union + { + __IO uint8_t DTR; + stc_i2c_dtr_field_t DTR_f; + }; + uint8_t RESERVED9[3]; + union + { + __IO uint8_t DRR; + stc_i2c_drr_field_t DRR_f; + }; + uint8_t RESERVED10[3]; + union + { + __IO uint32_t CCR; + stc_i2c_ccr_field_t CCR_f; + }; + union + { + __IO uint32_t FLTR; + stc_i2c_fltr_field_t FLTR_f; + }; +}M4_I2C_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CTRL; + stc_i2s_ctrl_field_t CTRL_f; + }; + union + { + __IO uint32_t SR; + stc_i2s_sr_field_t SR_f; + }; + union + { + __IO uint32_t ER; + stc_i2s_er_field_t ER_f; + }; + union + { + __IO uint32_t CFGR; + stc_i2s_cfgr_field_t CFGR_f; + }; + __IO uint32_t TXBUF; + __IO uint32_t RXBUF; + union + { + __IO uint32_t PR; + stc_i2s_pr_field_t PR_f; + }; +}M4_I2S_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t ICG0; + stc_icg_icg0_field_t ICG0_f; + }; + union + { + __IO uint32_t ICG1; + stc_icg_icg1_field_t ICG1_f; + }; + __IO uint32_t ICG2; + __IO uint32_t ICG3; + __IO uint32_t ICG4; + __IO uint32_t ICG5; + __IO uint32_t ICG6; + __IO uint32_t ICG7; +}M4_ICG_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t NMICR; + stc_intc_nmicr_field_t NMICR_f; + }; + union + { + __IO uint32_t NMIENR; + stc_intc_nmienr_field_t NMIENR_f; + }; + union + { + __IO uint32_t NMIFR; + stc_intc_nmifr_field_t NMIFR_f; + }; + union + { + __IO uint32_t NMICFR; + stc_intc_nmicfr_field_t NMICFR_f; + }; + union + { + __IO uint32_t EIRQCR0; + stc_intc_eirqcr_field_t EIRQCR0_f; + }; + union + { + __IO uint32_t EIRQCR1; + stc_intc_eirqcr_field_t EIRQCR1_f; + }; + union + { + __IO uint32_t EIRQCR2; + stc_intc_eirqcr_field_t EIRQCR2_f; + }; + union + { + __IO uint32_t EIRQCR3; + stc_intc_eirqcr_field_t EIRQCR3_f; + }; + union + { + __IO uint32_t EIRQCR4; + stc_intc_eirqcr_field_t EIRQCR4_f; + }; + union + { + __IO uint32_t EIRQCR5; + stc_intc_eirqcr_field_t EIRQCR5_f; + }; + union + { + __IO uint32_t EIRQCR6; + stc_intc_eirqcr_field_t EIRQCR6_f; + }; + union + { + __IO uint32_t EIRQCR7; + stc_intc_eirqcr_field_t EIRQCR7_f; + }; + union + { + __IO uint32_t EIRQCR8; + stc_intc_eirqcr_field_t EIRQCR8_f; + }; + union + { + __IO uint32_t EIRQCR9; + stc_intc_eirqcr_field_t EIRQCR9_f; + }; + union + { + __IO uint32_t EIRQCR10; + stc_intc_eirqcr_field_t EIRQCR10_f; + }; + union + { + __IO uint32_t EIRQCR11; + stc_intc_eirqcr_field_t EIRQCR11_f; + }; + union + { + __IO uint32_t EIRQCR12; + stc_intc_eirqcr_field_t EIRQCR12_f; + }; + union + { + __IO uint32_t EIRQCR13; + stc_intc_eirqcr_field_t EIRQCR13_f; + }; + union + { + __IO uint32_t EIRQCR14; + stc_intc_eirqcr_field_t EIRQCR14_f; + }; + union + { + __IO uint32_t EIRQCR15; + stc_intc_eirqcr_field_t EIRQCR15_f; + }; + union + { + __IO uint32_t WUPEN; + stc_intc_wupen_field_t WUPEN_f; + }; + union + { + __IO uint32_t EIFR; + stc_intc_eifr_field_t EIFR_f; + }; + union + { + __IO uint32_t EICFR; + stc_intc_eicfr_field_t EICFR_f; + }; + union + { + __IO uint32_t SEL0; + stc_intc_sel_field_t SEL0_f; + }; + union + { + __IO uint32_t SEL1; + stc_intc_sel_field_t SEL1_f; + }; + union + { + __IO uint32_t SEL2; + stc_intc_sel_field_t SEL2_f; + }; + union + { + __IO uint32_t SEL3; + stc_intc_sel_field_t SEL3_f; + }; + union + { + __IO uint32_t SEL4; + stc_intc_sel_field_t SEL4_f; + }; + union + { + __IO uint32_t SEL5; + stc_intc_sel_field_t SEL5_f; + }; + union + { + __IO uint32_t SEL6; + stc_intc_sel_field_t SEL6_f; + }; + union + { + __IO uint32_t SEL7; + stc_intc_sel_field_t SEL7_f; + }; + union + { + __IO uint32_t SEL8; + stc_intc_sel_field_t SEL8_f; + }; + union + { + __IO uint32_t SEL9; + stc_intc_sel_field_t SEL9_f; + }; + union + { + __IO uint32_t SEL10; + stc_intc_sel_field_t SEL10_f; + }; + union + { + __IO uint32_t SEL11; + stc_intc_sel_field_t SEL11_f; + }; + union + { + __IO uint32_t SEL12; + stc_intc_sel_field_t SEL12_f; + }; + union + { + __IO uint32_t SEL13; + stc_intc_sel_field_t SEL13_f; + }; + union + { + __IO uint32_t SEL14; + stc_intc_sel_field_t SEL14_f; + }; + union + { + __IO uint32_t SEL15; + stc_intc_sel_field_t SEL15_f; + }; + union + { + __IO uint32_t SEL16; + stc_intc_sel_field_t SEL16_f; + }; + union + { + __IO uint32_t SEL17; + stc_intc_sel_field_t SEL17_f; + }; + union + { + __IO uint32_t SEL18; + stc_intc_sel_field_t SEL18_f; + }; + union + { + __IO uint32_t SEL19; + stc_intc_sel_field_t SEL19_f; + }; + union + { + __IO uint32_t SEL20; + stc_intc_sel_field_t SEL20_f; + }; + union + { + __IO uint32_t SEL21; + stc_intc_sel_field_t SEL21_f; + }; + union + { + __IO uint32_t SEL22; + stc_intc_sel_field_t SEL22_f; + }; + union + { + __IO uint32_t SEL23; + stc_intc_sel_field_t SEL23_f; + }; + union + { + __IO uint32_t SEL24; + stc_intc_sel_field_t SEL24_f; + }; + union + { + __IO uint32_t SEL25; + stc_intc_sel_field_t SEL25_f; + }; + union + { + __IO uint32_t SEL26; + stc_intc_sel_field_t SEL26_f; + }; + union + { + __IO uint32_t SEL27; + stc_intc_sel_field_t SEL27_f; + }; + union + { + __IO uint32_t SEL28; + stc_intc_sel_field_t SEL28_f; + }; + union + { + __IO uint32_t SEL29; + stc_intc_sel_field_t SEL29_f; + }; + union + { + __IO uint32_t SEL30; + stc_intc_sel_field_t SEL30_f; + }; + union + { + __IO uint32_t SEL31; + stc_intc_sel_field_t SEL31_f; + }; + union + { + __IO uint32_t SEL32; + stc_intc_sel_field_t SEL32_f; + }; + union + { + __IO uint32_t SEL33; + stc_intc_sel_field_t SEL33_f; + }; + union + { + __IO uint32_t SEL34; + stc_intc_sel_field_t SEL34_f; + }; + union + { + __IO uint32_t SEL35; + stc_intc_sel_field_t SEL35_f; + }; + union + { + __IO uint32_t SEL36; + stc_intc_sel_field_t SEL36_f; + }; + union + { + __IO uint32_t SEL37; + stc_intc_sel_field_t SEL37_f; + }; + union + { + __IO uint32_t SEL38; + stc_intc_sel_field_t SEL38_f; + }; + union + { + __IO uint32_t SEL39; + stc_intc_sel_field_t SEL39_f; + }; + union + { + __IO uint32_t SEL40; + stc_intc_sel_field_t SEL40_f; + }; + union + { + __IO uint32_t SEL41; + stc_intc_sel_field_t SEL41_f; + }; + union + { + __IO uint32_t SEL42; + stc_intc_sel_field_t SEL42_f; + }; + union + { + __IO uint32_t SEL43; + stc_intc_sel_field_t SEL43_f; + }; + union + { + __IO uint32_t SEL44; + stc_intc_sel_field_t SEL44_f; + }; + union + { + __IO uint32_t SEL45; + stc_intc_sel_field_t SEL45_f; + }; + union + { + __IO uint32_t SEL46; + stc_intc_sel_field_t SEL46_f; + }; + union + { + __IO uint32_t SEL47; + stc_intc_sel_field_t SEL47_f; + }; + union + { + __IO uint32_t SEL48; + stc_intc_sel_field_t SEL48_f; + }; + union + { + __IO uint32_t SEL49; + stc_intc_sel_field_t SEL49_f; + }; + union + { + __IO uint32_t SEL50; + stc_intc_sel_field_t SEL50_f; + }; + union + { + __IO uint32_t SEL51; + stc_intc_sel_field_t SEL51_f; + }; + union + { + __IO uint32_t SEL52; + stc_intc_sel_field_t SEL52_f; + }; + union + { + __IO uint32_t SEL53; + stc_intc_sel_field_t SEL53_f; + }; + union + { + __IO uint32_t SEL54; + stc_intc_sel_field_t SEL54_f; + }; + union + { + __IO uint32_t SEL55; + stc_intc_sel_field_t SEL55_f; + }; + union + { + __IO uint32_t SEL56; + stc_intc_sel_field_t SEL56_f; + }; + union + { + __IO uint32_t SEL57; + stc_intc_sel_field_t SEL57_f; + }; + union + { + __IO uint32_t SEL58; + stc_intc_sel_field_t SEL58_f; + }; + union + { + __IO uint32_t SEL59; + stc_intc_sel_field_t SEL59_f; + }; + union + { + __IO uint32_t SEL60; + stc_intc_sel_field_t SEL60_f; + }; + union + { + __IO uint32_t SEL61; + stc_intc_sel_field_t SEL61_f; + }; + union + { + __IO uint32_t SEL62; + stc_intc_sel_field_t SEL62_f; + }; + union + { + __IO uint32_t SEL63; + stc_intc_sel_field_t SEL63_f; + }; + union + { + __IO uint32_t SEL64; + stc_intc_sel_field_t SEL64_f; + }; + union + { + __IO uint32_t SEL65; + stc_intc_sel_field_t SEL65_f; + }; + union + { + __IO uint32_t SEL66; + stc_intc_sel_field_t SEL66_f; + }; + union + { + __IO uint32_t SEL67; + stc_intc_sel_field_t SEL67_f; + }; + union + { + __IO uint32_t SEL68; + stc_intc_sel_field_t SEL68_f; + }; + union + { + __IO uint32_t SEL69; + stc_intc_sel_field_t SEL69_f; + }; + union + { + __IO uint32_t SEL70; + stc_intc_sel_field_t SEL70_f; + }; + union + { + __IO uint32_t SEL71; + stc_intc_sel_field_t SEL71_f; + }; + union + { + __IO uint32_t SEL72; + stc_intc_sel_field_t SEL72_f; + }; + union + { + __IO uint32_t SEL73; + stc_intc_sel_field_t SEL73_f; + }; + union + { + __IO uint32_t SEL74; + stc_intc_sel_field_t SEL74_f; + }; + union + { + __IO uint32_t SEL75; + stc_intc_sel_field_t SEL75_f; + }; + union + { + __IO uint32_t SEL76; + stc_intc_sel_field_t SEL76_f; + }; + union + { + __IO uint32_t SEL77; + stc_intc_sel_field_t SEL77_f; + }; + union + { + __IO uint32_t SEL78; + stc_intc_sel_field_t SEL78_f; + }; + union + { + __IO uint32_t SEL79; + stc_intc_sel_field_t SEL79_f; + }; + union + { + __IO uint32_t SEL80; + stc_intc_sel_field_t SEL80_f; + }; + union + { + __IO uint32_t SEL81; + stc_intc_sel_field_t SEL81_f; + }; + union + { + __IO uint32_t SEL82; + stc_intc_sel_field_t SEL82_f; + }; + union + { + __IO uint32_t SEL83; + stc_intc_sel_field_t SEL83_f; + }; + union + { + __IO uint32_t SEL84; + stc_intc_sel_field_t SEL84_f; + }; + union + { + __IO uint32_t SEL85; + stc_intc_sel_field_t SEL85_f; + }; + union + { + __IO uint32_t SEL86; + stc_intc_sel_field_t SEL86_f; + }; + union + { + __IO uint32_t SEL87; + stc_intc_sel_field_t SEL87_f; + }; + union + { + __IO uint32_t SEL88; + stc_intc_sel_field_t SEL88_f; + }; + union + { + __IO uint32_t SEL89; + stc_intc_sel_field_t SEL89_f; + }; + union + { + __IO uint32_t SEL90; + stc_intc_sel_field_t SEL90_f; + }; + union + { + __IO uint32_t SEL91; + stc_intc_sel_field_t SEL91_f; + }; + union + { + __IO uint32_t SEL92; + stc_intc_sel_field_t SEL92_f; + }; + union + { + __IO uint32_t SEL93; + stc_intc_sel_field_t SEL93_f; + }; + union + { + __IO uint32_t SEL94; + stc_intc_sel_field_t SEL94_f; + }; + union + { + __IO uint32_t SEL95; + stc_intc_sel_field_t SEL95_f; + }; + union + { + __IO uint32_t SEL96; + stc_intc_sel_field_t SEL96_f; + }; + union + { + __IO uint32_t SEL97; + stc_intc_sel_field_t SEL97_f; + }; + union + { + __IO uint32_t SEL98; + stc_intc_sel_field_t SEL98_f; + }; + union + { + __IO uint32_t SEL99; + stc_intc_sel_field_t SEL99_f; + }; + union + { + __IO uint32_t SEL100; + stc_intc_sel_field_t SEL100_f; + }; + union + { + __IO uint32_t SEL101; + stc_intc_sel_field_t SEL101_f; + }; + union + { + __IO uint32_t SEL102; + stc_intc_sel_field_t SEL102_f; + }; + union + { + __IO uint32_t SEL103; + stc_intc_sel_field_t SEL103_f; + }; + union + { + __IO uint32_t SEL104; + stc_intc_sel_field_t SEL104_f; + }; + union + { + __IO uint32_t SEL105; + stc_intc_sel_field_t SEL105_f; + }; + union + { + __IO uint32_t SEL106; + stc_intc_sel_field_t SEL106_f; + }; + union + { + __IO uint32_t SEL107; + stc_intc_sel_field_t SEL107_f; + }; + union + { + __IO uint32_t SEL108; + stc_intc_sel_field_t SEL108_f; + }; + union + { + __IO uint32_t SEL109; + stc_intc_sel_field_t SEL109_f; + }; + union + { + __IO uint32_t SEL110; + stc_intc_sel_field_t SEL110_f; + }; + union + { + __IO uint32_t SEL111; + stc_intc_sel_field_t SEL111_f; + }; + union + { + __IO uint32_t SEL112; + stc_intc_sel_field_t SEL112_f; + }; + union + { + __IO uint32_t SEL113; + stc_intc_sel_field_t SEL113_f; + }; + union + { + __IO uint32_t SEL114; + stc_intc_sel_field_t SEL114_f; + }; + union + { + __IO uint32_t SEL115; + stc_intc_sel_field_t SEL115_f; + }; + union + { + __IO uint32_t SEL116; + stc_intc_sel_field_t SEL116_f; + }; + union + { + __IO uint32_t SEL117; + stc_intc_sel_field_t SEL117_f; + }; + union + { + __IO uint32_t SEL118; + stc_intc_sel_field_t SEL118_f; + }; + union + { + __IO uint32_t SEL119; + stc_intc_sel_field_t SEL119_f; + }; + union + { + __IO uint32_t SEL120; + stc_intc_sel_field_t SEL120_f; + }; + union + { + __IO uint32_t SEL121; + stc_intc_sel_field_t SEL121_f; + }; + union + { + __IO uint32_t SEL122; + stc_intc_sel_field_t SEL122_f; + }; + union + { + __IO uint32_t SEL123; + stc_intc_sel_field_t SEL123_f; + }; + union + { + __IO uint32_t SEL124; + stc_intc_sel_field_t SEL124_f; + }; + union + { + __IO uint32_t SEL125; + stc_intc_sel_field_t SEL125_f; + }; + union + { + __IO uint32_t SEL126; + stc_intc_sel_field_t SEL126_f; + }; + union + { + __IO uint32_t SEL127; + stc_intc_sel_field_t SEL127_f; + }; + union + { + __IO uint32_t VSSEL128; + stc_intc_vssel_field_t VSSEL128_f; + }; + union + { + __IO uint32_t VSSEL129; + stc_intc_vssel_field_t VSSEL129_f; + }; + union + { + __IO uint32_t VSSEL130; + stc_intc_vssel_field_t VSSEL130_f; + }; + union + { + __IO uint32_t VSSEL131; + stc_intc_vssel_field_t VSSEL131_f; + }; + union + { + __IO uint32_t VSSEL132; + stc_intc_vssel_field_t VSSEL132_f; + }; + union + { + __IO uint32_t VSSEL133; + stc_intc_vssel_field_t VSSEL133_f; + }; + union + { + __IO uint32_t VSSEL134; + stc_intc_vssel_field_t VSSEL134_f; + }; + union + { + __IO uint32_t VSSEL135; + stc_intc_vssel_field_t VSSEL135_f; + }; + union + { + __IO uint32_t VSSEL136; + stc_intc_vssel_field_t VSSEL136_f; + }; + union + { + __IO uint32_t VSSEL137; + stc_intc_vssel_field_t VSSEL137_f; + }; + union + { + __IO uint32_t VSSEL138; + stc_intc_vssel_field_t VSSEL138_f; + }; + union + { + __IO uint32_t VSSEL139; + stc_intc_vssel_field_t VSSEL139_f; + }; + union + { + __IO uint32_t VSSEL140; + stc_intc_vssel_field_t VSSEL140_f; + }; + union + { + __IO uint32_t VSSEL141; + stc_intc_vssel_field_t VSSEL141_f; + }; + union + { + __IO uint32_t VSSEL142; + stc_intc_vssel_field_t VSSEL142_f; + }; + union + { + __IO uint32_t VSSEL143; + stc_intc_vssel_field_t VSSEL143_f; + }; + union + { + __IO uint32_t SWIER; + stc_intc_swier_field_t SWIER_f; + }; + union + { + __IO uint32_t EVTER; + stc_intc_evter_field_t EVTER_f; + }; + union + { + __IO uint32_t IER; + stc_intc_ier_field_t IER_f; + }; +}M4_INTC_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t SCR; + stc_keyscan_scr_field_t SCR_f; + }; + union + { + __IO uint32_t SER; + stc_keyscan_ser_field_t SER_f; + }; + union + { + __IO uint32_t SSR; + stc_keyscan_ssr_field_t SSR_f; + }; +}M4_KEYSCAN_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t RGD0; + stc_mpu_rgd0_field_t RGD0_f; + }; + union + { + __IO uint32_t RGD1; + stc_mpu_rgd1_field_t RGD1_f; + }; + union + { + __IO uint32_t RGD2; + stc_mpu_rgd2_field_t RGD2_f; + }; + union + { + __IO uint32_t RGD3; + stc_mpu_rgd3_field_t RGD3_f; + }; + union + { + __IO uint32_t RGD4; + stc_mpu_rgd4_field_t RGD4_f; + }; + union + { + __IO uint32_t RGD5; + stc_mpu_rgd5_field_t RGD5_f; + }; + union + { + __IO uint32_t RGD6; + stc_mpu_rgd6_field_t RGD6_f; + }; + union + { + __IO uint32_t RGD7; + stc_mpu_rgd7_field_t RGD7_f; + }; + union + { + __IO uint32_t RGD8; + stc_mpu_rgd8_field_t RGD8_f; + }; + union + { + __IO uint32_t RGD9; + stc_mpu_rgd9_field_t RGD9_f; + }; + union + { + __IO uint32_t RGD10; + stc_mpu_rgd10_field_t RGD10_f; + }; + union + { + __IO uint32_t RGD11; + stc_mpu_rgd11_field_t RGD11_f; + }; + union + { + __IO uint32_t RGD12; + stc_mpu_rgd12_field_t RGD12_f; + }; + union + { + __IO uint32_t RGD13; + stc_mpu_rgd13_field_t RGD13_f; + }; + union + { + __IO uint32_t RGD14; + stc_mpu_rgd14_field_t RGD14_f; + }; + union + { + __IO uint32_t RGD15; + stc_mpu_rgd15_field_t RGD15_f; + }; + union + { + __IO uint32_t RGCR0; + stc_mpu_rgcr0_field_t RGCR0_f; + }; + union + { + __IO uint32_t RGCR1; + stc_mpu_rgcr1_field_t RGCR1_f; + }; + union + { + __IO uint32_t RGCR2; + stc_mpu_rgcr2_field_t RGCR2_f; + }; + union + { + __IO uint32_t RGCR3; + stc_mpu_rgcr3_field_t RGCR3_f; + }; + union + { + __IO uint32_t RGCR4; + stc_mpu_rgcr4_field_t RGCR4_f; + }; + union + { + __IO uint32_t RGCR5; + stc_mpu_rgcr5_field_t RGCR5_f; + }; + union + { + __IO uint32_t RGCR6; + stc_mpu_rgcr6_field_t RGCR6_f; + }; + union + { + __IO uint32_t RGCR7; + stc_mpu_rgcr7_field_t RGCR7_f; + }; + union + { + __IO uint32_t RGCR8; + stc_mpu_rgcr8_field_t RGCR8_f; + }; + union + { + __IO uint32_t RGCR9; + stc_mpu_rgcr9_field_t RGCR9_f; + }; + union + { + __IO uint32_t RGCR10; + stc_mpu_rgcr10_field_t RGCR10_f; + }; + union + { + __IO uint32_t RGCR11; + stc_mpu_rgcr11_field_t RGCR11_f; + }; + union + { + __IO uint32_t RGCR12; + stc_mpu_rgcr12_field_t RGCR12_f; + }; + union + { + __IO uint32_t RGCR13; + stc_mpu_rgcr13_field_t RGCR13_f; + }; + union + { + __IO uint32_t RGCR14; + stc_mpu_rgcr14_field_t RGCR14_f; + }; + union + { + __IO uint32_t RGCR15; + stc_mpu_rgcr15_field_t RGCR15_f; + }; + union + { + __IO uint32_t CR; + stc_mpu_cr_field_t CR_f; + }; + union + { + __IO uint32_t SR; + stc_mpu_sr_field_t SR_f; + }; + union + { + __IO uint32_t ECLR; + stc_mpu_eclr_field_t ECLR_f; + }; + union + { + __IO uint32_t WP; + stc_mpu_wp_field_t WP_f; + }; +}M4_MPU_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t FCG0; + stc_mstp_fcg0_field_t FCG0_f; + }; + union + { + __IO uint32_t FCG1; + stc_mstp_fcg1_field_t FCG1_f; + }; + union + { + __IO uint32_t FCG2; + stc_mstp_fcg2_field_t FCG2_f; + }; + union + { + __IO uint32_t FCG3; + stc_mstp_fcg3_field_t FCG3_f; + }; + union + { + __IO uint32_t FCG0PC; + stc_mstp_fcg0pc_field_t FCG0PC_f; + }; +}M4_MSTP_TypeDef; + +typedef struct +{ + union + { + __IO uint16_t CTL; + stc_ots_ctl_field_t CTL_f; + }; + __IO uint16_t DR1; + __IO uint16_t DR2; + __IO uint16_t ECR; + union + { + __IO uint32_t LPR; + stc_ots_lpr_field_t LPR_f; + }; +}M4_OTS_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t USBFS_SYCTLREG; + stc_peric_usbfs_syctlreg_field_t USBFS_SYCTLREG_f; + }; + union + { + __IO uint32_t SDIOC_SYCTLREG; + stc_peric_sdioc_syctlreg_field_t SDIOC_SYCTLREG_f; + }; +}M4_PERIC_TypeDef; + +typedef struct +{ + union + { + __IO uint16_t PIDRA; + stc_port_pidr_field_t PIDRA_f; + }; + uint8_t RESERVED1[2]; + union + { + __IO uint16_t PODRA; + stc_port_podr_field_t PODRA_f; + }; + union + { + __IO uint16_t POERA; + stc_port_poer_field_t POERA_f; + }; + union + { + __IO uint16_t POSRA; + stc_port_posr_field_t POSRA_f; + }; + union + { + __IO uint16_t PORRA; + stc_port_porr_field_t PORRA_f; + }; + union + { + __IO uint16_t POTRA; + stc_port_potr_field_t POTRA_f; + }; + uint8_t RESERVED6[2]; + union + { + __IO uint16_t PIDRB; + stc_port_pidr_field_t PIDRB_f; + }; + uint8_t RESERVED7[2]; + union + { + __IO uint16_t PODRB; + stc_port_podr_field_t PODRB_f; + }; + union + { + __IO uint16_t POERB; + stc_port_poer_field_t POERB_f; + }; + union + { + __IO uint16_t POSRB; + stc_port_posr_field_t POSRB_f; + }; + union + { + __IO uint16_t PORRB; + stc_port_porr_field_t PORRB_f; + }; + union + { + __IO uint16_t POTRB; + stc_port_potr_field_t POTRB_f; + }; + uint8_t RESERVED12[2]; + union + { + __IO uint16_t PIDRC; + stc_port_pidr_field_t PIDRC_f; + }; + uint8_t RESERVED13[2]; + union + { + __IO uint16_t PODRC; + stc_port_podr_field_t PODRC_f; + }; + union + { + __IO uint16_t POERC; + stc_port_poer_field_t POERC_f; + }; + union + { + __IO uint16_t POSRC; + stc_port_posr_field_t POSRC_f; + }; + union + { + __IO uint16_t PORRC; + stc_port_porr_field_t PORRC_f; + }; + union + { + __IO uint16_t POTRC; + stc_port_potr_field_t POTRC_f; + }; + uint8_t RESERVED18[2]; + union + { + __IO uint16_t PIDRD; + stc_port_pidr_field_t PIDRD_f; + }; + uint8_t RESERVED19[2]; + union + { + __IO uint16_t PODRD; + stc_port_podr_field_t PODRD_f; + }; + union + { + __IO uint16_t POERD; + stc_port_poer_field_t POERD_f; + }; + union + { + __IO uint16_t POSRD; + stc_port_posr_field_t POSRD_f; + }; + union + { + __IO uint16_t PORRD; + stc_port_porr_field_t PORRD_f; + }; + union + { + __IO uint16_t POTRD; + stc_port_potr_field_t POTRD_f; + }; + uint8_t RESERVED24[2]; + union + { + __IO uint16_t PIDRE; + stc_port_pidr_field_t PIDRE_f; + }; + uint8_t RESERVED25[2]; + union + { + __IO uint16_t PODRE; + stc_port_podr_field_t PODRE_f; + }; + union + { + __IO uint16_t POERE; + stc_port_poer_field_t POERE_f; + }; + union + { + __IO uint16_t POSRE; + stc_port_posr_field_t POSRE_f; + }; + union + { + __IO uint16_t PORRE; + stc_port_porr_field_t PORRE_f; + }; + union + { + __IO uint16_t POTRE; + stc_port_potr_field_t POTRE_f; + }; + uint8_t RESERVED30[2]; + union + { + __IO uint16_t PIDRH; + stc_port_pidrh_field_t PIDRH_f; + }; + uint8_t RESERVED31[2]; + union + { + __IO uint16_t PODRH; + stc_port_podrh_field_t PODRH_f; + }; + union + { + __IO uint16_t POERH; + stc_port_poerh_field_t POERH_f; + }; + union + { + __IO uint16_t POSRH; + stc_port_posrh_field_t POSRH_f; + }; + union + { + __IO uint16_t PORRH; + stc_port_porrh_field_t PORRH_f; + }; + union + { + __IO uint16_t POTRH; + stc_port_potrh_field_t POTRH_f; + }; + uint8_t RESERVED36[918]; + union + { + __IO uint16_t PSPCR; + stc_port_pspcr_field_t PSPCR_f; + }; + uint8_t RESERVED37[2]; + union + { + __IO uint16_t PCCR; + stc_port_pccr_field_t PCCR_f; + }; + union + { + __IO uint16_t PINAER; + stc_port_pinaer_field_t PINAER_f; + }; + union + { + __IO uint16_t PWPR; + stc_port_pwpr_field_t PWPR_f; + }; + uint8_t RESERVED40[2]; + union + { + __IO uint16_t PCRA0; + stc_port_pcr_field_t PCRA0_f; + }; + union + { + __IO uint16_t PFSRA0; + stc_port_pfsr_field_t PFSRA0_f; + }; + union + { + __IO uint16_t PCRA1; + stc_port_pcr_field_t PCRA1_f; + }; + union + { + __IO uint16_t PFSRA1; + stc_port_pfsr_field_t PFSRA1_f; + }; + union + { + __IO uint16_t PCRA2; + stc_port_pcr_field_t PCRA2_f; + }; + union + { + __IO uint16_t PFSRA2; + stc_port_pfsr_field_t PFSRA2_f; + }; + union + { + __IO uint16_t PCRA3; + stc_port_pcr_field_t PCRA3_f; + }; + union + { + __IO uint16_t PFSRA3; + stc_port_pfsr_field_t PFSRA3_f; + }; + union + { + __IO uint16_t PCRA4; + stc_port_pcr_field_t PCRA4_f; + }; + union + { + __IO uint16_t PFSRA4; + stc_port_pfsr_field_t PFSRA4_f; + }; + union + { + __IO uint16_t PCRA5; + stc_port_pcr_field_t PCRA5_f; + }; + union + { + __IO uint16_t PFSRA5; + stc_port_pfsr_field_t PFSRA5_f; + }; + union + { + __IO uint16_t PCRA6; + stc_port_pcr_field_t PCRA6_f; + }; + union + { + __IO uint16_t PFSRA6; + stc_port_pfsr_field_t PFSRA6_f; + }; + union + { + __IO uint16_t PCRA7; + stc_port_pcr_field_t PCRA7_f; + }; + union + { + __IO uint16_t PFSRA7; + stc_port_pfsr_field_t PFSRA7_f; + }; + union + { + __IO uint16_t PCRA8; + stc_port_pcr_field_t PCRA8_f; + }; + union + { + __IO uint16_t PFSRA8; + stc_port_pfsr_field_t PFSRA8_f; + }; + union + { + __IO uint16_t PCRA9; + stc_port_pcr_field_t PCRA9_f; + }; + union + { + __IO uint16_t PFSRA9; + stc_port_pfsr_field_t PFSRA9_f; + }; + union + { + __IO uint16_t PCRA10; + stc_port_pcr_field_t PCRA10_f; + }; + union + { + __IO uint16_t PFSRA10; + stc_port_pfsr_field_t PFSRA10_f; + }; + union + { + __IO uint16_t PCRA11; + stc_port_pcr_field_t PCRA11_f; + }; + union + { + __IO uint16_t PFSRA11; + stc_port_pfsr_field_t PFSRA11_f; + }; + union + { + __IO uint16_t PCRA12; + stc_port_pcr_field_t PCRA12_f; + }; + union + { + __IO uint16_t PFSRA12; + stc_port_pfsr_field_t PFSRA12_f; + }; + union + { + __IO uint16_t PCRA13; + stc_port_pcr_field_t PCRA13_f; + }; + union + { + __IO uint16_t PFSRA13; + stc_port_pfsr_field_t PFSRA13_f; + }; + union + { + __IO uint16_t PCRA14; + stc_port_pcr_field_t PCRA14_f; + }; + union + { + __IO uint16_t PFSRA14; + stc_port_pfsr_field_t PFSRA14_f; + }; + union + { + __IO uint16_t PCRA15; + stc_port_pcr_field_t PCRA15_f; + }; + union + { + __IO uint16_t PFSRA15; + stc_port_pfsr_field_t PFSRA15_f; + }; + union + { + __IO uint16_t PCRB0; + stc_port_pcr_field_t PCRB0_f; + }; + union + { + __IO uint16_t PFSRB0; + stc_port_pfsr_field_t PFSRB0_f; + }; + union + { + __IO uint16_t PCRB1; + stc_port_pcr_field_t PCRB1_f; + }; + union + { + __IO uint16_t PFSRB1; + stc_port_pfsr_field_t PFSRB1_f; + }; + union + { + __IO uint16_t PCRB2; + stc_port_pcr_field_t PCRB2_f; + }; + union + { + __IO uint16_t PFSRB2; + stc_port_pfsr_field_t PFSRB2_f; + }; + union + { + __IO uint16_t PCRB3; + stc_port_pcr_field_t PCRB3_f; + }; + union + { + __IO uint16_t PFSRB3; + stc_port_pfsr_field_t PFSRB3_f; + }; + union + { + __IO uint16_t PCRB4; + stc_port_pcr_field_t PCRB4_f; + }; + union + { + __IO uint16_t PFSRB4; + stc_port_pfsr_field_t PFSRB4_f; + }; + union + { + __IO uint16_t PCRB5; + stc_port_pcr_field_t PCRB5_f; + }; + union + { + __IO uint16_t PFSRB5; + stc_port_pfsr_field_t PFSRB5_f; + }; + union + { + __IO uint16_t PCRB6; + stc_port_pcr_field_t PCRB6_f; + }; + union + { + __IO uint16_t PFSRB6; + stc_port_pfsr_field_t PFSRB6_f; + }; + union + { + __IO uint16_t PCRB7; + stc_port_pcr_field_t PCRB7_f; + }; + union + { + __IO uint16_t PFSRB7; + stc_port_pfsr_field_t PFSRB7_f; + }; + union + { + __IO uint16_t PCRB8; + stc_port_pcr_field_t PCRB8_f; + }; + union + { + __IO uint16_t PFSRB8; + stc_port_pfsr_field_t PFSRB8_f; + }; + union + { + __IO uint16_t PCRB9; + stc_port_pcr_field_t PCRB9_f; + }; + union + { + __IO uint16_t PFSRB9; + stc_port_pfsr_field_t PFSRB9_f; + }; + union + { + __IO uint16_t PCRB10; + stc_port_pcr_field_t PCRB10_f; + }; + union + { + __IO uint16_t PFSRB10; + stc_port_pfsr_field_t PFSRB10_f; + }; + union + { + __IO uint16_t PCRB11; + stc_port_pcr_field_t PCRB11_f; + }; + union + { + __IO uint16_t PFSRB11; + stc_port_pfsr_field_t PFSRB11_f; + }; + union + { + __IO uint16_t PCRB12; + stc_port_pcr_field_t PCRB12_f; + }; + union + { + __IO uint16_t PFSRB12; + stc_port_pfsr_field_t PFSRB12_f; + }; + union + { + __IO uint16_t PCRB13; + stc_port_pcr_field_t PCRB13_f; + }; + union + { + __IO uint16_t PFSRB13; + stc_port_pfsr_field_t PFSRB13_f; + }; + union + { + __IO uint16_t PCRB14; + stc_port_pcr_field_t PCRB14_f; + }; + union + { + __IO uint16_t PFSRB14; + stc_port_pfsr_field_t PFSRB14_f; + }; + union + { + __IO uint16_t PCRB15; + stc_port_pcr_field_t PCRB15_f; + }; + union + { + __IO uint16_t PFSRB15; + stc_port_pfsr_field_t PFSRB15_f; + }; + union + { + __IO uint16_t PCRC0; + stc_port_pcr_field_t PCRC0_f; + }; + union + { + __IO uint16_t PFSRC0; + stc_port_pfsr_field_t PFSRC0_f; + }; + union + { + __IO uint16_t PCRC1; + stc_port_pcr_field_t PCRC1_f; + }; + union + { + __IO uint16_t PFSRC1; + stc_port_pfsr_field_t PFSRC1_f; + }; + union + { + __IO uint16_t PCRC2; + stc_port_pcr_field_t PCRC2_f; + }; + union + { + __IO uint16_t PFSRC2; + stc_port_pfsr_field_t PFSRC2_f; + }; + union + { + __IO uint16_t PCRC3; + stc_port_pcr_field_t PCRC3_f; + }; + union + { + __IO uint16_t PFSRC3; + stc_port_pfsr_field_t PFSRC3_f; + }; + union + { + __IO uint16_t PCRC4; + stc_port_pcr_field_t PCRC4_f; + }; + union + { + __IO uint16_t PFSRC4; + stc_port_pfsr_field_t PFSRC4_f; + }; + union + { + __IO uint16_t PCRC5; + stc_port_pcr_field_t PCRC5_f; + }; + union + { + __IO uint16_t PFSRC5; + stc_port_pfsr_field_t PFSRC5_f; + }; + union + { + __IO uint16_t PCRC6; + stc_port_pcr_field_t PCRC6_f; + }; + union + { + __IO uint16_t PFSRC6; + stc_port_pfsr_field_t PFSRC6_f; + }; + union + { + __IO uint16_t PCRC7; + stc_port_pcr_field_t PCRC7_f; + }; + union + { + __IO uint16_t PFSRC7; + stc_port_pfsr_field_t PFSRC7_f; + }; + union + { + __IO uint16_t PCRC8; + stc_port_pcr_field_t PCRC8_f; + }; + union + { + __IO uint16_t PFSRC8; + stc_port_pfsr_field_t PFSRC8_f; + }; + union + { + __IO uint16_t PCRC9; + stc_port_pcr_field_t PCRC9_f; + }; + union + { + __IO uint16_t PFSRC9; + stc_port_pfsr_field_t PFSRC9_f; + }; + union + { + __IO uint16_t PCRC10; + stc_port_pcr_field_t PCRC10_f; + }; + union + { + __IO uint16_t PFSRC10; + stc_port_pfsr_field_t PFSRC10_f; + }; + union + { + __IO uint16_t PCRC11; + stc_port_pcr_field_t PCRC11_f; + }; + union + { + __IO uint16_t PFSRC11; + stc_port_pfsr_field_t PFSRC11_f; + }; + union + { + __IO uint16_t PCRC12; + stc_port_pcr_field_t PCRC12_f; + }; + union + { + __IO uint16_t PFSRC12; + stc_port_pfsr_field_t PFSRC12_f; + }; + union + { + __IO uint16_t PCRC13; + stc_port_pcr_field_t PCRC13_f; + }; + union + { + __IO uint16_t PFSRC13; + stc_port_pfsr_field_t PFSRC13_f; + }; + union + { + __IO uint16_t PCRC14; + stc_port_pcr_field_t PCRC14_f; + }; + union + { + __IO uint16_t PFSRC14; + stc_port_pfsr_field_t PFSRC14_f; + }; + union + { + __IO uint16_t PCRC15; + stc_port_pcr_field_t PCRC15_f; + }; + union + { + __IO uint16_t PFSRC15; + stc_port_pfsr_field_t PFSRC15_f; + }; + union + { + __IO uint16_t PCRD0; + stc_port_pcr_field_t PCRD0_f; + }; + union + { + __IO uint16_t PFSRD0; + stc_port_pfsr_field_t PFSRD0_f; + }; + union + { + __IO uint16_t PCRD1; + stc_port_pcr_field_t PCRD1_f; + }; + union + { + __IO uint16_t PFSRD1; + stc_port_pfsr_field_t PFSRD1_f; + }; + union + { + __IO uint16_t PCRD2; + stc_port_pcr_field_t PCRD2_f; + }; + union + { + __IO uint16_t PFSRD2; + stc_port_pfsr_field_t PFSRD2_f; + }; + union + { + __IO uint16_t PCRD3; + stc_port_pcr_field_t PCRD3_f; + }; + union + { + __IO uint16_t PFSRD3; + stc_port_pfsr_field_t PFSRD3_f; + }; + union + { + __IO uint16_t PCRD4; + stc_port_pcr_field_t PCRD4_f; + }; + union + { + __IO uint16_t PFSRD4; + stc_port_pfsr_field_t PFSRD4_f; + }; + union + { + __IO uint16_t PCRD5; + stc_port_pcr_field_t PCRD5_f; + }; + union + { + __IO uint16_t PFSRD5; + stc_port_pfsr_field_t PFSRD5_f; + }; + union + { + __IO uint16_t PCRD6; + stc_port_pcr_field_t PCRD6_f; + }; + union + { + __IO uint16_t PFSRD6; + stc_port_pfsr_field_t PFSRD6_f; + }; + union + { + __IO uint16_t PCRD7; + stc_port_pcr_field_t PCRD7_f; + }; + union + { + __IO uint16_t PFSRD7; + stc_port_pfsr_field_t PFSRD7_f; + }; + union + { + __IO uint16_t PCRD8; + stc_port_pcr_field_t PCRD8_f; + }; + union + { + __IO uint16_t PFSRD8; + stc_port_pfsr_field_t PFSRD8_f; + }; + union + { + __IO uint16_t PCRD9; + stc_port_pcr_field_t PCRD9_f; + }; + union + { + __IO uint16_t PFSRD9; + stc_port_pfsr_field_t PFSRD9_f; + }; + union + { + __IO uint16_t PCRD10; + stc_port_pcr_field_t PCRD10_f; + }; + union + { + __IO uint16_t PFSRD10; + stc_port_pfsr_field_t PFSRD10_f; + }; + union + { + __IO uint16_t PCRD11; + stc_port_pcr_field_t PCRD11_f; + }; + union + { + __IO uint16_t PFSRD11; + stc_port_pfsr_field_t PFSRD11_f; + }; + union + { + __IO uint16_t PCRD12; + stc_port_pcr_field_t PCRD12_f; + }; + union + { + __IO uint16_t PFSRD12; + stc_port_pfsr_field_t PFSRD12_f; + }; + union + { + __IO uint16_t PCRD13; + stc_port_pcr_field_t PCRD13_f; + }; + union + { + __IO uint16_t PFSRD13; + stc_port_pfsr_field_t PFSRD13_f; + }; + union + { + __IO uint16_t PCRD14; + stc_port_pcr_field_t PCRD14_f; + }; + union + { + __IO uint16_t PFSRD14; + stc_port_pfsr_field_t PFSRD14_f; + }; + union + { + __IO uint16_t PCRD15; + stc_port_pcr_field_t PCRD15_f; + }; + union + { + __IO uint16_t PFSRD15; + stc_port_pfsr_field_t PFSRD15_f; + }; + union + { + __IO uint16_t PCRE0; + stc_port_pcr_field_t PCRE0_f; + }; + union + { + __IO uint16_t PFSRE0; + stc_port_pfsr_field_t PFSRE0_f; + }; + union + { + __IO uint16_t PCRE1; + stc_port_pcr_field_t PCRE1_f; + }; + union + { + __IO uint16_t PFSRE1; + stc_port_pfsr_field_t PFSRE1_f; + }; + union + { + __IO uint16_t PCRE2; + stc_port_pcr_field_t PCRE2_f; + }; + union + { + __IO uint16_t PFSRE2; + stc_port_pfsr_field_t PFSRE2_f; + }; + union + { + __IO uint16_t PCRE3; + stc_port_pcr_field_t PCRE3_f; + }; + union + { + __IO uint16_t PFSRE3; + stc_port_pfsr_field_t PFSRE3_f; + }; + union + { + __IO uint16_t PCRE4; + stc_port_pcr_field_t PCRE4_f; + }; + union + { + __IO uint16_t PFSRE4; + stc_port_pfsr_field_t PFSRE4_f; + }; + union + { + __IO uint16_t PCRE5; + stc_port_pcr_field_t PCRE5_f; + }; + union + { + __IO uint16_t PFSRE5; + stc_port_pfsr_field_t PFSRE5_f; + }; + union + { + __IO uint16_t PCRE6; + stc_port_pcr_field_t PCRE6_f; + }; + union + { + __IO uint16_t PFSRE6; + stc_port_pfsr_field_t PFSRE6_f; + }; + union + { + __IO uint16_t PCRE7; + stc_port_pcr_field_t PCRE7_f; + }; + union + { + __IO uint16_t PFSRE7; + stc_port_pfsr_field_t PFSRE7_f; + }; + union + { + __IO uint16_t PCRE8; + stc_port_pcr_field_t PCRE8_f; + }; + union + { + __IO uint16_t PFSRE8; + stc_port_pfsr_field_t PFSRE8_f; + }; + union + { + __IO uint16_t PCRE9; + stc_port_pcr_field_t PCRE9_f; + }; + union + { + __IO uint16_t PFSRE9; + stc_port_pfsr_field_t PFSRE9_f; + }; + union + { + __IO uint16_t PCRE10; + stc_port_pcr_field_t PCRE10_f; + }; + union + { + __IO uint16_t PFSRE10; + stc_port_pfsr_field_t PFSRE10_f; + }; + union + { + __IO uint16_t PCRE11; + stc_port_pcr_field_t PCRE11_f; + }; + union + { + __IO uint16_t PFSRE11; + stc_port_pfsr_field_t PFSRE11_f; + }; + union + { + __IO uint16_t PCRE12; + stc_port_pcr_field_t PCRE12_f; + }; + union + { + __IO uint16_t PFSRE12; + stc_port_pfsr_field_t PFSRE12_f; + }; + union + { + __IO uint16_t PCRE13; + stc_port_pcr_field_t PCRE13_f; + }; + union + { + __IO uint16_t PFSRE13; + stc_port_pfsr_field_t PFSRE13_f; + }; + union + { + __IO uint16_t PCRE14; + stc_port_pcr_field_t PCRE14_f; + }; + union + { + __IO uint16_t PFSRE14; + stc_port_pfsr_field_t PFSRE14_f; + }; + union + { + __IO uint16_t PCRE15; + stc_port_pcr_field_t PCRE15_f; + }; + union + { + __IO uint16_t PFSRE15; + stc_port_pfsr_field_t PFSRE15_f; + }; + union + { + __IO uint16_t PCRH0; + stc_port_pcr_field_t PCRH0_f; + }; + union + { + __IO uint16_t PFSRH0; + stc_port_pfsr_field_t PFSRH0_f; + }; + union + { + __IO uint16_t PCRH1; + stc_port_pcr_field_t PCRH1_f; + }; + union + { + __IO uint16_t PFSRH1; + stc_port_pfsr_field_t PFSRH1_f; + }; + union + { + __IO uint16_t PCRH2; + stc_port_pcr_field_t PCRH2_f; + }; + union + { + __IO uint16_t PFSRH2; + stc_port_pfsr_field_t PFSRH2_f; + }; +}M4_PORT_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR; + stc_qspi_cr_field_t CR_f; + }; + union + { + __IO uint32_t CSCR; + stc_qspi_cscr_field_t CSCR_f; + }; + union + { + __IO uint32_t FCR; + stc_qspi_fcr_field_t FCR_f; + }; + union + { + __IO uint32_t SR; + stc_qspi_sr_field_t SR_f; + }; + union + { + __IO uint32_t DCOM; + stc_qspi_dcom_field_t DCOM_f; + }; + union + { + __IO uint32_t CCMD; + stc_qspi_ccmd_field_t CCMD_f; + }; + union + { + __IO uint32_t XCMD; + stc_qspi_xcmd_field_t XCMD_f; + }; + uint8_t RESERVED7[8]; + union + { + __IO uint32_t SR2; + stc_qspi_sr2_field_t SR2_f; + }; + uint8_t RESERVED8[2012]; + union + { + __IO uint32_t EXAR; + stc_qspi_exar_field_t EXAR_f; + }; +}M4_QSPI_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR0; + stc_rtc_cr0_field_t CR0_f; + }; + union + { + __IO uint32_t CR1; + stc_rtc_cr1_field_t CR1_f; + }; + union + { + __IO uint32_t CR2; + stc_rtc_cr2_field_t CR2_f; + }; + union + { + __IO uint32_t CR3; + stc_rtc_cr3_field_t CR3_f; + }; + union + { + __IO uint32_t SEC; + stc_rtc_sec_field_t SEC_f; + }; + union + { + __IO uint32_t MIN; + stc_rtc_min_field_t MIN_f; + }; + union + { + __IO uint32_t HOUR; + stc_rtc_hour_field_t HOUR_f; + }; + union + { + __IO uint32_t WEEK; + stc_rtc_week_field_t WEEK_f; + }; + union + { + __IO uint32_t DAY; + stc_rtc_day_field_t DAY_f; + }; + union + { + __IO uint32_t MON; + stc_rtc_mon_field_t MON_f; + }; + union + { + __IO uint32_t YEAR; + stc_rtc_year_field_t YEAR_f; + }; + union + { + __IO uint32_t ALMMIN; + stc_rtc_almmin_field_t ALMMIN_f; + }; + union + { + __IO uint32_t ALMHOUR; + stc_rtc_almhour_field_t ALMHOUR_f; + }; + union + { + __IO uint32_t ALMWEEK; + stc_rtc_almweek_field_t ALMWEEK_f; + }; + union + { + __IO uint32_t ERRCRH; + stc_rtc_errcrh_field_t ERRCRH_f; + }; + union + { + __IO uint32_t ERRCRL; + stc_rtc_errcrl_field_t ERRCRL_f; + }; +}M4_RTC_TypeDef; + +typedef struct +{ + uint8_t RESERVED0[4]; + union + { + __IO uint16_t BLKSIZE; + stc_sdioc_blksize_field_t BLKSIZE_f; + }; + __IO uint16_t BLKCNT; + __IO uint16_t ARG0; + __IO uint16_t ARG1; + union + { + __IO uint16_t TRANSMODE; + stc_sdioc_transmode_field_t TRANSMODE_f; + }; + union + { + __IO uint16_t CMD; + stc_sdioc_cmd_field_t CMD_f; + }; + __IO uint16_t RESP0; + __IO uint16_t RESP1; + __IO uint16_t RESP2; + __IO uint16_t RESP3; + __IO uint16_t RESP4; + __IO uint16_t RESP5; + __IO uint16_t RESP6; + __IO uint16_t RESP7; + __IO uint16_t BUF0; + __IO uint16_t BUF1; + union + { + __IO uint32_t PSTAT; + stc_sdioc_pstat_field_t PSTAT_f; + }; + union + { + __IO uint8_t HOSTCON; + stc_sdioc_hostcon_field_t HOSTCON_f; + }; + union + { + __IO uint8_t PWRCON; + stc_sdioc_pwrcon_field_t PWRCON_f; + }; + union + { + __IO uint8_t BLKGPCON; + stc_sdioc_blkgpcon_field_t BLKGPCON_f; + }; + uint8_t RESERVED20[1]; + union + { + __IO uint16_t CLKCON; + stc_sdioc_clkcon_field_t CLKCON_f; + }; + union + { + __IO uint8_t TOUTCON; + stc_sdioc_toutcon_field_t TOUTCON_f; + }; + union + { + __IO uint8_t SFTRST; + stc_sdioc_sftrst_field_t SFTRST_f; + }; + union + { + __IO uint16_t NORINTST; + stc_sdioc_norintst_field_t NORINTST_f; + }; + union + { + __IO uint16_t ERRINTST; + stc_sdioc_errintst_field_t ERRINTST_f; + }; + union + { + __IO uint16_t NORINTSTEN; + stc_sdioc_norintsten_field_t NORINTSTEN_f; + }; + union + { + __IO uint16_t ERRINTSTEN; + stc_sdioc_errintsten_field_t ERRINTSTEN_f; + }; + union + { + __IO uint16_t NORINTSGEN; + stc_sdioc_norintsgen_field_t NORINTSGEN_f; + }; + union + { + __IO uint16_t ERRINTSGEN; + stc_sdioc_errintsgen_field_t ERRINTSGEN_f; + }; + union + { + __IO uint16_t ATCERRST; + stc_sdioc_atcerrst_field_t ATCERRST_f; + }; + uint8_t RESERVED30[18]; + union + { + __IO uint16_t FEA; + stc_sdioc_fea_field_t FEA_f; + }; + union + { + __IO uint16_t FEE; + stc_sdioc_fee_field_t FEE_f; + }; +}M4_SDIOC_TypeDef; + +typedef struct +{ + __IO uint32_t DR; + union + { + __IO uint32_t CR1; + stc_spi_cr1_field_t CR1_f; + }; + uint8_t RESERVED2[4]; + union + { + __IO uint32_t CFG1; + stc_spi_cfg1_field_t CFG1_f; + }; + uint8_t RESERVED3[4]; + union + { + __IO uint32_t SR; + stc_spi_sr_field_t SR_f; + }; + union + { + __IO uint32_t CFG2; + stc_spi_cfg2_field_t CFG2_f; + }; +}M4_SPI_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t WTCR; + stc_sramc_wtcr_field_t WTCR_f; + }; + union + { + __IO uint32_t WTPR; + stc_sramc_wtpr_field_t WTPR_f; + }; + union + { + __IO uint32_t CKCR; + stc_sramc_ckcr_field_t CKCR_f; + }; + union + { + __IO uint32_t CKPR; + stc_sramc_ckpr_field_t CKPR_f; + }; + union + { + __IO uint32_t CKSR; + stc_sramc_cksr_field_t CKSR_f; + }; +}M4_SRAMC_TypeDef; + +typedef struct +{ + uint8_t RESERVED0[4]; + union + { + __IO uint32_t SR; + stc_swdt_sr_field_t SR_f; + }; + union + { + __IO uint32_t RR; + stc_swdt_rr_field_t RR_f; + }; +}M4_SWDT_TypeDef; + +typedef struct +{ + uint8_t RESERVED0[12]; + union + { + __IO uint16_t PWR_STPMCR; + stc_sysreg_pwr_stpmcr_field_t PWR_STPMCR_f; + }; + uint8_t RESERVED1[2]; + union + { + __IO uint16_t CMU_PERICKSEL; + stc_sysreg_cmu_pericksel_field_t CMU_PERICKSEL_f; + }; + union + { + __IO uint16_t CMU_I2SCKSEL; + stc_sysreg_cmu_i2scksel_field_t CMU_I2SCKSEL_f; + }; + union + { + __IO uint32_t PWR_RAMPC0; + stc_sysreg_pwr_rampc0_field_t PWR_RAMPC0_f; + }; + __IO uint16_t PWR_RAMOPM; + uint8_t RESERVED5[2]; + union + { + __IO uint32_t MPU_IPPR; + stc_sysreg_mpu_ippr_field_t MPU_IPPR_f; + }; + union + { + __IO uint32_t CMU_SCFGR; + stc_sysreg_cmu_scfgr_field_t CMU_SCFGR_f; + }; + union + { + __IO uint8_t CMU_UFSCKCFGR; + stc_sysreg_cmu_ufsckcfgr_field_t CMU_UFSCKCFGR_f; + }; + uint8_t RESERVED8[1]; + union + { + __IO uint8_t CMU_CKSWR; + stc_sysreg_cmu_ckswr_field_t CMU_CKSWR_f; + }; + uint8_t RESERVED9[3]; + union + { + __IO uint8_t CMU_PLLCR; + stc_sysreg_cmu_pllcr_field_t CMU_PLLCR_f; + }; + uint8_t RESERVED10[3]; + union + { + __IO uint8_t CMU_UPLLCR; + stc_sysreg_cmu_upllcr_field_t CMU_UPLLCR_f; + }; + uint8_t RESERVED11[3]; + union + { + __IO uint8_t CMU_XTALCR; + stc_sysreg_cmu_xtalcr_field_t CMU_XTALCR_f; + }; + uint8_t RESERVED12[3]; + union + { + __IO uint8_t CMU_HRCCR; + stc_sysreg_cmu_hrccr_field_t CMU_HRCCR_f; + }; + uint8_t RESERVED13[1]; + union + { + __IO uint8_t CMU_MRCCR; + stc_sysreg_cmu_mrccr_field_t CMU_MRCCR_f; + }; + uint8_t RESERVED14[3]; + union + { + __IO uint8_t CMU_OSCSTBSR; + stc_sysreg_cmu_oscstbsr_field_t CMU_OSCSTBSR_f; + }; + union + { + __IO uint8_t CMU_MCO1CFGR; + stc_sysreg_cmu_mco1cfgr_field_t CMU_MCO1CFGR_f; + }; + union + { + __IO uint8_t CMU_MCO2CFGR; + stc_sysreg_cmu_mco2cfgr_field_t CMU_MCO2CFGR_f; + }; + union + { + __IO uint8_t CMU_TPIUCKCFGR; + stc_sysreg_cmu_tpiuckcfgr_field_t CMU_TPIUCKCFGR_f; + }; + union + { + __IO uint8_t CMU_XTALSTDCR; + stc_sysreg_cmu_xtalstdcr_field_t CMU_XTALSTDCR_f; + }; + union + { + __IO uint8_t CMU_XTALSTDSR; + stc_sysreg_cmu_xtalstdsr_field_t CMU_XTALSTDSR_f; + }; + uint8_t RESERVED20[31]; + __IO uint8_t CMU_MRCTRM; + __IO uint8_t CMU_HRCTRM; + uint8_t RESERVED22[63]; + union + { + __IO uint8_t CMU_XTALSTBCR; + stc_sysreg_cmu_xtalstbcr_field_t CMU_XTALSTBCR_f; + }; + uint8_t RESERVED23[29]; + union + { + __IO uint16_t RMU_RSTF0; + stc_sysreg_rmu_rstf0_field_t RMU_RSTF0_f; + }; + uint8_t RESERVED24[30]; + union + { + __IO uint8_t PWR_PVDICR; + stc_sysreg_pwr_pvdicr_field_t PWR_PVDICR_f; + }; + union + { + __IO uint8_t PWR_PVDDSR; + stc_sysreg_pwr_pvddsr_field_t PWR_PVDDSR_f; + }; + uint8_t RESERVED26[30]; + union + { + __IO uint32_t CMU_PLLCFGR; + stc_sysreg_cmu_pllcfgr_field_t CMU_PLLCFGR_f; + }; + union + { + __IO uint32_t CMU_UPLLCFGR; + stc_sysreg_cmu_upllcfgr_field_t CMU_UPLLCFGR_f; + }; + uint8_t RESERVED28[758]; + union + { + __IO uint16_t PWR_FPRC; + stc_sysreg_pwr_fprc_field_t PWR_FPRC_f; + }; + union + { + __IO uint8_t PWR_PWRC0; + stc_sysreg_pwr_pwrc0_field_t PWR_PWRC0_f; + }; + union + { + __IO uint8_t PWR_PWRC1; + stc_sysreg_pwr_pwrc1_field_t PWR_PWRC1_f; + }; + union + { + __IO uint8_t PWR_PWRC2; + stc_sysreg_pwr_pwrc2_field_t PWR_PWRC2_f; + }; + union + { + __IO uint8_t PWR_PWRC3; + stc_sysreg_pwr_pwrc3_field_t PWR_PWRC3_f; + }; + union + { + __IO uint8_t PWR_PDWKE0; + stc_sysreg_pwr_pdwke0_field_t PWR_PDWKE0_f; + }; + union + { + __IO uint8_t PWR_PDWKE1; + stc_sysreg_pwr_pdwke1_field_t PWR_PDWKE1_f; + }; + union + { + __IO uint8_t PWR_PDWKE2; + stc_sysreg_pwr_pdwke2_field_t PWR_PDWKE2_f; + }; + union + { + __IO uint8_t PWR_PDWKES; + stc_sysreg_pwr_pdwkes_field_t PWR_PDWKES_f; + }; + union + { + __IO uint8_t PWR_PDWKF0; + stc_sysreg_pwr_pdwkf0_field_t PWR_PDWKF0_f; + }; + union + { + __IO uint8_t PWR_PDWKF1; + stc_sysreg_pwr_pdwkf1_field_t PWR_PDWKF1_f; + }; + union + { + __IO uint8_t PWR_PWCMR; + stc_sysreg_pwr_pwcmr_field_t PWR_PWCMR_f; + }; + uint8_t RESERVED40[4]; + __IO uint8_t PWR_MDSWCR; + union + { + __IO uint8_t CMU_XTALCFGR; + stc_sysreg_cmu_xtalcfgr_field_t CMU_XTALCFGR_f; + }; + uint8_t RESERVED42[1]; + union + { + __IO uint8_t PWR_PVDCR0; + stc_sysreg_pwr_pvdcr0_field_t PWR_PVDCR0_f; + }; + union + { + __IO uint8_t PWR_PVDCR1; + stc_sysreg_pwr_pvdcr1_field_t PWR_PVDCR1_f; + }; + union + { + __IO uint8_t PWR_PVDFCR; + stc_sysreg_pwr_pvdfcr_field_t PWR_PVDFCR_f; + }; + union + { + __IO uint8_t PWR_PVDLCR; + stc_sysreg_pwr_pvdlcr_field_t PWR_PVDLCR_f; + }; + uint8_t RESERVED46[10]; + union + { + __IO uint8_t CMU_XTAL32CR; + stc_sysreg_cmu_xtal32cr_field_t CMU_XTAL32CR_f; + }; + union + { + __IO uint8_t CMU_XTAL32CFGR; + stc_sysreg_cmu_xtal32cfgr_field_t CMU_XTAL32CFGR_f; + }; + uint8_t RESERVED48[3]; + union + { + __IO uint8_t CMU_XTAL32NFR; + stc_sysreg_cmu_xtal32nfr_field_t CMU_XTAL32NFR_f; + }; + uint8_t RESERVED49[1]; + union + { + __IO uint8_t CMU_LRCCR; + stc_sysreg_cmu_lrccr_field_t CMU_LRCCR_f; + }; + uint8_t RESERVED50[1]; + __IO uint8_t CMU_LRCTRM; + uint8_t RESERVED51[1]; + union + { + __IO uint8_t PWR_XTAL32CS; + stc_sysreg_pwr_xtal32cs_field_t PWR_XTAL32CS_f; + }; +}M4_SYSREG_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CNTAR; + stc_tmr0_cntar_field_t CNTAR_f; + }; + union + { + __IO uint32_t CNTBR; + stc_tmr0_cntbr_field_t CNTBR_f; + }; + union + { + __IO uint32_t CMPAR; + stc_tmr0_cmpar_field_t CMPAR_f; + }; + union + { + __IO uint32_t CMPBR; + stc_tmr0_cmpbr_field_t CMPBR_f; + }; + union + { + __IO uint32_t BCONR; + stc_tmr0_bconr_field_t BCONR_f; + }; + union + { + __IO uint32_t STFLR; + stc_tmr0_stflr_field_t STFLR_f; + }; +}M4_TMR0_TypeDef; + +typedef struct +{ + uint8_t RESERVED0[2]; + __IO uint16_t OCCRUH; + uint8_t RESERVED1[2]; + __IO uint16_t OCCRUL; + uint8_t RESERVED2[2]; + __IO uint16_t OCCRVH; + uint8_t RESERVED3[2]; + __IO uint16_t OCCRVL; + uint8_t RESERVED4[2]; + __IO uint16_t OCCRWH; + uint8_t RESERVED5[2]; + __IO uint16_t OCCRWL; + union + { + __IO uint16_t OCSRU; + stc_tmr4_ocsr_field_t OCSRU_f; + }; + union + { + __IO uint16_t OCERU; + stc_tmr4_ocer_field_t OCERU_f; + }; + union + { + __IO uint16_t OCSRV; + stc_tmr4_ocsr_field_t OCSRV_f; + }; + union + { + __IO uint16_t OCERV; + stc_tmr4_ocer_field_t OCERV_f; + }; + union + { + __IO uint16_t OCSRW; + stc_tmr4_ocsr_field_t OCSRW_f; + }; + union + { + __IO uint16_t OCERW; + stc_tmr4_ocer_field_t OCERW_f; + }; + union + { + __IO uint16_t OCMRHUH; + stc_tmr4_ocmrh_field_t OCMRHUH_f; + }; + uint8_t RESERVED13[2]; + union + { + __IO uint32_t OCMRLUL; + stc_tmr4_ocmrl_field_t OCMRLUL_f; + }; + union + { + __IO uint16_t OCMRHVH; + stc_tmr4_ocmrh_field_t OCMRHVH_f; + }; + uint8_t RESERVED15[2]; + union + { + __IO uint32_t OCMRLVL; + stc_tmr4_ocmrl_field_t OCMRLVL_f; + }; + union + { + __IO uint16_t OCMRHWH; + stc_tmr4_ocmrh_field_t OCMRHWH_f; + }; + uint8_t RESERVED17[2]; + union + { + __IO uint32_t OCMRLWL; + stc_tmr4_ocmrl_field_t OCMRLWL_f; + }; + uint8_t RESERVED18[6]; + __IO uint16_t CPSR; + uint8_t RESERVED19[2]; + __IO uint16_t CNTR; + union + { + __IO uint16_t CCSR; + stc_tmr4_ccsr_field_t CCSR_f; + }; + union + { + __IO uint16_t CVPR; + stc_tmr4_cvpr_field_t CVPR_f; + }; + uint8_t RESERVED22[54]; + __IO uint16_t PFSRU; + __IO uint16_t PDARU; + __IO uint16_t PDBRU; + uint8_t RESERVED25[2]; + __IO uint16_t PFSRV; + __IO uint16_t PDARV; + __IO uint16_t PDBRV; + uint8_t RESERVED28[2]; + __IO uint16_t PFSRW; + __IO uint16_t PDARW; + __IO uint16_t PDBRW; + union + { + __IO uint16_t POCRU; + stc_tmr4_pocr_field_t POCRU_f; + }; + uint8_t RESERVED32[2]; + union + { + __IO uint16_t POCRV; + stc_tmr4_pocr_field_t POCRV_f; + }; + uint8_t RESERVED33[2]; + union + { + __IO uint16_t POCRW; + stc_tmr4_pocr_field_t POCRW_f; + }; + uint8_t RESERVED34[2]; + union + { + __IO uint16_t RCSR; + stc_tmr4_rcsr_field_t RCSR_f; + }; + uint8_t RESERVED35[12]; + __IO uint16_t SCCRUH; + uint8_t RESERVED36[2]; + __IO uint16_t SCCRUL; + uint8_t RESERVED37[2]; + __IO uint16_t SCCRVH; + uint8_t RESERVED38[2]; + __IO uint16_t SCCRVL; + uint8_t RESERVED39[2]; + __IO uint16_t SCCRWH; + uint8_t RESERVED40[2]; + __IO uint16_t SCCRWL; + union + { + __IO uint16_t SCSRUH; + stc_tmr4_scsr_field_t SCSRUH_f; + }; + union + { + __IO uint16_t SCMRUH; + stc_tmr4_scmr_field_t SCMRUH_f; + }; + union + { + __IO uint16_t SCSRUL; + stc_tmr4_scsr_field_t SCSRUL_f; + }; + union + { + __IO uint16_t SCMRUL; + stc_tmr4_scmr_field_t SCMRUL_f; + }; + union + { + __IO uint16_t SCSRVH; + stc_tmr4_scsr_field_t SCSRVH_f; + }; + union + { + __IO uint16_t SCMRVH; + stc_tmr4_scmr_field_t SCMRVH_f; + }; + union + { + __IO uint16_t SCSRVL; + stc_tmr4_scsr_field_t SCSRVL_f; + }; + union + { + __IO uint16_t SCMRVL; + stc_tmr4_scmr_field_t SCMRVL_f; + }; + union + { + __IO uint16_t SCSRWH; + stc_tmr4_scsr_field_t SCSRWH_f; + }; + union + { + __IO uint16_t SCMRWH; + stc_tmr4_scmr_field_t SCMRWH_f; + }; + union + { + __IO uint16_t SCSRWL; + stc_tmr4_scsr_field_t SCSRWL_f; + }; + union + { + __IO uint16_t SCMRWL; + stc_tmr4_scmr_field_t SCMRWL_f; + }; + uint8_t RESERVED53[16]; + union + { + __IO uint16_t ECSR; + stc_tmr4_ecsr_field_t ECSR_f; + }; +}M4_TMR4_TypeDef; + +typedef struct +{ + union + { + __IO uint16_t ECER1; + stc_tmr4_cr_ecer1_field_t ECER1_f; + }; + uint8_t RESERVED1[2]; + union + { + __IO uint16_t ECER2; + stc_tmr4_cr_ecer2_field_t ECER2_f; + }; + uint8_t RESERVED2[2]; + union + { + __IO uint16_t ECER3; + stc_tmr4_cr_ecer3_field_t ECER3_f; + }; +}M4_TMR4_CR_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CNTER; + stc_tmr6_cnter_field_t CNTER_f; + }; + union + { + __IO uint32_t PERAR; + stc_tmr6_perar_field_t PERAR_f; + }; + union + { + __IO uint32_t PERBR; + stc_tmr6_perbr_field_t PERBR_f; + }; + union + { + __IO uint32_t PERCR; + stc_tmr6_percr_field_t PERCR_f; + }; + union + { + __IO uint32_t GCMAR; + stc_tmr6_gcmar_field_t GCMAR_f; + }; + union + { + __IO uint32_t GCMBR; + stc_tmr6_gcmbr_field_t GCMBR_f; + }; + union + { + __IO uint32_t GCMCR; + stc_tmr6_gcmcr_field_t GCMCR_f; + }; + union + { + __IO uint32_t GCMDR; + stc_tmr6_gcmdr_field_t GCMDR_f; + }; + union + { + __IO uint32_t GCMER; + stc_tmr6_gcmer_field_t GCMER_f; + }; + union + { + __IO uint32_t GCMFR; + stc_tmr6_gcmfr_field_t GCMFR_f; + }; + union + { + __IO uint32_t SCMAR; + stc_tmr6_scmar_field_t SCMAR_f; + }; + union + { + __IO uint32_t SCMBR; + stc_tmr6_scmbr_field_t SCMBR_f; + }; + union + { + __IO uint32_t SCMCR; + stc_tmr6_scmcr_field_t SCMCR_f; + }; + union + { + __IO uint32_t SCMDR; + stc_tmr6_scmdr_field_t SCMDR_f; + }; + union + { + __IO uint32_t SCMER; + stc_tmr6_scmer_field_t SCMER_f; + }; + union + { + __IO uint32_t SCMFR; + stc_tmr6_scmfr_field_t SCMFR_f; + }; + union + { + __IO uint32_t DTUAR; + stc_tmr6_dtuar_field_t DTUAR_f; + }; + union + { + __IO uint32_t DTDAR; + stc_tmr6_dtdar_field_t DTDAR_f; + }; + union + { + __IO uint32_t DTUBR; + stc_tmr6_dtubr_field_t DTUBR_f; + }; + union + { + __IO uint32_t DTDBR; + stc_tmr6_dtdbr_field_t DTDBR_f; + }; + union + { + __IO uint32_t GCONR; + stc_tmr6_gconr_field_t GCONR_f; + }; + union + { + __IO uint32_t ICONR; + stc_tmr6_iconr_field_t ICONR_f; + }; + union + { + __IO uint32_t PCONR; + stc_tmr6_pconr_field_t PCONR_f; + }; + union + { + __IO uint32_t BCONR; + stc_tmr6_bconr_field_t BCONR_f; + }; + union + { + __IO uint32_t DCONR; + stc_tmr6_dconr_field_t DCONR_f; + }; + uint8_t RESERVED25[4]; + union + { + __IO uint32_t FCONR; + stc_tmr6_fconr_field_t FCONR_f; + }; + union + { + __IO uint32_t VPERR; + stc_tmr6_vperr_field_t VPERR_f; + }; + union + { + __IO uint32_t STFLR; + stc_tmr6_stflr_field_t STFLR_f; + }; + union + { + __IO uint32_t HSTAR; + stc_tmr6_hstar_field_t HSTAR_f; + }; + union + { + __IO uint32_t HSTPR; + stc_tmr6_hstpr_field_t HSTPR_f; + }; + union + { + __IO uint32_t HCLRR; + stc_tmr6_hclrr_field_t HCLRR_f; + }; + union + { + __IO uint32_t HCPAR; + stc_tmr6_hcpar_field_t HCPAR_f; + }; + union + { + __IO uint32_t HCPBR; + stc_tmr6_hcpbr_field_t HCPBR_f; + }; + union + { + __IO uint32_t HCUPR; + stc_tmr6_hcupr_field_t HCUPR_f; + }; + union + { + __IO uint32_t HCDOR; + stc_tmr6_hcdor_field_t HCDOR_f; + }; +}M4_TMR6_TypeDef; + +typedef struct +{ + uint8_t RESERVED0[1012]; + union + { + __IO uint32_t SSTAR; + stc_tmr6_cr_sstar_field_t SSTAR_f; + }; + union + { + __IO uint32_t SSTPR; + stc_tmr6_cr_sstpr_field_t SSTPR_f; + }; + union + { + __IO uint32_t SCLRR; + stc_tmr6_cr_sclrr_field_t SCLRR_f; + }; +}M4_TMR6_CR_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CNTER; + stc_tmra_cnter_field_t CNTER_f; + }; + union + { + __IO uint32_t PERAR; + stc_tmra_perar_field_t PERAR_f; + }; + uint8_t RESERVED2[56]; + union + { + __IO uint32_t CMPAR1; + stc_tmra_cmpar_field_t CMPAR1_f; + }; + union + { + __IO uint32_t CMPAR2; + stc_tmra_cmpar_field_t CMPAR2_f; + }; + union + { + __IO uint32_t CMPAR3; + stc_tmra_cmpar_field_t CMPAR3_f; + }; + union + { + __IO uint32_t CMPAR4; + stc_tmra_cmpar_field_t CMPAR4_f; + }; + union + { + __IO uint32_t CMPAR5; + stc_tmra_cmpar_field_t CMPAR5_f; + }; + union + { + __IO uint32_t CMPAR6; + stc_tmra_cmpar_field_t CMPAR6_f; + }; + union + { + __IO uint32_t CMPAR7; + stc_tmra_cmpar_field_t CMPAR7_f; + }; + union + { + __IO uint32_t CMPAR8; + stc_tmra_cmpar_field_t CMPAR8_f; + }; + uint8_t RESERVED10[32]; + union + { + __IO uint32_t BCSTR; + stc_tmra_bcstr_field_t BCSTR_f; + }; + union + { + __IO uint32_t HCONR; + stc_tmra_hconr_field_t HCONR_f; + }; + union + { + __IO uint32_t HCUPR; + stc_tmra_hcupr_field_t HCUPR_f; + }; + union + { + __IO uint32_t HCDOR; + stc_tmra_hcdor_field_t HCDOR_f; + }; + union + { + __IO uint32_t ICONR; + stc_tmra_iconr_field_t ICONR_f; + }; + union + { + __IO uint32_t ECONR; + stc_tmra_econr_field_t ECONR_f; + }; + union + { + __IO uint32_t FCONR; + stc_tmra_fconr_field_t FCONR_f; + }; + union + { + __IO uint32_t STFLR; + stc_tmra_stflr_field_t STFLR_f; + }; + uint8_t RESERVED18[32]; + union + { + __IO uint32_t BCONR1; + stc_tmra_bconr_field_t BCONR1_f; + }; + uint8_t RESERVED19[4]; + union + { + __IO uint32_t BCONR2; + stc_tmra_bconr_field_t BCONR2_f; + }; + uint8_t RESERVED20[4]; + union + { + __IO uint32_t BCONR3; + stc_tmra_bconr_field_t BCONR3_f; + }; + uint8_t RESERVED21[4]; + union + { + __IO uint32_t BCONR4; + stc_tmra_bconr_field_t BCONR4_f; + }; + uint8_t RESERVED22[36]; + union + { + __IO uint32_t CCONR1; + stc_tmra_cconr_field_t CCONR1_f; + }; + union + { + __IO uint32_t CCONR2; + stc_tmra_cconr_field_t CCONR2_f; + }; + union + { + __IO uint32_t CCONR3; + stc_tmra_cconr_field_t CCONR3_f; + }; + union + { + __IO uint32_t CCONR4; + stc_tmra_cconr_field_t CCONR4_f; + }; + union + { + __IO uint32_t CCONR5; + stc_tmra_cconr_field_t CCONR5_f; + }; + union + { + __IO uint32_t CCONR6; + stc_tmra_cconr_field_t CCONR6_f; + }; + union + { + __IO uint32_t CCONR7; + stc_tmra_cconr_field_t CCONR7_f; + }; + union + { + __IO uint32_t CCONR8; + stc_tmra_cconr_field_t CCONR8_f; + }; + uint8_t RESERVED30[32]; + union + { + __IO uint32_t PCONR1; + stc_tmra_pconr_field_t PCONR1_f; + }; + union + { + __IO uint32_t PCONR2; + stc_tmra_pconr_field_t PCONR2_f; + }; + union + { + __IO uint32_t PCONR3; + stc_tmra_pconr_field_t PCONR3_f; + }; + union + { + __IO uint32_t PCONR4; + stc_tmra_pconr_field_t PCONR4_f; + }; + union + { + __IO uint32_t PCONR5; + stc_tmra_pconr_field_t PCONR5_f; + }; + union + { + __IO uint32_t PCONR6; + stc_tmra_pconr_field_t PCONR6_f; + }; + union + { + __IO uint32_t PCONR7; + stc_tmra_pconr_field_t PCONR7_f; + }; + union + { + __IO uint32_t PCONR8; + stc_tmra_pconr_field_t PCONR8_f; + }; +}M4_TMRA_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR; + stc_trng_cr_field_t CR_f; + }; + union + { + __IO uint32_t MR; + stc_trng_mr_field_t MR_f; + }; + uint8_t RESERVED2[4]; + __IO uint32_t DR0; + __IO uint32_t DR1; +}M4_TRNG_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t SR; + stc_usart_sr_field_t SR_f; + }; + union + { + __IO uint32_t DR; + stc_usart_dr_field_t DR_f; + }; + union + { + __IO uint32_t BRR; + stc_usart_brr_field_t BRR_f; + }; + union + { + __IO uint32_t CR1; + stc_usart_cr1_field_t CR1_f; + }; + union + { + __IO uint32_t CR2; + stc_usart_cr2_field_t CR2_f; + }; + union + { + __IO uint32_t CR3; + stc_usart_cr3_field_t CR3_f; + }; + union + { + __IO uint32_t PR; + stc_usart_pr_field_t PR_f; + }; +}M4_USART_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t USBFS_GVBUSCFG; + stc_usbfs_usbfs_gvbuscfg_field_t USBFS_GVBUSCFG_f; + }; + uint8_t RESERVED1[4]; + union + { + __IO uint32_t GAHBCFG; + stc_usbfs_gahbcfg_field_t GAHBCFG_f; + }; + union + { + __IO uint32_t GUSBCFG; + stc_usbfs_gusbcfg_field_t GUSBCFG_f; + }; + union + { + __IO uint32_t GRSTCTL; + stc_usbfs_grstctl_field_t GRSTCTL_f; + }; + union + { + __IO uint32_t GINTSTS; + stc_usbfs_gintsts_field_t GINTSTS_f; + }; + union + { + __IO uint32_t GINTMSK; + stc_usbfs_gintmsk_field_t GINTMSK_f; + }; + union + { + __IO uint32_t GRXSTSR; + stc_usbfs_grxstsr_field_t GRXSTSR_f; + }; + union + { + __IO uint32_t GRXSTSP; + stc_usbfs_grxstsp_field_t GRXSTSP_f; + }; + union + { + __IO uint32_t GRXFSIZ; + stc_usbfs_grxfsiz_field_t GRXFSIZ_f; + }; + union + { + __IO uint32_t HNPTXFSIZ; + stc_usbfs_hnptxfsiz_field_t HNPTXFSIZ_f; + }; + union + { + __IO uint32_t HNPTXSTS; + stc_usbfs_hnptxsts_field_t HNPTXSTS_f; + }; + uint8_t RESERVED11[12]; + __IO uint32_t CID; + uint8_t RESERVED12[192]; + union + { + __IO uint32_t HPTXFSIZ; + stc_usbfs_hptxfsiz_field_t HPTXFSIZ_f; + }; + union + { + __IO uint32_t DIEPTXF1; + stc_usbfs_dieptxf_field_t DIEPTXF1_f; + }; + union + { + __IO uint32_t DIEPTXF2; + stc_usbfs_dieptxf_field_t DIEPTXF2_f; + }; + union + { + __IO uint32_t DIEPTXF3; + stc_usbfs_dieptxf_field_t DIEPTXF3_f; + }; + union + { + __IO uint32_t DIEPTXF4; + stc_usbfs_dieptxf_field_t DIEPTXF4_f; + }; + union + { + __IO uint32_t DIEPTXF5; + stc_usbfs_dieptxf_field_t DIEPTXF5_f; + }; + uint8_t RESERVED18[744]; + union + { + __IO uint32_t HCFG; + stc_usbfs_hcfg_field_t HCFG_f; + }; + union + { + __IO uint32_t HFIR; + stc_usbfs_hfir_field_t HFIR_f; + }; + union + { + __IO uint32_t HFNUM; + stc_usbfs_hfnum_field_t HFNUM_f; + }; + uint8_t RESERVED21[4]; + union + { + __IO uint32_t HPTXSTS; + stc_usbfs_hptxsts_field_t HPTXSTS_f; + }; + union + { + __IO uint32_t HAINT; + stc_usbfs_haint_field_t HAINT_f; + }; + union + { + __IO uint32_t HAINTMSK; + stc_usbfs_haintmsk_field_t HAINTMSK_f; + }; + uint8_t RESERVED24[36]; + union + { + __IO uint32_t HPRT; + stc_usbfs_hprt_field_t HPRT_f; + }; + uint8_t RESERVED25[188]; + union + { + __IO uint32_t HCCHAR0; + stc_usbfs_hcchar_field_t HCCHAR0_f; + }; + uint8_t RESERVED26[4]; + union + { + __IO uint32_t HCINT0; + stc_usbfs_hcint_field_t HCINT0_f; + }; + union + { + __IO uint32_t HCINTMSK0; + stc_usbfs_hcintmsk_field_t HCINTMSK0_f; + }; + union + { + __IO uint32_t HCTSIZ0; + stc_usbfs_hctsiz_field_t HCTSIZ0_f; + }; + __IO uint32_t HCDMA0; + uint8_t RESERVED30[8]; + union + { + __IO uint32_t HCCHAR1; + stc_usbfs_hcchar_field_t HCCHAR1_f; + }; + uint8_t RESERVED31[4]; + union + { + __IO uint32_t HCINT1; + stc_usbfs_hcint_field_t HCINT1_f; + }; + union + { + __IO uint32_t HCINTMSK1; + stc_usbfs_hcintmsk_field_t HCINTMSK1_f; + }; + union + { + __IO uint32_t HCTSIZ1; + stc_usbfs_hctsiz_field_t HCTSIZ1_f; + }; + __IO uint32_t HCDMA1; + uint8_t RESERVED35[8]; + union + { + __IO uint32_t HCCHAR2; + stc_usbfs_hcchar_field_t HCCHAR2_f; + }; + uint8_t RESERVED36[4]; + union + { + __IO uint32_t HCINT2; + stc_usbfs_hcint_field_t HCINT2_f; + }; + union + { + __IO uint32_t HCINTMSK2; + stc_usbfs_hcintmsk_field_t HCINTMSK2_f; + }; + union + { + __IO uint32_t HCTSIZ2; + stc_usbfs_hctsiz_field_t HCTSIZ2_f; + }; + __IO uint32_t HCDMA2; + uint8_t RESERVED40[8]; + union + { + __IO uint32_t HCCHAR3; + stc_usbfs_hcchar_field_t HCCHAR3_f; + }; + uint8_t RESERVED41[4]; + union + { + __IO uint32_t HCINT3; + stc_usbfs_hcint_field_t HCINT3_f; + }; + union + { + __IO uint32_t HCINTMSK3; + stc_usbfs_hcintmsk_field_t HCINTMSK3_f; + }; + union + { + __IO uint32_t HCTSIZ3; + stc_usbfs_hctsiz_field_t HCTSIZ3_f; + }; + __IO uint32_t HCDMA3; + uint8_t RESERVED45[8]; + union + { + __IO uint32_t HCCHAR4; + stc_usbfs_hcchar_field_t HCCHAR4_f; + }; + uint8_t RESERVED46[4]; + union + { + __IO uint32_t HCINT4; + stc_usbfs_hcint_field_t HCINT4_f; + }; + union + { + __IO uint32_t HCINTMSK4; + stc_usbfs_hcintmsk_field_t HCINTMSK4_f; + }; + union + { + __IO uint32_t HCTSIZ4; + stc_usbfs_hctsiz_field_t HCTSIZ4_f; + }; + __IO uint32_t HCDMA4; + uint8_t RESERVED50[8]; + union + { + __IO uint32_t HCCHAR5; + stc_usbfs_hcchar_field_t HCCHAR5_f; + }; + uint8_t RESERVED51[4]; + union + { + __IO uint32_t HCINT5; + stc_usbfs_hcint_field_t HCINT5_f; + }; + union + { + __IO uint32_t HCINTMSK5; + stc_usbfs_hcintmsk_field_t HCINTMSK5_f; + }; + union + { + __IO uint32_t HCTSIZ5; + stc_usbfs_hctsiz_field_t HCTSIZ5_f; + }; + __IO uint32_t HCDMA5; + uint8_t RESERVED55[8]; + union + { + __IO uint32_t HCCHAR6; + stc_usbfs_hcchar_field_t HCCHAR6_f; + }; + uint8_t RESERVED56[4]; + union + { + __IO uint32_t HCINT6; + stc_usbfs_hcint_field_t HCINT6_f; + }; + union + { + __IO uint32_t HCINTMSK6; + stc_usbfs_hcintmsk_field_t HCINTMSK6_f; + }; + union + { + __IO uint32_t HCTSIZ6; + stc_usbfs_hctsiz_field_t HCTSIZ6_f; + }; + __IO uint32_t HCDMA6; + uint8_t RESERVED60[8]; + union + { + __IO uint32_t HCCHAR7; + stc_usbfs_hcchar_field_t HCCHAR7_f; + }; + uint8_t RESERVED61[4]; + union + { + __IO uint32_t HCINT7; + stc_usbfs_hcint_field_t HCINT7_f; + }; + union + { + __IO uint32_t HCINTMSK7; + stc_usbfs_hcintmsk_field_t HCINTMSK7_f; + }; + union + { + __IO uint32_t HCTSIZ7; + stc_usbfs_hctsiz_field_t HCTSIZ7_f; + }; + __IO uint32_t HCDMA7; + uint8_t RESERVED65[8]; + union + { + __IO uint32_t HCCHAR8; + stc_usbfs_hcchar_field_t HCCHAR8_f; + }; + uint8_t RESERVED66[4]; + union + { + __IO uint32_t HCINT8; + stc_usbfs_hcint_field_t HCINT8_f; + }; + union + { + __IO uint32_t HCINTMSK8; + stc_usbfs_hcintmsk_field_t HCINTMSK8_f; + }; + union + { + __IO uint32_t HCTSIZ8; + stc_usbfs_hctsiz_field_t HCTSIZ8_f; + }; + __IO uint32_t HCDMA8; + uint8_t RESERVED70[8]; + union + { + __IO uint32_t HCCHAR9; + stc_usbfs_hcchar_field_t HCCHAR9_f; + }; + uint8_t RESERVED71[4]; + union + { + __IO uint32_t HCINT9; + stc_usbfs_hcint_field_t HCINT9_f; + }; + union + { + __IO uint32_t HCINTMSK9; + stc_usbfs_hcintmsk_field_t HCINTMSK9_f; + }; + union + { + __IO uint32_t HCTSIZ9; + stc_usbfs_hctsiz_field_t HCTSIZ9_f; + }; + __IO uint32_t HCDMA9; + uint8_t RESERVED75[8]; + union + { + __IO uint32_t HCCHAR10; + stc_usbfs_hcchar_field_t HCCHAR10_f; + }; + uint8_t RESERVED76[4]; + union + { + __IO uint32_t HCINT10; + stc_usbfs_hcint_field_t HCINT10_f; + }; + union + { + __IO uint32_t HCINTMSK10; + stc_usbfs_hcintmsk_field_t HCINTMSK10_f; + }; + union + { + __IO uint32_t HCTSIZ10; + stc_usbfs_hctsiz_field_t HCTSIZ10_f; + }; + __IO uint32_t HCDMA10; + uint8_t RESERVED80[8]; + union + { + __IO uint32_t HCCHAR11; + stc_usbfs_hcchar_field_t HCCHAR11_f; + }; + uint8_t RESERVED81[4]; + union + { + __IO uint32_t HCINT11; + stc_usbfs_hcint_field_t HCINT11_f; + }; + union + { + __IO uint32_t HCINTMSK11; + stc_usbfs_hcintmsk_field_t HCINTMSK11_f; + }; + union + { + __IO uint32_t HCTSIZ11; + stc_usbfs_hctsiz_field_t HCTSIZ11_f; + }; + __IO uint32_t HCDMA11; + uint8_t RESERVED85[392]; + union + { + __IO uint32_t DCFG; + stc_usbfs_dcfg_field_t DCFG_f; + }; + union + { + __IO uint32_t DCTL; + stc_usbfs_dctl_field_t DCTL_f; + }; + union + { + __IO uint32_t DSTS; + stc_usbfs_dsts_field_t DSTS_f; + }; + uint8_t RESERVED88[4]; + union + { + __IO uint32_t DIEPMSK; + stc_usbfs_diepmsk_field_t DIEPMSK_f; + }; + union + { + __IO uint32_t DOEPMSK; + stc_usbfs_doepmsk_field_t DOEPMSK_f; + }; + union + { + __IO uint32_t DAINT; + stc_usbfs_daint_field_t DAINT_f; + }; + union + { + __IO uint32_t DAINTMSK; + stc_usbfs_daintmsk_field_t DAINTMSK_f; + }; + uint8_t RESERVED92[20]; + union + { + __IO uint32_t DIEPEMPMSK; + stc_usbfs_diepempmsk_field_t DIEPEMPMSK_f; + }; + uint8_t RESERVED93[200]; + union + { + __IO uint32_t DIEPCTL0; + stc_usbfs_diepctl0_field_t DIEPCTL0_f; + }; + uint8_t RESERVED94[4]; + union + { + __IO uint32_t DIEPINT0; + stc_usbfs_diepint0_field_t DIEPINT0_f; + }; + uint8_t RESERVED95[4]; + union + { + __IO uint32_t DIEPTSIZ0; + stc_usbfs_dieptsiz0_field_t DIEPTSIZ0_f; + }; + __IO uint32_t DIEPDMA0; + union + { + __IO uint32_t DTXFSTS0; + stc_usbfs_dtxfsts0_field_t DTXFSTS0_f; + }; + uint8_t RESERVED98[4]; + union + { + __IO uint32_t DIEPCTL1; + stc_usbfs_diepctl_field_t DIEPCTL1_f; + }; + uint8_t RESERVED99[4]; + union + { + __IO uint32_t DIEPINT1; + stc_usbfs_diepint_field_t DIEPINT1_f; + }; + uint8_t RESERVED100[4]; + union + { + __IO uint32_t DIEPTSIZ1; + stc_usbfs_dieptsiz_field_t DIEPTSIZ1_f; + }; + __IO uint32_t DIEPDMA1; + union + { + __IO uint32_t DTXFSTS1; + stc_usbfs_dtxfsts_field_t DTXFSTS1_f; + }; + uint8_t RESERVED103[4]; + union + { + __IO uint32_t DIEPCTL2; + stc_usbfs_diepctl_field_t DIEPCTL2_f; + }; + uint8_t RESERVED104[4]; + union + { + __IO uint32_t DIEPINT2; + stc_usbfs_diepint_field_t DIEPINT2_f; + }; + uint8_t RESERVED105[4]; + union + { + __IO uint32_t DIEPTSIZ2; + stc_usbfs_dieptsiz_field_t DIEPTSIZ2_f; + }; + __IO uint32_t DIEPDMA2; + union + { + __IO uint32_t DTXFSTS2; + stc_usbfs_dtxfsts_field_t DTXFSTS2_f; + }; + uint8_t RESERVED108[4]; + union + { + __IO uint32_t DIEPCTL3; + stc_usbfs_diepctl_field_t DIEPCTL3_f; + }; + uint8_t RESERVED109[4]; + union + { + __IO uint32_t DIEPINT3; + stc_usbfs_diepint_field_t DIEPINT3_f; + }; + uint8_t RESERVED110[4]; + union + { + __IO uint32_t DIEPTSIZ3; + stc_usbfs_dieptsiz_field_t DIEPTSIZ3_f; + }; + __IO uint32_t DIEPDMA3; + union + { + __IO uint32_t DTXFSTS3; + stc_usbfs_dtxfsts_field_t DTXFSTS3_f; + }; + uint8_t RESERVED113[4]; + union + { + __IO uint32_t DIEPCTL4; + stc_usbfs_diepctl_field_t DIEPCTL4_f; + }; + uint8_t RESERVED114[4]; + union + { + __IO uint32_t DIEPINT4; + stc_usbfs_diepint_field_t DIEPINT4_f; + }; + uint8_t RESERVED115[4]; + union + { + __IO uint32_t DIEPTSIZ4; + stc_usbfs_dieptsiz_field_t DIEPTSIZ4_f; + }; + __IO uint32_t DIEPDMA4; + union + { + __IO uint32_t DTXFSTS4; + stc_usbfs_dtxfsts_field_t DTXFSTS4_f; + }; + uint8_t RESERVED118[4]; + union + { + __IO uint32_t DIEPCTL5; + stc_usbfs_diepctl_field_t DIEPCTL5_f; + }; + uint8_t RESERVED119[4]; + union + { + __IO uint32_t DIEPINT5; + stc_usbfs_diepint_field_t DIEPINT5_f; + }; + uint8_t RESERVED120[4]; + union + { + __IO uint32_t DIEPTSIZ5; + stc_usbfs_dieptsiz_field_t DIEPTSIZ5_f; + }; + __IO uint32_t DIEPDMA5; + union + { + __IO uint32_t DTXFSTS5; + stc_usbfs_dtxfsts_field_t DTXFSTS5_f; + }; + uint8_t RESERVED123[324]; + union + { + __IO uint32_t DOEPCTL0; + stc_usbfs_doepctl0_field_t DOEPCTL0_f; + }; + uint8_t RESERVED124[4]; + union + { + __IO uint32_t DOEPINT0; + stc_usbfs_doepint_field_t DOEPINT0_f; + }; + uint8_t RESERVED125[4]; + union + { + __IO uint32_t DOEPTSIZ0; + stc_usbfs_doeptsiz0_field_t DOEPTSIZ0_f; + }; + __IO uint32_t DOEPDMA0; + uint8_t RESERVED127[8]; + union + { + __IO uint32_t DOEPCTL1; + stc_usbfs_doepctl_field_t DOEPCTL1_f; + }; + uint8_t RESERVED128[4]; + union + { + __IO uint32_t DOEPINT1; + stc_usbfs_doepint_field_t DOEPINT1_f; + }; + uint8_t RESERVED129[4]; + union + { + __IO uint32_t DOEPTSIZ1; + stc_usbfs_doeptsiz_field_t DOEPTSIZ1_f; + }; + __IO uint32_t DOEPDMA1; + uint8_t RESERVED131[8]; + union + { + __IO uint32_t DOEPCTL2; + stc_usbfs_doepctl_field_t DOEPCTL2_f; + }; + uint8_t RESERVED132[4]; + union + { + __IO uint32_t DOEPINT2; + stc_usbfs_doepint_field_t DOEPINT2_f; + }; + uint8_t RESERVED133[4]; + union + { + __IO uint32_t DOEPTSIZ2; + stc_usbfs_doeptsiz_field_t DOEPTSIZ2_f; + }; + __IO uint32_t DOEPDMA2; + uint8_t RESERVED135[8]; + union + { + __IO uint32_t DOEPCTL3; + stc_usbfs_doepctl_field_t DOEPCTL3_f; + }; + uint8_t RESERVED136[4]; + union + { + __IO uint32_t DOEPINT3; + stc_usbfs_doepint_field_t DOEPINT3_f; + }; + uint8_t RESERVED137[4]; + union + { + __IO uint32_t DOEPTSIZ3; + stc_usbfs_doeptsiz_field_t DOEPTSIZ3_f; + }; + __IO uint32_t DOEPDMA3; + uint8_t RESERVED139[8]; + union + { + __IO uint32_t DOEPCTL4; + stc_usbfs_doepctl_field_t DOEPCTL4_f; + }; + uint8_t RESERVED140[4]; + union + { + __IO uint32_t DOEPINT4; + stc_usbfs_doepint_field_t DOEPINT4_f; + }; + uint8_t RESERVED141[4]; + union + { + __IO uint32_t DOEPTSIZ4; + stc_usbfs_doeptsiz_field_t DOEPTSIZ4_f; + }; + __IO uint32_t DOEPDMA4; + uint8_t RESERVED143[8]; + union + { + __IO uint32_t DOEPCTL5; + stc_usbfs_doepctl_field_t DOEPCTL5_f; + }; + uint8_t RESERVED144[4]; + union + { + __IO uint32_t DOEPINT5; + stc_usbfs_doepint_field_t DOEPINT5_f; + }; + uint8_t RESERVED145[4]; + union + { + __IO uint32_t DOEPTSIZ5; + stc_usbfs_doeptsiz_field_t DOEPTSIZ5_f; + }; + __IO uint32_t DOEPDMA5; + uint8_t RESERVED147[584]; + union + { + __IO uint32_t PCGCCTL; + stc_usbfs_pcgcctl_field_t PCGCCTL_f; + }; +}M4_USBFS_TypeDef; + +typedef struct +{ + union + { + __IO uint32_t CR; + stc_wdt_cr_field_t CR_f; + }; + union + { + __IO uint32_t SR; + stc_wdt_sr_field_t SR_f; + }; + union + { + __IO uint32_t RR; + stc_wdt_rr_field_t RR_f; + }; +}M4_WDT_TypeDef; + +typedef struct +{ + union + { + __IO uint16_t CR; + stc_wktm_cr_field_t CR_f; + }; +}M4_WKTM_TypeDef; + + + +#define M4_ADC1 ((M4_ADC_TypeDef *)0x40040000UL) +#define M4_ADC2 ((M4_ADC_TypeDef *)0x40040400UL) +#define M4_AES ((M4_AES_TypeDef *)0x40008000UL) +#define M4_AOS ((M4_AOS_TypeDef *)0x40010800UL) +#define M4_CAN ((M4_CAN_TypeDef *)0x40070400UL) +#define M4_CMP1 ((M4_CMP_TypeDef *)0x4004A000UL) +#define M4_CMP2 ((M4_CMP_TypeDef *)0x4004A010UL) +#define M4_CMP3 ((M4_CMP_TypeDef *)0x4004A020UL) +#define M4_CMP_CR ((M4_CMP_CR_TypeDef *)0x4004A000UL) +#define M4_CRC ((M4_CRC_TypeDef *)0x40008C00UL) +#define M4_DBGC ((M4_DBGC_TypeDef *)0xE0042000UL) +#define M4_DCU1 ((M4_DCU_TypeDef *)0x40052000UL) +#define M4_DCU2 ((M4_DCU_TypeDef *)0x40052400UL) +#define M4_DCU3 ((M4_DCU_TypeDef *)0x40052800UL) +#define M4_DCU4 ((M4_DCU_TypeDef *)0x40052C00UL) +#define M4_DMA1 ((M4_DMA_TypeDef *)0x40053000UL) +#define M4_DMA2 ((M4_DMA_TypeDef *)0x40053400UL) +#define M4_EFM ((M4_EFM_TypeDef *)0x40010400UL) +#define M4_EMB1 ((M4_EMB_TypeDef *)0x40017C00UL) +#define M4_EMB2 ((M4_EMB_TypeDef *)0x40017C20UL) +#define M4_EMB3 ((M4_EMB_TypeDef *)0x40017C40UL) +#define M4_EMB4 ((M4_EMB_TypeDef *)0x40017C60UL) +#define M4_FCM ((M4_FCM_TypeDef *)0x40048400UL) +#define M4_HASH ((M4_HASH_TypeDef *)0x40008400UL) +#define M4_I2C1 ((M4_I2C_TypeDef *)0x4004E000UL) +#define M4_I2C2 ((M4_I2C_TypeDef *)0x4004E400UL) +#define M4_I2C3 ((M4_I2C_TypeDef *)0x4004E800UL) +#define M4_I2S1 ((M4_I2S_TypeDef *)0x4001E000UL) +#define M4_I2S2 ((M4_I2S_TypeDef *)0x4001E400UL) +#define M4_I2S3 ((M4_I2S_TypeDef *)0x40022000UL) +#define M4_I2S4 ((M4_I2S_TypeDef *)0x40022400UL) +#define M4_ICG ((M4_ICG_TypeDef *)0x00000400UL) +#define M4_INTC ((M4_INTC_TypeDef *)0x40051000UL) +#define M4_KEYSCAN ((M4_KEYSCAN_TypeDef *)0x40050C00UL) +#define M4_MPU ((M4_MPU_TypeDef *)0x40050000UL) +#define M4_MSTP ((M4_MSTP_TypeDef *)0x40048000UL) +#define M4_OTS ((M4_OTS_TypeDef *)0x4004A400UL) +#define M4_PERIC ((M4_PERIC_TypeDef *)0x40055400UL) +#define M4_PORT ((M4_PORT_TypeDef *)0x40053800UL) +#define M4_QSPI ((M4_QSPI_TypeDef *)0x9C000000UL) +#define M4_RTC ((M4_RTC_TypeDef *)0x4004C000UL) +#define M4_SDIOC1 ((M4_SDIOC_TypeDef *)0x4006FC00UL) +#define M4_SDIOC2 ((M4_SDIOC_TypeDef *)0x40070000UL) +#define M4_SPI1 ((M4_SPI_TypeDef *)0x4001C000UL) +#define M4_SPI2 ((M4_SPI_TypeDef *)0x4001C400UL) +#define M4_SPI3 ((M4_SPI_TypeDef *)0x40020000UL) +#define M4_SPI4 ((M4_SPI_TypeDef *)0x40020400UL) +#define M4_SRAMC ((M4_SRAMC_TypeDef *)0x40050800UL) +#define M4_SWDT ((M4_SWDT_TypeDef *)0x40049400UL) +#define M4_SYSREG ((M4_SYSREG_TypeDef *)0x40054000UL) +#define M4_TMR01 ((M4_TMR0_TypeDef *)0x40024000UL) +#define M4_TMR02 ((M4_TMR0_TypeDef *)0x40024400UL) +#define M4_TMR41 ((M4_TMR4_TypeDef *)0x40017000UL) +#define M4_TMR42 ((M4_TMR4_TypeDef *)0x40024800UL) +#define M4_TMR43 ((M4_TMR4_TypeDef *)0x40024C00UL) +#define M4_TMR4_CR ((M4_TMR4_CR_TypeDef *)0x40055408UL) +#define M4_TMR61 ((M4_TMR6_TypeDef *)0x40018000UL) +#define M4_TMR62 ((M4_TMR6_TypeDef *)0x40018400UL) +#define M4_TMR63 ((M4_TMR6_TypeDef *)0x40018800UL) +#define M4_TMR6_CR ((M4_TMR6_CR_TypeDef *)0x40018000UL) +#define M4_TMRA1 ((M4_TMRA_TypeDef *)0x40015000UL) +#define M4_TMRA2 ((M4_TMRA_TypeDef *)0x40015400UL) +#define M4_TMRA3 ((M4_TMRA_TypeDef *)0x40015800UL) +#define M4_TMRA4 ((M4_TMRA_TypeDef *)0x40015C00UL) +#define M4_TMRA5 ((M4_TMRA_TypeDef *)0x40016000UL) +#define M4_TMRA6 ((M4_TMRA_TypeDef *)0x40016400UL) +#define M4_TRNG ((M4_TRNG_TypeDef *)0x40041000UL) +#define M4_USART1 ((M4_USART_TypeDef *)0x4001D000UL) +#define M4_USART2 ((M4_USART_TypeDef *)0x4001D400UL) +#define M4_USART3 ((M4_USART_TypeDef *)0x40021000UL) +#define M4_USART4 ((M4_USART_TypeDef *)0x40021400UL) +#define M4_USBFS ((M4_USBFS_TypeDef *)0x400C0000UL) +#define M4_WDT ((M4_WDT_TypeDef *)0x40049000UL) +#define M4_WKTM ((M4_WKTM_TypeDef *)0x4004C400UL) + + +#define bM4_ADC1_STR_STRT (*((volatile unsigned int*)(0x42800000UL))) +#define bM4_ADC1_CR0_MS0 (*((volatile unsigned int*)(0x42800040UL))) +#define bM4_ADC1_CR0_MS1 (*((volatile unsigned int*)(0x42800044UL))) +#define bM4_ADC1_CR0_ACCSEL0 (*((volatile unsigned int*)(0x42800050UL))) +#define bM4_ADC1_CR0_ACCSEL1 (*((volatile unsigned int*)(0x42800054UL))) +#define bM4_ADC1_CR0_CLREN (*((volatile unsigned int*)(0x42800058UL))) +#define bM4_ADC1_CR0_DFMT (*((volatile unsigned int*)(0x4280005CUL))) +#define bM4_ADC1_CR0_AVCNT0 (*((volatile unsigned int*)(0x42800060UL))) +#define bM4_ADC1_CR0_AVCNT1 (*((volatile unsigned int*)(0x42800064UL))) +#define bM4_ADC1_CR0_AVCNT2 (*((volatile unsigned int*)(0x42800068UL))) +#define bM4_ADC1_CR1_RSCHSEL (*((volatile unsigned int*)(0x42800088UL))) +#define bM4_ADC1_TRGSR_TRGSELA0 (*((volatile unsigned int*)(0x42800140UL))) +#define bM4_ADC1_TRGSR_TRGSELA1 (*((volatile unsigned int*)(0x42800144UL))) +#define bM4_ADC1_TRGSR_TRGSELA2 (*((volatile unsigned int*)(0x42800148UL))) +#define bM4_ADC1_TRGSR_TRGENA (*((volatile unsigned int*)(0x4280015CUL))) +#define bM4_ADC1_TRGSR_TRGSELB0 (*((volatile unsigned int*)(0x42800160UL))) +#define bM4_ADC1_TRGSR_TRGSELB1 (*((volatile unsigned int*)(0x42800164UL))) +#define bM4_ADC1_TRGSR_TRGSELB2 (*((volatile unsigned int*)(0x42800168UL))) +#define bM4_ADC1_TRGSR_TRGENB (*((volatile unsigned int*)(0x4280017CUL))) +#define bM4_ADC1_CHSELRA1_CHSELA16 (*((volatile unsigned int*)(0x428001C0UL))) +#define bM4_ADC1_CHSELRB1_CHSELB16 (*((volatile unsigned int*)(0x42800240UL))) +#define bM4_ADC1_AVCHSELR1_AVCHSEL16 (*((volatile unsigned int*)(0x428002C0UL))) +#define bM4_ADC1_CHMUXR0_CH00MUX0 (*((volatile unsigned int*)(0x42800700UL))) +#define bM4_ADC1_CHMUXR0_CH00MUX1 (*((volatile unsigned int*)(0x42800704UL))) +#define bM4_ADC1_CHMUXR0_CH00MUX2 (*((volatile unsigned int*)(0x42800708UL))) +#define bM4_ADC1_CHMUXR0_CH00MUX3 (*((volatile unsigned int*)(0x4280070CUL))) +#define bM4_ADC1_CHMUXR0_CH01MUX0 (*((volatile unsigned int*)(0x42800710UL))) +#define bM4_ADC1_CHMUXR0_CH01MUX1 (*((volatile unsigned int*)(0x42800714UL))) +#define bM4_ADC1_CHMUXR0_CH01MUX2 (*((volatile unsigned int*)(0x42800718UL))) +#define bM4_ADC1_CHMUXR0_CH01MUX3 (*((volatile unsigned int*)(0x4280071CUL))) +#define bM4_ADC1_CHMUXR0_CH02MUX0 (*((volatile unsigned int*)(0x42800720UL))) +#define bM4_ADC1_CHMUXR0_CH02MUX1 (*((volatile unsigned int*)(0x42800724UL))) +#define bM4_ADC1_CHMUXR0_CH02MUX2 (*((volatile unsigned int*)(0x42800728UL))) +#define bM4_ADC1_CHMUXR0_CH02MUX3 (*((volatile unsigned int*)(0x4280072CUL))) +#define bM4_ADC1_CHMUXR0_CH03MUX0 (*((volatile unsigned int*)(0x42800730UL))) +#define bM4_ADC1_CHMUXR0_CH03MUX1 (*((volatile unsigned int*)(0x42800734UL))) +#define bM4_ADC1_CHMUXR0_CH03MUX2 (*((volatile unsigned int*)(0x42800738UL))) +#define bM4_ADC1_CHMUXR0_CH03MUX3 (*((volatile unsigned int*)(0x4280073CUL))) +#define bM4_ADC1_CHMUXR1_CH04MUX0 (*((volatile unsigned int*)(0x42800740UL))) +#define bM4_ADC1_CHMUXR1_CH04MUX1 (*((volatile unsigned int*)(0x42800744UL))) +#define bM4_ADC1_CHMUXR1_CH04MUX2 (*((volatile unsigned int*)(0x42800748UL))) +#define bM4_ADC1_CHMUXR1_CH04MUX3 (*((volatile unsigned int*)(0x4280074CUL))) +#define bM4_ADC1_CHMUXR1_CH05MUX0 (*((volatile unsigned int*)(0x42800750UL))) +#define bM4_ADC1_CHMUXR1_CH05MUX1 (*((volatile unsigned int*)(0x42800754UL))) +#define bM4_ADC1_CHMUXR1_CH05MUX2 (*((volatile unsigned int*)(0x42800758UL))) +#define bM4_ADC1_CHMUXR1_CH05MUX3 (*((volatile unsigned int*)(0x4280075CUL))) +#define bM4_ADC1_CHMUXR1_CH06MUX0 (*((volatile unsigned int*)(0x42800760UL))) +#define bM4_ADC1_CHMUXR1_CH06MUX1 (*((volatile unsigned int*)(0x42800764UL))) +#define bM4_ADC1_CHMUXR1_CH06MUX2 (*((volatile unsigned int*)(0x42800768UL))) +#define bM4_ADC1_CHMUXR1_CH06MUX3 (*((volatile unsigned int*)(0x4280076CUL))) +#define bM4_ADC1_CHMUXR1_CH07MUX0 (*((volatile unsigned int*)(0x42800770UL))) +#define bM4_ADC1_CHMUXR1_CH07MUX1 (*((volatile unsigned int*)(0x42800774UL))) +#define bM4_ADC1_CHMUXR1_CH07MUX2 (*((volatile unsigned int*)(0x42800778UL))) +#define bM4_ADC1_CHMUXR1_CH07MUX3 (*((volatile unsigned int*)(0x4280077CUL))) +#define bM4_ADC1_CHMUXR2_CH08MUX0 (*((volatile unsigned int*)(0x42800780UL))) +#define bM4_ADC1_CHMUXR2_CH08MUX1 (*((volatile unsigned int*)(0x42800784UL))) +#define bM4_ADC1_CHMUXR2_CH08MUX2 (*((volatile unsigned int*)(0x42800788UL))) +#define bM4_ADC1_CHMUXR2_CH08MUX3 (*((volatile unsigned int*)(0x4280078CUL))) +#define bM4_ADC1_CHMUXR2_CH09MUX0 (*((volatile unsigned int*)(0x42800790UL))) +#define bM4_ADC1_CHMUXR2_CH09MUX1 (*((volatile unsigned int*)(0x42800794UL))) +#define bM4_ADC1_CHMUXR2_CH09MUX2 (*((volatile unsigned int*)(0x42800798UL))) +#define bM4_ADC1_CHMUXR2_CH09MUX3 (*((volatile unsigned int*)(0x4280079CUL))) +#define bM4_ADC1_CHMUXR2_CH10MUX0 (*((volatile unsigned int*)(0x428007A0UL))) +#define bM4_ADC1_CHMUXR2_CH10MUX1 (*((volatile unsigned int*)(0x428007A4UL))) +#define bM4_ADC1_CHMUXR2_CH10MUX2 (*((volatile unsigned int*)(0x428007A8UL))) +#define bM4_ADC1_CHMUXR2_CH10MUX3 (*((volatile unsigned int*)(0x428007ACUL))) +#define bM4_ADC1_CHMUXR2_CH11MUX0 (*((volatile unsigned int*)(0x428007B0UL))) +#define bM4_ADC1_CHMUXR2_CH11MUX1 (*((volatile unsigned int*)(0x428007B4UL))) +#define bM4_ADC1_CHMUXR2_CH11MUX2 (*((volatile unsigned int*)(0x428007B8UL))) +#define bM4_ADC1_CHMUXR2_CH11MUX3 (*((volatile unsigned int*)(0x428007BCUL))) +#define bM4_ADC1_CHMUXR3_CH12MUX0 (*((volatile unsigned int*)(0x428007C0UL))) +#define bM4_ADC1_CHMUXR3_CH12MUX1 (*((volatile unsigned int*)(0x428007C4UL))) +#define bM4_ADC1_CHMUXR3_CH12MUX2 (*((volatile unsigned int*)(0x428007C8UL))) +#define bM4_ADC1_CHMUXR3_CH12MUX3 (*((volatile unsigned int*)(0x428007CCUL))) +#define bM4_ADC1_CHMUXR3_CH13MUX0 (*((volatile unsigned int*)(0x428007D0UL))) +#define bM4_ADC1_CHMUXR3_CH13MUX1 (*((volatile unsigned int*)(0x428007D4UL))) +#define bM4_ADC1_CHMUXR3_CH13MUX2 (*((volatile unsigned int*)(0x428007D8UL))) +#define bM4_ADC1_CHMUXR3_CH13MUX3 (*((volatile unsigned int*)(0x428007DCUL))) +#define bM4_ADC1_CHMUXR3_CH14MUX0 (*((volatile unsigned int*)(0x428007E0UL))) +#define bM4_ADC1_CHMUXR3_CH14MUX1 (*((volatile unsigned int*)(0x428007E4UL))) +#define bM4_ADC1_CHMUXR3_CH14MUX2 (*((volatile unsigned int*)(0x428007E8UL))) +#define bM4_ADC1_CHMUXR3_CH14MUX3 (*((volatile unsigned int*)(0x428007ECUL))) +#define bM4_ADC1_CHMUXR3_CH15MUX0 (*((volatile unsigned int*)(0x428007F0UL))) +#define bM4_ADC1_CHMUXR3_CH15MUX1 (*((volatile unsigned int*)(0x428007F4UL))) +#define bM4_ADC1_CHMUXR3_CH15MUX2 (*((volatile unsigned int*)(0x428007F8UL))) +#define bM4_ADC1_CHMUXR3_CH15MUX3 (*((volatile unsigned int*)(0x428007FCUL))) +#define bM4_ADC1_ISR_EOCAF (*((volatile unsigned int*)(0x428008C0UL))) +#define bM4_ADC1_ISR_EOCBF (*((volatile unsigned int*)(0x428008C4UL))) +#define bM4_ADC1_ICR_EOCAIEN (*((volatile unsigned int*)(0x428008E0UL))) +#define bM4_ADC1_ICR_EOCBIEN (*((volatile unsigned int*)(0x428008E4UL))) +#define bM4_ADC1_SYNCCR_SYNCEN (*((volatile unsigned int*)(0x42800980UL))) +#define bM4_ADC1_SYNCCR_SYNCMD0 (*((volatile unsigned int*)(0x42800990UL))) +#define bM4_ADC1_SYNCCR_SYNCMD1 (*((volatile unsigned int*)(0x42800994UL))) +#define bM4_ADC1_SYNCCR_SYNCMD2 (*((volatile unsigned int*)(0x42800998UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY0 (*((volatile unsigned int*)(0x428009A0UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY1 (*((volatile unsigned int*)(0x428009A4UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY2 (*((volatile unsigned int*)(0x428009A8UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY3 (*((volatile unsigned int*)(0x428009ACUL))) +#define bM4_ADC1_SYNCCR_SYNCDLY4 (*((volatile unsigned int*)(0x428009B0UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY5 (*((volatile unsigned int*)(0x428009B4UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY6 (*((volatile unsigned int*)(0x428009B8UL))) +#define bM4_ADC1_SYNCCR_SYNCDLY7 (*((volatile unsigned int*)(0x428009BCUL))) +#define bM4_ADC1_AWDCR_AWDEN (*((volatile unsigned int*)(0x42801400UL))) +#define bM4_ADC1_AWDCR_AWDMD (*((volatile unsigned int*)(0x42801410UL))) +#define bM4_ADC1_AWDCR_AWDSS0 (*((volatile unsigned int*)(0x42801418UL))) +#define bM4_ADC1_AWDCR_AWDSS1 (*((volatile unsigned int*)(0x4280141CUL))) +#define bM4_ADC1_AWDCR_AWDIEN (*((volatile unsigned int*)(0x42801420UL))) +#define bM4_ADC1_AWDCHSR1_AWDCH16 (*((volatile unsigned int*)(0x428015C0UL))) +#define bM4_ADC1_AWDSR1_AWDF16 (*((volatile unsigned int*)(0x42801640UL))) +#define bM4_ADC1_PGACR_PGACTL0 (*((volatile unsigned int*)(0x42801800UL))) +#define bM4_ADC1_PGACR_PGACTL1 (*((volatile unsigned int*)(0x42801804UL))) +#define bM4_ADC1_PGACR_PGACTL2 (*((volatile unsigned int*)(0x42801808UL))) +#define bM4_ADC1_PGACR_PGACTL3 (*((volatile unsigned int*)(0x4280180CUL))) +#define bM4_ADC1_PGAGSR_GAIN0 (*((volatile unsigned int*)(0x42801840UL))) +#define bM4_ADC1_PGAGSR_GAIN1 (*((volatile unsigned int*)(0x42801844UL))) +#define bM4_ADC1_PGAGSR_GAIN2 (*((volatile unsigned int*)(0x42801848UL))) +#define bM4_ADC1_PGAGSR_GAIN3 (*((volatile unsigned int*)(0x4280184CUL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL0 (*((volatile unsigned int*)(0x42801980UL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL1 (*((volatile unsigned int*)(0x42801984UL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL2 (*((volatile unsigned int*)(0x42801988UL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL3 (*((volatile unsigned int*)(0x4280198CUL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL4 (*((volatile unsigned int*)(0x42801990UL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL5 (*((volatile unsigned int*)(0x42801994UL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL6 (*((volatile unsigned int*)(0x42801998UL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL7 (*((volatile unsigned int*)(0x4280199CUL))) +#define bM4_ADC1_PGAINSR0_PGAINSEL8 (*((volatile unsigned int*)(0x428019A0UL))) +#define bM4_ADC1_PGAINSR1_PGAVSSEN (*((volatile unsigned int*)(0x428019C0UL))) +#define bM4_ADC2_STR_STRT (*((volatile unsigned int*)(0x42808000UL))) +#define bM4_ADC2_CR0_MS0 (*((volatile unsigned int*)(0x42808040UL))) +#define bM4_ADC2_CR0_MS1 (*((volatile unsigned int*)(0x42808044UL))) +#define bM4_ADC2_CR0_ACCSEL0 (*((volatile unsigned int*)(0x42808050UL))) +#define bM4_ADC2_CR0_ACCSEL1 (*((volatile unsigned int*)(0x42808054UL))) +#define bM4_ADC2_CR0_CLREN (*((volatile unsigned int*)(0x42808058UL))) +#define bM4_ADC2_CR0_DFMT (*((volatile unsigned int*)(0x4280805CUL))) +#define bM4_ADC2_CR0_AVCNT0 (*((volatile unsigned int*)(0x42808060UL))) +#define bM4_ADC2_CR0_AVCNT1 (*((volatile unsigned int*)(0x42808064UL))) +#define bM4_ADC2_CR0_AVCNT2 (*((volatile unsigned int*)(0x42808068UL))) +#define bM4_ADC2_CR1_RSCHSEL (*((volatile unsigned int*)(0x42808088UL))) +#define bM4_ADC2_TRGSR_TRGSELA0 (*((volatile unsigned int*)(0x42808140UL))) +#define bM4_ADC2_TRGSR_TRGSELA1 (*((volatile unsigned int*)(0x42808144UL))) +#define bM4_ADC2_TRGSR_TRGSELA2 (*((volatile unsigned int*)(0x42808148UL))) +#define bM4_ADC2_TRGSR_TRGENA (*((volatile unsigned int*)(0x4280815CUL))) +#define bM4_ADC2_TRGSR_TRGSELB0 (*((volatile unsigned int*)(0x42808160UL))) +#define bM4_ADC2_TRGSR_TRGSELB1 (*((volatile unsigned int*)(0x42808164UL))) +#define bM4_ADC2_TRGSR_TRGSELB2 (*((volatile unsigned int*)(0x42808168UL))) +#define bM4_ADC2_TRGSR_TRGENB (*((volatile unsigned int*)(0x4280817CUL))) +#define bM4_ADC2_CHSELRA1_CHSELA16 (*((volatile unsigned int*)(0x428081C0UL))) +#define bM4_ADC2_CHSELRB1_CHSELB16 (*((volatile unsigned int*)(0x42808240UL))) +#define bM4_ADC2_AVCHSELR1_AVCHSEL16 (*((volatile unsigned int*)(0x428082C0UL))) +#define bM4_ADC2_CHMUXR0_CH00MUX0 (*((volatile unsigned int*)(0x42808700UL))) +#define bM4_ADC2_CHMUXR0_CH00MUX1 (*((volatile unsigned int*)(0x42808704UL))) +#define bM4_ADC2_CHMUXR0_CH00MUX2 (*((volatile unsigned int*)(0x42808708UL))) +#define bM4_ADC2_CHMUXR0_CH00MUX3 (*((volatile unsigned int*)(0x4280870CUL))) +#define bM4_ADC2_CHMUXR0_CH01MUX0 (*((volatile unsigned int*)(0x42808710UL))) +#define bM4_ADC2_CHMUXR0_CH01MUX1 (*((volatile unsigned int*)(0x42808714UL))) +#define bM4_ADC2_CHMUXR0_CH01MUX2 (*((volatile unsigned int*)(0x42808718UL))) +#define bM4_ADC2_CHMUXR0_CH01MUX3 (*((volatile unsigned int*)(0x4280871CUL))) +#define bM4_ADC2_CHMUXR0_CH02MUX0 (*((volatile unsigned int*)(0x42808720UL))) +#define bM4_ADC2_CHMUXR0_CH02MUX1 (*((volatile unsigned int*)(0x42808724UL))) +#define bM4_ADC2_CHMUXR0_CH02MUX2 (*((volatile unsigned int*)(0x42808728UL))) +#define bM4_ADC2_CHMUXR0_CH02MUX3 (*((volatile unsigned int*)(0x4280872CUL))) +#define bM4_ADC2_CHMUXR0_CH03MUX0 (*((volatile unsigned int*)(0x42808730UL))) +#define bM4_ADC2_CHMUXR0_CH03MUX1 (*((volatile unsigned int*)(0x42808734UL))) +#define bM4_ADC2_CHMUXR0_CH03MUX2 (*((volatile unsigned int*)(0x42808738UL))) +#define bM4_ADC2_CHMUXR0_CH03MUX3 (*((volatile unsigned int*)(0x4280873CUL))) +#define bM4_ADC2_CHMUXR1_CH04MUX0 (*((volatile unsigned int*)(0x42808740UL))) +#define bM4_ADC2_CHMUXR1_CH04MUX1 (*((volatile unsigned int*)(0x42808744UL))) +#define bM4_ADC2_CHMUXR1_CH04MUX2 (*((volatile unsigned int*)(0x42808748UL))) +#define bM4_ADC2_CHMUXR1_CH04MUX3 (*((volatile unsigned int*)(0x4280874CUL))) +#define bM4_ADC2_CHMUXR1_CH05MUX0 (*((volatile unsigned int*)(0x42808750UL))) +#define bM4_ADC2_CHMUXR1_CH05MUX1 (*((volatile unsigned int*)(0x42808754UL))) +#define bM4_ADC2_CHMUXR1_CH05MUX2 (*((volatile unsigned int*)(0x42808758UL))) +#define bM4_ADC2_CHMUXR1_CH05MUX3 (*((volatile unsigned int*)(0x4280875CUL))) +#define bM4_ADC2_CHMUXR1_CH06MUX0 (*((volatile unsigned int*)(0x42808760UL))) +#define bM4_ADC2_CHMUXR1_CH06MUX1 (*((volatile unsigned int*)(0x42808764UL))) +#define bM4_ADC2_CHMUXR1_CH06MUX2 (*((volatile unsigned int*)(0x42808768UL))) +#define bM4_ADC2_CHMUXR1_CH06MUX3 (*((volatile unsigned int*)(0x4280876CUL))) +#define bM4_ADC2_CHMUXR1_CH07MUX0 (*((volatile unsigned int*)(0x42808770UL))) +#define bM4_ADC2_CHMUXR1_CH07MUX1 (*((volatile unsigned int*)(0x42808774UL))) +#define bM4_ADC2_CHMUXR1_CH07MUX2 (*((volatile unsigned int*)(0x42808778UL))) +#define bM4_ADC2_CHMUXR1_CH07MUX3 (*((volatile unsigned int*)(0x4280877CUL))) +#define bM4_ADC2_CHMUXR2_CH08MUX0 (*((volatile unsigned int*)(0x42808780UL))) +#define bM4_ADC2_CHMUXR2_CH08MUX1 (*((volatile unsigned int*)(0x42808784UL))) +#define bM4_ADC2_CHMUXR2_CH08MUX2 (*((volatile unsigned int*)(0x42808788UL))) +#define bM4_ADC2_CHMUXR2_CH08MUX3 (*((volatile unsigned int*)(0x4280878CUL))) +#define bM4_ADC2_CHMUXR2_CH09MUX0 (*((volatile unsigned int*)(0x42808790UL))) +#define bM4_ADC2_CHMUXR2_CH09MUX1 (*((volatile unsigned int*)(0x42808794UL))) +#define bM4_ADC2_CHMUXR2_CH09MUX2 (*((volatile unsigned int*)(0x42808798UL))) +#define bM4_ADC2_CHMUXR2_CH09MUX3 (*((volatile unsigned int*)(0x4280879CUL))) +#define bM4_ADC2_CHMUXR2_CH10MUX0 (*((volatile unsigned int*)(0x428087A0UL))) +#define bM4_ADC2_CHMUXR2_CH10MUX1 (*((volatile unsigned int*)(0x428087A4UL))) +#define bM4_ADC2_CHMUXR2_CH10MUX2 (*((volatile unsigned int*)(0x428087A8UL))) +#define bM4_ADC2_CHMUXR2_CH10MUX3 (*((volatile unsigned int*)(0x428087ACUL))) +#define bM4_ADC2_CHMUXR2_CH11MUX0 (*((volatile unsigned int*)(0x428087B0UL))) +#define bM4_ADC2_CHMUXR2_CH11MUX1 (*((volatile unsigned int*)(0x428087B4UL))) +#define bM4_ADC2_CHMUXR2_CH11MUX2 (*((volatile unsigned int*)(0x428087B8UL))) +#define bM4_ADC2_CHMUXR2_CH11MUX3 (*((volatile unsigned int*)(0x428087BCUL))) +#define bM4_ADC2_CHMUXR3_CH12MUX0 (*((volatile unsigned int*)(0x428087C0UL))) +#define bM4_ADC2_CHMUXR3_CH12MUX1 (*((volatile unsigned int*)(0x428087C4UL))) +#define bM4_ADC2_CHMUXR3_CH12MUX2 (*((volatile unsigned int*)(0x428087C8UL))) +#define bM4_ADC2_CHMUXR3_CH12MUX3 (*((volatile unsigned int*)(0x428087CCUL))) +#define bM4_ADC2_CHMUXR3_CH13MUX0 (*((volatile unsigned int*)(0x428087D0UL))) +#define bM4_ADC2_CHMUXR3_CH13MUX1 (*((volatile unsigned int*)(0x428087D4UL))) +#define bM4_ADC2_CHMUXR3_CH13MUX2 (*((volatile unsigned int*)(0x428087D8UL))) +#define bM4_ADC2_CHMUXR3_CH13MUX3 (*((volatile unsigned int*)(0x428087DCUL))) +#define bM4_ADC2_CHMUXR3_CH14MUX0 (*((volatile unsigned int*)(0x428087E0UL))) +#define bM4_ADC2_CHMUXR3_CH14MUX1 (*((volatile unsigned int*)(0x428087E4UL))) +#define bM4_ADC2_CHMUXR3_CH14MUX2 (*((volatile unsigned int*)(0x428087E8UL))) +#define bM4_ADC2_CHMUXR3_CH14MUX3 (*((volatile unsigned int*)(0x428087ECUL))) +#define bM4_ADC2_CHMUXR3_CH15MUX0 (*((volatile unsigned int*)(0x428087F0UL))) +#define bM4_ADC2_CHMUXR3_CH15MUX1 (*((volatile unsigned int*)(0x428087F4UL))) +#define bM4_ADC2_CHMUXR3_CH15MUX2 (*((volatile unsigned int*)(0x428087F8UL))) +#define bM4_ADC2_CHMUXR3_CH15MUX3 (*((volatile unsigned int*)(0x428087FCUL))) +#define bM4_ADC2_ISR_EOCAF (*((volatile unsigned int*)(0x428088C0UL))) +#define bM4_ADC2_ISR_EOCBF (*((volatile unsigned int*)(0x428088C4UL))) +#define bM4_ADC2_ICR_EOCAIEN (*((volatile unsigned int*)(0x428088E0UL))) +#define bM4_ADC2_ICR_EOCBIEN (*((volatile unsigned int*)(0x428088E4UL))) +#define bM4_ADC2_SYNCCR_SYNCEN (*((volatile unsigned int*)(0x42808980UL))) +#define bM4_ADC2_SYNCCR_SYNCMD0 (*((volatile unsigned int*)(0x42808990UL))) +#define bM4_ADC2_SYNCCR_SYNCMD1 (*((volatile unsigned int*)(0x42808994UL))) +#define bM4_ADC2_SYNCCR_SYNCMD2 (*((volatile unsigned int*)(0x42808998UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY0 (*((volatile unsigned int*)(0x428089A0UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY1 (*((volatile unsigned int*)(0x428089A4UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY2 (*((volatile unsigned int*)(0x428089A8UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY3 (*((volatile unsigned int*)(0x428089ACUL))) +#define bM4_ADC2_SYNCCR_SYNCDLY4 (*((volatile unsigned int*)(0x428089B0UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY5 (*((volatile unsigned int*)(0x428089B4UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY6 (*((volatile unsigned int*)(0x428089B8UL))) +#define bM4_ADC2_SYNCCR_SYNCDLY7 (*((volatile unsigned int*)(0x428089BCUL))) +#define bM4_ADC2_AWDCR_AWDEN (*((volatile unsigned int*)(0x42809400UL))) +#define bM4_ADC2_AWDCR_AWDMD (*((volatile unsigned int*)(0x42809410UL))) +#define bM4_ADC2_AWDCR_AWDSS0 (*((volatile unsigned int*)(0x42809418UL))) +#define bM4_ADC2_AWDCR_AWDSS1 (*((volatile unsigned int*)(0x4280941CUL))) +#define bM4_ADC2_AWDCR_AWDIEN (*((volatile unsigned int*)(0x42809420UL))) +#define bM4_ADC2_AWDCHSR1_AWDCH16 (*((volatile unsigned int*)(0x428095C0UL))) +#define bM4_ADC2_AWDSR1_AWDF16 (*((volatile unsigned int*)(0x42809640UL))) +#define bM4_ADC2_PGACR_PGACTL0 (*((volatile unsigned int*)(0x42809800UL))) +#define bM4_ADC2_PGACR_PGACTL1 (*((volatile unsigned int*)(0x42809804UL))) +#define bM4_ADC2_PGACR_PGACTL2 (*((volatile unsigned int*)(0x42809808UL))) +#define bM4_ADC2_PGACR_PGACTL3 (*((volatile unsigned int*)(0x4280980CUL))) +#define bM4_ADC2_PGAGSR_GAIN0 (*((volatile unsigned int*)(0x42809840UL))) +#define bM4_ADC2_PGAGSR_GAIN1 (*((volatile unsigned int*)(0x42809844UL))) +#define bM4_ADC2_PGAGSR_GAIN2 (*((volatile unsigned int*)(0x42809848UL))) +#define bM4_ADC2_PGAGSR_GAIN3 (*((volatile unsigned int*)(0x4280984CUL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL0 (*((volatile unsigned int*)(0x42809980UL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL1 (*((volatile unsigned int*)(0x42809984UL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL2 (*((volatile unsigned int*)(0x42809988UL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL3 (*((volatile unsigned int*)(0x4280998CUL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL4 (*((volatile unsigned int*)(0x42809990UL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL5 (*((volatile unsigned int*)(0x42809994UL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL6 (*((volatile unsigned int*)(0x42809998UL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL7 (*((volatile unsigned int*)(0x4280999CUL))) +#define bM4_ADC2_PGAINSR0_PGAINSEL8 (*((volatile unsigned int*)(0x428099A0UL))) +#define bM4_ADC2_PGAINSR1_PGAVSSEN (*((volatile unsigned int*)(0x428099C0UL))) +#define bM4_AES_CR_START (*((volatile unsigned int*)(0x42100000UL))) +#define bM4_AES_CR_MODE (*((volatile unsigned int*)(0x42100004UL))) +#define bM4_AOS_INT_SFTTRG_STRG (*((volatile unsigned int*)(0x42210000UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL0 (*((volatile unsigned int*)(0x42210080UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL1 (*((volatile unsigned int*)(0x42210084UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL2 (*((volatile unsigned int*)(0x42210088UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL3 (*((volatile unsigned int*)(0x4221008CUL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL4 (*((volatile unsigned int*)(0x42210090UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL5 (*((volatile unsigned int*)(0x42210094UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL6 (*((volatile unsigned int*)(0x42210098UL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL7 (*((volatile unsigned int*)(0x4221009CUL))) +#define bM4_AOS_DCU1_TRGSEL_TRGSEL8 (*((volatile unsigned int*)(0x422100A0UL))) +#define bM4_AOS_DCU1_TRGSEL_COMTRG_EN0 (*((volatile unsigned int*)(0x422100F8UL))) +#define bM4_AOS_DCU1_TRGSEL_COMTRG_EN1 (*((volatile unsigned int*)(0x422100FCUL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL0 (*((volatile unsigned int*)(0x42210100UL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL1 (*((volatile unsigned int*)(0x42210104UL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL2 (*((volatile unsigned int*)(0x42210108UL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL3 (*((volatile unsigned int*)(0x4221010CUL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL4 (*((volatile unsigned int*)(0x42210110UL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL5 (*((volatile unsigned int*)(0x42210114UL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL6 (*((volatile unsigned int*)(0x42210118UL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL7 (*((volatile unsigned int*)(0x4221011CUL))) +#define bM4_AOS_DCU2_TRGSEL_TRGSEL8 (*((volatile unsigned int*)(0x42210120UL))) +#define bM4_AOS_DCU2_TRGSEL_COMTRG_EN0 (*((volatile unsigned int*)(0x42210178UL))) +#define bM4_AOS_DCU2_TRGSEL_COMTRG_EN1 (*((volatile unsigned int*)(0x4221017CUL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL0 (*((volatile unsigned int*)(0x42210180UL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL1 (*((volatile unsigned int*)(0x42210184UL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL2 (*((volatile unsigned int*)(0x42210188UL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL3 (*((volatile unsigned int*)(0x4221018CUL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL4 (*((volatile unsigned int*)(0x42210190UL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL5 (*((volatile unsigned int*)(0x42210194UL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL6 (*((volatile unsigned int*)(0x42210198UL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL7 (*((volatile unsigned int*)(0x4221019CUL))) +#define bM4_AOS_DCU3_TRGSEL_TRGSEL8 (*((volatile unsigned int*)(0x422101A0UL))) +#define bM4_AOS_DCU3_TRGSEL_COMTRG_EN0 (*((volatile unsigned int*)(0x422101F8UL))) +#define bM4_AOS_DCU3_TRGSEL_COMTRG_EN1 (*((volatile unsigned int*)(0x422101FCUL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL0 (*((volatile unsigned int*)(0x42210200UL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL1 (*((volatile unsigned int*)(0x42210204UL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL2 (*((volatile unsigned int*)(0x42210208UL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL3 (*((volatile unsigned int*)(0x4221020CUL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL4 (*((volatile unsigned int*)(0x42210210UL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL5 (*((volatile unsigned int*)(0x42210214UL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL6 (*((volatile unsigned int*)(0x42210218UL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL7 (*((volatile unsigned int*)(0x4221021CUL))) +#define bM4_AOS_DCU4_TRGSEL_TRGSEL8 (*((volatile unsigned int*)(0x42210220UL))) +#define bM4_AOS_DCU4_TRGSEL_COMTRG_EN0 (*((volatile unsigned int*)(0x42210278UL))) +#define bM4_AOS_DCU4_TRGSEL_COMTRG_EN1 (*((volatile unsigned int*)(0x4221027CUL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL0 (*((volatile unsigned int*)(0x42210280UL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL1 (*((volatile unsigned int*)(0x42210284UL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL2 (*((volatile unsigned int*)(0x42210288UL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL3 (*((volatile unsigned int*)(0x4221028CUL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL4 (*((volatile unsigned int*)(0x42210290UL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL5 (*((volatile unsigned int*)(0x42210294UL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL6 (*((volatile unsigned int*)(0x42210298UL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL7 (*((volatile unsigned int*)(0x4221029CUL))) +#define bM4_AOS_DMA1_TRGSEL0_TRGSEL8 (*((volatile unsigned int*)(0x422102A0UL))) +#define bM4_AOS_DMA1_TRGSEL0_COMTRG_EN0 (*((volatile unsigned int*)(0x422102F8UL))) +#define bM4_AOS_DMA1_TRGSEL0_COMTRG_EN1 (*((volatile unsigned int*)(0x422102FCUL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL0 (*((volatile unsigned int*)(0x42210300UL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL1 (*((volatile unsigned int*)(0x42210304UL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL2 (*((volatile unsigned int*)(0x42210308UL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL3 (*((volatile unsigned int*)(0x4221030CUL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL4 (*((volatile unsigned int*)(0x42210310UL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL5 (*((volatile unsigned int*)(0x42210314UL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL6 (*((volatile unsigned int*)(0x42210318UL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL7 (*((volatile unsigned int*)(0x4221031CUL))) +#define bM4_AOS_DMA1_TRGSEL1_TRGSEL8 (*((volatile unsigned int*)(0x42210320UL))) +#define bM4_AOS_DMA1_TRGSEL1_COMTRG_EN0 (*((volatile unsigned int*)(0x42210378UL))) +#define bM4_AOS_DMA1_TRGSEL1_COMTRG_EN1 (*((volatile unsigned int*)(0x4221037CUL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL0 (*((volatile unsigned int*)(0x42210380UL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL1 (*((volatile unsigned int*)(0x42210384UL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL2 (*((volatile unsigned int*)(0x42210388UL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL3 (*((volatile unsigned int*)(0x4221038CUL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL4 (*((volatile unsigned int*)(0x42210390UL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL5 (*((volatile unsigned int*)(0x42210394UL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL6 (*((volatile unsigned int*)(0x42210398UL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL7 (*((volatile unsigned int*)(0x4221039CUL))) +#define bM4_AOS_DMA1_TRGSEL2_TRGSEL8 (*((volatile unsigned int*)(0x422103A0UL))) +#define bM4_AOS_DMA1_TRGSEL2_COMTRG_EN0 (*((volatile unsigned int*)(0x422103F8UL))) +#define bM4_AOS_DMA1_TRGSEL2_COMTRG_EN1 (*((volatile unsigned int*)(0x422103FCUL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL0 (*((volatile unsigned int*)(0x42210400UL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL1 (*((volatile unsigned int*)(0x42210404UL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL2 (*((volatile unsigned int*)(0x42210408UL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL3 (*((volatile unsigned int*)(0x4221040CUL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL4 (*((volatile unsigned int*)(0x42210410UL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL5 (*((volatile unsigned int*)(0x42210414UL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL6 (*((volatile unsigned int*)(0x42210418UL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL7 (*((volatile unsigned int*)(0x4221041CUL))) +#define bM4_AOS_DMA1_TRGSEL3_TRGSEL8 (*((volatile unsigned int*)(0x42210420UL))) +#define bM4_AOS_DMA1_TRGSEL3_COMTRG_EN0 (*((volatile unsigned int*)(0x42210478UL))) +#define bM4_AOS_DMA1_TRGSEL3_COMTRG_EN1 (*((volatile unsigned int*)(0x4221047CUL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL0 (*((volatile unsigned int*)(0x42210480UL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL1 (*((volatile unsigned int*)(0x42210484UL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL2 (*((volatile unsigned int*)(0x42210488UL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL3 (*((volatile unsigned int*)(0x4221048CUL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL4 (*((volatile unsigned int*)(0x42210490UL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL5 (*((volatile unsigned int*)(0x42210494UL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL6 (*((volatile unsigned int*)(0x42210498UL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL7 (*((volatile unsigned int*)(0x4221049CUL))) +#define bM4_AOS_DMA2_TRGSEL0_TRGSEL8 (*((volatile unsigned int*)(0x422104A0UL))) +#define bM4_AOS_DMA2_TRGSEL0_COMTRG_EN0 (*((volatile unsigned int*)(0x422104F8UL))) +#define bM4_AOS_DMA2_TRGSEL0_COMTRG_EN1 (*((volatile unsigned int*)(0x422104FCUL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL0 (*((volatile unsigned int*)(0x42210500UL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL1 (*((volatile unsigned int*)(0x42210504UL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL2 (*((volatile unsigned int*)(0x42210508UL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL3 (*((volatile unsigned int*)(0x4221050CUL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL4 (*((volatile unsigned int*)(0x42210510UL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL5 (*((volatile unsigned int*)(0x42210514UL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL6 (*((volatile unsigned int*)(0x42210518UL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL7 (*((volatile unsigned int*)(0x4221051CUL))) +#define bM4_AOS_DMA2_TRGSEL1_TRGSEL8 (*((volatile unsigned int*)(0x42210520UL))) +#define bM4_AOS_DMA2_TRGSEL1_COMTRG_EN0 (*((volatile unsigned int*)(0x42210578UL))) +#define bM4_AOS_DMA2_TRGSEL1_COMTRG_EN1 (*((volatile unsigned int*)(0x4221057CUL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL0 (*((volatile unsigned int*)(0x42210580UL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL1 (*((volatile unsigned int*)(0x42210584UL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL2 (*((volatile unsigned int*)(0x42210588UL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL3 (*((volatile unsigned int*)(0x4221058CUL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL4 (*((volatile unsigned int*)(0x42210590UL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL5 (*((volatile unsigned int*)(0x42210594UL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL6 (*((volatile unsigned int*)(0x42210598UL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL7 (*((volatile unsigned int*)(0x4221059CUL))) +#define bM4_AOS_DMA2_TRGSEL2_TRGSEL8 (*((volatile unsigned int*)(0x422105A0UL))) +#define bM4_AOS_DMA2_TRGSEL2_COMTRG_EN0 (*((volatile unsigned int*)(0x422105F8UL))) +#define bM4_AOS_DMA2_TRGSEL2_COMTRG_EN1 (*((volatile unsigned int*)(0x422105FCUL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL0 (*((volatile unsigned int*)(0x42210600UL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL1 (*((volatile unsigned int*)(0x42210604UL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL2 (*((volatile unsigned int*)(0x42210608UL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL3 (*((volatile unsigned int*)(0x4221060CUL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL4 (*((volatile unsigned int*)(0x42210610UL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL5 (*((volatile unsigned int*)(0x42210614UL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL6 (*((volatile unsigned int*)(0x42210618UL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL7 (*((volatile unsigned int*)(0x4221061CUL))) +#define bM4_AOS_DMA2_TRGSEL3_TRGSEL8 (*((volatile unsigned int*)(0x42210620UL))) +#define bM4_AOS_DMA2_TRGSEL3_COMTRG_EN0 (*((volatile unsigned int*)(0x42210678UL))) +#define bM4_AOS_DMA2_TRGSEL3_COMTRG_EN1 (*((volatile unsigned int*)(0x4221067CUL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL0 (*((volatile unsigned int*)(0x42210680UL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL1 (*((volatile unsigned int*)(0x42210684UL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL2 (*((volatile unsigned int*)(0x42210688UL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL3 (*((volatile unsigned int*)(0x4221068CUL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL4 (*((volatile unsigned int*)(0x42210690UL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL5 (*((volatile unsigned int*)(0x42210694UL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL6 (*((volatile unsigned int*)(0x42210698UL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL7 (*((volatile unsigned int*)(0x4221069CUL))) +#define bM4_AOS_DMA_TRGSELRC_TRGSEL8 (*((volatile unsigned int*)(0x422106A0UL))) +#define bM4_AOS_DMA_TRGSELRC_COMTRG_EN0 (*((volatile unsigned int*)(0x422106F8UL))) +#define bM4_AOS_DMA_TRGSELRC_COMTRG_EN1 (*((volatile unsigned int*)(0x422106FCUL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL0 (*((volatile unsigned int*)(0x42210700UL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL1 (*((volatile unsigned int*)(0x42210704UL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL2 (*((volatile unsigned int*)(0x42210708UL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL3 (*((volatile unsigned int*)(0x4221070CUL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL4 (*((volatile unsigned int*)(0x42210710UL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL5 (*((volatile unsigned int*)(0x42210714UL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL6 (*((volatile unsigned int*)(0x42210718UL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL7 (*((volatile unsigned int*)(0x4221071CUL))) +#define bM4_AOS_TMR6_HTSSR1_TRGSEL8 (*((volatile unsigned int*)(0x42210720UL))) +#define bM4_AOS_TMR6_HTSSR1_COMTRG_EN0 (*((volatile unsigned int*)(0x42210778UL))) +#define bM4_AOS_TMR6_HTSSR1_COMTRG_EN1 (*((volatile unsigned int*)(0x4221077CUL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL0 (*((volatile unsigned int*)(0x42210780UL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL1 (*((volatile unsigned int*)(0x42210784UL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL2 (*((volatile unsigned int*)(0x42210788UL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL3 (*((volatile unsigned int*)(0x4221078CUL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL4 (*((volatile unsigned int*)(0x42210790UL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL5 (*((volatile unsigned int*)(0x42210794UL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL6 (*((volatile unsigned int*)(0x42210798UL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL7 (*((volatile unsigned int*)(0x4221079CUL))) +#define bM4_AOS_TMR6_HTSSR2_TRGSEL8 (*((volatile unsigned int*)(0x422107A0UL))) +#define bM4_AOS_TMR6_HTSSR2_COMTRG_EN0 (*((volatile unsigned int*)(0x422107F8UL))) +#define bM4_AOS_TMR6_HTSSR2_COMTRG_EN1 (*((volatile unsigned int*)(0x422107FCUL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL0 (*((volatile unsigned int*)(0x42210800UL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL1 (*((volatile unsigned int*)(0x42210804UL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL2 (*((volatile unsigned int*)(0x42210808UL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL3 (*((volatile unsigned int*)(0x4221080CUL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL4 (*((volatile unsigned int*)(0x42210810UL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL5 (*((volatile unsigned int*)(0x42210814UL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL6 (*((volatile unsigned int*)(0x42210818UL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL7 (*((volatile unsigned int*)(0x4221081CUL))) +#define bM4_AOS_TMR0_HTSSR_TRGSEL8 (*((volatile unsigned int*)(0x42210820UL))) +#define bM4_AOS_TMR0_HTSSR_COMTRG_EN0 (*((volatile unsigned int*)(0x42210878UL))) +#define bM4_AOS_TMR0_HTSSR_COMTRG_EN1 (*((volatile unsigned int*)(0x4221087CUL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL0 (*((volatile unsigned int*)(0x42210880UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL1 (*((volatile unsigned int*)(0x42210884UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL2 (*((volatile unsigned int*)(0x42210888UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL3 (*((volatile unsigned int*)(0x4221088CUL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL4 (*((volatile unsigned int*)(0x42210890UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL5 (*((volatile unsigned int*)(0x42210894UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL6 (*((volatile unsigned int*)(0x42210898UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL7 (*((volatile unsigned int*)(0x4221089CUL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_TRGSEL8 (*((volatile unsigned int*)(0x422108A0UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_COMTRG_EN0 (*((volatile unsigned int*)(0x422108F8UL))) +#define bM4_AOS_PORT_PEVNTTRGSR12_COMTRG_EN1 (*((volatile unsigned int*)(0x422108FCUL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL0 (*((volatile unsigned int*)(0x42210900UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL1 (*((volatile unsigned int*)(0x42210904UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL2 (*((volatile unsigned int*)(0x42210908UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL3 (*((volatile unsigned int*)(0x4221090CUL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL4 (*((volatile unsigned int*)(0x42210910UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL5 (*((volatile unsigned int*)(0x42210914UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL6 (*((volatile unsigned int*)(0x42210918UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL7 (*((volatile unsigned int*)(0x4221091CUL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_TRGSEL8 (*((volatile unsigned int*)(0x42210920UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_COMTRG_EN0 (*((volatile unsigned int*)(0x42210978UL))) +#define bM4_AOS_PORT_PEVNTTRGSR34_COMTRG_EN1 (*((volatile unsigned int*)(0x4221097CUL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL0 (*((volatile unsigned int*)(0x42210980UL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL1 (*((volatile unsigned int*)(0x42210984UL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL2 (*((volatile unsigned int*)(0x42210988UL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL3 (*((volatile unsigned int*)(0x4221098CUL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL4 (*((volatile unsigned int*)(0x42210990UL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL5 (*((volatile unsigned int*)(0x42210994UL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL6 (*((volatile unsigned int*)(0x42210998UL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL7 (*((volatile unsigned int*)(0x4221099CUL))) +#define bM4_AOS_TMRA_HTSSR0_TRGSEL8 (*((volatile unsigned int*)(0x422109A0UL))) +#define bM4_AOS_TMRA_HTSSR0_COMTRG_EN0 (*((volatile unsigned int*)(0x422109F8UL))) +#define bM4_AOS_TMRA_HTSSR0_COMTRG_EN1 (*((volatile unsigned int*)(0x422109FCUL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL0 (*((volatile unsigned int*)(0x42210A00UL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL1 (*((volatile unsigned int*)(0x42210A04UL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL2 (*((volatile unsigned int*)(0x42210A08UL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL3 (*((volatile unsigned int*)(0x42210A0CUL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL4 (*((volatile unsigned int*)(0x42210A10UL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL5 (*((volatile unsigned int*)(0x42210A14UL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL6 (*((volatile unsigned int*)(0x42210A18UL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL7 (*((volatile unsigned int*)(0x42210A1CUL))) +#define bM4_AOS_TMRA_HTSSR1_TRGSEL8 (*((volatile unsigned int*)(0x42210A20UL))) +#define bM4_AOS_TMRA_HTSSR1_COMTRG_EN0 (*((volatile unsigned int*)(0x42210A78UL))) +#define bM4_AOS_TMRA_HTSSR1_COMTRG_EN1 (*((volatile unsigned int*)(0x42210A7CUL))) +#define bM4_AOS_OTS_TRG_TRGSEL0 (*((volatile unsigned int*)(0x42210A80UL))) +#define bM4_AOS_OTS_TRG_TRGSEL1 (*((volatile unsigned int*)(0x42210A84UL))) +#define bM4_AOS_OTS_TRG_TRGSEL2 (*((volatile unsigned int*)(0x42210A88UL))) +#define bM4_AOS_OTS_TRG_TRGSEL3 (*((volatile unsigned int*)(0x42210A8CUL))) +#define bM4_AOS_OTS_TRG_TRGSEL4 (*((volatile unsigned int*)(0x42210A90UL))) +#define bM4_AOS_OTS_TRG_TRGSEL5 (*((volatile unsigned int*)(0x42210A94UL))) +#define bM4_AOS_OTS_TRG_TRGSEL6 (*((volatile unsigned int*)(0x42210A98UL))) +#define bM4_AOS_OTS_TRG_TRGSEL7 (*((volatile unsigned int*)(0x42210A9CUL))) +#define bM4_AOS_OTS_TRG_TRGSEL8 (*((volatile unsigned int*)(0x42210AA0UL))) +#define bM4_AOS_OTS_TRG_COMTRG_EN0 (*((volatile unsigned int*)(0x42210AF8UL))) +#define bM4_AOS_OTS_TRG_COMTRG_EN1 (*((volatile unsigned int*)(0x42210AFCUL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL0 (*((volatile unsigned int*)(0x42210B00UL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL1 (*((volatile unsigned int*)(0x42210B04UL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL2 (*((volatile unsigned int*)(0x42210B08UL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL3 (*((volatile unsigned int*)(0x42210B0CUL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL4 (*((volatile unsigned int*)(0x42210B10UL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL5 (*((volatile unsigned int*)(0x42210B14UL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL6 (*((volatile unsigned int*)(0x42210B18UL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL7 (*((volatile unsigned int*)(0x42210B1CUL))) +#define bM4_AOS_ADC1_ITRGSELR0_TRGSEL8 (*((volatile unsigned int*)(0x42210B20UL))) +#define bM4_AOS_ADC1_ITRGSELR0_COMTRG_EN0 (*((volatile unsigned int*)(0x42210B78UL))) +#define bM4_AOS_ADC1_ITRGSELR0_COMTRG_EN1 (*((volatile unsigned int*)(0x42210B7CUL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL0 (*((volatile unsigned int*)(0x42210B80UL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL1 (*((volatile unsigned int*)(0x42210B84UL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL2 (*((volatile unsigned int*)(0x42210B88UL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL3 (*((volatile unsigned int*)(0x42210B8CUL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL4 (*((volatile unsigned int*)(0x42210B90UL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL5 (*((volatile unsigned int*)(0x42210B94UL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL6 (*((volatile unsigned int*)(0x42210B98UL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL7 (*((volatile unsigned int*)(0x42210B9CUL))) +#define bM4_AOS_ADC1_ITRGSELR1_TRGSEL8 (*((volatile unsigned int*)(0x42210BA0UL))) +#define bM4_AOS_ADC1_ITRGSELR1_COMTRG_EN0 (*((volatile unsigned int*)(0x42210BF8UL))) +#define bM4_AOS_ADC1_ITRGSELR1_COMTRG_EN1 (*((volatile unsigned int*)(0x42210BFCUL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL0 (*((volatile unsigned int*)(0x42210C00UL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL1 (*((volatile unsigned int*)(0x42210C04UL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL2 (*((volatile unsigned int*)(0x42210C08UL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL3 (*((volatile unsigned int*)(0x42210C0CUL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL4 (*((volatile unsigned int*)(0x42210C10UL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL5 (*((volatile unsigned int*)(0x42210C14UL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL6 (*((volatile unsigned int*)(0x42210C18UL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL7 (*((volatile unsigned int*)(0x42210C1CUL))) +#define bM4_AOS_ADC2_ITRGSELR0_TRGSEL8 (*((volatile unsigned int*)(0x42210C20UL))) +#define bM4_AOS_ADC2_ITRGSELR0_COMTRG_EN0 (*((volatile unsigned int*)(0x42210C78UL))) +#define bM4_AOS_ADC2_ITRGSELR0_COMTRG_EN1 (*((volatile unsigned int*)(0x42210C7CUL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL0 (*((volatile unsigned int*)(0x42210C80UL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL1 (*((volatile unsigned int*)(0x42210C84UL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL2 (*((volatile unsigned int*)(0x42210C88UL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL3 (*((volatile unsigned int*)(0x42210C8CUL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL4 (*((volatile unsigned int*)(0x42210C90UL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL5 (*((volatile unsigned int*)(0x42210C94UL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL6 (*((volatile unsigned int*)(0x42210C98UL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL7 (*((volatile unsigned int*)(0x42210C9CUL))) +#define bM4_AOS_ADC2_ITRGSELR1_TRGSEL8 (*((volatile unsigned int*)(0x42210CA0UL))) +#define bM4_AOS_ADC2_ITRGSELR1_COMTRG_EN0 (*((volatile unsigned int*)(0x42210CF8UL))) +#define bM4_AOS_ADC2_ITRGSELR1_COMTRG_EN1 (*((volatile unsigned int*)(0x42210CFCUL))) +#define bM4_AOS_COMTRG1_TRGSEL0 (*((volatile unsigned int*)(0x42210D00UL))) +#define bM4_AOS_COMTRG1_TRGSEL1 (*((volatile unsigned int*)(0x42210D04UL))) +#define bM4_AOS_COMTRG1_TRGSEL2 (*((volatile unsigned int*)(0x42210D08UL))) +#define bM4_AOS_COMTRG1_TRGSEL3 (*((volatile unsigned int*)(0x42210D0CUL))) +#define bM4_AOS_COMTRG1_TRGSEL4 (*((volatile unsigned int*)(0x42210D10UL))) +#define bM4_AOS_COMTRG1_TRGSEL5 (*((volatile unsigned int*)(0x42210D14UL))) +#define bM4_AOS_COMTRG1_TRGSEL6 (*((volatile unsigned int*)(0x42210D18UL))) +#define bM4_AOS_COMTRG1_TRGSEL7 (*((volatile unsigned int*)(0x42210D1CUL))) +#define bM4_AOS_COMTRG1_TRGSEL8 (*((volatile unsigned int*)(0x42210D20UL))) +#define bM4_AOS_COMTRG2_TRGSEL0 (*((volatile unsigned int*)(0x42210D80UL))) +#define bM4_AOS_COMTRG2_TRGSEL1 (*((volatile unsigned int*)(0x42210D84UL))) +#define bM4_AOS_COMTRG2_TRGSEL2 (*((volatile unsigned int*)(0x42210D88UL))) +#define bM4_AOS_COMTRG2_TRGSEL3 (*((volatile unsigned int*)(0x42210D8CUL))) +#define bM4_AOS_COMTRG2_TRGSEL4 (*((volatile unsigned int*)(0x42210D90UL))) +#define bM4_AOS_COMTRG2_TRGSEL5 (*((volatile unsigned int*)(0x42210D94UL))) +#define bM4_AOS_COMTRG2_TRGSEL6 (*((volatile unsigned int*)(0x42210D98UL))) +#define bM4_AOS_COMTRG2_TRGSEL7 (*((volatile unsigned int*)(0x42210D9CUL))) +#define bM4_AOS_COMTRG2_TRGSEL8 (*((volatile unsigned int*)(0x42210DA0UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR00 (*((volatile unsigned int*)(0x42212000UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR01 (*((volatile unsigned int*)(0x42212004UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR02 (*((volatile unsigned int*)(0x42212008UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR03 (*((volatile unsigned int*)(0x4221200CUL))) +#define bM4_AOS_PEVNTDIRR1_PDIR04 (*((volatile unsigned int*)(0x42212010UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR05 (*((volatile unsigned int*)(0x42212014UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR06 (*((volatile unsigned int*)(0x42212018UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR07 (*((volatile unsigned int*)(0x4221201CUL))) +#define bM4_AOS_PEVNTDIRR1_PDIR08 (*((volatile unsigned int*)(0x42212020UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR09 (*((volatile unsigned int*)(0x42212024UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR10 (*((volatile unsigned int*)(0x42212028UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR11 (*((volatile unsigned int*)(0x4221202CUL))) +#define bM4_AOS_PEVNTDIRR1_PDIR12 (*((volatile unsigned int*)(0x42212030UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR13 (*((volatile unsigned int*)(0x42212034UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR14 (*((volatile unsigned int*)(0x42212038UL))) +#define bM4_AOS_PEVNTDIRR1_PDIR15 (*((volatile unsigned int*)(0x4221203CUL))) +#define bM4_AOS_PEVNTIDR1_PIN00 (*((volatile unsigned int*)(0x42212080UL))) +#define bM4_AOS_PEVNTIDR1_PIN01 (*((volatile unsigned int*)(0x42212084UL))) +#define bM4_AOS_PEVNTIDR1_PIN02 (*((volatile unsigned int*)(0x42212088UL))) +#define bM4_AOS_PEVNTIDR1_PIN03 (*((volatile unsigned int*)(0x4221208CUL))) +#define bM4_AOS_PEVNTIDR1_PIN04 (*((volatile unsigned int*)(0x42212090UL))) +#define bM4_AOS_PEVNTIDR1_PIN05 (*((volatile unsigned int*)(0x42212094UL))) +#define bM4_AOS_PEVNTIDR1_PIN06 (*((volatile unsigned int*)(0x42212098UL))) +#define bM4_AOS_PEVNTIDR1_PIN07 (*((volatile unsigned int*)(0x4221209CUL))) +#define bM4_AOS_PEVNTIDR1_PIN08 (*((volatile unsigned int*)(0x422120A0UL))) +#define bM4_AOS_PEVNTIDR1_PIN09 (*((volatile unsigned int*)(0x422120A4UL))) +#define bM4_AOS_PEVNTIDR1_PIN10 (*((volatile unsigned int*)(0x422120A8UL))) +#define bM4_AOS_PEVNTIDR1_PIN11 (*((volatile unsigned int*)(0x422120ACUL))) +#define bM4_AOS_PEVNTIDR1_PIN12 (*((volatile unsigned int*)(0x422120B0UL))) +#define bM4_AOS_PEVNTIDR1_PIN13 (*((volatile unsigned int*)(0x422120B4UL))) +#define bM4_AOS_PEVNTIDR1_PIN14 (*((volatile unsigned int*)(0x422120B8UL))) +#define bM4_AOS_PEVNTIDR1_PIN15 (*((volatile unsigned int*)(0x422120BCUL))) +#define bM4_AOS_PEVNTODR1_POUT00 (*((volatile unsigned int*)(0x42212100UL))) +#define bM4_AOS_PEVNTODR1_POUT01 (*((volatile unsigned int*)(0x42212104UL))) +#define bM4_AOS_PEVNTODR1_POUT02 (*((volatile unsigned int*)(0x42212108UL))) +#define bM4_AOS_PEVNTODR1_POUT03 (*((volatile unsigned int*)(0x4221210CUL))) +#define bM4_AOS_PEVNTODR1_POUT04 (*((volatile unsigned int*)(0x42212110UL))) +#define bM4_AOS_PEVNTODR1_POUT05 (*((volatile unsigned int*)(0x42212114UL))) +#define bM4_AOS_PEVNTODR1_POUT06 (*((volatile unsigned int*)(0x42212118UL))) +#define bM4_AOS_PEVNTODR1_POUT07 (*((volatile unsigned int*)(0x4221211CUL))) +#define bM4_AOS_PEVNTODR1_POUT08 (*((volatile unsigned int*)(0x42212120UL))) +#define bM4_AOS_PEVNTODR1_POUT09 (*((volatile unsigned int*)(0x42212124UL))) +#define bM4_AOS_PEVNTODR1_POUT10 (*((volatile unsigned int*)(0x42212128UL))) +#define bM4_AOS_PEVNTODR1_POUT11 (*((volatile unsigned int*)(0x4221212CUL))) +#define bM4_AOS_PEVNTODR1_POUT12 (*((volatile unsigned int*)(0x42212130UL))) +#define bM4_AOS_PEVNTODR1_POUT13 (*((volatile unsigned int*)(0x42212134UL))) +#define bM4_AOS_PEVNTODR1_POUT14 (*((volatile unsigned int*)(0x42212138UL))) +#define bM4_AOS_PEVNTODR1_POUT15 (*((volatile unsigned int*)(0x4221213CUL))) +#define bM4_AOS_PEVNTORR1_POR00 (*((volatile unsigned int*)(0x42212180UL))) +#define bM4_AOS_PEVNTORR1_POR01 (*((volatile unsigned int*)(0x42212184UL))) +#define bM4_AOS_PEVNTORR1_POR02 (*((volatile unsigned int*)(0x42212188UL))) +#define bM4_AOS_PEVNTORR1_POR03 (*((volatile unsigned int*)(0x4221218CUL))) +#define bM4_AOS_PEVNTORR1_POR04 (*((volatile unsigned int*)(0x42212190UL))) +#define bM4_AOS_PEVNTORR1_POR05 (*((volatile unsigned int*)(0x42212194UL))) +#define bM4_AOS_PEVNTORR1_POR06 (*((volatile unsigned int*)(0x42212198UL))) +#define bM4_AOS_PEVNTORR1_POR07 (*((volatile unsigned int*)(0x4221219CUL))) +#define bM4_AOS_PEVNTORR1_POR08 (*((volatile unsigned int*)(0x422121A0UL))) +#define bM4_AOS_PEVNTORR1_POR09 (*((volatile unsigned int*)(0x422121A4UL))) +#define bM4_AOS_PEVNTORR1_POR10 (*((volatile unsigned int*)(0x422121A8UL))) +#define bM4_AOS_PEVNTORR1_POR11 (*((volatile unsigned int*)(0x422121ACUL))) +#define bM4_AOS_PEVNTORR1_POR12 (*((volatile unsigned int*)(0x422121B0UL))) +#define bM4_AOS_PEVNTORR1_POR13 (*((volatile unsigned int*)(0x422121B4UL))) +#define bM4_AOS_PEVNTORR1_POR14 (*((volatile unsigned int*)(0x422121B8UL))) +#define bM4_AOS_PEVNTORR1_POR15 (*((volatile unsigned int*)(0x422121BCUL))) +#define bM4_AOS_PEVNTOSR1_POS00 (*((volatile unsigned int*)(0x42212200UL))) +#define bM4_AOS_PEVNTOSR1_POS01 (*((volatile unsigned int*)(0x42212204UL))) +#define bM4_AOS_PEVNTOSR1_POS02 (*((volatile unsigned int*)(0x42212208UL))) +#define bM4_AOS_PEVNTOSR1_POS03 (*((volatile unsigned int*)(0x4221220CUL))) +#define bM4_AOS_PEVNTOSR1_POS04 (*((volatile unsigned int*)(0x42212210UL))) +#define bM4_AOS_PEVNTOSR1_POS05 (*((volatile unsigned int*)(0x42212214UL))) +#define bM4_AOS_PEVNTOSR1_POS06 (*((volatile unsigned int*)(0x42212218UL))) +#define bM4_AOS_PEVNTOSR1_POS07 (*((volatile unsigned int*)(0x4221221CUL))) +#define bM4_AOS_PEVNTOSR1_POS08 (*((volatile unsigned int*)(0x42212220UL))) +#define bM4_AOS_PEVNTOSR1_POS09 (*((volatile unsigned int*)(0x42212224UL))) +#define bM4_AOS_PEVNTOSR1_POS10 (*((volatile unsigned int*)(0x42212228UL))) +#define bM4_AOS_PEVNTOSR1_POS11 (*((volatile unsigned int*)(0x4221222CUL))) +#define bM4_AOS_PEVNTOSR1_POS12 (*((volatile unsigned int*)(0x42212230UL))) +#define bM4_AOS_PEVNTOSR1_POS13 (*((volatile unsigned int*)(0x42212234UL))) +#define bM4_AOS_PEVNTOSR1_POS14 (*((volatile unsigned int*)(0x42212238UL))) +#define bM4_AOS_PEVNTOSR1_POS15 (*((volatile unsigned int*)(0x4221223CUL))) +#define bM4_AOS_PEVNTRISR1_RIS00 (*((volatile unsigned int*)(0x42212280UL))) +#define bM4_AOS_PEVNTRISR1_RIS01 (*((volatile unsigned int*)(0x42212284UL))) +#define bM4_AOS_PEVNTRISR1_RIS02 (*((volatile unsigned int*)(0x42212288UL))) +#define bM4_AOS_PEVNTRISR1_RIS03 (*((volatile unsigned int*)(0x4221228CUL))) +#define bM4_AOS_PEVNTRISR1_RIS04 (*((volatile unsigned int*)(0x42212290UL))) +#define bM4_AOS_PEVNTRISR1_RIS05 (*((volatile unsigned int*)(0x42212294UL))) +#define bM4_AOS_PEVNTRISR1_RIS06 (*((volatile unsigned int*)(0x42212298UL))) +#define bM4_AOS_PEVNTRISR1_RIS07 (*((volatile unsigned int*)(0x4221229CUL))) +#define bM4_AOS_PEVNTRISR1_RIS08 (*((volatile unsigned int*)(0x422122A0UL))) +#define bM4_AOS_PEVNTRISR1_RIS09 (*((volatile unsigned int*)(0x422122A4UL))) +#define bM4_AOS_PEVNTRISR1_RIS10 (*((volatile unsigned int*)(0x422122A8UL))) +#define bM4_AOS_PEVNTRISR1_RIS11 (*((volatile unsigned int*)(0x422122ACUL))) +#define bM4_AOS_PEVNTRISR1_RIS12 (*((volatile unsigned int*)(0x422122B0UL))) +#define bM4_AOS_PEVNTRISR1_RIS13 (*((volatile unsigned int*)(0x422122B4UL))) +#define bM4_AOS_PEVNTRISR1_RIS14 (*((volatile unsigned int*)(0x422122B8UL))) +#define bM4_AOS_PEVNTRISR1_RIS15 (*((volatile unsigned int*)(0x422122BCUL))) +#define bM4_AOS_PEVNTFAL1_FAL00 (*((volatile unsigned int*)(0x42212300UL))) +#define bM4_AOS_PEVNTFAL1_FAL01 (*((volatile unsigned int*)(0x42212304UL))) +#define bM4_AOS_PEVNTFAL1_FAL02 (*((volatile unsigned int*)(0x42212308UL))) +#define bM4_AOS_PEVNTFAL1_FAL03 (*((volatile unsigned int*)(0x4221230CUL))) +#define bM4_AOS_PEVNTFAL1_FAL04 (*((volatile unsigned int*)(0x42212310UL))) +#define bM4_AOS_PEVNTFAL1_FAL05 (*((volatile unsigned int*)(0x42212314UL))) +#define bM4_AOS_PEVNTFAL1_FAL06 (*((volatile unsigned int*)(0x42212318UL))) +#define bM4_AOS_PEVNTFAL1_FAL07 (*((volatile unsigned int*)(0x4221231CUL))) +#define bM4_AOS_PEVNTFAL1_FAL08 (*((volatile unsigned int*)(0x42212320UL))) +#define bM4_AOS_PEVNTFAL1_FAL09 (*((volatile unsigned int*)(0x42212324UL))) +#define bM4_AOS_PEVNTFAL1_FAL10 (*((volatile unsigned int*)(0x42212328UL))) +#define bM4_AOS_PEVNTFAL1_FAL11 (*((volatile unsigned int*)(0x4221232CUL))) +#define bM4_AOS_PEVNTFAL1_FAL12 (*((volatile unsigned int*)(0x42212330UL))) +#define bM4_AOS_PEVNTFAL1_FAL13 (*((volatile unsigned int*)(0x42212334UL))) +#define bM4_AOS_PEVNTFAL1_FAL14 (*((volatile unsigned int*)(0x42212338UL))) +#define bM4_AOS_PEVNTFAL1_FAL15 (*((volatile unsigned int*)(0x4221233CUL))) +#define bM4_AOS_PEVNTDIRR2_PDIR00 (*((volatile unsigned int*)(0x42212380UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR01 (*((volatile unsigned int*)(0x42212384UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR02 (*((volatile unsigned int*)(0x42212388UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR03 (*((volatile unsigned int*)(0x4221238CUL))) +#define bM4_AOS_PEVNTDIRR2_PDIR04 (*((volatile unsigned int*)(0x42212390UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR05 (*((volatile unsigned int*)(0x42212394UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR06 (*((volatile unsigned int*)(0x42212398UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR07 (*((volatile unsigned int*)(0x4221239CUL))) +#define bM4_AOS_PEVNTDIRR2_PDIR08 (*((volatile unsigned int*)(0x422123A0UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR09 (*((volatile unsigned int*)(0x422123A4UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR10 (*((volatile unsigned int*)(0x422123A8UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR11 (*((volatile unsigned int*)(0x422123ACUL))) +#define bM4_AOS_PEVNTDIRR2_PDIR12 (*((volatile unsigned int*)(0x422123B0UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR13 (*((volatile unsigned int*)(0x422123B4UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR14 (*((volatile unsigned int*)(0x422123B8UL))) +#define bM4_AOS_PEVNTDIRR2_PDIR15 (*((volatile unsigned int*)(0x422123BCUL))) +#define bM4_AOS_PEVNTIDR2_PIN00 (*((volatile unsigned int*)(0x42212400UL))) +#define bM4_AOS_PEVNTIDR2_PIN01 (*((volatile unsigned int*)(0x42212404UL))) +#define bM4_AOS_PEVNTIDR2_PIN02 (*((volatile unsigned int*)(0x42212408UL))) +#define bM4_AOS_PEVNTIDR2_PIN03 (*((volatile unsigned int*)(0x4221240CUL))) +#define bM4_AOS_PEVNTIDR2_PIN04 (*((volatile unsigned int*)(0x42212410UL))) +#define bM4_AOS_PEVNTIDR2_PIN05 (*((volatile unsigned int*)(0x42212414UL))) +#define bM4_AOS_PEVNTIDR2_PIN06 (*((volatile unsigned int*)(0x42212418UL))) +#define bM4_AOS_PEVNTIDR2_PIN07 (*((volatile unsigned int*)(0x4221241CUL))) +#define bM4_AOS_PEVNTIDR2_PIN08 (*((volatile unsigned int*)(0x42212420UL))) +#define bM4_AOS_PEVNTIDR2_PIN09 (*((volatile unsigned int*)(0x42212424UL))) +#define bM4_AOS_PEVNTIDR2_PIN10 (*((volatile unsigned int*)(0x42212428UL))) +#define bM4_AOS_PEVNTIDR2_PIN11 (*((volatile unsigned int*)(0x4221242CUL))) +#define bM4_AOS_PEVNTIDR2_PIN12 (*((volatile unsigned int*)(0x42212430UL))) +#define bM4_AOS_PEVNTIDR2_PIN13 (*((volatile unsigned int*)(0x42212434UL))) +#define bM4_AOS_PEVNTIDR2_PIN14 (*((volatile unsigned int*)(0x42212438UL))) +#define bM4_AOS_PEVNTIDR2_PIN15 (*((volatile unsigned int*)(0x4221243CUL))) +#define bM4_AOS_PEVNTODR2_POUT00 (*((volatile unsigned int*)(0x42212480UL))) +#define bM4_AOS_PEVNTODR2_POUT01 (*((volatile unsigned int*)(0x42212484UL))) +#define bM4_AOS_PEVNTODR2_POUT02 (*((volatile unsigned int*)(0x42212488UL))) +#define bM4_AOS_PEVNTODR2_POUT03 (*((volatile unsigned int*)(0x4221248CUL))) +#define bM4_AOS_PEVNTODR2_POUT04 (*((volatile unsigned int*)(0x42212490UL))) +#define bM4_AOS_PEVNTODR2_POUT05 (*((volatile unsigned int*)(0x42212494UL))) +#define bM4_AOS_PEVNTODR2_POUT06 (*((volatile unsigned int*)(0x42212498UL))) +#define bM4_AOS_PEVNTODR2_POUT07 (*((volatile unsigned int*)(0x4221249CUL))) +#define bM4_AOS_PEVNTODR2_POUT08 (*((volatile unsigned int*)(0x422124A0UL))) +#define bM4_AOS_PEVNTODR2_POUT09 (*((volatile unsigned int*)(0x422124A4UL))) +#define bM4_AOS_PEVNTODR2_POUT10 (*((volatile unsigned int*)(0x422124A8UL))) +#define bM4_AOS_PEVNTODR2_POUT11 (*((volatile unsigned int*)(0x422124ACUL))) +#define bM4_AOS_PEVNTODR2_POUT12 (*((volatile unsigned int*)(0x422124B0UL))) +#define bM4_AOS_PEVNTODR2_POUT13 (*((volatile unsigned int*)(0x422124B4UL))) +#define bM4_AOS_PEVNTODR2_POUT14 (*((volatile unsigned int*)(0x422124B8UL))) +#define bM4_AOS_PEVNTODR2_POUT15 (*((volatile unsigned int*)(0x422124BCUL))) +#define bM4_AOS_PEVNTORR2_POR00 (*((volatile unsigned int*)(0x42212500UL))) +#define bM4_AOS_PEVNTORR2_POR01 (*((volatile unsigned int*)(0x42212504UL))) +#define bM4_AOS_PEVNTORR2_POR02 (*((volatile unsigned int*)(0x42212508UL))) +#define bM4_AOS_PEVNTORR2_POR03 (*((volatile unsigned int*)(0x4221250CUL))) +#define bM4_AOS_PEVNTORR2_POR04 (*((volatile unsigned int*)(0x42212510UL))) +#define bM4_AOS_PEVNTORR2_POR05 (*((volatile unsigned int*)(0x42212514UL))) +#define bM4_AOS_PEVNTORR2_POR06 (*((volatile unsigned int*)(0x42212518UL))) +#define bM4_AOS_PEVNTORR2_POR07 (*((volatile unsigned int*)(0x4221251CUL))) +#define bM4_AOS_PEVNTORR2_POR08 (*((volatile unsigned int*)(0x42212520UL))) +#define bM4_AOS_PEVNTORR2_POR09 (*((volatile unsigned int*)(0x42212524UL))) +#define bM4_AOS_PEVNTORR2_POR10 (*((volatile unsigned int*)(0x42212528UL))) +#define bM4_AOS_PEVNTORR2_POR11 (*((volatile unsigned int*)(0x4221252CUL))) +#define bM4_AOS_PEVNTORR2_POR12 (*((volatile unsigned int*)(0x42212530UL))) +#define bM4_AOS_PEVNTORR2_POR13 (*((volatile unsigned int*)(0x42212534UL))) +#define bM4_AOS_PEVNTORR2_POR14 (*((volatile unsigned int*)(0x42212538UL))) +#define bM4_AOS_PEVNTORR2_POR15 (*((volatile unsigned int*)(0x4221253CUL))) +#define bM4_AOS_PEVNTOSR2_POS00 (*((volatile unsigned int*)(0x42212580UL))) +#define bM4_AOS_PEVNTOSR2_POS01 (*((volatile unsigned int*)(0x42212584UL))) +#define bM4_AOS_PEVNTOSR2_POS02 (*((volatile unsigned int*)(0x42212588UL))) +#define bM4_AOS_PEVNTOSR2_POS03 (*((volatile unsigned int*)(0x4221258CUL))) +#define bM4_AOS_PEVNTOSR2_POS04 (*((volatile unsigned int*)(0x42212590UL))) +#define bM4_AOS_PEVNTOSR2_POS05 (*((volatile unsigned int*)(0x42212594UL))) +#define bM4_AOS_PEVNTOSR2_POS06 (*((volatile unsigned int*)(0x42212598UL))) +#define bM4_AOS_PEVNTOSR2_POS07 (*((volatile unsigned int*)(0x4221259CUL))) +#define bM4_AOS_PEVNTOSR2_POS08 (*((volatile unsigned int*)(0x422125A0UL))) +#define bM4_AOS_PEVNTOSR2_POS09 (*((volatile unsigned int*)(0x422125A4UL))) +#define bM4_AOS_PEVNTOSR2_POS10 (*((volatile unsigned int*)(0x422125A8UL))) +#define bM4_AOS_PEVNTOSR2_POS11 (*((volatile unsigned int*)(0x422125ACUL))) +#define bM4_AOS_PEVNTOSR2_POS12 (*((volatile unsigned int*)(0x422125B0UL))) +#define bM4_AOS_PEVNTOSR2_POS13 (*((volatile unsigned int*)(0x422125B4UL))) +#define bM4_AOS_PEVNTOSR2_POS14 (*((volatile unsigned int*)(0x422125B8UL))) +#define bM4_AOS_PEVNTOSR2_POS15 (*((volatile unsigned int*)(0x422125BCUL))) +#define bM4_AOS_PEVNTRISR2_RIS00 (*((volatile unsigned int*)(0x42212600UL))) +#define bM4_AOS_PEVNTRISR2_RIS01 (*((volatile unsigned int*)(0x42212604UL))) +#define bM4_AOS_PEVNTRISR2_RIS02 (*((volatile unsigned int*)(0x42212608UL))) +#define bM4_AOS_PEVNTRISR2_RIS03 (*((volatile unsigned int*)(0x4221260CUL))) +#define bM4_AOS_PEVNTRISR2_RIS04 (*((volatile unsigned int*)(0x42212610UL))) +#define bM4_AOS_PEVNTRISR2_RIS05 (*((volatile unsigned int*)(0x42212614UL))) +#define bM4_AOS_PEVNTRISR2_RIS06 (*((volatile unsigned int*)(0x42212618UL))) +#define bM4_AOS_PEVNTRISR2_RIS07 (*((volatile unsigned int*)(0x4221261CUL))) +#define bM4_AOS_PEVNTRISR2_RIS08 (*((volatile unsigned int*)(0x42212620UL))) +#define bM4_AOS_PEVNTRISR2_RIS09 (*((volatile unsigned int*)(0x42212624UL))) +#define bM4_AOS_PEVNTRISR2_RIS10 (*((volatile unsigned int*)(0x42212628UL))) +#define bM4_AOS_PEVNTRISR2_RIS11 (*((volatile unsigned int*)(0x4221262CUL))) +#define bM4_AOS_PEVNTRISR2_RIS12 (*((volatile unsigned int*)(0x42212630UL))) +#define bM4_AOS_PEVNTRISR2_RIS13 (*((volatile unsigned int*)(0x42212634UL))) +#define bM4_AOS_PEVNTRISR2_RIS14 (*((volatile unsigned int*)(0x42212638UL))) +#define bM4_AOS_PEVNTRISR2_RIS15 (*((volatile unsigned int*)(0x4221263CUL))) +#define bM4_AOS_PEVNTFAL2_FAL00 (*((volatile unsigned int*)(0x42212680UL))) +#define bM4_AOS_PEVNTFAL2_FAL01 (*((volatile unsigned int*)(0x42212684UL))) +#define bM4_AOS_PEVNTFAL2_FAL02 (*((volatile unsigned int*)(0x42212688UL))) +#define bM4_AOS_PEVNTFAL2_FAL03 (*((volatile unsigned int*)(0x4221268CUL))) +#define bM4_AOS_PEVNTFAL2_FAL04 (*((volatile unsigned int*)(0x42212690UL))) +#define bM4_AOS_PEVNTFAL2_FAL05 (*((volatile unsigned int*)(0x42212694UL))) +#define bM4_AOS_PEVNTFAL2_FAL06 (*((volatile unsigned int*)(0x42212698UL))) +#define bM4_AOS_PEVNTFAL2_FAL07 (*((volatile unsigned int*)(0x4221269CUL))) +#define bM4_AOS_PEVNTFAL2_FAL08 (*((volatile unsigned int*)(0x422126A0UL))) +#define bM4_AOS_PEVNTFAL2_FAL09 (*((volatile unsigned int*)(0x422126A4UL))) +#define bM4_AOS_PEVNTFAL2_FAL10 (*((volatile unsigned int*)(0x422126A8UL))) +#define bM4_AOS_PEVNTFAL2_FAL11 (*((volatile unsigned int*)(0x422126ACUL))) +#define bM4_AOS_PEVNTFAL2_FAL12 (*((volatile unsigned int*)(0x422126B0UL))) +#define bM4_AOS_PEVNTFAL2_FAL13 (*((volatile unsigned int*)(0x422126B4UL))) +#define bM4_AOS_PEVNTFAL2_FAL14 (*((volatile unsigned int*)(0x422126B8UL))) +#define bM4_AOS_PEVNTFAL2_FAL15 (*((volatile unsigned int*)(0x422126BCUL))) +#define bM4_AOS_PEVNTDIRR3_PDIR00 (*((volatile unsigned int*)(0x42212700UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR01 (*((volatile unsigned int*)(0x42212704UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR02 (*((volatile unsigned int*)(0x42212708UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR03 (*((volatile unsigned int*)(0x4221270CUL))) +#define bM4_AOS_PEVNTDIRR3_PDIR04 (*((volatile unsigned int*)(0x42212710UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR05 (*((volatile unsigned int*)(0x42212714UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR06 (*((volatile unsigned int*)(0x42212718UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR07 (*((volatile unsigned int*)(0x4221271CUL))) +#define bM4_AOS_PEVNTDIRR3_PDIR08 (*((volatile unsigned int*)(0x42212720UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR09 (*((volatile unsigned int*)(0x42212724UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR10 (*((volatile unsigned int*)(0x42212728UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR11 (*((volatile unsigned int*)(0x4221272CUL))) +#define bM4_AOS_PEVNTDIRR3_PDIR12 (*((volatile unsigned int*)(0x42212730UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR13 (*((volatile unsigned int*)(0x42212734UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR14 (*((volatile unsigned int*)(0x42212738UL))) +#define bM4_AOS_PEVNTDIRR3_PDIR15 (*((volatile unsigned int*)(0x4221273CUL))) +#define bM4_AOS_PEVNTIDR3_PIN00 (*((volatile unsigned int*)(0x42212780UL))) +#define bM4_AOS_PEVNTIDR3_PIN01 (*((volatile unsigned int*)(0x42212784UL))) +#define bM4_AOS_PEVNTIDR3_PIN02 (*((volatile unsigned int*)(0x42212788UL))) +#define bM4_AOS_PEVNTIDR3_PIN03 (*((volatile unsigned int*)(0x4221278CUL))) +#define bM4_AOS_PEVNTIDR3_PIN04 (*((volatile unsigned int*)(0x42212790UL))) +#define bM4_AOS_PEVNTIDR3_PIN05 (*((volatile unsigned int*)(0x42212794UL))) +#define bM4_AOS_PEVNTIDR3_PIN06 (*((volatile unsigned int*)(0x42212798UL))) +#define bM4_AOS_PEVNTIDR3_PIN07 (*((volatile unsigned int*)(0x4221279CUL))) +#define bM4_AOS_PEVNTIDR3_PIN08 (*((volatile unsigned int*)(0x422127A0UL))) +#define bM4_AOS_PEVNTIDR3_PIN09 (*((volatile unsigned int*)(0x422127A4UL))) +#define bM4_AOS_PEVNTIDR3_PIN10 (*((volatile unsigned int*)(0x422127A8UL))) +#define bM4_AOS_PEVNTIDR3_PIN11 (*((volatile unsigned int*)(0x422127ACUL))) +#define bM4_AOS_PEVNTIDR3_PIN12 (*((volatile unsigned int*)(0x422127B0UL))) +#define bM4_AOS_PEVNTIDR3_PIN13 (*((volatile unsigned int*)(0x422127B4UL))) +#define bM4_AOS_PEVNTIDR3_PIN14 (*((volatile unsigned int*)(0x422127B8UL))) +#define bM4_AOS_PEVNTIDR3_PIN15 (*((volatile unsigned int*)(0x422127BCUL))) +#define bM4_AOS_PEVNTODR3_POUT00 (*((volatile unsigned int*)(0x42212800UL))) +#define bM4_AOS_PEVNTODR3_POUT01 (*((volatile unsigned int*)(0x42212804UL))) +#define bM4_AOS_PEVNTODR3_POUT02 (*((volatile unsigned int*)(0x42212808UL))) +#define bM4_AOS_PEVNTODR3_POUT03 (*((volatile unsigned int*)(0x4221280CUL))) +#define bM4_AOS_PEVNTODR3_POUT04 (*((volatile unsigned int*)(0x42212810UL))) +#define bM4_AOS_PEVNTODR3_POUT05 (*((volatile unsigned int*)(0x42212814UL))) +#define bM4_AOS_PEVNTODR3_POUT06 (*((volatile unsigned int*)(0x42212818UL))) +#define bM4_AOS_PEVNTODR3_POUT07 (*((volatile unsigned int*)(0x4221281CUL))) +#define bM4_AOS_PEVNTODR3_POUT08 (*((volatile unsigned int*)(0x42212820UL))) +#define bM4_AOS_PEVNTODR3_POUT09 (*((volatile unsigned int*)(0x42212824UL))) +#define bM4_AOS_PEVNTODR3_POUT10 (*((volatile unsigned int*)(0x42212828UL))) +#define bM4_AOS_PEVNTODR3_POUT11 (*((volatile unsigned int*)(0x4221282CUL))) +#define bM4_AOS_PEVNTODR3_POUT12 (*((volatile unsigned int*)(0x42212830UL))) +#define bM4_AOS_PEVNTODR3_POUT13 (*((volatile unsigned int*)(0x42212834UL))) +#define bM4_AOS_PEVNTODR3_POUT14 (*((volatile unsigned int*)(0x42212838UL))) +#define bM4_AOS_PEVNTODR3_POUT15 (*((volatile unsigned int*)(0x4221283CUL))) +#define bM4_AOS_PEVNTORR3_POR00 (*((volatile unsigned int*)(0x42212880UL))) +#define bM4_AOS_PEVNTORR3_POR01 (*((volatile unsigned int*)(0x42212884UL))) +#define bM4_AOS_PEVNTORR3_POR02 (*((volatile unsigned int*)(0x42212888UL))) +#define bM4_AOS_PEVNTORR3_POR03 (*((volatile unsigned int*)(0x4221288CUL))) +#define bM4_AOS_PEVNTORR3_POR04 (*((volatile unsigned int*)(0x42212890UL))) +#define bM4_AOS_PEVNTORR3_POR05 (*((volatile unsigned int*)(0x42212894UL))) +#define bM4_AOS_PEVNTORR3_POR06 (*((volatile unsigned int*)(0x42212898UL))) +#define bM4_AOS_PEVNTORR3_POR07 (*((volatile unsigned int*)(0x4221289CUL))) +#define bM4_AOS_PEVNTORR3_POR08 (*((volatile unsigned int*)(0x422128A0UL))) +#define bM4_AOS_PEVNTORR3_POR09 (*((volatile unsigned int*)(0x422128A4UL))) +#define bM4_AOS_PEVNTORR3_POR10 (*((volatile unsigned int*)(0x422128A8UL))) +#define bM4_AOS_PEVNTORR3_POR11 (*((volatile unsigned int*)(0x422128ACUL))) +#define bM4_AOS_PEVNTORR3_POR12 (*((volatile unsigned int*)(0x422128B0UL))) +#define bM4_AOS_PEVNTORR3_POR13 (*((volatile unsigned int*)(0x422128B4UL))) +#define bM4_AOS_PEVNTORR3_POR14 (*((volatile unsigned int*)(0x422128B8UL))) +#define bM4_AOS_PEVNTORR3_POR15 (*((volatile unsigned int*)(0x422128BCUL))) +#define bM4_AOS_PEVNTOSR3_POS00 (*((volatile unsigned int*)(0x42212900UL))) +#define bM4_AOS_PEVNTOSR3_POS01 (*((volatile unsigned int*)(0x42212904UL))) +#define bM4_AOS_PEVNTOSR3_POS02 (*((volatile unsigned int*)(0x42212908UL))) +#define bM4_AOS_PEVNTOSR3_POS03 (*((volatile unsigned int*)(0x4221290CUL))) +#define bM4_AOS_PEVNTOSR3_POS04 (*((volatile unsigned int*)(0x42212910UL))) +#define bM4_AOS_PEVNTOSR3_POS05 (*((volatile unsigned int*)(0x42212914UL))) +#define bM4_AOS_PEVNTOSR3_POS06 (*((volatile unsigned int*)(0x42212918UL))) +#define bM4_AOS_PEVNTOSR3_POS07 (*((volatile unsigned int*)(0x4221291CUL))) +#define bM4_AOS_PEVNTOSR3_POS08 (*((volatile unsigned int*)(0x42212920UL))) +#define bM4_AOS_PEVNTOSR3_POS09 (*((volatile unsigned int*)(0x42212924UL))) +#define bM4_AOS_PEVNTOSR3_POS10 (*((volatile unsigned int*)(0x42212928UL))) +#define bM4_AOS_PEVNTOSR3_POS11 (*((volatile unsigned int*)(0x4221292CUL))) +#define bM4_AOS_PEVNTOSR3_POS12 (*((volatile unsigned int*)(0x42212930UL))) +#define bM4_AOS_PEVNTOSR3_POS13 (*((volatile unsigned int*)(0x42212934UL))) +#define bM4_AOS_PEVNTOSR3_POS14 (*((volatile unsigned int*)(0x42212938UL))) +#define bM4_AOS_PEVNTOSR3_POS15 (*((volatile unsigned int*)(0x4221293CUL))) +#define bM4_AOS_PEVNTRISR3_RIS00 (*((volatile unsigned int*)(0x42212980UL))) +#define bM4_AOS_PEVNTRISR3_RIS01 (*((volatile unsigned int*)(0x42212984UL))) +#define bM4_AOS_PEVNTRISR3_RIS02 (*((volatile unsigned int*)(0x42212988UL))) +#define bM4_AOS_PEVNTRISR3_RIS03 (*((volatile unsigned int*)(0x4221298CUL))) +#define bM4_AOS_PEVNTRISR3_RIS04 (*((volatile unsigned int*)(0x42212990UL))) +#define bM4_AOS_PEVNTRISR3_RIS05 (*((volatile unsigned int*)(0x42212994UL))) +#define bM4_AOS_PEVNTRISR3_RIS06 (*((volatile unsigned int*)(0x42212998UL))) +#define bM4_AOS_PEVNTRISR3_RIS07 (*((volatile unsigned int*)(0x4221299CUL))) +#define bM4_AOS_PEVNTRISR3_RIS08 (*((volatile unsigned int*)(0x422129A0UL))) +#define bM4_AOS_PEVNTRISR3_RIS09 (*((volatile unsigned int*)(0x422129A4UL))) +#define bM4_AOS_PEVNTRISR3_RIS10 (*((volatile unsigned int*)(0x422129A8UL))) +#define bM4_AOS_PEVNTRISR3_RIS11 (*((volatile unsigned int*)(0x422129ACUL))) +#define bM4_AOS_PEVNTRISR3_RIS12 (*((volatile unsigned int*)(0x422129B0UL))) +#define bM4_AOS_PEVNTRISR3_RIS13 (*((volatile unsigned int*)(0x422129B4UL))) +#define bM4_AOS_PEVNTRISR3_RIS14 (*((volatile unsigned int*)(0x422129B8UL))) +#define bM4_AOS_PEVNTRISR3_RIS15 (*((volatile unsigned int*)(0x422129BCUL))) +#define bM4_AOS_PEVNTFAL3_FAL00 (*((volatile unsigned int*)(0x42212A00UL))) +#define bM4_AOS_PEVNTFAL3_FAL01 (*((volatile unsigned int*)(0x42212A04UL))) +#define bM4_AOS_PEVNTFAL3_FAL02 (*((volatile unsigned int*)(0x42212A08UL))) +#define bM4_AOS_PEVNTFAL3_FAL03 (*((volatile unsigned int*)(0x42212A0CUL))) +#define bM4_AOS_PEVNTFAL3_FAL04 (*((volatile unsigned int*)(0x42212A10UL))) +#define bM4_AOS_PEVNTFAL3_FAL05 (*((volatile unsigned int*)(0x42212A14UL))) +#define bM4_AOS_PEVNTFAL3_FAL06 (*((volatile unsigned int*)(0x42212A18UL))) +#define bM4_AOS_PEVNTFAL3_FAL07 (*((volatile unsigned int*)(0x42212A1CUL))) +#define bM4_AOS_PEVNTFAL3_FAL08 (*((volatile unsigned int*)(0x42212A20UL))) +#define bM4_AOS_PEVNTFAL3_FAL09 (*((volatile unsigned int*)(0x42212A24UL))) +#define bM4_AOS_PEVNTFAL3_FAL10 (*((volatile unsigned int*)(0x42212A28UL))) +#define bM4_AOS_PEVNTFAL3_FAL11 (*((volatile unsigned int*)(0x42212A2CUL))) +#define bM4_AOS_PEVNTFAL3_FAL12 (*((volatile unsigned int*)(0x42212A30UL))) +#define bM4_AOS_PEVNTFAL3_FAL13 (*((volatile unsigned int*)(0x42212A34UL))) +#define bM4_AOS_PEVNTFAL3_FAL14 (*((volatile unsigned int*)(0x42212A38UL))) +#define bM4_AOS_PEVNTFAL3_FAL15 (*((volatile unsigned int*)(0x42212A3CUL))) +#define bM4_AOS_PEVNTDIRR4_PDIR00 (*((volatile unsigned int*)(0x42212A80UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR01 (*((volatile unsigned int*)(0x42212A84UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR02 (*((volatile unsigned int*)(0x42212A88UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR03 (*((volatile unsigned int*)(0x42212A8CUL))) +#define bM4_AOS_PEVNTDIRR4_PDIR04 (*((volatile unsigned int*)(0x42212A90UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR05 (*((volatile unsigned int*)(0x42212A94UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR06 (*((volatile unsigned int*)(0x42212A98UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR07 (*((volatile unsigned int*)(0x42212A9CUL))) +#define bM4_AOS_PEVNTDIRR4_PDIR08 (*((volatile unsigned int*)(0x42212AA0UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR09 (*((volatile unsigned int*)(0x42212AA4UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR10 (*((volatile unsigned int*)(0x42212AA8UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR11 (*((volatile unsigned int*)(0x42212AACUL))) +#define bM4_AOS_PEVNTDIRR4_PDIR12 (*((volatile unsigned int*)(0x42212AB0UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR13 (*((volatile unsigned int*)(0x42212AB4UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR14 (*((volatile unsigned int*)(0x42212AB8UL))) +#define bM4_AOS_PEVNTDIRR4_PDIR15 (*((volatile unsigned int*)(0x42212ABCUL))) +#define bM4_AOS_PEVNTIDR4_PIN00 (*((volatile unsigned int*)(0x42212B00UL))) +#define bM4_AOS_PEVNTIDR4_PIN01 (*((volatile unsigned int*)(0x42212B04UL))) +#define bM4_AOS_PEVNTIDR4_PIN02 (*((volatile unsigned int*)(0x42212B08UL))) +#define bM4_AOS_PEVNTIDR4_PIN03 (*((volatile unsigned int*)(0x42212B0CUL))) +#define bM4_AOS_PEVNTIDR4_PIN04 (*((volatile unsigned int*)(0x42212B10UL))) +#define bM4_AOS_PEVNTIDR4_PIN05 (*((volatile unsigned int*)(0x42212B14UL))) +#define bM4_AOS_PEVNTIDR4_PIN06 (*((volatile unsigned int*)(0x42212B18UL))) +#define bM4_AOS_PEVNTIDR4_PIN07 (*((volatile unsigned int*)(0x42212B1CUL))) +#define bM4_AOS_PEVNTIDR4_PIN08 (*((volatile unsigned int*)(0x42212B20UL))) +#define bM4_AOS_PEVNTIDR4_PIN09 (*((volatile unsigned int*)(0x42212B24UL))) +#define bM4_AOS_PEVNTIDR4_PIN10 (*((volatile unsigned int*)(0x42212B28UL))) +#define bM4_AOS_PEVNTIDR4_PIN11 (*((volatile unsigned int*)(0x42212B2CUL))) +#define bM4_AOS_PEVNTIDR4_PIN12 (*((volatile unsigned int*)(0x42212B30UL))) +#define bM4_AOS_PEVNTIDR4_PIN13 (*((volatile unsigned int*)(0x42212B34UL))) +#define bM4_AOS_PEVNTIDR4_PIN14 (*((volatile unsigned int*)(0x42212B38UL))) +#define bM4_AOS_PEVNTIDR4_PIN15 (*((volatile unsigned int*)(0x42212B3CUL))) +#define bM4_AOS_PEVNTODR4_POUT00 (*((volatile unsigned int*)(0x42212B80UL))) +#define bM4_AOS_PEVNTODR4_POUT01 (*((volatile unsigned int*)(0x42212B84UL))) +#define bM4_AOS_PEVNTODR4_POUT02 (*((volatile unsigned int*)(0x42212B88UL))) +#define bM4_AOS_PEVNTODR4_POUT03 (*((volatile unsigned int*)(0x42212B8CUL))) +#define bM4_AOS_PEVNTODR4_POUT04 (*((volatile unsigned int*)(0x42212B90UL))) +#define bM4_AOS_PEVNTODR4_POUT05 (*((volatile unsigned int*)(0x42212B94UL))) +#define bM4_AOS_PEVNTODR4_POUT06 (*((volatile unsigned int*)(0x42212B98UL))) +#define bM4_AOS_PEVNTODR4_POUT07 (*((volatile unsigned int*)(0x42212B9CUL))) +#define bM4_AOS_PEVNTODR4_POUT08 (*((volatile unsigned int*)(0x42212BA0UL))) +#define bM4_AOS_PEVNTODR4_POUT09 (*((volatile unsigned int*)(0x42212BA4UL))) +#define bM4_AOS_PEVNTODR4_POUT10 (*((volatile unsigned int*)(0x42212BA8UL))) +#define bM4_AOS_PEVNTODR4_POUT11 (*((volatile unsigned int*)(0x42212BACUL))) +#define bM4_AOS_PEVNTODR4_POUT12 (*((volatile unsigned int*)(0x42212BB0UL))) +#define bM4_AOS_PEVNTODR4_POUT13 (*((volatile unsigned int*)(0x42212BB4UL))) +#define bM4_AOS_PEVNTODR4_POUT14 (*((volatile unsigned int*)(0x42212BB8UL))) +#define bM4_AOS_PEVNTODR4_POUT15 (*((volatile unsigned int*)(0x42212BBCUL))) +#define bM4_AOS_PEVNTORR4_POR00 (*((volatile unsigned int*)(0x42212C00UL))) +#define bM4_AOS_PEVNTORR4_POR01 (*((volatile unsigned int*)(0x42212C04UL))) +#define bM4_AOS_PEVNTORR4_POR02 (*((volatile unsigned int*)(0x42212C08UL))) +#define bM4_AOS_PEVNTORR4_POR03 (*((volatile unsigned int*)(0x42212C0CUL))) +#define bM4_AOS_PEVNTORR4_POR04 (*((volatile unsigned int*)(0x42212C10UL))) +#define bM4_AOS_PEVNTORR4_POR05 (*((volatile unsigned int*)(0x42212C14UL))) +#define bM4_AOS_PEVNTORR4_POR06 (*((volatile unsigned int*)(0x42212C18UL))) +#define bM4_AOS_PEVNTORR4_POR07 (*((volatile unsigned int*)(0x42212C1CUL))) +#define bM4_AOS_PEVNTORR4_POR08 (*((volatile unsigned int*)(0x42212C20UL))) +#define bM4_AOS_PEVNTORR4_POR09 (*((volatile unsigned int*)(0x42212C24UL))) +#define bM4_AOS_PEVNTORR4_POR10 (*((volatile unsigned int*)(0x42212C28UL))) +#define bM4_AOS_PEVNTORR4_POR11 (*((volatile unsigned int*)(0x42212C2CUL))) +#define bM4_AOS_PEVNTORR4_POR12 (*((volatile unsigned int*)(0x42212C30UL))) +#define bM4_AOS_PEVNTORR4_POR13 (*((volatile unsigned int*)(0x42212C34UL))) +#define bM4_AOS_PEVNTORR4_POR14 (*((volatile unsigned int*)(0x42212C38UL))) +#define bM4_AOS_PEVNTORR4_POR15 (*((volatile unsigned int*)(0x42212C3CUL))) +#define bM4_AOS_PEVNTOSR4_POS00 (*((volatile unsigned int*)(0x42212C80UL))) +#define bM4_AOS_PEVNTOSR4_POS01 (*((volatile unsigned int*)(0x42212C84UL))) +#define bM4_AOS_PEVNTOSR4_POS02 (*((volatile unsigned int*)(0x42212C88UL))) +#define bM4_AOS_PEVNTOSR4_POS03 (*((volatile unsigned int*)(0x42212C8CUL))) +#define bM4_AOS_PEVNTOSR4_POS04 (*((volatile unsigned int*)(0x42212C90UL))) +#define bM4_AOS_PEVNTOSR4_POS05 (*((volatile unsigned int*)(0x42212C94UL))) +#define bM4_AOS_PEVNTOSR4_POS06 (*((volatile unsigned int*)(0x42212C98UL))) +#define bM4_AOS_PEVNTOSR4_POS07 (*((volatile unsigned int*)(0x42212C9CUL))) +#define bM4_AOS_PEVNTOSR4_POS08 (*((volatile unsigned int*)(0x42212CA0UL))) +#define bM4_AOS_PEVNTOSR4_POS09 (*((volatile unsigned int*)(0x42212CA4UL))) +#define bM4_AOS_PEVNTOSR4_POS10 (*((volatile unsigned int*)(0x42212CA8UL))) +#define bM4_AOS_PEVNTOSR4_POS11 (*((volatile unsigned int*)(0x42212CACUL))) +#define bM4_AOS_PEVNTOSR4_POS12 (*((volatile unsigned int*)(0x42212CB0UL))) +#define bM4_AOS_PEVNTOSR4_POS13 (*((volatile unsigned int*)(0x42212CB4UL))) +#define bM4_AOS_PEVNTOSR4_POS14 (*((volatile unsigned int*)(0x42212CB8UL))) +#define bM4_AOS_PEVNTOSR4_POS15 (*((volatile unsigned int*)(0x42212CBCUL))) +#define bM4_AOS_PEVNTRISR4_RIS00 (*((volatile unsigned int*)(0x42212D00UL))) +#define bM4_AOS_PEVNTRISR4_RIS01 (*((volatile unsigned int*)(0x42212D04UL))) +#define bM4_AOS_PEVNTRISR4_RIS02 (*((volatile unsigned int*)(0x42212D08UL))) +#define bM4_AOS_PEVNTRISR4_RIS03 (*((volatile unsigned int*)(0x42212D0CUL))) +#define bM4_AOS_PEVNTRISR4_RIS04 (*((volatile unsigned int*)(0x42212D10UL))) +#define bM4_AOS_PEVNTRISR4_RIS05 (*((volatile unsigned int*)(0x42212D14UL))) +#define bM4_AOS_PEVNTRISR4_RIS06 (*((volatile unsigned int*)(0x42212D18UL))) +#define bM4_AOS_PEVNTRISR4_RIS07 (*((volatile unsigned int*)(0x42212D1CUL))) +#define bM4_AOS_PEVNTRISR4_RIS08 (*((volatile unsigned int*)(0x42212D20UL))) +#define bM4_AOS_PEVNTRISR4_RIS09 (*((volatile unsigned int*)(0x42212D24UL))) +#define bM4_AOS_PEVNTRISR4_RIS10 (*((volatile unsigned int*)(0x42212D28UL))) +#define bM4_AOS_PEVNTRISR4_RIS11 (*((volatile unsigned int*)(0x42212D2CUL))) +#define bM4_AOS_PEVNTRISR4_RIS12 (*((volatile unsigned int*)(0x42212D30UL))) +#define bM4_AOS_PEVNTRISR4_RIS13 (*((volatile unsigned int*)(0x42212D34UL))) +#define bM4_AOS_PEVNTRISR4_RIS14 (*((volatile unsigned int*)(0x42212D38UL))) +#define bM4_AOS_PEVNTRISR4_RIS15 (*((volatile unsigned int*)(0x42212D3CUL))) +#define bM4_AOS_PEVNTFAL4_FAL00 (*((volatile unsigned int*)(0x42212D80UL))) +#define bM4_AOS_PEVNTFAL4_FAL01 (*((volatile unsigned int*)(0x42212D84UL))) +#define bM4_AOS_PEVNTFAL4_FAL02 (*((volatile unsigned int*)(0x42212D88UL))) +#define bM4_AOS_PEVNTFAL4_FAL03 (*((volatile unsigned int*)(0x42212D8CUL))) +#define bM4_AOS_PEVNTFAL4_FAL04 (*((volatile unsigned int*)(0x42212D90UL))) +#define bM4_AOS_PEVNTFAL4_FAL05 (*((volatile unsigned int*)(0x42212D94UL))) +#define bM4_AOS_PEVNTFAL4_FAL06 (*((volatile unsigned int*)(0x42212D98UL))) +#define bM4_AOS_PEVNTFAL4_FAL07 (*((volatile unsigned int*)(0x42212D9CUL))) +#define bM4_AOS_PEVNTFAL4_FAL08 (*((volatile unsigned int*)(0x42212DA0UL))) +#define bM4_AOS_PEVNTFAL4_FAL09 (*((volatile unsigned int*)(0x42212DA4UL))) +#define bM4_AOS_PEVNTFAL4_FAL10 (*((volatile unsigned int*)(0x42212DA8UL))) +#define bM4_AOS_PEVNTFAL4_FAL11 (*((volatile unsigned int*)(0x42212DACUL))) +#define bM4_AOS_PEVNTFAL4_FAL12 (*((volatile unsigned int*)(0x42212DB0UL))) +#define bM4_AOS_PEVNTFAL4_FAL13 (*((volatile unsigned int*)(0x42212DB4UL))) +#define bM4_AOS_PEVNTFAL4_FAL14 (*((volatile unsigned int*)(0x42212DB8UL))) +#define bM4_AOS_PEVNTFAL4_FAL15 (*((volatile unsigned int*)(0x42212DBCUL))) +#define bM4_AOS_PEVNTNFCR_NFEN1 (*((volatile unsigned int*)(0x42212E00UL))) +#define bM4_AOS_PEVNTNFCR_DIVS10 (*((volatile unsigned int*)(0x42212E04UL))) +#define bM4_AOS_PEVNTNFCR_DIVS11 (*((volatile unsigned int*)(0x42212E08UL))) +#define bM4_AOS_PEVNTNFCR_NFEN2 (*((volatile unsigned int*)(0x42212E20UL))) +#define bM4_AOS_PEVNTNFCR_DIVS20 (*((volatile unsigned int*)(0x42212E24UL))) +#define bM4_AOS_PEVNTNFCR_DIVS21 (*((volatile unsigned int*)(0x42212E28UL))) +#define bM4_AOS_PEVNTNFCR_NFEN3 (*((volatile unsigned int*)(0x42212E40UL))) +#define bM4_AOS_PEVNTNFCR_DIVS30 (*((volatile unsigned int*)(0x42212E44UL))) +#define bM4_AOS_PEVNTNFCR_DIVS31 (*((volatile unsigned int*)(0x42212E48UL))) +#define bM4_AOS_PEVNTNFCR_NFEN4 (*((volatile unsigned int*)(0x42212E60UL))) +#define bM4_AOS_PEVNTNFCR_DIVS40 (*((volatile unsigned int*)(0x42212E64UL))) +#define bM4_AOS_PEVNTNFCR_DIVS41 (*((volatile unsigned int*)(0x42212E68UL))) +#define bM4_CAN_CFG_STAT_BUSOFF (*((volatile unsigned int*)(0x42E09400UL))) +#define bM4_CAN_CFG_STAT_TACTIVE (*((volatile unsigned int*)(0x42E09404UL))) +#define bM4_CAN_CFG_STAT_RACTIVE (*((volatile unsigned int*)(0x42E09408UL))) +#define bM4_CAN_CFG_STAT_TSSS (*((volatile unsigned int*)(0x42E0940CUL))) +#define bM4_CAN_CFG_STAT_TPSS (*((volatile unsigned int*)(0x42E09410UL))) +#define bM4_CAN_CFG_STAT_LBMI (*((volatile unsigned int*)(0x42E09414UL))) +#define bM4_CAN_CFG_STAT_LBME (*((volatile unsigned int*)(0x42E09418UL))) +#define bM4_CAN_CFG_STAT_RESET (*((volatile unsigned int*)(0x42E0941CUL))) +#define bM4_CAN_TCMD_TSA (*((volatile unsigned int*)(0x42E09420UL))) +#define bM4_CAN_TCMD_TSALL (*((volatile unsigned int*)(0x42E09424UL))) +#define bM4_CAN_TCMD_TSONE (*((volatile unsigned int*)(0x42E09428UL))) +#define bM4_CAN_TCMD_TPA (*((volatile unsigned int*)(0x42E0942CUL))) +#define bM4_CAN_TCMD_TPE (*((volatile unsigned int*)(0x42E09430UL))) +#define bM4_CAN_TCMD_STBY (*((volatile unsigned int*)(0x42E09434UL))) +#define bM4_CAN_TCMD_LOM (*((volatile unsigned int*)(0x42E09438UL))) +#define bM4_CAN_TCMD_TBSEL (*((volatile unsigned int*)(0x42E0943CUL))) +#define bM4_CAN_TCTRL_TSSTAT0 (*((volatile unsigned int*)(0x42E09440UL))) +#define bM4_CAN_TCTRL_TSSTAT1 (*((volatile unsigned int*)(0x42E09444UL))) +#define bM4_CAN_TCTRL_TTBM (*((volatile unsigned int*)(0x42E09450UL))) +#define bM4_CAN_TCTRL_TSMODE (*((volatile unsigned int*)(0x42E09454UL))) +#define bM4_CAN_TCTRL_TSNEXT (*((volatile unsigned int*)(0x42E09458UL))) +#define bM4_CAN_RCTRL_RSSTAT0 (*((volatile unsigned int*)(0x42E09460UL))) +#define bM4_CAN_RCTRL_RSSTAT1 (*((volatile unsigned int*)(0x42E09464UL))) +#define bM4_CAN_RCTRL_RBALL (*((volatile unsigned int*)(0x42E0946CUL))) +#define bM4_CAN_RCTRL_RREL (*((volatile unsigned int*)(0x42E09470UL))) +#define bM4_CAN_RCTRL_ROV (*((volatile unsigned int*)(0x42E09474UL))) +#define bM4_CAN_RCTRL_ROM (*((volatile unsigned int*)(0x42E09478UL))) +#define bM4_CAN_RCTRL_SACK (*((volatile unsigned int*)(0x42E0947CUL))) +#define bM4_CAN_RTIE_TSFF (*((volatile unsigned int*)(0x42E09480UL))) +#define bM4_CAN_RTIE_EIE (*((volatile unsigned int*)(0x42E09484UL))) +#define bM4_CAN_RTIE_TSIE (*((volatile unsigned int*)(0x42E09488UL))) +#define bM4_CAN_RTIE_TPIE (*((volatile unsigned int*)(0x42E0948CUL))) +#define bM4_CAN_RTIE_RAFIE (*((volatile unsigned int*)(0x42E09490UL))) +#define bM4_CAN_RTIE_RFIE (*((volatile unsigned int*)(0x42E09494UL))) +#define bM4_CAN_RTIE_ROIE (*((volatile unsigned int*)(0x42E09498UL))) +#define bM4_CAN_RTIE_RIE (*((volatile unsigned int*)(0x42E0949CUL))) +#define bM4_CAN_RTIF_AIF (*((volatile unsigned int*)(0x42E094A0UL))) +#define bM4_CAN_RTIF_EIF (*((volatile unsigned int*)(0x42E094A4UL))) +#define bM4_CAN_RTIF_TSIF (*((volatile unsigned int*)(0x42E094A8UL))) +#define bM4_CAN_RTIF_TPIF (*((volatile unsigned int*)(0x42E094ACUL))) +#define bM4_CAN_RTIF_RAFIF (*((volatile unsigned int*)(0x42E094B0UL))) +#define bM4_CAN_RTIF_RFIF (*((volatile unsigned int*)(0x42E094B4UL))) +#define bM4_CAN_RTIF_ROIF (*((volatile unsigned int*)(0x42E094B8UL))) +#define bM4_CAN_RTIF_RIF (*((volatile unsigned int*)(0x42E094BCUL))) +#define bM4_CAN_ERRINT_BEIF (*((volatile unsigned int*)(0x42E094C0UL))) +#define bM4_CAN_ERRINT_BEIE (*((volatile unsigned int*)(0x42E094C4UL))) +#define bM4_CAN_ERRINT_ALIF (*((volatile unsigned int*)(0x42E094C8UL))) +#define bM4_CAN_ERRINT_ALIE (*((volatile unsigned int*)(0x42E094CCUL))) +#define bM4_CAN_ERRINT_EPIF (*((volatile unsigned int*)(0x42E094D0UL))) +#define bM4_CAN_ERRINT_EPIE (*((volatile unsigned int*)(0x42E094D4UL))) +#define bM4_CAN_ERRINT_EPASS (*((volatile unsigned int*)(0x42E094D8UL))) +#define bM4_CAN_ERRINT_EWARN (*((volatile unsigned int*)(0x42E094DCUL))) +#define bM4_CAN_LIMIT_EWL0 (*((volatile unsigned int*)(0x42E094E0UL))) +#define bM4_CAN_LIMIT_EWL1 (*((volatile unsigned int*)(0x42E094E4UL))) +#define bM4_CAN_LIMIT_EWL2 (*((volatile unsigned int*)(0x42E094E8UL))) +#define bM4_CAN_LIMIT_EWL3 (*((volatile unsigned int*)(0x42E094ECUL))) +#define bM4_CAN_LIMIT_AFWL0 (*((volatile unsigned int*)(0x42E094F0UL))) +#define bM4_CAN_LIMIT_AFWL1 (*((volatile unsigned int*)(0x42E094F4UL))) +#define bM4_CAN_LIMIT_AFWL2 (*((volatile unsigned int*)(0x42E094F8UL))) +#define bM4_CAN_LIMIT_AFWL3 (*((volatile unsigned int*)(0x42E094FCUL))) +#define bM4_CAN_BT_SEG_10 (*((volatile unsigned int*)(0x42E09500UL))) +#define bM4_CAN_BT_SEG_11 (*((volatile unsigned int*)(0x42E09504UL))) +#define bM4_CAN_BT_SEG_12 (*((volatile unsigned int*)(0x42E09508UL))) +#define bM4_CAN_BT_SEG_13 (*((volatile unsigned int*)(0x42E0950CUL))) +#define bM4_CAN_BT_SEG_14 (*((volatile unsigned int*)(0x42E09510UL))) +#define bM4_CAN_BT_SEG_15 (*((volatile unsigned int*)(0x42E09514UL))) +#define bM4_CAN_BT_SEG_16 (*((volatile unsigned int*)(0x42E09518UL))) +#define bM4_CAN_BT_SEG_17 (*((volatile unsigned int*)(0x42E0951CUL))) +#define bM4_CAN_BT_SEG_20 (*((volatile unsigned int*)(0x42E09520UL))) +#define bM4_CAN_BT_SEG_21 (*((volatile unsigned int*)(0x42E09524UL))) +#define bM4_CAN_BT_SEG_22 (*((volatile unsigned int*)(0x42E09528UL))) +#define bM4_CAN_BT_SEG_23 (*((volatile unsigned int*)(0x42E0952CUL))) +#define bM4_CAN_BT_SEG_24 (*((volatile unsigned int*)(0x42E09530UL))) +#define bM4_CAN_BT_SEG_25 (*((volatile unsigned int*)(0x42E09534UL))) +#define bM4_CAN_BT_SEG_26 (*((volatile unsigned int*)(0x42E09538UL))) +#define bM4_CAN_BT_SJW0 (*((volatile unsigned int*)(0x42E09540UL))) +#define bM4_CAN_BT_SJW1 (*((volatile unsigned int*)(0x42E09544UL))) +#define bM4_CAN_BT_SJW2 (*((volatile unsigned int*)(0x42E09548UL))) +#define bM4_CAN_BT_SJW3 (*((volatile unsigned int*)(0x42E0954CUL))) +#define bM4_CAN_BT_SJW4 (*((volatile unsigned int*)(0x42E09550UL))) +#define bM4_CAN_BT_SJW5 (*((volatile unsigned int*)(0x42E09554UL))) +#define bM4_CAN_BT_SJW6 (*((volatile unsigned int*)(0x42E09558UL))) +#define bM4_CAN_BT_PRESC0 (*((volatile unsigned int*)(0x42E09560UL))) +#define bM4_CAN_BT_PRESC1 (*((volatile unsigned int*)(0x42E09564UL))) +#define bM4_CAN_BT_PRESC2 (*((volatile unsigned int*)(0x42E09568UL))) +#define bM4_CAN_BT_PRESC3 (*((volatile unsigned int*)(0x42E0956CUL))) +#define bM4_CAN_BT_PRESC4 (*((volatile unsigned int*)(0x42E09570UL))) +#define bM4_CAN_BT_PRESC5 (*((volatile unsigned int*)(0x42E09574UL))) +#define bM4_CAN_BT_PRESC6 (*((volatile unsigned int*)(0x42E09578UL))) +#define bM4_CAN_BT_PRESC7 (*((volatile unsigned int*)(0x42E0957CUL))) +#define bM4_CAN_EALCAP_ALC0 (*((volatile unsigned int*)(0x42E09600UL))) +#define bM4_CAN_EALCAP_ALC1 (*((volatile unsigned int*)(0x42E09604UL))) +#define bM4_CAN_EALCAP_ALC2 (*((volatile unsigned int*)(0x42E09608UL))) +#define bM4_CAN_EALCAP_ALC3 (*((volatile unsigned int*)(0x42E0960CUL))) +#define bM4_CAN_EALCAP_ALC4 (*((volatile unsigned int*)(0x42E09610UL))) +#define bM4_CAN_EALCAP_KOER0 (*((volatile unsigned int*)(0x42E09614UL))) +#define bM4_CAN_EALCAP_KOER1 (*((volatile unsigned int*)(0x42E09618UL))) +#define bM4_CAN_EALCAP_KOER2 (*((volatile unsigned int*)(0x42E0961CUL))) +#define bM4_CAN_ACFCTRL_ACFADR0 (*((volatile unsigned int*)(0x42E09680UL))) +#define bM4_CAN_ACFCTRL_ACFADR1 (*((volatile unsigned int*)(0x42E09684UL))) +#define bM4_CAN_ACFCTRL_ACFADR2 (*((volatile unsigned int*)(0x42E09688UL))) +#define bM4_CAN_ACFCTRL_ACFADR3 (*((volatile unsigned int*)(0x42E0968CUL))) +#define bM4_CAN_ACFCTRL_SELMASK (*((volatile unsigned int*)(0x42E09694UL))) +#define bM4_CAN_ACFEN_AE_1 (*((volatile unsigned int*)(0x42E096C0UL))) +#define bM4_CAN_ACFEN_AE_2 (*((volatile unsigned int*)(0x42E096C4UL))) +#define bM4_CAN_ACFEN_AE_3 (*((volatile unsigned int*)(0x42E096C8UL))) +#define bM4_CAN_ACFEN_AE_4 (*((volatile unsigned int*)(0x42E096CCUL))) +#define bM4_CAN_ACFEN_AE_5 (*((volatile unsigned int*)(0x42E096D0UL))) +#define bM4_CAN_ACFEN_AE_6 (*((volatile unsigned int*)(0x42E096D4UL))) +#define bM4_CAN_ACFEN_AE_7 (*((volatile unsigned int*)(0x42E096D8UL))) +#define bM4_CAN_ACFEN_AE_8 (*((volatile unsigned int*)(0x42E096DCUL))) +#define bM4_CAN_ACF_ACODEORAMASK0 (*((volatile unsigned int*)(0x42E09700UL))) +#define bM4_CAN_ACF_ACODEORAMASK1 (*((volatile unsigned int*)(0x42E09704UL))) +#define bM4_CAN_ACF_ACODEORAMASK2 (*((volatile unsigned int*)(0x42E09708UL))) +#define bM4_CAN_ACF_ACODEORAMASK3 (*((volatile unsigned int*)(0x42E0970CUL))) +#define bM4_CAN_ACF_ACODEORAMASK4 (*((volatile unsigned int*)(0x42E09710UL))) +#define bM4_CAN_ACF_ACODEORAMASK5 (*((volatile unsigned int*)(0x42E09714UL))) +#define bM4_CAN_ACF_ACODEORAMASK6 (*((volatile unsigned int*)(0x42E09718UL))) +#define bM4_CAN_ACF_ACODEORAMASK7 (*((volatile unsigned int*)(0x42E0971CUL))) +#define bM4_CAN_ACF_ACODEORAMASK8 (*((volatile unsigned int*)(0x42E09720UL))) +#define bM4_CAN_ACF_ACODEORAMASK9 (*((volatile unsigned int*)(0x42E09724UL))) +#define bM4_CAN_ACF_ACODEORAMASK10 (*((volatile unsigned int*)(0x42E09728UL))) +#define bM4_CAN_ACF_ACODEORAMASK11 (*((volatile unsigned int*)(0x42E0972CUL))) +#define bM4_CAN_ACF_ACODEORAMASK12 (*((volatile unsigned int*)(0x42E09730UL))) +#define bM4_CAN_ACF_ACODEORAMASK13 (*((volatile unsigned int*)(0x42E09734UL))) +#define bM4_CAN_ACF_ACODEORAMASK14 (*((volatile unsigned int*)(0x42E09738UL))) +#define bM4_CAN_ACF_ACODEORAMASK15 (*((volatile unsigned int*)(0x42E0973CUL))) +#define bM4_CAN_ACF_ACODEORAMASK16 (*((volatile unsigned int*)(0x42E09740UL))) +#define bM4_CAN_ACF_ACODEORAMASK17 (*((volatile unsigned int*)(0x42E09744UL))) +#define bM4_CAN_ACF_ACODEORAMASK18 (*((volatile unsigned int*)(0x42E09748UL))) +#define bM4_CAN_ACF_ACODEORAMASK19 (*((volatile unsigned int*)(0x42E0974CUL))) +#define bM4_CAN_ACF_ACODEORAMASK20 (*((volatile unsigned int*)(0x42E09750UL))) +#define bM4_CAN_ACF_ACODEORAMASK21 (*((volatile unsigned int*)(0x42E09754UL))) +#define bM4_CAN_ACF_ACODEORAMASK22 (*((volatile unsigned int*)(0x42E09758UL))) +#define bM4_CAN_ACF_ACODEORAMASK23 (*((volatile unsigned int*)(0x42E0975CUL))) +#define bM4_CAN_ACF_ACODEORAMASK24 (*((volatile unsigned int*)(0x42E09760UL))) +#define bM4_CAN_ACF_ACODEORAMASK25 (*((volatile unsigned int*)(0x42E09764UL))) +#define bM4_CAN_ACF_ACODEORAMASK26 (*((volatile unsigned int*)(0x42E09768UL))) +#define bM4_CAN_ACF_ACODEORAMASK27 (*((volatile unsigned int*)(0x42E0976CUL))) +#define bM4_CAN_ACF_ACODEORAMASK28 (*((volatile unsigned int*)(0x42E09770UL))) +#define bM4_CAN_ACF_AIDE (*((volatile unsigned int*)(0x42E09774UL))) +#define bM4_CAN_ACF_AIDEE (*((volatile unsigned int*)(0x42E09778UL))) +#define bM4_CAN_TBSLOT_TBPTR0 (*((volatile unsigned int*)(0x42E097C0UL))) +#define bM4_CAN_TBSLOT_TBPTR1 (*((volatile unsigned int*)(0x42E097C4UL))) +#define bM4_CAN_TBSLOT_TBPTR2 (*((volatile unsigned int*)(0x42E097C8UL))) +#define bM4_CAN_TBSLOT_TBPTR3 (*((volatile unsigned int*)(0x42E097CCUL))) +#define bM4_CAN_TBSLOT_TBPTR4 (*((volatile unsigned int*)(0x42E097D0UL))) +#define bM4_CAN_TBSLOT_TBPTR5 (*((volatile unsigned int*)(0x42E097D4UL))) +#define bM4_CAN_TBSLOT_TBF (*((volatile unsigned int*)(0x42E097D8UL))) +#define bM4_CAN_TBSLOT_TBE (*((volatile unsigned int*)(0x42E097DCUL))) +#define bM4_CAN_TTCFG_TTEN (*((volatile unsigned int*)(0x42E097E0UL))) +#define bM4_CAN_TTCFG_T_PRESC0 (*((volatile unsigned int*)(0x42E097E4UL))) +#define bM4_CAN_TTCFG_T_PRESC1 (*((volatile unsigned int*)(0x42E097E8UL))) +#define bM4_CAN_TTCFG_TTIF (*((volatile unsigned int*)(0x42E097ECUL))) +#define bM4_CAN_TTCFG_TTIE (*((volatile unsigned int*)(0x42E097F0UL))) +#define bM4_CAN_TTCFG_TEIF (*((volatile unsigned int*)(0x42E097F4UL))) +#define bM4_CAN_TTCFG_WTIF (*((volatile unsigned int*)(0x42E097F8UL))) +#define bM4_CAN_TTCFG_WTIE (*((volatile unsigned int*)(0x42E097FCUL))) +#define bM4_CAN_REF_MSG_REF_ID0 (*((volatile unsigned int*)(0x42E09800UL))) +#define bM4_CAN_REF_MSG_REF_ID1 (*((volatile unsigned int*)(0x42E09804UL))) +#define bM4_CAN_REF_MSG_REF_ID2 (*((volatile unsigned int*)(0x42E09808UL))) +#define bM4_CAN_REF_MSG_REF_ID3 (*((volatile unsigned int*)(0x42E0980CUL))) +#define bM4_CAN_REF_MSG_REF_ID4 (*((volatile unsigned int*)(0x42E09810UL))) +#define bM4_CAN_REF_MSG_REF_ID5 (*((volatile unsigned int*)(0x42E09814UL))) +#define bM4_CAN_REF_MSG_REF_ID6 (*((volatile unsigned int*)(0x42E09818UL))) +#define bM4_CAN_REF_MSG_REF_ID7 (*((volatile unsigned int*)(0x42E0981CUL))) +#define bM4_CAN_REF_MSG_REF_ID8 (*((volatile unsigned int*)(0x42E09820UL))) +#define bM4_CAN_REF_MSG_REF_ID9 (*((volatile unsigned int*)(0x42E09824UL))) +#define bM4_CAN_REF_MSG_REF_ID10 (*((volatile unsigned int*)(0x42E09828UL))) +#define bM4_CAN_REF_MSG_REF_ID11 (*((volatile unsigned int*)(0x42E0982CUL))) +#define bM4_CAN_REF_MSG_REF_ID12 (*((volatile unsigned int*)(0x42E09830UL))) +#define bM4_CAN_REF_MSG_REF_ID13 (*((volatile unsigned int*)(0x42E09834UL))) +#define bM4_CAN_REF_MSG_REF_ID14 (*((volatile unsigned int*)(0x42E09838UL))) +#define bM4_CAN_REF_MSG_REF_ID15 (*((volatile unsigned int*)(0x42E0983CUL))) +#define bM4_CAN_REF_MSG_REF_ID16 (*((volatile unsigned int*)(0x42E09840UL))) +#define bM4_CAN_REF_MSG_REF_ID17 (*((volatile unsigned int*)(0x42E09844UL))) +#define bM4_CAN_REF_MSG_REF_ID18 (*((volatile unsigned int*)(0x42E09848UL))) +#define bM4_CAN_REF_MSG_REF_ID19 (*((volatile unsigned int*)(0x42E0984CUL))) +#define bM4_CAN_REF_MSG_REF_ID20 (*((volatile unsigned int*)(0x42E09850UL))) +#define bM4_CAN_REF_MSG_REF_ID21 (*((volatile unsigned int*)(0x42E09854UL))) +#define bM4_CAN_REF_MSG_REF_ID22 (*((volatile unsigned int*)(0x42E09858UL))) +#define bM4_CAN_REF_MSG_REF_ID23 (*((volatile unsigned int*)(0x42E0985CUL))) +#define bM4_CAN_REF_MSG_REF_ID24 (*((volatile unsigned int*)(0x42E09860UL))) +#define bM4_CAN_REF_MSG_REF_ID25 (*((volatile unsigned int*)(0x42E09864UL))) +#define bM4_CAN_REF_MSG_REF_ID26 (*((volatile unsigned int*)(0x42E09868UL))) +#define bM4_CAN_REF_MSG_REF_ID27 (*((volatile unsigned int*)(0x42E0986CUL))) +#define bM4_CAN_REF_MSG_REF_ID28 (*((volatile unsigned int*)(0x42E09870UL))) +#define bM4_CAN_REF_MSG_REF_IDE (*((volatile unsigned int*)(0x42E0987CUL))) +#define bM4_CAN_TRG_CFG_TTPTR0 (*((volatile unsigned int*)(0x42E09880UL))) +#define bM4_CAN_TRG_CFG_TTPTR1 (*((volatile unsigned int*)(0x42E09884UL))) +#define bM4_CAN_TRG_CFG_TTPTR2 (*((volatile unsigned int*)(0x42E09888UL))) +#define bM4_CAN_TRG_CFG_TTPTR3 (*((volatile unsigned int*)(0x42E0988CUL))) +#define bM4_CAN_TRG_CFG_TTPTR4 (*((volatile unsigned int*)(0x42E09890UL))) +#define bM4_CAN_TRG_CFG_TTPTR5 (*((volatile unsigned int*)(0x42E09894UL))) +#define bM4_CAN_TRG_CFG_TTYPE0 (*((volatile unsigned int*)(0x42E098A0UL))) +#define bM4_CAN_TRG_CFG_TTYPE1 (*((volatile unsigned int*)(0x42E098A4UL))) +#define bM4_CAN_TRG_CFG_TTYPE2 (*((volatile unsigned int*)(0x42E098A8UL))) +#define bM4_CAN_TRG_CFG_TEW0 (*((volatile unsigned int*)(0x42E098B0UL))) +#define bM4_CAN_TRG_CFG_TEW1 (*((volatile unsigned int*)(0x42E098B4UL))) +#define bM4_CAN_TRG_CFG_TEW2 (*((volatile unsigned int*)(0x42E098B8UL))) +#define bM4_CAN_TRG_CFG_TEW3 (*((volatile unsigned int*)(0x42E098BCUL))) +#define bM4_CMP1_CTRL_FLTSL0 (*((volatile unsigned int*)(0x42940000UL))) +#define bM4_CMP1_CTRL_FLTSL1 (*((volatile unsigned int*)(0x42940004UL))) +#define bM4_CMP1_CTRL_FLTSL2 (*((volatile unsigned int*)(0x42940008UL))) +#define bM4_CMP1_CTRL_EDGSL0 (*((volatile unsigned int*)(0x42940014UL))) +#define bM4_CMP1_CTRL_EDGSL1 (*((volatile unsigned int*)(0x42940018UL))) +#define bM4_CMP1_CTRL_IEN (*((volatile unsigned int*)(0x4294001CUL))) +#define bM4_CMP1_CTRL_CVSEN (*((volatile unsigned int*)(0x42940020UL))) +#define bM4_CMP1_CTRL_OUTEN (*((volatile unsigned int*)(0x42940030UL))) +#define bM4_CMP1_CTRL_INV (*((volatile unsigned int*)(0x42940034UL))) +#define bM4_CMP1_CTRL_CMPOE (*((volatile unsigned int*)(0x42940038UL))) +#define bM4_CMP1_CTRL_CMPON (*((volatile unsigned int*)(0x4294003CUL))) +#define bM4_CMP1_VLTSEL_RVSL0 (*((volatile unsigned int*)(0x42940040UL))) +#define bM4_CMP1_VLTSEL_RVSL1 (*((volatile unsigned int*)(0x42940044UL))) +#define bM4_CMP1_VLTSEL_RVSL2 (*((volatile unsigned int*)(0x42940048UL))) +#define bM4_CMP1_VLTSEL_RVSL3 (*((volatile unsigned int*)(0x4294004CUL))) +#define bM4_CMP1_VLTSEL_CVSL0 (*((volatile unsigned int*)(0x42940060UL))) +#define bM4_CMP1_VLTSEL_CVSL1 (*((volatile unsigned int*)(0x42940064UL))) +#define bM4_CMP1_VLTSEL_CVSL2 (*((volatile unsigned int*)(0x42940068UL))) +#define bM4_CMP1_VLTSEL_CVSL3 (*((volatile unsigned int*)(0x4294006CUL))) +#define bM4_CMP1_VLTSEL_C4SL0 (*((volatile unsigned int*)(0x42940070UL))) +#define bM4_CMP1_VLTSEL_C4SL1 (*((volatile unsigned int*)(0x42940074UL))) +#define bM4_CMP1_VLTSEL_C4SL2 (*((volatile unsigned int*)(0x42940078UL))) +#define bM4_CMP1_MON_OMON (*((volatile unsigned int*)(0x42940080UL))) +#define bM4_CMP1_MON_CVST0 (*((volatile unsigned int*)(0x429400A0UL))) +#define bM4_CMP1_MON_CVST1 (*((volatile unsigned int*)(0x429400A4UL))) +#define bM4_CMP1_MON_CVST2 (*((volatile unsigned int*)(0x429400A8UL))) +#define bM4_CMP1_MON_CVST3 (*((volatile unsigned int*)(0x429400ACUL))) +#define bM4_CMP1_CVSSTB_STB0 (*((volatile unsigned int*)(0x429400C0UL))) +#define bM4_CMP1_CVSSTB_STB1 (*((volatile unsigned int*)(0x429400C4UL))) +#define bM4_CMP1_CVSSTB_STB2 (*((volatile unsigned int*)(0x429400C8UL))) +#define bM4_CMP1_CVSSTB_STB3 (*((volatile unsigned int*)(0x429400CCUL))) +#define bM4_CMP1_CVSPRD_PRD0 (*((volatile unsigned int*)(0x42940100UL))) +#define bM4_CMP1_CVSPRD_PRD1 (*((volatile unsigned int*)(0x42940104UL))) +#define bM4_CMP1_CVSPRD_PRD2 (*((volatile unsigned int*)(0x42940108UL))) +#define bM4_CMP1_CVSPRD_PRD3 (*((volatile unsigned int*)(0x4294010CUL))) +#define bM4_CMP1_CVSPRD_PRD4 (*((volatile unsigned int*)(0x42940110UL))) +#define bM4_CMP1_CVSPRD_PRD5 (*((volatile unsigned int*)(0x42940114UL))) +#define bM4_CMP1_CVSPRD_PRD6 (*((volatile unsigned int*)(0x42940118UL))) +#define bM4_CMP1_CVSPRD_PRD7 (*((volatile unsigned int*)(0x4294011CUL))) +#define bM4_CMP2_CTRL_FLTSL0 (*((volatile unsigned int*)(0x42940200UL))) +#define bM4_CMP2_CTRL_FLTSL1 (*((volatile unsigned int*)(0x42940204UL))) +#define bM4_CMP2_CTRL_FLTSL2 (*((volatile unsigned int*)(0x42940208UL))) +#define bM4_CMP2_CTRL_EDGSL0 (*((volatile unsigned int*)(0x42940214UL))) +#define bM4_CMP2_CTRL_EDGSL1 (*((volatile unsigned int*)(0x42940218UL))) +#define bM4_CMP2_CTRL_IEN (*((volatile unsigned int*)(0x4294021CUL))) +#define bM4_CMP2_CTRL_CVSEN (*((volatile unsigned int*)(0x42940220UL))) +#define bM4_CMP2_CTRL_OUTEN (*((volatile unsigned int*)(0x42940230UL))) +#define bM4_CMP2_CTRL_INV (*((volatile unsigned int*)(0x42940234UL))) +#define bM4_CMP2_CTRL_CMPOE (*((volatile unsigned int*)(0x42940238UL))) +#define bM4_CMP2_CTRL_CMPON (*((volatile unsigned int*)(0x4294023CUL))) +#define bM4_CMP2_VLTSEL_RVSL0 (*((volatile unsigned int*)(0x42940240UL))) +#define bM4_CMP2_VLTSEL_RVSL1 (*((volatile unsigned int*)(0x42940244UL))) +#define bM4_CMP2_VLTSEL_RVSL2 (*((volatile unsigned int*)(0x42940248UL))) +#define bM4_CMP2_VLTSEL_RVSL3 (*((volatile unsigned int*)(0x4294024CUL))) +#define bM4_CMP2_VLTSEL_CVSL0 (*((volatile unsigned int*)(0x42940260UL))) +#define bM4_CMP2_VLTSEL_CVSL1 (*((volatile unsigned int*)(0x42940264UL))) +#define bM4_CMP2_VLTSEL_CVSL2 (*((volatile unsigned int*)(0x42940268UL))) +#define bM4_CMP2_VLTSEL_CVSL3 (*((volatile unsigned int*)(0x4294026CUL))) +#define bM4_CMP2_VLTSEL_C4SL0 (*((volatile unsigned int*)(0x42940270UL))) +#define bM4_CMP2_VLTSEL_C4SL1 (*((volatile unsigned int*)(0x42940274UL))) +#define bM4_CMP2_VLTSEL_C4SL2 (*((volatile unsigned int*)(0x42940278UL))) +#define bM4_CMP2_MON_OMON (*((volatile unsigned int*)(0x42940280UL))) +#define bM4_CMP2_MON_CVST0 (*((volatile unsigned int*)(0x429402A0UL))) +#define bM4_CMP2_MON_CVST1 (*((volatile unsigned int*)(0x429402A4UL))) +#define bM4_CMP2_MON_CVST2 (*((volatile unsigned int*)(0x429402A8UL))) +#define bM4_CMP2_MON_CVST3 (*((volatile unsigned int*)(0x429402ACUL))) +#define bM4_CMP2_CVSSTB_STB0 (*((volatile unsigned int*)(0x429402C0UL))) +#define bM4_CMP2_CVSSTB_STB1 (*((volatile unsigned int*)(0x429402C4UL))) +#define bM4_CMP2_CVSSTB_STB2 (*((volatile unsigned int*)(0x429402C8UL))) +#define bM4_CMP2_CVSSTB_STB3 (*((volatile unsigned int*)(0x429402CCUL))) +#define bM4_CMP2_CVSPRD_PRD0 (*((volatile unsigned int*)(0x42940300UL))) +#define bM4_CMP2_CVSPRD_PRD1 (*((volatile unsigned int*)(0x42940304UL))) +#define bM4_CMP2_CVSPRD_PRD2 (*((volatile unsigned int*)(0x42940308UL))) +#define bM4_CMP2_CVSPRD_PRD3 (*((volatile unsigned int*)(0x4294030CUL))) +#define bM4_CMP2_CVSPRD_PRD4 (*((volatile unsigned int*)(0x42940310UL))) +#define bM4_CMP2_CVSPRD_PRD5 (*((volatile unsigned int*)(0x42940314UL))) +#define bM4_CMP2_CVSPRD_PRD6 (*((volatile unsigned int*)(0x42940318UL))) +#define bM4_CMP2_CVSPRD_PRD7 (*((volatile unsigned int*)(0x4294031CUL))) +#define bM4_CMP3_CTRL_FLTSL0 (*((volatile unsigned int*)(0x42940400UL))) +#define bM4_CMP3_CTRL_FLTSL1 (*((volatile unsigned int*)(0x42940404UL))) +#define bM4_CMP3_CTRL_FLTSL2 (*((volatile unsigned int*)(0x42940408UL))) +#define bM4_CMP3_CTRL_EDGSL0 (*((volatile unsigned int*)(0x42940414UL))) +#define bM4_CMP3_CTRL_EDGSL1 (*((volatile unsigned int*)(0x42940418UL))) +#define bM4_CMP3_CTRL_IEN (*((volatile unsigned int*)(0x4294041CUL))) +#define bM4_CMP3_CTRL_CVSEN (*((volatile unsigned int*)(0x42940420UL))) +#define bM4_CMP3_CTRL_OUTEN (*((volatile unsigned int*)(0x42940430UL))) +#define bM4_CMP3_CTRL_INV (*((volatile unsigned int*)(0x42940434UL))) +#define bM4_CMP3_CTRL_CMPOE (*((volatile unsigned int*)(0x42940438UL))) +#define bM4_CMP3_CTRL_CMPON (*((volatile unsigned int*)(0x4294043CUL))) +#define bM4_CMP3_VLTSEL_RVSL0 (*((volatile unsigned int*)(0x42940440UL))) +#define bM4_CMP3_VLTSEL_RVSL1 (*((volatile unsigned int*)(0x42940444UL))) +#define bM4_CMP3_VLTSEL_RVSL2 (*((volatile unsigned int*)(0x42940448UL))) +#define bM4_CMP3_VLTSEL_RVSL3 (*((volatile unsigned int*)(0x4294044CUL))) +#define bM4_CMP3_VLTSEL_CVSL0 (*((volatile unsigned int*)(0x42940460UL))) +#define bM4_CMP3_VLTSEL_CVSL1 (*((volatile unsigned int*)(0x42940464UL))) +#define bM4_CMP3_VLTSEL_CVSL2 (*((volatile unsigned int*)(0x42940468UL))) +#define bM4_CMP3_VLTSEL_CVSL3 (*((volatile unsigned int*)(0x4294046CUL))) +#define bM4_CMP3_VLTSEL_C4SL0 (*((volatile unsigned int*)(0x42940470UL))) +#define bM4_CMP3_VLTSEL_C4SL1 (*((volatile unsigned int*)(0x42940474UL))) +#define bM4_CMP3_VLTSEL_C4SL2 (*((volatile unsigned int*)(0x42940478UL))) +#define bM4_CMP3_MON_OMON (*((volatile unsigned int*)(0x42940480UL))) +#define bM4_CMP3_MON_CVST0 (*((volatile unsigned int*)(0x429404A0UL))) +#define bM4_CMP3_MON_CVST1 (*((volatile unsigned int*)(0x429404A4UL))) +#define bM4_CMP3_MON_CVST2 (*((volatile unsigned int*)(0x429404A8UL))) +#define bM4_CMP3_MON_CVST3 (*((volatile unsigned int*)(0x429404ACUL))) +#define bM4_CMP3_CVSSTB_STB0 (*((volatile unsigned int*)(0x429404C0UL))) +#define bM4_CMP3_CVSSTB_STB1 (*((volatile unsigned int*)(0x429404C4UL))) +#define bM4_CMP3_CVSSTB_STB2 (*((volatile unsigned int*)(0x429404C8UL))) +#define bM4_CMP3_CVSSTB_STB3 (*((volatile unsigned int*)(0x429404CCUL))) +#define bM4_CMP3_CVSPRD_PRD0 (*((volatile unsigned int*)(0x42940500UL))) +#define bM4_CMP3_CVSPRD_PRD1 (*((volatile unsigned int*)(0x42940504UL))) +#define bM4_CMP3_CVSPRD_PRD2 (*((volatile unsigned int*)(0x42940508UL))) +#define bM4_CMP3_CVSPRD_PRD3 (*((volatile unsigned int*)(0x4294050CUL))) +#define bM4_CMP3_CVSPRD_PRD4 (*((volatile unsigned int*)(0x42940510UL))) +#define bM4_CMP3_CVSPRD_PRD5 (*((volatile unsigned int*)(0x42940514UL))) +#define bM4_CMP3_CVSPRD_PRD6 (*((volatile unsigned int*)(0x42940518UL))) +#define bM4_CMP3_CVSPRD_PRD7 (*((volatile unsigned int*)(0x4294051CUL))) +#define bM4_CMP_CR_DADR1_DATA0 (*((volatile unsigned int*)(0x42942000UL))) +#define bM4_CMP_CR_DADR1_DATA1 (*((volatile unsigned int*)(0x42942004UL))) +#define bM4_CMP_CR_DADR1_DATA2 (*((volatile unsigned int*)(0x42942008UL))) +#define bM4_CMP_CR_DADR1_DATA3 (*((volatile unsigned int*)(0x4294200CUL))) +#define bM4_CMP_CR_DADR1_DATA4 (*((volatile unsigned int*)(0x42942010UL))) +#define bM4_CMP_CR_DADR1_DATA5 (*((volatile unsigned int*)(0x42942014UL))) +#define bM4_CMP_CR_DADR1_DATA6 (*((volatile unsigned int*)(0x42942018UL))) +#define bM4_CMP_CR_DADR1_DATA7 (*((volatile unsigned int*)(0x4294201CUL))) +#define bM4_CMP_CR_DADR2_DATA0 (*((volatile unsigned int*)(0x42942040UL))) +#define bM4_CMP_CR_DADR2_DATA1 (*((volatile unsigned int*)(0x42942044UL))) +#define bM4_CMP_CR_DADR2_DATA2 (*((volatile unsigned int*)(0x42942048UL))) +#define bM4_CMP_CR_DADR2_DATA3 (*((volatile unsigned int*)(0x4294204CUL))) +#define bM4_CMP_CR_DADR2_DATA4 (*((volatile unsigned int*)(0x42942050UL))) +#define bM4_CMP_CR_DADR2_DATA5 (*((volatile unsigned int*)(0x42942054UL))) +#define bM4_CMP_CR_DADR2_DATA6 (*((volatile unsigned int*)(0x42942058UL))) +#define bM4_CMP_CR_DADR2_DATA7 (*((volatile unsigned int*)(0x4294205CUL))) +#define bM4_CMP_CR_DACR_DA1EN (*((volatile unsigned int*)(0x42942100UL))) +#define bM4_CMP_CR_DACR_DA2EN (*((volatile unsigned int*)(0x42942104UL))) +#define bM4_CMP_CR_RVADC_DA1SW (*((volatile unsigned int*)(0x42942180UL))) +#define bM4_CMP_CR_RVADC_DA2SW (*((volatile unsigned int*)(0x42942184UL))) +#define bM4_CMP_CR_RVADC_VREFSW (*((volatile unsigned int*)(0x42942190UL))) +#define bM4_CMP_CR_RVADC_WPRT0 (*((volatile unsigned int*)(0x429421A0UL))) +#define bM4_CMP_CR_RVADC_WPRT1 (*((volatile unsigned int*)(0x429421A4UL))) +#define bM4_CMP_CR_RVADC_WPRT2 (*((volatile unsigned int*)(0x429421A8UL))) +#define bM4_CMP_CR_RVADC_WPRT3 (*((volatile unsigned int*)(0x429421ACUL))) +#define bM4_CMP_CR_RVADC_WPRT4 (*((volatile unsigned int*)(0x429421B0UL))) +#define bM4_CMP_CR_RVADC_WPRT5 (*((volatile unsigned int*)(0x429421B4UL))) +#define bM4_CMP_CR_RVADC_WPRT6 (*((volatile unsigned int*)(0x429421B8UL))) +#define bM4_CMP_CR_RVADC_WPRT7 (*((volatile unsigned int*)(0x429421BCUL))) +#define bM4_CRC_CR_CRC_SEL (*((volatile unsigned int*)(0x42118004UL))) +#define bM4_CRC_CR_REFIN (*((volatile unsigned int*)(0x42118008UL))) +#define bM4_CRC_CR_REFOUT (*((volatile unsigned int*)(0x4211800CUL))) +#define bM4_CRC_CR_XOROUT (*((volatile unsigned int*)(0x42118010UL))) +#define bM4_CRC_FLG_FLAG (*((volatile unsigned int*)(0x42118180UL))) +#define bM4_DCU1_CTL_MODE0 (*((volatile unsigned int*)(0x42A40000UL))) +#define bM4_DCU1_CTL_MODE1 (*((volatile unsigned int*)(0x42A40004UL))) +#define bM4_DCU1_CTL_MODE2 (*((volatile unsigned int*)(0x42A40008UL))) +#define bM4_DCU1_CTL_DATASIZE0 (*((volatile unsigned int*)(0x42A4000CUL))) +#define bM4_DCU1_CTL_DATASIZE1 (*((volatile unsigned int*)(0x42A40010UL))) +#define bM4_DCU1_CTL_COMP_TRG (*((volatile unsigned int*)(0x42A40020UL))) +#define bM4_DCU1_CTL_INTEN (*((volatile unsigned int*)(0x42A4007CUL))) +#define bM4_DCU1_FLAG_FLAG_OP (*((volatile unsigned int*)(0x42A40080UL))) +#define bM4_DCU1_FLAG_FLAG_LS2 (*((volatile unsigned int*)(0x42A40084UL))) +#define bM4_DCU1_FLAG_FLAG_EQ2 (*((volatile unsigned int*)(0x42A40088UL))) +#define bM4_DCU1_FLAG_FLAG_GT2 (*((volatile unsigned int*)(0x42A4008CUL))) +#define bM4_DCU1_FLAG_FLAG_LS1 (*((volatile unsigned int*)(0x42A40090UL))) +#define bM4_DCU1_FLAG_FLAG_EQ1 (*((volatile unsigned int*)(0x42A40094UL))) +#define bM4_DCU1_FLAG_FLAG_GT1 (*((volatile unsigned int*)(0x42A40098UL))) +#define bM4_DCU1_FLAGCLR_CLR_OP (*((volatile unsigned int*)(0x42A40280UL))) +#define bM4_DCU1_FLAGCLR_CLR_LS2 (*((volatile unsigned int*)(0x42A40284UL))) +#define bM4_DCU1_FLAGCLR_CLR_EQ2 (*((volatile unsigned int*)(0x42A40288UL))) +#define bM4_DCU1_FLAGCLR_CLR_GT2 (*((volatile unsigned int*)(0x42A4028CUL))) +#define bM4_DCU1_FLAGCLR_CLR_LS1 (*((volatile unsigned int*)(0x42A40290UL))) +#define bM4_DCU1_FLAGCLR_CLR_EQ1 (*((volatile unsigned int*)(0x42A40294UL))) +#define bM4_DCU1_FLAGCLR_CLR_GT1 (*((volatile unsigned int*)(0x42A40298UL))) +#define bM4_DCU1_INTSEL_INT_OP (*((volatile unsigned int*)(0x42A40300UL))) +#define bM4_DCU1_INTSEL_INT_LS2 (*((volatile unsigned int*)(0x42A40304UL))) +#define bM4_DCU1_INTSEL_INT_EQ2 (*((volatile unsigned int*)(0x42A40308UL))) +#define bM4_DCU1_INTSEL_INT_GT2 (*((volatile unsigned int*)(0x42A4030CUL))) +#define bM4_DCU1_INTSEL_INT_LS1 (*((volatile unsigned int*)(0x42A40310UL))) +#define bM4_DCU1_INTSEL_INT_EQ1 (*((volatile unsigned int*)(0x42A40314UL))) +#define bM4_DCU1_INTSEL_INT_GT1 (*((volatile unsigned int*)(0x42A40318UL))) +#define bM4_DCU1_INTSEL_INT_WIN0 (*((volatile unsigned int*)(0x42A4031CUL))) +#define bM4_DCU1_INTSEL_INT_WIN1 (*((volatile unsigned int*)(0x42A40320UL))) +#define bM4_DCU2_CTL_MODE0 (*((volatile unsigned int*)(0x42A48000UL))) +#define bM4_DCU2_CTL_MODE1 (*((volatile unsigned int*)(0x42A48004UL))) +#define bM4_DCU2_CTL_MODE2 (*((volatile unsigned int*)(0x42A48008UL))) +#define bM4_DCU2_CTL_DATASIZE0 (*((volatile unsigned int*)(0x42A4800CUL))) +#define bM4_DCU2_CTL_DATASIZE1 (*((volatile unsigned int*)(0x42A48010UL))) +#define bM4_DCU2_CTL_COMP_TRG (*((volatile unsigned int*)(0x42A48020UL))) +#define bM4_DCU2_CTL_INTEN (*((volatile unsigned int*)(0x42A4807CUL))) +#define bM4_DCU2_FLAG_FLAG_OP (*((volatile unsigned int*)(0x42A48080UL))) +#define bM4_DCU2_FLAG_FLAG_LS2 (*((volatile unsigned int*)(0x42A48084UL))) +#define bM4_DCU2_FLAG_FLAG_EQ2 (*((volatile unsigned int*)(0x42A48088UL))) +#define bM4_DCU2_FLAG_FLAG_GT2 (*((volatile unsigned int*)(0x42A4808CUL))) +#define bM4_DCU2_FLAG_FLAG_LS1 (*((volatile unsigned int*)(0x42A48090UL))) +#define bM4_DCU2_FLAG_FLAG_EQ1 (*((volatile unsigned int*)(0x42A48094UL))) +#define bM4_DCU2_FLAG_FLAG_GT1 (*((volatile unsigned int*)(0x42A48098UL))) +#define bM4_DCU2_FLAGCLR_CLR_OP (*((volatile unsigned int*)(0x42A48280UL))) +#define bM4_DCU2_FLAGCLR_CLR_LS2 (*((volatile unsigned int*)(0x42A48284UL))) +#define bM4_DCU2_FLAGCLR_CLR_EQ2 (*((volatile unsigned int*)(0x42A48288UL))) +#define bM4_DCU2_FLAGCLR_CLR_GT2 (*((volatile unsigned int*)(0x42A4828CUL))) +#define bM4_DCU2_FLAGCLR_CLR_LS1 (*((volatile unsigned int*)(0x42A48290UL))) +#define bM4_DCU2_FLAGCLR_CLR_EQ1 (*((volatile unsigned int*)(0x42A48294UL))) +#define bM4_DCU2_FLAGCLR_CLR_GT1 (*((volatile unsigned int*)(0x42A48298UL))) +#define bM4_DCU2_INTSEL_INT_OP (*((volatile unsigned int*)(0x42A48300UL))) +#define bM4_DCU2_INTSEL_INT_LS2 (*((volatile unsigned int*)(0x42A48304UL))) +#define bM4_DCU2_INTSEL_INT_EQ2 (*((volatile unsigned int*)(0x42A48308UL))) +#define bM4_DCU2_INTSEL_INT_GT2 (*((volatile unsigned int*)(0x42A4830CUL))) +#define bM4_DCU2_INTSEL_INT_LS1 (*((volatile unsigned int*)(0x42A48310UL))) +#define bM4_DCU2_INTSEL_INT_EQ1 (*((volatile unsigned int*)(0x42A48314UL))) +#define bM4_DCU2_INTSEL_INT_GT1 (*((volatile unsigned int*)(0x42A48318UL))) +#define bM4_DCU2_INTSEL_INT_WIN0 (*((volatile unsigned int*)(0x42A4831CUL))) +#define bM4_DCU2_INTSEL_INT_WIN1 (*((volatile unsigned int*)(0x42A48320UL))) +#define bM4_DCU3_CTL_MODE0 (*((volatile unsigned int*)(0x42A50000UL))) +#define bM4_DCU3_CTL_MODE1 (*((volatile unsigned int*)(0x42A50004UL))) +#define bM4_DCU3_CTL_MODE2 (*((volatile unsigned int*)(0x42A50008UL))) +#define bM4_DCU3_CTL_DATASIZE0 (*((volatile unsigned int*)(0x42A5000CUL))) +#define bM4_DCU3_CTL_DATASIZE1 (*((volatile unsigned int*)(0x42A50010UL))) +#define bM4_DCU3_CTL_COMP_TRG (*((volatile unsigned int*)(0x42A50020UL))) +#define bM4_DCU3_CTL_INTEN (*((volatile unsigned int*)(0x42A5007CUL))) +#define bM4_DCU3_FLAG_FLAG_OP (*((volatile unsigned int*)(0x42A50080UL))) +#define bM4_DCU3_FLAG_FLAG_LS2 (*((volatile unsigned int*)(0x42A50084UL))) +#define bM4_DCU3_FLAG_FLAG_EQ2 (*((volatile unsigned int*)(0x42A50088UL))) +#define bM4_DCU3_FLAG_FLAG_GT2 (*((volatile unsigned int*)(0x42A5008CUL))) +#define bM4_DCU3_FLAG_FLAG_LS1 (*((volatile unsigned int*)(0x42A50090UL))) +#define bM4_DCU3_FLAG_FLAG_EQ1 (*((volatile unsigned int*)(0x42A50094UL))) +#define bM4_DCU3_FLAG_FLAG_GT1 (*((volatile unsigned int*)(0x42A50098UL))) +#define bM4_DCU3_FLAGCLR_CLR_OP (*((volatile unsigned int*)(0x42A50280UL))) +#define bM4_DCU3_FLAGCLR_CLR_LS2 (*((volatile unsigned int*)(0x42A50284UL))) +#define bM4_DCU3_FLAGCLR_CLR_EQ2 (*((volatile unsigned int*)(0x42A50288UL))) +#define bM4_DCU3_FLAGCLR_CLR_GT2 (*((volatile unsigned int*)(0x42A5028CUL))) +#define bM4_DCU3_FLAGCLR_CLR_LS1 (*((volatile unsigned int*)(0x42A50290UL))) +#define bM4_DCU3_FLAGCLR_CLR_EQ1 (*((volatile unsigned int*)(0x42A50294UL))) +#define bM4_DCU3_FLAGCLR_CLR_GT1 (*((volatile unsigned int*)(0x42A50298UL))) +#define bM4_DCU3_INTSEL_INT_OP (*((volatile unsigned int*)(0x42A50300UL))) +#define bM4_DCU3_INTSEL_INT_LS2 (*((volatile unsigned int*)(0x42A50304UL))) +#define bM4_DCU3_INTSEL_INT_EQ2 (*((volatile unsigned int*)(0x42A50308UL))) +#define bM4_DCU3_INTSEL_INT_GT2 (*((volatile unsigned int*)(0x42A5030CUL))) +#define bM4_DCU3_INTSEL_INT_LS1 (*((volatile unsigned int*)(0x42A50310UL))) +#define bM4_DCU3_INTSEL_INT_EQ1 (*((volatile unsigned int*)(0x42A50314UL))) +#define bM4_DCU3_INTSEL_INT_GT1 (*((volatile unsigned int*)(0x42A50318UL))) +#define bM4_DCU3_INTSEL_INT_WIN0 (*((volatile unsigned int*)(0x42A5031CUL))) +#define bM4_DCU3_INTSEL_INT_WIN1 (*((volatile unsigned int*)(0x42A50320UL))) +#define bM4_DCU4_CTL_MODE0 (*((volatile unsigned int*)(0x42A58000UL))) +#define bM4_DCU4_CTL_MODE1 (*((volatile unsigned int*)(0x42A58004UL))) +#define bM4_DCU4_CTL_MODE2 (*((volatile unsigned int*)(0x42A58008UL))) +#define bM4_DCU4_CTL_DATASIZE0 (*((volatile unsigned int*)(0x42A5800CUL))) +#define bM4_DCU4_CTL_DATASIZE1 (*((volatile unsigned int*)(0x42A58010UL))) +#define bM4_DCU4_CTL_COMP_TRG (*((volatile unsigned int*)(0x42A58020UL))) +#define bM4_DCU4_CTL_INTEN (*((volatile unsigned int*)(0x42A5807CUL))) +#define bM4_DCU4_FLAG_FLAG_OP (*((volatile unsigned int*)(0x42A58080UL))) +#define bM4_DCU4_FLAG_FLAG_LS2 (*((volatile unsigned int*)(0x42A58084UL))) +#define bM4_DCU4_FLAG_FLAG_EQ2 (*((volatile unsigned int*)(0x42A58088UL))) +#define bM4_DCU4_FLAG_FLAG_GT2 (*((volatile unsigned int*)(0x42A5808CUL))) +#define bM4_DCU4_FLAG_FLAG_LS1 (*((volatile unsigned int*)(0x42A58090UL))) +#define bM4_DCU4_FLAG_FLAG_EQ1 (*((volatile unsigned int*)(0x42A58094UL))) +#define bM4_DCU4_FLAG_FLAG_GT1 (*((volatile unsigned int*)(0x42A58098UL))) +#define bM4_DCU4_FLAGCLR_CLR_OP (*((volatile unsigned int*)(0x42A58280UL))) +#define bM4_DCU4_FLAGCLR_CLR_LS2 (*((volatile unsigned int*)(0x42A58284UL))) +#define bM4_DCU4_FLAGCLR_CLR_EQ2 (*((volatile unsigned int*)(0x42A58288UL))) +#define bM4_DCU4_FLAGCLR_CLR_GT2 (*((volatile unsigned int*)(0x42A5828CUL))) +#define bM4_DCU4_FLAGCLR_CLR_LS1 (*((volatile unsigned int*)(0x42A58290UL))) +#define bM4_DCU4_FLAGCLR_CLR_EQ1 (*((volatile unsigned int*)(0x42A58294UL))) +#define bM4_DCU4_FLAGCLR_CLR_GT1 (*((volatile unsigned int*)(0x42A58298UL))) +#define bM4_DCU4_INTSEL_INT_OP (*((volatile unsigned int*)(0x42A58300UL))) +#define bM4_DCU4_INTSEL_INT_LS2 (*((volatile unsigned int*)(0x42A58304UL))) +#define bM4_DCU4_INTSEL_INT_EQ2 (*((volatile unsigned int*)(0x42A58308UL))) +#define bM4_DCU4_INTSEL_INT_GT2 (*((volatile unsigned int*)(0x42A5830CUL))) +#define bM4_DCU4_INTSEL_INT_LS1 (*((volatile unsigned int*)(0x42A58310UL))) +#define bM4_DCU4_INTSEL_INT_EQ1 (*((volatile unsigned int*)(0x42A58314UL))) +#define bM4_DCU4_INTSEL_INT_GT1 (*((volatile unsigned int*)(0x42A58318UL))) +#define bM4_DCU4_INTSEL_INT_WIN0 (*((volatile unsigned int*)(0x42A5831CUL))) +#define bM4_DCU4_INTSEL_INT_WIN1 (*((volatile unsigned int*)(0x42A58320UL))) +#define bM4_DMA1_EN_EN (*((volatile unsigned int*)(0x42A60000UL))) +#define bM4_DMA1_INTSTAT0_TRNERR0 (*((volatile unsigned int*)(0x42A60080UL))) +#define bM4_DMA1_INTSTAT0_TRNERR1 (*((volatile unsigned int*)(0x42A60084UL))) +#define bM4_DMA1_INTSTAT0_TRNERR2 (*((volatile unsigned int*)(0x42A60088UL))) +#define bM4_DMA1_INTSTAT0_TRNERR3 (*((volatile unsigned int*)(0x42A6008CUL))) +#define bM4_DMA1_INTSTAT0_REQERR0 (*((volatile unsigned int*)(0x42A600C0UL))) +#define bM4_DMA1_INTSTAT0_REQERR1 (*((volatile unsigned int*)(0x42A600C4UL))) +#define bM4_DMA1_INTSTAT0_REQERR2 (*((volatile unsigned int*)(0x42A600C8UL))) +#define bM4_DMA1_INTSTAT0_REQERR3 (*((volatile unsigned int*)(0x42A600CCUL))) +#define bM4_DMA1_INTSTAT1_TC0 (*((volatile unsigned int*)(0x42A60100UL))) +#define bM4_DMA1_INTSTAT1_TC1 (*((volatile unsigned int*)(0x42A60104UL))) +#define bM4_DMA1_INTSTAT1_TC2 (*((volatile unsigned int*)(0x42A60108UL))) +#define bM4_DMA1_INTSTAT1_TC3 (*((volatile unsigned int*)(0x42A6010CUL))) +#define bM4_DMA1_INTSTAT1_BTC0 (*((volatile unsigned int*)(0x42A60140UL))) +#define bM4_DMA1_INTSTAT1_BTC1 (*((volatile unsigned int*)(0x42A60144UL))) +#define bM4_DMA1_INTSTAT1_BTC2 (*((volatile unsigned int*)(0x42A60148UL))) +#define bM4_DMA1_INTSTAT1_BTC3 (*((volatile unsigned int*)(0x42A6014CUL))) +#define bM4_DMA1_INTMASK0_MSKTRNERR0 (*((volatile unsigned int*)(0x42A60180UL))) +#define bM4_DMA1_INTMASK0_MSKTRNERR1 (*((volatile unsigned int*)(0x42A60184UL))) +#define bM4_DMA1_INTMASK0_MSKTRNERR2 (*((volatile unsigned int*)(0x42A60188UL))) +#define bM4_DMA1_INTMASK0_MSKTRNERR3 (*((volatile unsigned int*)(0x42A6018CUL))) +#define bM4_DMA1_INTMASK0_MSKREQERR0 (*((volatile unsigned int*)(0x42A601C0UL))) +#define bM4_DMA1_INTMASK0_MSKREQERR1 (*((volatile unsigned int*)(0x42A601C4UL))) +#define bM4_DMA1_INTMASK0_MSKREQERR2 (*((volatile unsigned int*)(0x42A601C8UL))) +#define bM4_DMA1_INTMASK0_MSKREQERR3 (*((volatile unsigned int*)(0x42A601CCUL))) +#define bM4_DMA1_INTMASK1_MSKTC0 (*((volatile unsigned int*)(0x42A60200UL))) +#define bM4_DMA1_INTMASK1_MSKTC1 (*((volatile unsigned int*)(0x42A60204UL))) +#define bM4_DMA1_INTMASK1_MSKTC2 (*((volatile unsigned int*)(0x42A60208UL))) +#define bM4_DMA1_INTMASK1_MSKTC3 (*((volatile unsigned int*)(0x42A6020CUL))) +#define bM4_DMA1_INTMASK1_MSKBTC0 (*((volatile unsigned int*)(0x42A60240UL))) +#define bM4_DMA1_INTMASK1_MSKBTC1 (*((volatile unsigned int*)(0x42A60244UL))) +#define bM4_DMA1_INTMASK1_MSKBTC2 (*((volatile unsigned int*)(0x42A60248UL))) +#define bM4_DMA1_INTMASK1_MSKBTC3 (*((volatile unsigned int*)(0x42A6024CUL))) +#define bM4_DMA1_INTCLR0_CLRTRNERR0 (*((volatile unsigned int*)(0x42A60280UL))) +#define bM4_DMA1_INTCLR0_CLRTRNERR1 (*((volatile unsigned int*)(0x42A60284UL))) +#define bM4_DMA1_INTCLR0_CLRTRNERR2 (*((volatile unsigned int*)(0x42A60288UL))) +#define bM4_DMA1_INTCLR0_CLRTRNERR3 (*((volatile unsigned int*)(0x42A6028CUL))) +#define bM4_DMA1_INTCLR0_CLRREQERR0 (*((volatile unsigned int*)(0x42A602C0UL))) +#define bM4_DMA1_INTCLR0_CLRREQERR1 (*((volatile unsigned int*)(0x42A602C4UL))) +#define bM4_DMA1_INTCLR0_CLRREQERR2 (*((volatile unsigned int*)(0x42A602C8UL))) +#define bM4_DMA1_INTCLR0_CLRREQERR3 (*((volatile unsigned int*)(0x42A602CCUL))) +#define bM4_DMA1_INTCLR1_CLRTC0 (*((volatile unsigned int*)(0x42A60300UL))) +#define bM4_DMA1_INTCLR1_CLRTC1 (*((volatile unsigned int*)(0x42A60304UL))) +#define bM4_DMA1_INTCLR1_CLRTC2 (*((volatile unsigned int*)(0x42A60308UL))) +#define bM4_DMA1_INTCLR1_CLRTC3 (*((volatile unsigned int*)(0x42A6030CUL))) +#define bM4_DMA1_INTCLR1_CLRBTC0 (*((volatile unsigned int*)(0x42A60340UL))) +#define bM4_DMA1_INTCLR1_CLRBTC1 (*((volatile unsigned int*)(0x42A60344UL))) +#define bM4_DMA1_INTCLR1_CLRBTC2 (*((volatile unsigned int*)(0x42A60348UL))) +#define bM4_DMA1_INTCLR1_CLRBTC3 (*((volatile unsigned int*)(0x42A6034CUL))) +#define bM4_DMA1_CHEN_CHEN0 (*((volatile unsigned int*)(0x42A60380UL))) +#define bM4_DMA1_CHEN_CHEN1 (*((volatile unsigned int*)(0x42A60384UL))) +#define bM4_DMA1_CHEN_CHEN2 (*((volatile unsigned int*)(0x42A60388UL))) +#define bM4_DMA1_CHEN_CHEN3 (*((volatile unsigned int*)(0x42A6038CUL))) +#define bM4_DMA1_CHSTAT_DMAACT (*((volatile unsigned int*)(0x42A60480UL))) +#define bM4_DMA1_CHSTAT_RCFGACT (*((volatile unsigned int*)(0x42A60484UL))) +#define bM4_DMA1_CHSTAT_CHACT0 (*((volatile unsigned int*)(0x42A604C0UL))) +#define bM4_DMA1_CHSTAT_CHACT1 (*((volatile unsigned int*)(0x42A604C4UL))) +#define bM4_DMA1_CHSTAT_CHACT2 (*((volatile unsigned int*)(0x42A604C8UL))) +#define bM4_DMA1_CHSTAT_CHACT3 (*((volatile unsigned int*)(0x42A604CCUL))) +#define bM4_DMA1_RCFGCTL_RCFGEN (*((volatile unsigned int*)(0x42A60580UL))) +#define bM4_DMA1_RCFGCTL_RCFGLLP (*((volatile unsigned int*)(0x42A60584UL))) +#define bM4_DMA1_RCFGCTL_RCFGCHS0 (*((volatile unsigned int*)(0x42A605A0UL))) +#define bM4_DMA1_RCFGCTL_RCFGCHS1 (*((volatile unsigned int*)(0x42A605A4UL))) +#define bM4_DMA1_RCFGCTL_RCFGCHS2 (*((volatile unsigned int*)(0x42A605A8UL))) +#define bM4_DMA1_RCFGCTL_RCFGCHS3 (*((volatile unsigned int*)(0x42A605ACUL))) +#define bM4_DMA1_RCFGCTL_SARMD0 (*((volatile unsigned int*)(0x42A605C0UL))) +#define bM4_DMA1_RCFGCTL_SARMD1 (*((volatile unsigned int*)(0x42A605C4UL))) +#define bM4_DMA1_RCFGCTL_DARMD0 (*((volatile unsigned int*)(0x42A605C8UL))) +#define bM4_DMA1_RCFGCTL_DARMD1 (*((volatile unsigned int*)(0x42A605CCUL))) +#define bM4_DMA1_RCFGCTL_CNTMD0 (*((volatile unsigned int*)(0x42A605D0UL))) +#define bM4_DMA1_RCFGCTL_CNTMD1 (*((volatile unsigned int*)(0x42A605D4UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE0 (*((volatile unsigned int*)(0x42A60900UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE1 (*((volatile unsigned int*)(0x42A60904UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE2 (*((volatile unsigned int*)(0x42A60908UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE3 (*((volatile unsigned int*)(0x42A6090CUL))) +#define bM4_DMA1_DTCTL0_BLKSIZE4 (*((volatile unsigned int*)(0x42A60910UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE5 (*((volatile unsigned int*)(0x42A60914UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE6 (*((volatile unsigned int*)(0x42A60918UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE7 (*((volatile unsigned int*)(0x42A6091CUL))) +#define bM4_DMA1_DTCTL0_BLKSIZE8 (*((volatile unsigned int*)(0x42A60920UL))) +#define bM4_DMA1_DTCTL0_BLKSIZE9 (*((volatile unsigned int*)(0x42A60924UL))) +#define bM4_DMA1_DTCTL0_CNT0 (*((volatile unsigned int*)(0x42A60940UL))) +#define bM4_DMA1_DTCTL0_CNT1 (*((volatile unsigned int*)(0x42A60944UL))) +#define bM4_DMA1_DTCTL0_CNT2 (*((volatile unsigned int*)(0x42A60948UL))) +#define bM4_DMA1_DTCTL0_CNT3 (*((volatile unsigned int*)(0x42A6094CUL))) +#define bM4_DMA1_DTCTL0_CNT4 (*((volatile unsigned int*)(0x42A60950UL))) +#define bM4_DMA1_DTCTL0_CNT5 (*((volatile unsigned int*)(0x42A60954UL))) +#define bM4_DMA1_DTCTL0_CNT6 (*((volatile unsigned int*)(0x42A60958UL))) +#define bM4_DMA1_DTCTL0_CNT7 (*((volatile unsigned int*)(0x42A6095CUL))) +#define bM4_DMA1_DTCTL0_CNT8 (*((volatile unsigned int*)(0x42A60960UL))) +#define bM4_DMA1_DTCTL0_CNT9 (*((volatile unsigned int*)(0x42A60964UL))) +#define bM4_DMA1_DTCTL0_CNT10 (*((volatile unsigned int*)(0x42A60968UL))) +#define bM4_DMA1_DTCTL0_CNT11 (*((volatile unsigned int*)(0x42A6096CUL))) +#define bM4_DMA1_DTCTL0_CNT12 (*((volatile unsigned int*)(0x42A60970UL))) +#define bM4_DMA1_DTCTL0_CNT13 (*((volatile unsigned int*)(0x42A60974UL))) +#define bM4_DMA1_DTCTL0_CNT14 (*((volatile unsigned int*)(0x42A60978UL))) +#define bM4_DMA1_DTCTL0_CNT15 (*((volatile unsigned int*)(0x42A6097CUL))) +#define bM4_DMA1_RPT0_SRPT0 (*((volatile unsigned int*)(0x42A60980UL))) +#define bM4_DMA1_RPT0_SRPT1 (*((volatile unsigned int*)(0x42A60984UL))) +#define bM4_DMA1_RPT0_SRPT2 (*((volatile unsigned int*)(0x42A60988UL))) +#define bM4_DMA1_RPT0_SRPT3 (*((volatile unsigned int*)(0x42A6098CUL))) +#define bM4_DMA1_RPT0_SRPT4 (*((volatile unsigned int*)(0x42A60990UL))) +#define bM4_DMA1_RPT0_SRPT5 (*((volatile unsigned int*)(0x42A60994UL))) +#define bM4_DMA1_RPT0_SRPT6 (*((volatile unsigned int*)(0x42A60998UL))) +#define bM4_DMA1_RPT0_SRPT7 (*((volatile unsigned int*)(0x42A6099CUL))) +#define bM4_DMA1_RPT0_SRPT8 (*((volatile unsigned int*)(0x42A609A0UL))) +#define bM4_DMA1_RPT0_SRPT9 (*((volatile unsigned int*)(0x42A609A4UL))) +#define bM4_DMA1_RPT0_DRPT0 (*((volatile unsigned int*)(0x42A609C0UL))) +#define bM4_DMA1_RPT0_DRPT1 (*((volatile unsigned int*)(0x42A609C4UL))) +#define bM4_DMA1_RPT0_DRPT2 (*((volatile unsigned int*)(0x42A609C8UL))) +#define bM4_DMA1_RPT0_DRPT3 (*((volatile unsigned int*)(0x42A609CCUL))) +#define bM4_DMA1_RPT0_DRPT4 (*((volatile unsigned int*)(0x42A609D0UL))) +#define bM4_DMA1_RPT0_DRPT5 (*((volatile unsigned int*)(0x42A609D4UL))) +#define bM4_DMA1_RPT0_DRPT6 (*((volatile unsigned int*)(0x42A609D8UL))) +#define bM4_DMA1_RPT0_DRPT7 (*((volatile unsigned int*)(0x42A609DCUL))) +#define bM4_DMA1_RPT0_DRPT8 (*((volatile unsigned int*)(0x42A609E0UL))) +#define bM4_DMA1_RPT0_DRPT9 (*((volatile unsigned int*)(0x42A609E4UL))) +#define bM4_DMA1_RPTB0_SRPTB0 (*((volatile unsigned int*)(0x42A60980UL))) +#define bM4_DMA1_RPTB0_SRPTB1 (*((volatile unsigned int*)(0x42A60984UL))) +#define bM4_DMA1_RPTB0_SRPTB2 (*((volatile unsigned int*)(0x42A60988UL))) +#define bM4_DMA1_RPTB0_SRPTB3 (*((volatile unsigned int*)(0x42A6098CUL))) +#define bM4_DMA1_RPTB0_SRPTB4 (*((volatile unsigned int*)(0x42A60990UL))) +#define bM4_DMA1_RPTB0_SRPTB5 (*((volatile unsigned int*)(0x42A60994UL))) +#define bM4_DMA1_RPTB0_SRPTB6 (*((volatile unsigned int*)(0x42A60998UL))) +#define bM4_DMA1_RPTB0_SRPTB7 (*((volatile unsigned int*)(0x42A6099CUL))) +#define bM4_DMA1_RPTB0_SRPTB8 (*((volatile unsigned int*)(0x42A609A0UL))) +#define bM4_DMA1_RPTB0_SRPTB9 (*((volatile unsigned int*)(0x42A609A4UL))) +#define bM4_DMA1_RPTB0_DRPTB0 (*((volatile unsigned int*)(0x42A609C0UL))) +#define bM4_DMA1_RPTB0_DRPTB1 (*((volatile unsigned int*)(0x42A609C4UL))) +#define bM4_DMA1_RPTB0_DRPTB2 (*((volatile unsigned int*)(0x42A609C8UL))) +#define bM4_DMA1_RPTB0_DRPTB3 (*((volatile unsigned int*)(0x42A609CCUL))) +#define bM4_DMA1_RPTB0_DRPTB4 (*((volatile unsigned int*)(0x42A609D0UL))) +#define bM4_DMA1_RPTB0_DRPTB5 (*((volatile unsigned int*)(0x42A609D4UL))) +#define bM4_DMA1_RPTB0_DRPTB6 (*((volatile unsigned int*)(0x42A609D8UL))) +#define bM4_DMA1_RPTB0_DRPTB7 (*((volatile unsigned int*)(0x42A609DCUL))) +#define bM4_DMA1_RPTB0_DRPTB8 (*((volatile unsigned int*)(0x42A609E0UL))) +#define bM4_DMA1_RPTB0_DRPTB9 (*((volatile unsigned int*)(0x42A609E4UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET0 (*((volatile unsigned int*)(0x42A60A00UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET1 (*((volatile unsigned int*)(0x42A60A04UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET2 (*((volatile unsigned int*)(0x42A60A08UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET3 (*((volatile unsigned int*)(0x42A60A0CUL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET4 (*((volatile unsigned int*)(0x42A60A10UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET5 (*((volatile unsigned int*)(0x42A60A14UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET6 (*((volatile unsigned int*)(0x42A60A18UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET7 (*((volatile unsigned int*)(0x42A60A1CUL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET8 (*((volatile unsigned int*)(0x42A60A20UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET9 (*((volatile unsigned int*)(0x42A60A24UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET10 (*((volatile unsigned int*)(0x42A60A28UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET11 (*((volatile unsigned int*)(0x42A60A2CUL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET12 (*((volatile unsigned int*)(0x42A60A30UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET13 (*((volatile unsigned int*)(0x42A60A34UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET14 (*((volatile unsigned int*)(0x42A60A38UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET15 (*((volatile unsigned int*)(0x42A60A3CUL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET16 (*((volatile unsigned int*)(0x42A60A40UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET17 (*((volatile unsigned int*)(0x42A60A44UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET18 (*((volatile unsigned int*)(0x42A60A48UL))) +#define bM4_DMA1_SNSEQCTL0_SOFFSET19 (*((volatile unsigned int*)(0x42A60A4CUL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT0 (*((volatile unsigned int*)(0x42A60A50UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT1 (*((volatile unsigned int*)(0x42A60A54UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT2 (*((volatile unsigned int*)(0x42A60A58UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT3 (*((volatile unsigned int*)(0x42A60A5CUL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT4 (*((volatile unsigned int*)(0x42A60A60UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT5 (*((volatile unsigned int*)(0x42A60A64UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT6 (*((volatile unsigned int*)(0x42A60A68UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT7 (*((volatile unsigned int*)(0x42A60A6CUL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT8 (*((volatile unsigned int*)(0x42A60A70UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT9 (*((volatile unsigned int*)(0x42A60A74UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT10 (*((volatile unsigned int*)(0x42A60A78UL))) +#define bM4_DMA1_SNSEQCTL0_SNSCNT11 (*((volatile unsigned int*)(0x42A60A7CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST0 (*((volatile unsigned int*)(0x42A60A00UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST1 (*((volatile unsigned int*)(0x42A60A04UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST2 (*((volatile unsigned int*)(0x42A60A08UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST3 (*((volatile unsigned int*)(0x42A60A0CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST4 (*((volatile unsigned int*)(0x42A60A10UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST5 (*((volatile unsigned int*)(0x42A60A14UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST6 (*((volatile unsigned int*)(0x42A60A18UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST7 (*((volatile unsigned int*)(0x42A60A1CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST8 (*((volatile unsigned int*)(0x42A60A20UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST9 (*((volatile unsigned int*)(0x42A60A24UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST10 (*((volatile unsigned int*)(0x42A60A28UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST11 (*((volatile unsigned int*)(0x42A60A2CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST12 (*((volatile unsigned int*)(0x42A60A30UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST13 (*((volatile unsigned int*)(0x42A60A34UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST14 (*((volatile unsigned int*)(0x42A60A38UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST15 (*((volatile unsigned int*)(0x42A60A3CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST16 (*((volatile unsigned int*)(0x42A60A40UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST17 (*((volatile unsigned int*)(0x42A60A44UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST18 (*((volatile unsigned int*)(0x42A60A48UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSDIST19 (*((volatile unsigned int*)(0x42A60A4CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB0 (*((volatile unsigned int*)(0x42A60A50UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB1 (*((volatile unsigned int*)(0x42A60A54UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB2 (*((volatile unsigned int*)(0x42A60A58UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB3 (*((volatile unsigned int*)(0x42A60A5CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB4 (*((volatile unsigned int*)(0x42A60A60UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB5 (*((volatile unsigned int*)(0x42A60A64UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB6 (*((volatile unsigned int*)(0x42A60A68UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB7 (*((volatile unsigned int*)(0x42A60A6CUL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB8 (*((volatile unsigned int*)(0x42A60A70UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB9 (*((volatile unsigned int*)(0x42A60A74UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB10 (*((volatile unsigned int*)(0x42A60A78UL))) +#define bM4_DMA1_SNSEQCTLB0_SNSCNTB11 (*((volatile unsigned int*)(0x42A60A7CUL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET0 (*((volatile unsigned int*)(0x42A60A80UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET1 (*((volatile unsigned int*)(0x42A60A84UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET2 (*((volatile unsigned int*)(0x42A60A88UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET3 (*((volatile unsigned int*)(0x42A60A8CUL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET4 (*((volatile unsigned int*)(0x42A60A90UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET5 (*((volatile unsigned int*)(0x42A60A94UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET6 (*((volatile unsigned int*)(0x42A60A98UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET7 (*((volatile unsigned int*)(0x42A60A9CUL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET8 (*((volatile unsigned int*)(0x42A60AA0UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET9 (*((volatile unsigned int*)(0x42A60AA4UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET10 (*((volatile unsigned int*)(0x42A60AA8UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET11 (*((volatile unsigned int*)(0x42A60AACUL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET12 (*((volatile unsigned int*)(0x42A60AB0UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET13 (*((volatile unsigned int*)(0x42A60AB4UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET14 (*((volatile unsigned int*)(0x42A60AB8UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET15 (*((volatile unsigned int*)(0x42A60ABCUL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET16 (*((volatile unsigned int*)(0x42A60AC0UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET17 (*((volatile unsigned int*)(0x42A60AC4UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET18 (*((volatile unsigned int*)(0x42A60AC8UL))) +#define bM4_DMA1_DNSEQCTL0_DOFFSET19 (*((volatile unsigned int*)(0x42A60ACCUL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT0 (*((volatile unsigned int*)(0x42A60AD0UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT1 (*((volatile unsigned int*)(0x42A60AD4UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT2 (*((volatile unsigned int*)(0x42A60AD8UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT3 (*((volatile unsigned int*)(0x42A60ADCUL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT4 (*((volatile unsigned int*)(0x42A60AE0UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT5 (*((volatile unsigned int*)(0x42A60AE4UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT6 (*((volatile unsigned int*)(0x42A60AE8UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT7 (*((volatile unsigned int*)(0x42A60AECUL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT8 (*((volatile unsigned int*)(0x42A60AF0UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT9 (*((volatile unsigned int*)(0x42A60AF4UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT10 (*((volatile unsigned int*)(0x42A60AF8UL))) +#define bM4_DMA1_DNSEQCTL0_DNSCNT11 (*((volatile unsigned int*)(0x42A60AFCUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST0 (*((volatile unsigned int*)(0x42A60A80UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST1 (*((volatile unsigned int*)(0x42A60A84UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST2 (*((volatile unsigned int*)(0x42A60A88UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST3 (*((volatile unsigned int*)(0x42A60A8CUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST4 (*((volatile unsigned int*)(0x42A60A90UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST5 (*((volatile unsigned int*)(0x42A60A94UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST6 (*((volatile unsigned int*)(0x42A60A98UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST7 (*((volatile unsigned int*)(0x42A60A9CUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST8 (*((volatile unsigned int*)(0x42A60AA0UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST9 (*((volatile unsigned int*)(0x42A60AA4UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST10 (*((volatile unsigned int*)(0x42A60AA8UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST11 (*((volatile unsigned int*)(0x42A60AACUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST12 (*((volatile unsigned int*)(0x42A60AB0UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST13 (*((volatile unsigned int*)(0x42A60AB4UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST14 (*((volatile unsigned int*)(0x42A60AB8UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST15 (*((volatile unsigned int*)(0x42A60ABCUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST16 (*((volatile unsigned int*)(0x42A60AC0UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST17 (*((volatile unsigned int*)(0x42A60AC4UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST18 (*((volatile unsigned int*)(0x42A60AC8UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSDIST19 (*((volatile unsigned int*)(0x42A60ACCUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB0 (*((volatile unsigned int*)(0x42A60AD0UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB1 (*((volatile unsigned int*)(0x42A60AD4UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB2 (*((volatile unsigned int*)(0x42A60AD8UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB3 (*((volatile unsigned int*)(0x42A60ADCUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB4 (*((volatile unsigned int*)(0x42A60AE0UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB5 (*((volatile unsigned int*)(0x42A60AE4UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB6 (*((volatile unsigned int*)(0x42A60AE8UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB7 (*((volatile unsigned int*)(0x42A60AECUL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB8 (*((volatile unsigned int*)(0x42A60AF0UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB9 (*((volatile unsigned int*)(0x42A60AF4UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB10 (*((volatile unsigned int*)(0x42A60AF8UL))) +#define bM4_DMA1_DNSEQCTLB0_DNSCNTB11 (*((volatile unsigned int*)(0x42A60AFCUL))) +#define bM4_DMA1_LLP0_LLP0 (*((volatile unsigned int*)(0x42A60B08UL))) +#define bM4_DMA1_LLP0_LLP1 (*((volatile unsigned int*)(0x42A60B0CUL))) +#define bM4_DMA1_LLP0_LLP2 (*((volatile unsigned int*)(0x42A60B10UL))) +#define bM4_DMA1_LLP0_LLP3 (*((volatile unsigned int*)(0x42A60B14UL))) +#define bM4_DMA1_LLP0_LLP4 (*((volatile unsigned int*)(0x42A60B18UL))) +#define bM4_DMA1_LLP0_LLP5 (*((volatile unsigned int*)(0x42A60B1CUL))) +#define bM4_DMA1_LLP0_LLP6 (*((volatile unsigned int*)(0x42A60B20UL))) +#define bM4_DMA1_LLP0_LLP7 (*((volatile unsigned int*)(0x42A60B24UL))) +#define bM4_DMA1_LLP0_LLP8 (*((volatile unsigned int*)(0x42A60B28UL))) +#define bM4_DMA1_LLP0_LLP9 (*((volatile unsigned int*)(0x42A60B2CUL))) +#define bM4_DMA1_LLP0_LLP10 (*((volatile unsigned int*)(0x42A60B30UL))) +#define bM4_DMA1_LLP0_LLP11 (*((volatile unsigned int*)(0x42A60B34UL))) +#define bM4_DMA1_LLP0_LLP12 (*((volatile unsigned int*)(0x42A60B38UL))) +#define bM4_DMA1_LLP0_LLP13 (*((volatile unsigned int*)(0x42A60B3CUL))) +#define bM4_DMA1_LLP0_LLP14 (*((volatile unsigned int*)(0x42A60B40UL))) +#define bM4_DMA1_LLP0_LLP15 (*((volatile unsigned int*)(0x42A60B44UL))) +#define bM4_DMA1_LLP0_LLP16 (*((volatile unsigned int*)(0x42A60B48UL))) +#define bM4_DMA1_LLP0_LLP17 (*((volatile unsigned int*)(0x42A60B4CUL))) +#define bM4_DMA1_LLP0_LLP18 (*((volatile unsigned int*)(0x42A60B50UL))) +#define bM4_DMA1_LLP0_LLP19 (*((volatile unsigned int*)(0x42A60B54UL))) +#define bM4_DMA1_LLP0_LLP20 (*((volatile unsigned int*)(0x42A60B58UL))) +#define bM4_DMA1_LLP0_LLP21 (*((volatile unsigned int*)(0x42A60B5CUL))) +#define bM4_DMA1_LLP0_LLP22 (*((volatile unsigned int*)(0x42A60B60UL))) +#define bM4_DMA1_LLP0_LLP23 (*((volatile unsigned int*)(0x42A60B64UL))) +#define bM4_DMA1_LLP0_LLP24 (*((volatile unsigned int*)(0x42A60B68UL))) +#define bM4_DMA1_LLP0_LLP25 (*((volatile unsigned int*)(0x42A60B6CUL))) +#define bM4_DMA1_LLP0_LLP26 (*((volatile unsigned int*)(0x42A60B70UL))) +#define bM4_DMA1_LLP0_LLP27 (*((volatile unsigned int*)(0x42A60B74UL))) +#define bM4_DMA1_LLP0_LLP28 (*((volatile unsigned int*)(0x42A60B78UL))) +#define bM4_DMA1_LLP0_LLP29 (*((volatile unsigned int*)(0x42A60B7CUL))) +#define bM4_DMA1_CH0CTL_SINC0 (*((volatile unsigned int*)(0x42A60B80UL))) +#define bM4_DMA1_CH0CTL_SINC1 (*((volatile unsigned int*)(0x42A60B84UL))) +#define bM4_DMA1_CH0CTL_DINC0 (*((volatile unsigned int*)(0x42A60B88UL))) +#define bM4_DMA1_CH0CTL_DINC1 (*((volatile unsigned int*)(0x42A60B8CUL))) +#define bM4_DMA1_CH0CTL_SRPTEN (*((volatile unsigned int*)(0x42A60B90UL))) +#define bM4_DMA1_CH0CTL_DRPTEN (*((volatile unsigned int*)(0x42A60B94UL))) +#define bM4_DMA1_CH0CTL_SNSEQEN (*((volatile unsigned int*)(0x42A60B98UL))) +#define bM4_DMA1_CH0CTL_DNSEQEN (*((volatile unsigned int*)(0x42A60B9CUL))) +#define bM4_DMA1_CH0CTL_HSIZE0 (*((volatile unsigned int*)(0x42A60BA0UL))) +#define bM4_DMA1_CH0CTL_HSIZE1 (*((volatile unsigned int*)(0x42A60BA4UL))) +#define bM4_DMA1_CH0CTL_LLPEN (*((volatile unsigned int*)(0x42A60BA8UL))) +#define bM4_DMA1_CH0CTL_LLPRUN (*((volatile unsigned int*)(0x42A60BACUL))) +#define bM4_DMA1_CH0CTL_IE (*((volatile unsigned int*)(0x42A60BB0UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE0 (*((volatile unsigned int*)(0x42A60D00UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE1 (*((volatile unsigned int*)(0x42A60D04UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE2 (*((volatile unsigned int*)(0x42A60D08UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE3 (*((volatile unsigned int*)(0x42A60D0CUL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE4 (*((volatile unsigned int*)(0x42A60D10UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE5 (*((volatile unsigned int*)(0x42A60D14UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE6 (*((volatile unsigned int*)(0x42A60D18UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE7 (*((volatile unsigned int*)(0x42A60D1CUL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE8 (*((volatile unsigned int*)(0x42A60D20UL))) +#define bM4_DMA1_MONDTCTL0_BLKSIZE9 (*((volatile unsigned int*)(0x42A60D24UL))) +#define bM4_DMA1_MONDTCTL0_CNT0 (*((volatile unsigned int*)(0x42A60D40UL))) +#define bM4_DMA1_MONDTCTL0_CNT1 (*((volatile unsigned int*)(0x42A60D44UL))) +#define bM4_DMA1_MONDTCTL0_CNT2 (*((volatile unsigned int*)(0x42A60D48UL))) +#define bM4_DMA1_MONDTCTL0_CNT3 (*((volatile unsigned int*)(0x42A60D4CUL))) +#define bM4_DMA1_MONDTCTL0_CNT4 (*((volatile unsigned int*)(0x42A60D50UL))) +#define bM4_DMA1_MONDTCTL0_CNT5 (*((volatile unsigned int*)(0x42A60D54UL))) +#define bM4_DMA1_MONDTCTL0_CNT6 (*((volatile unsigned int*)(0x42A60D58UL))) +#define bM4_DMA1_MONDTCTL0_CNT7 (*((volatile unsigned int*)(0x42A60D5CUL))) +#define bM4_DMA1_MONDTCTL0_CNT8 (*((volatile unsigned int*)(0x42A60D60UL))) +#define bM4_DMA1_MONDTCTL0_CNT9 (*((volatile unsigned int*)(0x42A60D64UL))) +#define bM4_DMA1_MONDTCTL0_CNT10 (*((volatile unsigned int*)(0x42A60D68UL))) +#define bM4_DMA1_MONDTCTL0_CNT11 (*((volatile unsigned int*)(0x42A60D6CUL))) +#define bM4_DMA1_MONDTCTL0_CNT12 (*((volatile unsigned int*)(0x42A60D70UL))) +#define bM4_DMA1_MONDTCTL0_CNT13 (*((volatile unsigned int*)(0x42A60D74UL))) +#define bM4_DMA1_MONDTCTL0_CNT14 (*((volatile unsigned int*)(0x42A60D78UL))) +#define bM4_DMA1_MONDTCTL0_CNT15 (*((volatile unsigned int*)(0x42A60D7CUL))) +#define bM4_DMA1_MONRPT0_SRPT0 (*((volatile unsigned int*)(0x42A60D80UL))) +#define bM4_DMA1_MONRPT0_SRPT1 (*((volatile unsigned int*)(0x42A60D84UL))) +#define bM4_DMA1_MONRPT0_SRPT2 (*((volatile unsigned int*)(0x42A60D88UL))) +#define bM4_DMA1_MONRPT0_SRPT3 (*((volatile unsigned int*)(0x42A60D8CUL))) +#define bM4_DMA1_MONRPT0_SRPT4 (*((volatile unsigned int*)(0x42A60D90UL))) +#define bM4_DMA1_MONRPT0_SRPT5 (*((volatile unsigned int*)(0x42A60D94UL))) +#define bM4_DMA1_MONRPT0_SRPT6 (*((volatile unsigned int*)(0x42A60D98UL))) +#define bM4_DMA1_MONRPT0_SRPT7 (*((volatile unsigned int*)(0x42A60D9CUL))) +#define bM4_DMA1_MONRPT0_SRPT8 (*((volatile unsigned int*)(0x42A60DA0UL))) +#define bM4_DMA1_MONRPT0_SRPT9 (*((volatile unsigned int*)(0x42A60DA4UL))) +#define bM4_DMA1_MONRPT0_DRPT0 (*((volatile unsigned int*)(0x42A60DC0UL))) +#define bM4_DMA1_MONRPT0_DRPT1 (*((volatile unsigned int*)(0x42A60DC4UL))) +#define bM4_DMA1_MONRPT0_DRPT2 (*((volatile unsigned int*)(0x42A60DC8UL))) +#define bM4_DMA1_MONRPT0_DRPT3 (*((volatile unsigned int*)(0x42A60DCCUL))) +#define bM4_DMA1_MONRPT0_DRPT4 (*((volatile unsigned int*)(0x42A60DD0UL))) +#define bM4_DMA1_MONRPT0_DRPT5 (*((volatile unsigned int*)(0x42A60DD4UL))) +#define bM4_DMA1_MONRPT0_DRPT6 (*((volatile unsigned int*)(0x42A60DD8UL))) +#define bM4_DMA1_MONRPT0_DRPT7 (*((volatile unsigned int*)(0x42A60DDCUL))) +#define bM4_DMA1_MONRPT0_DRPT8 (*((volatile unsigned int*)(0x42A60DE0UL))) +#define bM4_DMA1_MONRPT0_DRPT9 (*((volatile unsigned int*)(0x42A60DE4UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET0 (*((volatile unsigned int*)(0x42A60E00UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET1 (*((volatile unsigned int*)(0x42A60E04UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET2 (*((volatile unsigned int*)(0x42A60E08UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET3 (*((volatile unsigned int*)(0x42A60E0CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET4 (*((volatile unsigned int*)(0x42A60E10UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET5 (*((volatile unsigned int*)(0x42A60E14UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET6 (*((volatile unsigned int*)(0x42A60E18UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET7 (*((volatile unsigned int*)(0x42A60E1CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET8 (*((volatile unsigned int*)(0x42A60E20UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET9 (*((volatile unsigned int*)(0x42A60E24UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET10 (*((volatile unsigned int*)(0x42A60E28UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET11 (*((volatile unsigned int*)(0x42A60E2CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET12 (*((volatile unsigned int*)(0x42A60E30UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET13 (*((volatile unsigned int*)(0x42A60E34UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET14 (*((volatile unsigned int*)(0x42A60E38UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET15 (*((volatile unsigned int*)(0x42A60E3CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET16 (*((volatile unsigned int*)(0x42A60E40UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET17 (*((volatile unsigned int*)(0x42A60E44UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET18 (*((volatile unsigned int*)(0x42A60E48UL))) +#define bM4_DMA1_MONSNSEQCTL0_SOFFSET19 (*((volatile unsigned int*)(0x42A60E4CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT0 (*((volatile unsigned int*)(0x42A60E50UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT1 (*((volatile unsigned int*)(0x42A60E54UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT2 (*((volatile unsigned int*)(0x42A60E58UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT3 (*((volatile unsigned int*)(0x42A60E5CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT4 (*((volatile unsigned int*)(0x42A60E60UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT5 (*((volatile unsigned int*)(0x42A60E64UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT6 (*((volatile unsigned int*)(0x42A60E68UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT7 (*((volatile unsigned int*)(0x42A60E6CUL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT8 (*((volatile unsigned int*)(0x42A60E70UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT9 (*((volatile unsigned int*)(0x42A60E74UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT10 (*((volatile unsigned int*)(0x42A60E78UL))) +#define bM4_DMA1_MONSNSEQCTL0_SNSCNT11 (*((volatile unsigned int*)(0x42A60E7CUL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET0 (*((volatile unsigned int*)(0x42A60E80UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET1 (*((volatile unsigned int*)(0x42A60E84UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET2 (*((volatile unsigned int*)(0x42A60E88UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET3 (*((volatile unsigned int*)(0x42A60E8CUL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET4 (*((volatile unsigned int*)(0x42A60E90UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET5 (*((volatile unsigned int*)(0x42A60E94UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET6 (*((volatile unsigned int*)(0x42A60E98UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET7 (*((volatile unsigned int*)(0x42A60E9CUL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET8 (*((volatile unsigned int*)(0x42A60EA0UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET9 (*((volatile unsigned int*)(0x42A60EA4UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET10 (*((volatile unsigned int*)(0x42A60EA8UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET11 (*((volatile unsigned int*)(0x42A60EACUL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET12 (*((volatile unsigned int*)(0x42A60EB0UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET13 (*((volatile unsigned int*)(0x42A60EB4UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET14 (*((volatile unsigned int*)(0x42A60EB8UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET15 (*((volatile unsigned int*)(0x42A60EBCUL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET16 (*((volatile unsigned int*)(0x42A60EC0UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET17 (*((volatile unsigned int*)(0x42A60EC4UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET18 (*((volatile unsigned int*)(0x42A60EC8UL))) +#define bM4_DMA1_MONDNSEQCTL0_DOFFSET19 (*((volatile unsigned int*)(0x42A60ECCUL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT0 (*((volatile unsigned int*)(0x42A60ED0UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT1 (*((volatile unsigned int*)(0x42A60ED4UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT2 (*((volatile unsigned int*)(0x42A60ED8UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT3 (*((volatile unsigned int*)(0x42A60EDCUL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT4 (*((volatile unsigned int*)(0x42A60EE0UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT5 (*((volatile unsigned int*)(0x42A60EE4UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT6 (*((volatile unsigned int*)(0x42A60EE8UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT7 (*((volatile unsigned int*)(0x42A60EECUL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT8 (*((volatile unsigned int*)(0x42A60EF0UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT9 (*((volatile unsigned int*)(0x42A60EF4UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT10 (*((volatile unsigned int*)(0x42A60EF8UL))) +#define bM4_DMA1_MONDNSEQCTL0_DNSCNT11 (*((volatile unsigned int*)(0x42A60EFCUL))) +#define bM4_DMA1_DTCTL1_BLKSIZE0 (*((volatile unsigned int*)(0x42A61100UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE1 (*((volatile unsigned int*)(0x42A61104UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE2 (*((volatile unsigned int*)(0x42A61108UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE3 (*((volatile unsigned int*)(0x42A6110CUL))) +#define bM4_DMA1_DTCTL1_BLKSIZE4 (*((volatile unsigned int*)(0x42A61110UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE5 (*((volatile unsigned int*)(0x42A61114UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE6 (*((volatile unsigned int*)(0x42A61118UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE7 (*((volatile unsigned int*)(0x42A6111CUL))) +#define bM4_DMA1_DTCTL1_BLKSIZE8 (*((volatile unsigned int*)(0x42A61120UL))) +#define bM4_DMA1_DTCTL1_BLKSIZE9 (*((volatile unsigned int*)(0x42A61124UL))) +#define bM4_DMA1_DTCTL1_CNT0 (*((volatile unsigned int*)(0x42A61140UL))) +#define bM4_DMA1_DTCTL1_CNT1 (*((volatile unsigned int*)(0x42A61144UL))) +#define bM4_DMA1_DTCTL1_CNT2 (*((volatile unsigned int*)(0x42A61148UL))) +#define bM4_DMA1_DTCTL1_CNT3 (*((volatile unsigned int*)(0x42A6114CUL))) +#define bM4_DMA1_DTCTL1_CNT4 (*((volatile unsigned int*)(0x42A61150UL))) +#define bM4_DMA1_DTCTL1_CNT5 (*((volatile unsigned int*)(0x42A61154UL))) +#define bM4_DMA1_DTCTL1_CNT6 (*((volatile unsigned int*)(0x42A61158UL))) +#define bM4_DMA1_DTCTL1_CNT7 (*((volatile unsigned int*)(0x42A6115CUL))) +#define bM4_DMA1_DTCTL1_CNT8 (*((volatile unsigned int*)(0x42A61160UL))) +#define bM4_DMA1_DTCTL1_CNT9 (*((volatile unsigned int*)(0x42A61164UL))) +#define bM4_DMA1_DTCTL1_CNT10 (*((volatile unsigned int*)(0x42A61168UL))) +#define bM4_DMA1_DTCTL1_CNT11 (*((volatile unsigned int*)(0x42A6116CUL))) +#define bM4_DMA1_DTCTL1_CNT12 (*((volatile unsigned int*)(0x42A61170UL))) +#define bM4_DMA1_DTCTL1_CNT13 (*((volatile unsigned int*)(0x42A61174UL))) +#define bM4_DMA1_DTCTL1_CNT14 (*((volatile unsigned int*)(0x42A61178UL))) +#define bM4_DMA1_DTCTL1_CNT15 (*((volatile unsigned int*)(0x42A6117CUL))) +#define bM4_DMA1_RPT1_SRPT0 (*((volatile unsigned int*)(0x42A61180UL))) +#define bM4_DMA1_RPT1_SRPT1 (*((volatile unsigned int*)(0x42A61184UL))) +#define bM4_DMA1_RPT1_SRPT2 (*((volatile unsigned int*)(0x42A61188UL))) +#define bM4_DMA1_RPT1_SRPT3 (*((volatile unsigned int*)(0x42A6118CUL))) +#define bM4_DMA1_RPT1_SRPT4 (*((volatile unsigned int*)(0x42A61190UL))) +#define bM4_DMA1_RPT1_SRPT5 (*((volatile unsigned int*)(0x42A61194UL))) +#define bM4_DMA1_RPT1_SRPT6 (*((volatile unsigned int*)(0x42A61198UL))) +#define bM4_DMA1_RPT1_SRPT7 (*((volatile unsigned int*)(0x42A6119CUL))) +#define bM4_DMA1_RPT1_SRPT8 (*((volatile unsigned int*)(0x42A611A0UL))) +#define bM4_DMA1_RPT1_SRPT9 (*((volatile unsigned int*)(0x42A611A4UL))) +#define bM4_DMA1_RPT1_DRPT0 (*((volatile unsigned int*)(0x42A611C0UL))) +#define bM4_DMA1_RPT1_DRPT1 (*((volatile unsigned int*)(0x42A611C4UL))) +#define bM4_DMA1_RPT1_DRPT2 (*((volatile unsigned int*)(0x42A611C8UL))) +#define bM4_DMA1_RPT1_DRPT3 (*((volatile unsigned int*)(0x42A611CCUL))) +#define bM4_DMA1_RPT1_DRPT4 (*((volatile unsigned int*)(0x42A611D0UL))) +#define bM4_DMA1_RPT1_DRPT5 (*((volatile unsigned int*)(0x42A611D4UL))) +#define bM4_DMA1_RPT1_DRPT6 (*((volatile unsigned int*)(0x42A611D8UL))) +#define bM4_DMA1_RPT1_DRPT7 (*((volatile unsigned int*)(0x42A611DCUL))) +#define bM4_DMA1_RPT1_DRPT8 (*((volatile unsigned int*)(0x42A611E0UL))) +#define bM4_DMA1_RPT1_DRPT9 (*((volatile unsigned int*)(0x42A611E4UL))) +#define bM4_DMA1_RPTB1_SRPTB0 (*((volatile unsigned int*)(0x42A61180UL))) +#define bM4_DMA1_RPTB1_SRPTB1 (*((volatile unsigned int*)(0x42A61184UL))) +#define bM4_DMA1_RPTB1_SRPTB2 (*((volatile unsigned int*)(0x42A61188UL))) +#define bM4_DMA1_RPTB1_SRPTB3 (*((volatile unsigned int*)(0x42A6118CUL))) +#define bM4_DMA1_RPTB1_SRPTB4 (*((volatile unsigned int*)(0x42A61190UL))) +#define bM4_DMA1_RPTB1_SRPTB5 (*((volatile unsigned int*)(0x42A61194UL))) +#define bM4_DMA1_RPTB1_SRPTB6 (*((volatile unsigned int*)(0x42A61198UL))) +#define bM4_DMA1_RPTB1_SRPTB7 (*((volatile unsigned int*)(0x42A6119CUL))) +#define bM4_DMA1_RPTB1_SRPTB8 (*((volatile unsigned int*)(0x42A611A0UL))) +#define bM4_DMA1_RPTB1_SRPTB9 (*((volatile unsigned int*)(0x42A611A4UL))) +#define bM4_DMA1_RPTB1_DRPTB0 (*((volatile unsigned int*)(0x42A611C0UL))) +#define bM4_DMA1_RPTB1_DRPTB1 (*((volatile unsigned int*)(0x42A611C4UL))) +#define bM4_DMA1_RPTB1_DRPTB2 (*((volatile unsigned int*)(0x42A611C8UL))) +#define bM4_DMA1_RPTB1_DRPTB3 (*((volatile unsigned int*)(0x42A611CCUL))) +#define bM4_DMA1_RPTB1_DRPTB4 (*((volatile unsigned int*)(0x42A611D0UL))) +#define bM4_DMA1_RPTB1_DRPTB5 (*((volatile unsigned int*)(0x42A611D4UL))) +#define bM4_DMA1_RPTB1_DRPTB6 (*((volatile unsigned int*)(0x42A611D8UL))) +#define bM4_DMA1_RPTB1_DRPTB7 (*((volatile unsigned int*)(0x42A611DCUL))) +#define bM4_DMA1_RPTB1_DRPTB8 (*((volatile unsigned int*)(0x42A611E0UL))) +#define bM4_DMA1_RPTB1_DRPTB9 (*((volatile unsigned int*)(0x42A611E4UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET0 (*((volatile unsigned int*)(0x42A61200UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET1 (*((volatile unsigned int*)(0x42A61204UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET2 (*((volatile unsigned int*)(0x42A61208UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET3 (*((volatile unsigned int*)(0x42A6120CUL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET4 (*((volatile unsigned int*)(0x42A61210UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET5 (*((volatile unsigned int*)(0x42A61214UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET6 (*((volatile unsigned int*)(0x42A61218UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET7 (*((volatile unsigned int*)(0x42A6121CUL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET8 (*((volatile unsigned int*)(0x42A61220UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET9 (*((volatile unsigned int*)(0x42A61224UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET10 (*((volatile unsigned int*)(0x42A61228UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET11 (*((volatile unsigned int*)(0x42A6122CUL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET12 (*((volatile unsigned int*)(0x42A61230UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET13 (*((volatile unsigned int*)(0x42A61234UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET14 (*((volatile unsigned int*)(0x42A61238UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET15 (*((volatile unsigned int*)(0x42A6123CUL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET16 (*((volatile unsigned int*)(0x42A61240UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET17 (*((volatile unsigned int*)(0x42A61244UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET18 (*((volatile unsigned int*)(0x42A61248UL))) +#define bM4_DMA1_SNSEQCTL1_SOFFSET19 (*((volatile unsigned int*)(0x42A6124CUL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT0 (*((volatile unsigned int*)(0x42A61250UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT1 (*((volatile unsigned int*)(0x42A61254UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT2 (*((volatile unsigned int*)(0x42A61258UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT3 (*((volatile unsigned int*)(0x42A6125CUL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT4 (*((volatile unsigned int*)(0x42A61260UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT5 (*((volatile unsigned int*)(0x42A61264UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT6 (*((volatile unsigned int*)(0x42A61268UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT7 (*((volatile unsigned int*)(0x42A6126CUL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT8 (*((volatile unsigned int*)(0x42A61270UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT9 (*((volatile unsigned int*)(0x42A61274UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT10 (*((volatile unsigned int*)(0x42A61278UL))) +#define bM4_DMA1_SNSEQCTL1_SNSCNT11 (*((volatile unsigned int*)(0x42A6127CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST0 (*((volatile unsigned int*)(0x42A61200UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST1 (*((volatile unsigned int*)(0x42A61204UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST2 (*((volatile unsigned int*)(0x42A61208UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST3 (*((volatile unsigned int*)(0x42A6120CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST4 (*((volatile unsigned int*)(0x42A61210UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST5 (*((volatile unsigned int*)(0x42A61214UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST6 (*((volatile unsigned int*)(0x42A61218UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST7 (*((volatile unsigned int*)(0x42A6121CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST8 (*((volatile unsigned int*)(0x42A61220UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST9 (*((volatile unsigned int*)(0x42A61224UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST10 (*((volatile unsigned int*)(0x42A61228UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST11 (*((volatile unsigned int*)(0x42A6122CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST12 (*((volatile unsigned int*)(0x42A61230UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST13 (*((volatile unsigned int*)(0x42A61234UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST14 (*((volatile unsigned int*)(0x42A61238UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST15 (*((volatile unsigned int*)(0x42A6123CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST16 (*((volatile unsigned int*)(0x42A61240UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST17 (*((volatile unsigned int*)(0x42A61244UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST18 (*((volatile unsigned int*)(0x42A61248UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSDIST19 (*((volatile unsigned int*)(0x42A6124CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB0 (*((volatile unsigned int*)(0x42A61250UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB1 (*((volatile unsigned int*)(0x42A61254UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB2 (*((volatile unsigned int*)(0x42A61258UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB3 (*((volatile unsigned int*)(0x42A6125CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB4 (*((volatile unsigned int*)(0x42A61260UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB5 (*((volatile unsigned int*)(0x42A61264UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB6 (*((volatile unsigned int*)(0x42A61268UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB7 (*((volatile unsigned int*)(0x42A6126CUL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB8 (*((volatile unsigned int*)(0x42A61270UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB9 (*((volatile unsigned int*)(0x42A61274UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB10 (*((volatile unsigned int*)(0x42A61278UL))) +#define bM4_DMA1_SNSEQCTLB1_SNSCNTB11 (*((volatile unsigned int*)(0x42A6127CUL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET0 (*((volatile unsigned int*)(0x42A61280UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET1 (*((volatile unsigned int*)(0x42A61284UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET2 (*((volatile unsigned int*)(0x42A61288UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET3 (*((volatile unsigned int*)(0x42A6128CUL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET4 (*((volatile unsigned int*)(0x42A61290UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET5 (*((volatile unsigned int*)(0x42A61294UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET6 (*((volatile unsigned int*)(0x42A61298UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET7 (*((volatile unsigned int*)(0x42A6129CUL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET8 (*((volatile unsigned int*)(0x42A612A0UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET9 (*((volatile unsigned int*)(0x42A612A4UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET10 (*((volatile unsigned int*)(0x42A612A8UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET11 (*((volatile unsigned int*)(0x42A612ACUL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET12 (*((volatile unsigned int*)(0x42A612B0UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET13 (*((volatile unsigned int*)(0x42A612B4UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET14 (*((volatile unsigned int*)(0x42A612B8UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET15 (*((volatile unsigned int*)(0x42A612BCUL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET16 (*((volatile unsigned int*)(0x42A612C0UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET17 (*((volatile unsigned int*)(0x42A612C4UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET18 (*((volatile unsigned int*)(0x42A612C8UL))) +#define bM4_DMA1_DNSEQCTL1_DOFFSET19 (*((volatile unsigned int*)(0x42A612CCUL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT0 (*((volatile unsigned int*)(0x42A612D0UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT1 (*((volatile unsigned int*)(0x42A612D4UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT2 (*((volatile unsigned int*)(0x42A612D8UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT3 (*((volatile unsigned int*)(0x42A612DCUL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT4 (*((volatile unsigned int*)(0x42A612E0UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT5 (*((volatile unsigned int*)(0x42A612E4UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT6 (*((volatile unsigned int*)(0x42A612E8UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT7 (*((volatile unsigned int*)(0x42A612ECUL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT8 (*((volatile unsigned int*)(0x42A612F0UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT9 (*((volatile unsigned int*)(0x42A612F4UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT10 (*((volatile unsigned int*)(0x42A612F8UL))) +#define bM4_DMA1_DNSEQCTL1_DNSCNT11 (*((volatile unsigned int*)(0x42A612FCUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST0 (*((volatile unsigned int*)(0x42A61280UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST1 (*((volatile unsigned int*)(0x42A61284UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST2 (*((volatile unsigned int*)(0x42A61288UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST3 (*((volatile unsigned int*)(0x42A6128CUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST4 (*((volatile unsigned int*)(0x42A61290UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST5 (*((volatile unsigned int*)(0x42A61294UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST6 (*((volatile unsigned int*)(0x42A61298UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST7 (*((volatile unsigned int*)(0x42A6129CUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST8 (*((volatile unsigned int*)(0x42A612A0UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST9 (*((volatile unsigned int*)(0x42A612A4UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST10 (*((volatile unsigned int*)(0x42A612A8UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST11 (*((volatile unsigned int*)(0x42A612ACUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST12 (*((volatile unsigned int*)(0x42A612B0UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST13 (*((volatile unsigned int*)(0x42A612B4UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST14 (*((volatile unsigned int*)(0x42A612B8UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST15 (*((volatile unsigned int*)(0x42A612BCUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST16 (*((volatile unsigned int*)(0x42A612C0UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST17 (*((volatile unsigned int*)(0x42A612C4UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST18 (*((volatile unsigned int*)(0x42A612C8UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSDIST19 (*((volatile unsigned int*)(0x42A612CCUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB0 (*((volatile unsigned int*)(0x42A612D0UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB1 (*((volatile unsigned int*)(0x42A612D4UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB2 (*((volatile unsigned int*)(0x42A612D8UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB3 (*((volatile unsigned int*)(0x42A612DCUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB4 (*((volatile unsigned int*)(0x42A612E0UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB5 (*((volatile unsigned int*)(0x42A612E4UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB6 (*((volatile unsigned int*)(0x42A612E8UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB7 (*((volatile unsigned int*)(0x42A612ECUL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB8 (*((volatile unsigned int*)(0x42A612F0UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB9 (*((volatile unsigned int*)(0x42A612F4UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB10 (*((volatile unsigned int*)(0x42A612F8UL))) +#define bM4_DMA1_DNSEQCTLB1_DNSCNTB11 (*((volatile unsigned int*)(0x42A612FCUL))) +#define bM4_DMA1_LLP1_LLP0 (*((volatile unsigned int*)(0x42A61308UL))) +#define bM4_DMA1_LLP1_LLP1 (*((volatile unsigned int*)(0x42A6130CUL))) +#define bM4_DMA1_LLP1_LLP2 (*((volatile unsigned int*)(0x42A61310UL))) +#define bM4_DMA1_LLP1_LLP3 (*((volatile unsigned int*)(0x42A61314UL))) +#define bM4_DMA1_LLP1_LLP4 (*((volatile unsigned int*)(0x42A61318UL))) +#define bM4_DMA1_LLP1_LLP5 (*((volatile unsigned int*)(0x42A6131CUL))) +#define bM4_DMA1_LLP1_LLP6 (*((volatile unsigned int*)(0x42A61320UL))) +#define bM4_DMA1_LLP1_LLP7 (*((volatile unsigned int*)(0x42A61324UL))) +#define bM4_DMA1_LLP1_LLP8 (*((volatile unsigned int*)(0x42A61328UL))) +#define bM4_DMA1_LLP1_LLP9 (*((volatile unsigned int*)(0x42A6132CUL))) +#define bM4_DMA1_LLP1_LLP10 (*((volatile unsigned int*)(0x42A61330UL))) +#define bM4_DMA1_LLP1_LLP11 (*((volatile unsigned int*)(0x42A61334UL))) +#define bM4_DMA1_LLP1_LLP12 (*((volatile unsigned int*)(0x42A61338UL))) +#define bM4_DMA1_LLP1_LLP13 (*((volatile unsigned int*)(0x42A6133CUL))) +#define bM4_DMA1_LLP1_LLP14 (*((volatile unsigned int*)(0x42A61340UL))) +#define bM4_DMA1_LLP1_LLP15 (*((volatile unsigned int*)(0x42A61344UL))) +#define bM4_DMA1_LLP1_LLP16 (*((volatile unsigned int*)(0x42A61348UL))) +#define bM4_DMA1_LLP1_LLP17 (*((volatile unsigned int*)(0x42A6134CUL))) +#define bM4_DMA1_LLP1_LLP18 (*((volatile unsigned int*)(0x42A61350UL))) +#define bM4_DMA1_LLP1_LLP19 (*((volatile unsigned int*)(0x42A61354UL))) +#define bM4_DMA1_LLP1_LLP20 (*((volatile unsigned int*)(0x42A61358UL))) +#define bM4_DMA1_LLP1_LLP21 (*((volatile unsigned int*)(0x42A6135CUL))) +#define bM4_DMA1_LLP1_LLP22 (*((volatile unsigned int*)(0x42A61360UL))) +#define bM4_DMA1_LLP1_LLP23 (*((volatile unsigned int*)(0x42A61364UL))) +#define bM4_DMA1_LLP1_LLP24 (*((volatile unsigned int*)(0x42A61368UL))) +#define bM4_DMA1_LLP1_LLP25 (*((volatile unsigned int*)(0x42A6136CUL))) +#define bM4_DMA1_LLP1_LLP26 (*((volatile unsigned int*)(0x42A61370UL))) +#define bM4_DMA1_LLP1_LLP27 (*((volatile unsigned int*)(0x42A61374UL))) +#define bM4_DMA1_LLP1_LLP28 (*((volatile unsigned int*)(0x42A61378UL))) +#define bM4_DMA1_LLP1_LLP29 (*((volatile unsigned int*)(0x42A6137CUL))) +#define bM4_DMA1_CH1CTL_SINC0 (*((volatile unsigned int*)(0x42A61380UL))) +#define bM4_DMA1_CH1CTL_SINC1 (*((volatile unsigned int*)(0x42A61384UL))) +#define bM4_DMA1_CH1CTL_DINC0 (*((volatile unsigned int*)(0x42A61388UL))) +#define bM4_DMA1_CH1CTL_DINC1 (*((volatile unsigned int*)(0x42A6138CUL))) +#define bM4_DMA1_CH1CTL_SRPTEN (*((volatile unsigned int*)(0x42A61390UL))) +#define bM4_DMA1_CH1CTL_DRPTEN (*((volatile unsigned int*)(0x42A61394UL))) +#define bM4_DMA1_CH1CTL_SNSEQEN (*((volatile unsigned int*)(0x42A61398UL))) +#define bM4_DMA1_CH1CTL_DNSEQEN (*((volatile unsigned int*)(0x42A6139CUL))) +#define bM4_DMA1_CH1CTL_HSIZE0 (*((volatile unsigned int*)(0x42A613A0UL))) +#define bM4_DMA1_CH1CTL_HSIZE1 (*((volatile unsigned int*)(0x42A613A4UL))) +#define bM4_DMA1_CH1CTL_LLPEN (*((volatile unsigned int*)(0x42A613A8UL))) +#define bM4_DMA1_CH1CTL_LLPRUN (*((volatile unsigned int*)(0x42A613ACUL))) +#define bM4_DMA1_CH1CTL_IE (*((volatile unsigned int*)(0x42A613B0UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE0 (*((volatile unsigned int*)(0x42A61500UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE1 (*((volatile unsigned int*)(0x42A61504UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE2 (*((volatile unsigned int*)(0x42A61508UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE3 (*((volatile unsigned int*)(0x42A6150CUL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE4 (*((volatile unsigned int*)(0x42A61510UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE5 (*((volatile unsigned int*)(0x42A61514UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE6 (*((volatile unsigned int*)(0x42A61518UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE7 (*((volatile unsigned int*)(0x42A6151CUL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE8 (*((volatile unsigned int*)(0x42A61520UL))) +#define bM4_DMA1_MONDTCTL1_BLKSIZE9 (*((volatile unsigned int*)(0x42A61524UL))) +#define bM4_DMA1_MONDTCTL1_CNT0 (*((volatile unsigned int*)(0x42A61540UL))) +#define bM4_DMA1_MONDTCTL1_CNT1 (*((volatile unsigned int*)(0x42A61544UL))) +#define bM4_DMA1_MONDTCTL1_CNT2 (*((volatile unsigned int*)(0x42A61548UL))) +#define bM4_DMA1_MONDTCTL1_CNT3 (*((volatile unsigned int*)(0x42A6154CUL))) +#define bM4_DMA1_MONDTCTL1_CNT4 (*((volatile unsigned int*)(0x42A61550UL))) +#define bM4_DMA1_MONDTCTL1_CNT5 (*((volatile unsigned int*)(0x42A61554UL))) +#define bM4_DMA1_MONDTCTL1_CNT6 (*((volatile unsigned int*)(0x42A61558UL))) +#define bM4_DMA1_MONDTCTL1_CNT7 (*((volatile unsigned int*)(0x42A6155CUL))) +#define bM4_DMA1_MONDTCTL1_CNT8 (*((volatile unsigned int*)(0x42A61560UL))) +#define bM4_DMA1_MONDTCTL1_CNT9 (*((volatile unsigned int*)(0x42A61564UL))) +#define bM4_DMA1_MONDTCTL1_CNT10 (*((volatile unsigned int*)(0x42A61568UL))) +#define bM4_DMA1_MONDTCTL1_CNT11 (*((volatile unsigned int*)(0x42A6156CUL))) +#define bM4_DMA1_MONDTCTL1_CNT12 (*((volatile unsigned int*)(0x42A61570UL))) +#define bM4_DMA1_MONDTCTL1_CNT13 (*((volatile unsigned int*)(0x42A61574UL))) +#define bM4_DMA1_MONDTCTL1_CNT14 (*((volatile unsigned int*)(0x42A61578UL))) +#define bM4_DMA1_MONDTCTL1_CNT15 (*((volatile unsigned int*)(0x42A6157CUL))) +#define bM4_DMA1_MONRPT1_SRPT0 (*((volatile unsigned int*)(0x42A61580UL))) +#define bM4_DMA1_MONRPT1_SRPT1 (*((volatile unsigned int*)(0x42A61584UL))) +#define bM4_DMA1_MONRPT1_SRPT2 (*((volatile unsigned int*)(0x42A61588UL))) +#define bM4_DMA1_MONRPT1_SRPT3 (*((volatile unsigned int*)(0x42A6158CUL))) +#define bM4_DMA1_MONRPT1_SRPT4 (*((volatile unsigned int*)(0x42A61590UL))) +#define bM4_DMA1_MONRPT1_SRPT5 (*((volatile unsigned int*)(0x42A61594UL))) +#define bM4_DMA1_MONRPT1_SRPT6 (*((volatile unsigned int*)(0x42A61598UL))) +#define bM4_DMA1_MONRPT1_SRPT7 (*((volatile unsigned int*)(0x42A6159CUL))) +#define bM4_DMA1_MONRPT1_SRPT8 (*((volatile unsigned int*)(0x42A615A0UL))) +#define bM4_DMA1_MONRPT1_SRPT9 (*((volatile unsigned int*)(0x42A615A4UL))) +#define bM4_DMA1_MONRPT1_DRPT0 (*((volatile unsigned int*)(0x42A615C0UL))) +#define bM4_DMA1_MONRPT1_DRPT1 (*((volatile unsigned int*)(0x42A615C4UL))) +#define bM4_DMA1_MONRPT1_DRPT2 (*((volatile unsigned int*)(0x42A615C8UL))) +#define bM4_DMA1_MONRPT1_DRPT3 (*((volatile unsigned int*)(0x42A615CCUL))) +#define bM4_DMA1_MONRPT1_DRPT4 (*((volatile unsigned int*)(0x42A615D0UL))) +#define bM4_DMA1_MONRPT1_DRPT5 (*((volatile unsigned int*)(0x42A615D4UL))) +#define bM4_DMA1_MONRPT1_DRPT6 (*((volatile unsigned int*)(0x42A615D8UL))) +#define bM4_DMA1_MONRPT1_DRPT7 (*((volatile unsigned int*)(0x42A615DCUL))) +#define bM4_DMA1_MONRPT1_DRPT8 (*((volatile unsigned int*)(0x42A615E0UL))) +#define bM4_DMA1_MONRPT1_DRPT9 (*((volatile unsigned int*)(0x42A615E4UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET0 (*((volatile unsigned int*)(0x42A61600UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET1 (*((volatile unsigned int*)(0x42A61604UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET2 (*((volatile unsigned int*)(0x42A61608UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET3 (*((volatile unsigned int*)(0x42A6160CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET4 (*((volatile unsigned int*)(0x42A61610UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET5 (*((volatile unsigned int*)(0x42A61614UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET6 (*((volatile unsigned int*)(0x42A61618UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET7 (*((volatile unsigned int*)(0x42A6161CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET8 (*((volatile unsigned int*)(0x42A61620UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET9 (*((volatile unsigned int*)(0x42A61624UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET10 (*((volatile unsigned int*)(0x42A61628UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET11 (*((volatile unsigned int*)(0x42A6162CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET12 (*((volatile unsigned int*)(0x42A61630UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET13 (*((volatile unsigned int*)(0x42A61634UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET14 (*((volatile unsigned int*)(0x42A61638UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET15 (*((volatile unsigned int*)(0x42A6163CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET16 (*((volatile unsigned int*)(0x42A61640UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET17 (*((volatile unsigned int*)(0x42A61644UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET18 (*((volatile unsigned int*)(0x42A61648UL))) +#define bM4_DMA1_MONSNSEQCTL1_SOFFSET19 (*((volatile unsigned int*)(0x42A6164CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT0 (*((volatile unsigned int*)(0x42A61650UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT1 (*((volatile unsigned int*)(0x42A61654UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT2 (*((volatile unsigned int*)(0x42A61658UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT3 (*((volatile unsigned int*)(0x42A6165CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT4 (*((volatile unsigned int*)(0x42A61660UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT5 (*((volatile unsigned int*)(0x42A61664UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT6 (*((volatile unsigned int*)(0x42A61668UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT7 (*((volatile unsigned int*)(0x42A6166CUL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT8 (*((volatile unsigned int*)(0x42A61670UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT9 (*((volatile unsigned int*)(0x42A61674UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT10 (*((volatile unsigned int*)(0x42A61678UL))) +#define bM4_DMA1_MONSNSEQCTL1_SNSCNT11 (*((volatile unsigned int*)(0x42A6167CUL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET0 (*((volatile unsigned int*)(0x42A61680UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET1 (*((volatile unsigned int*)(0x42A61684UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET2 (*((volatile unsigned int*)(0x42A61688UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET3 (*((volatile unsigned int*)(0x42A6168CUL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET4 (*((volatile unsigned int*)(0x42A61690UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET5 (*((volatile unsigned int*)(0x42A61694UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET6 (*((volatile unsigned int*)(0x42A61698UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET7 (*((volatile unsigned int*)(0x42A6169CUL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET8 (*((volatile unsigned int*)(0x42A616A0UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET9 (*((volatile unsigned int*)(0x42A616A4UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET10 (*((volatile unsigned int*)(0x42A616A8UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET11 (*((volatile unsigned int*)(0x42A616ACUL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET12 (*((volatile unsigned int*)(0x42A616B0UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET13 (*((volatile unsigned int*)(0x42A616B4UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET14 (*((volatile unsigned int*)(0x42A616B8UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET15 (*((volatile unsigned int*)(0x42A616BCUL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET16 (*((volatile unsigned int*)(0x42A616C0UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET17 (*((volatile unsigned int*)(0x42A616C4UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET18 (*((volatile unsigned int*)(0x42A616C8UL))) +#define bM4_DMA1_MONDNSEQCTL1_DOFFSET19 (*((volatile unsigned int*)(0x42A616CCUL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT0 (*((volatile unsigned int*)(0x42A616D0UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT1 (*((volatile unsigned int*)(0x42A616D4UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT2 (*((volatile unsigned int*)(0x42A616D8UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT3 (*((volatile unsigned int*)(0x42A616DCUL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT4 (*((volatile unsigned int*)(0x42A616E0UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT5 (*((volatile unsigned int*)(0x42A616E4UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT6 (*((volatile unsigned int*)(0x42A616E8UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT7 (*((volatile unsigned int*)(0x42A616ECUL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT8 (*((volatile unsigned int*)(0x42A616F0UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT9 (*((volatile unsigned int*)(0x42A616F4UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT10 (*((volatile unsigned int*)(0x42A616F8UL))) +#define bM4_DMA1_MONDNSEQCTL1_DNSCNT11 (*((volatile unsigned int*)(0x42A616FCUL))) +#define bM4_DMA1_DTCTL2_BLKSIZE0 (*((volatile unsigned int*)(0x42A61900UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE1 (*((volatile unsigned int*)(0x42A61904UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE2 (*((volatile unsigned int*)(0x42A61908UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE3 (*((volatile unsigned int*)(0x42A6190CUL))) +#define bM4_DMA1_DTCTL2_BLKSIZE4 (*((volatile unsigned int*)(0x42A61910UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE5 (*((volatile unsigned int*)(0x42A61914UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE6 (*((volatile unsigned int*)(0x42A61918UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE7 (*((volatile unsigned int*)(0x42A6191CUL))) +#define bM4_DMA1_DTCTL2_BLKSIZE8 (*((volatile unsigned int*)(0x42A61920UL))) +#define bM4_DMA1_DTCTL2_BLKSIZE9 (*((volatile unsigned int*)(0x42A61924UL))) +#define bM4_DMA1_DTCTL2_CNT0 (*((volatile unsigned int*)(0x42A61940UL))) +#define bM4_DMA1_DTCTL2_CNT1 (*((volatile unsigned int*)(0x42A61944UL))) +#define bM4_DMA1_DTCTL2_CNT2 (*((volatile unsigned int*)(0x42A61948UL))) +#define bM4_DMA1_DTCTL2_CNT3 (*((volatile unsigned int*)(0x42A6194CUL))) +#define bM4_DMA1_DTCTL2_CNT4 (*((volatile unsigned int*)(0x42A61950UL))) +#define bM4_DMA1_DTCTL2_CNT5 (*((volatile unsigned int*)(0x42A61954UL))) +#define bM4_DMA1_DTCTL2_CNT6 (*((volatile unsigned int*)(0x42A61958UL))) +#define bM4_DMA1_DTCTL2_CNT7 (*((volatile unsigned int*)(0x42A6195CUL))) +#define bM4_DMA1_DTCTL2_CNT8 (*((volatile unsigned int*)(0x42A61960UL))) +#define bM4_DMA1_DTCTL2_CNT9 (*((volatile unsigned int*)(0x42A61964UL))) +#define bM4_DMA1_DTCTL2_CNT10 (*((volatile unsigned int*)(0x42A61968UL))) +#define bM4_DMA1_DTCTL2_CNT11 (*((volatile unsigned int*)(0x42A6196CUL))) +#define bM4_DMA1_DTCTL2_CNT12 (*((volatile unsigned int*)(0x42A61970UL))) +#define bM4_DMA1_DTCTL2_CNT13 (*((volatile unsigned int*)(0x42A61974UL))) +#define bM4_DMA1_DTCTL2_CNT14 (*((volatile unsigned int*)(0x42A61978UL))) +#define bM4_DMA1_DTCTL2_CNT15 (*((volatile unsigned int*)(0x42A6197CUL))) +#define bM4_DMA1_RPT2_SRPT0 (*((volatile unsigned int*)(0x42A61980UL))) +#define bM4_DMA1_RPT2_SRPT1 (*((volatile unsigned int*)(0x42A61984UL))) +#define bM4_DMA1_RPT2_SRPT2 (*((volatile unsigned int*)(0x42A61988UL))) +#define bM4_DMA1_RPT2_SRPT3 (*((volatile unsigned int*)(0x42A6198CUL))) +#define bM4_DMA1_RPT2_SRPT4 (*((volatile unsigned int*)(0x42A61990UL))) +#define bM4_DMA1_RPT2_SRPT5 (*((volatile unsigned int*)(0x42A61994UL))) +#define bM4_DMA1_RPT2_SRPT6 (*((volatile unsigned int*)(0x42A61998UL))) +#define bM4_DMA1_RPT2_SRPT7 (*((volatile unsigned int*)(0x42A6199CUL))) +#define bM4_DMA1_RPT2_SRPT8 (*((volatile unsigned int*)(0x42A619A0UL))) +#define bM4_DMA1_RPT2_SRPT9 (*((volatile unsigned int*)(0x42A619A4UL))) +#define bM4_DMA1_RPT2_DRPT0 (*((volatile unsigned int*)(0x42A619C0UL))) +#define bM4_DMA1_RPT2_DRPT1 (*((volatile unsigned int*)(0x42A619C4UL))) +#define bM4_DMA1_RPT2_DRPT2 (*((volatile unsigned int*)(0x42A619C8UL))) +#define bM4_DMA1_RPT2_DRPT3 (*((volatile unsigned int*)(0x42A619CCUL))) +#define bM4_DMA1_RPT2_DRPT4 (*((volatile unsigned int*)(0x42A619D0UL))) +#define bM4_DMA1_RPT2_DRPT5 (*((volatile unsigned int*)(0x42A619D4UL))) +#define bM4_DMA1_RPT2_DRPT6 (*((volatile unsigned int*)(0x42A619D8UL))) +#define bM4_DMA1_RPT2_DRPT7 (*((volatile unsigned int*)(0x42A619DCUL))) +#define bM4_DMA1_RPT2_DRPT8 (*((volatile unsigned int*)(0x42A619E0UL))) +#define bM4_DMA1_RPT2_DRPT9 (*((volatile unsigned int*)(0x42A619E4UL))) +#define bM4_DMA1_RPTB2_SRPTB0 (*((volatile unsigned int*)(0x42A61980UL))) +#define bM4_DMA1_RPTB2_SRPTB1 (*((volatile unsigned int*)(0x42A61984UL))) +#define bM4_DMA1_RPTB2_SRPTB2 (*((volatile unsigned int*)(0x42A61988UL))) +#define bM4_DMA1_RPTB2_SRPTB3 (*((volatile unsigned int*)(0x42A6198CUL))) +#define bM4_DMA1_RPTB2_SRPTB4 (*((volatile unsigned int*)(0x42A61990UL))) +#define bM4_DMA1_RPTB2_SRPTB5 (*((volatile unsigned int*)(0x42A61994UL))) +#define bM4_DMA1_RPTB2_SRPTB6 (*((volatile unsigned int*)(0x42A61998UL))) +#define bM4_DMA1_RPTB2_SRPTB7 (*((volatile unsigned int*)(0x42A6199CUL))) +#define bM4_DMA1_RPTB2_SRPTB8 (*((volatile unsigned int*)(0x42A619A0UL))) +#define bM4_DMA1_RPTB2_SRPTB9 (*((volatile unsigned int*)(0x42A619A4UL))) +#define bM4_DMA1_RPTB2_DRPTB0 (*((volatile unsigned int*)(0x42A619C0UL))) +#define bM4_DMA1_RPTB2_DRPTB1 (*((volatile unsigned int*)(0x42A619C4UL))) +#define bM4_DMA1_RPTB2_DRPTB2 (*((volatile unsigned int*)(0x42A619C8UL))) +#define bM4_DMA1_RPTB2_DRPTB3 (*((volatile unsigned int*)(0x42A619CCUL))) +#define bM4_DMA1_RPTB2_DRPTB4 (*((volatile unsigned int*)(0x42A619D0UL))) +#define bM4_DMA1_RPTB2_DRPTB5 (*((volatile unsigned int*)(0x42A619D4UL))) +#define bM4_DMA1_RPTB2_DRPTB6 (*((volatile unsigned int*)(0x42A619D8UL))) +#define bM4_DMA1_RPTB2_DRPTB7 (*((volatile unsigned int*)(0x42A619DCUL))) +#define bM4_DMA1_RPTB2_DRPTB8 (*((volatile unsigned int*)(0x42A619E0UL))) +#define bM4_DMA1_RPTB2_DRPTB9 (*((volatile unsigned int*)(0x42A619E4UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET0 (*((volatile unsigned int*)(0x42A61A00UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET1 (*((volatile unsigned int*)(0x42A61A04UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET2 (*((volatile unsigned int*)(0x42A61A08UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET3 (*((volatile unsigned int*)(0x42A61A0CUL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET4 (*((volatile unsigned int*)(0x42A61A10UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET5 (*((volatile unsigned int*)(0x42A61A14UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET6 (*((volatile unsigned int*)(0x42A61A18UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET7 (*((volatile unsigned int*)(0x42A61A1CUL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET8 (*((volatile unsigned int*)(0x42A61A20UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET9 (*((volatile unsigned int*)(0x42A61A24UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET10 (*((volatile unsigned int*)(0x42A61A28UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET11 (*((volatile unsigned int*)(0x42A61A2CUL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET12 (*((volatile unsigned int*)(0x42A61A30UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET13 (*((volatile unsigned int*)(0x42A61A34UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET14 (*((volatile unsigned int*)(0x42A61A38UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET15 (*((volatile unsigned int*)(0x42A61A3CUL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET16 (*((volatile unsigned int*)(0x42A61A40UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET17 (*((volatile unsigned int*)(0x42A61A44UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET18 (*((volatile unsigned int*)(0x42A61A48UL))) +#define bM4_DMA1_SNSEQCTL2_SOFFSET19 (*((volatile unsigned int*)(0x42A61A4CUL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT0 (*((volatile unsigned int*)(0x42A61A50UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT1 (*((volatile unsigned int*)(0x42A61A54UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT2 (*((volatile unsigned int*)(0x42A61A58UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT3 (*((volatile unsigned int*)(0x42A61A5CUL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT4 (*((volatile unsigned int*)(0x42A61A60UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT5 (*((volatile unsigned int*)(0x42A61A64UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT6 (*((volatile unsigned int*)(0x42A61A68UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT7 (*((volatile unsigned int*)(0x42A61A6CUL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT8 (*((volatile unsigned int*)(0x42A61A70UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT9 (*((volatile unsigned int*)(0x42A61A74UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT10 (*((volatile unsigned int*)(0x42A61A78UL))) +#define bM4_DMA1_SNSEQCTL2_SNSCNT11 (*((volatile unsigned int*)(0x42A61A7CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST0 (*((volatile unsigned int*)(0x42A61A00UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST1 (*((volatile unsigned int*)(0x42A61A04UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST2 (*((volatile unsigned int*)(0x42A61A08UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST3 (*((volatile unsigned int*)(0x42A61A0CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST4 (*((volatile unsigned int*)(0x42A61A10UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST5 (*((volatile unsigned int*)(0x42A61A14UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST6 (*((volatile unsigned int*)(0x42A61A18UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST7 (*((volatile unsigned int*)(0x42A61A1CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST8 (*((volatile unsigned int*)(0x42A61A20UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST9 (*((volatile unsigned int*)(0x42A61A24UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST10 (*((volatile unsigned int*)(0x42A61A28UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST11 (*((volatile unsigned int*)(0x42A61A2CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST12 (*((volatile unsigned int*)(0x42A61A30UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST13 (*((volatile unsigned int*)(0x42A61A34UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST14 (*((volatile unsigned int*)(0x42A61A38UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST15 (*((volatile unsigned int*)(0x42A61A3CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST16 (*((volatile unsigned int*)(0x42A61A40UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST17 (*((volatile unsigned int*)(0x42A61A44UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST18 (*((volatile unsigned int*)(0x42A61A48UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSDIST19 (*((volatile unsigned int*)(0x42A61A4CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB0 (*((volatile unsigned int*)(0x42A61A50UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB1 (*((volatile unsigned int*)(0x42A61A54UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB2 (*((volatile unsigned int*)(0x42A61A58UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB3 (*((volatile unsigned int*)(0x42A61A5CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB4 (*((volatile unsigned int*)(0x42A61A60UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB5 (*((volatile unsigned int*)(0x42A61A64UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB6 (*((volatile unsigned int*)(0x42A61A68UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB7 (*((volatile unsigned int*)(0x42A61A6CUL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB8 (*((volatile unsigned int*)(0x42A61A70UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB9 (*((volatile unsigned int*)(0x42A61A74UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB10 (*((volatile unsigned int*)(0x42A61A78UL))) +#define bM4_DMA1_SNSEQCTLB2_SNSCNTB11 (*((volatile unsigned int*)(0x42A61A7CUL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET0 (*((volatile unsigned int*)(0x42A61A80UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET1 (*((volatile unsigned int*)(0x42A61A84UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET2 (*((volatile unsigned int*)(0x42A61A88UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET3 (*((volatile unsigned int*)(0x42A61A8CUL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET4 (*((volatile unsigned int*)(0x42A61A90UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET5 (*((volatile unsigned int*)(0x42A61A94UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET6 (*((volatile unsigned int*)(0x42A61A98UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET7 (*((volatile unsigned int*)(0x42A61A9CUL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET8 (*((volatile unsigned int*)(0x42A61AA0UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET9 (*((volatile unsigned int*)(0x42A61AA4UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET10 (*((volatile unsigned int*)(0x42A61AA8UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET11 (*((volatile unsigned int*)(0x42A61AACUL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET12 (*((volatile unsigned int*)(0x42A61AB0UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET13 (*((volatile unsigned int*)(0x42A61AB4UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET14 (*((volatile unsigned int*)(0x42A61AB8UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET15 (*((volatile unsigned int*)(0x42A61ABCUL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET16 (*((volatile unsigned int*)(0x42A61AC0UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET17 (*((volatile unsigned int*)(0x42A61AC4UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET18 (*((volatile unsigned int*)(0x42A61AC8UL))) +#define bM4_DMA1_DNSEQCTL2_DOFFSET19 (*((volatile unsigned int*)(0x42A61ACCUL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT0 (*((volatile unsigned int*)(0x42A61AD0UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT1 (*((volatile unsigned int*)(0x42A61AD4UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT2 (*((volatile unsigned int*)(0x42A61AD8UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT3 (*((volatile unsigned int*)(0x42A61ADCUL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT4 (*((volatile unsigned int*)(0x42A61AE0UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT5 (*((volatile unsigned int*)(0x42A61AE4UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT6 (*((volatile unsigned int*)(0x42A61AE8UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT7 (*((volatile unsigned int*)(0x42A61AECUL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT8 (*((volatile unsigned int*)(0x42A61AF0UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT9 (*((volatile unsigned int*)(0x42A61AF4UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT10 (*((volatile unsigned int*)(0x42A61AF8UL))) +#define bM4_DMA1_DNSEQCTL2_DNSCNT11 (*((volatile unsigned int*)(0x42A61AFCUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST0 (*((volatile unsigned int*)(0x42A61A80UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST1 (*((volatile unsigned int*)(0x42A61A84UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST2 (*((volatile unsigned int*)(0x42A61A88UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST3 (*((volatile unsigned int*)(0x42A61A8CUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST4 (*((volatile unsigned int*)(0x42A61A90UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST5 (*((volatile unsigned int*)(0x42A61A94UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST6 (*((volatile unsigned int*)(0x42A61A98UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST7 (*((volatile unsigned int*)(0x42A61A9CUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST8 (*((volatile unsigned int*)(0x42A61AA0UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST9 (*((volatile unsigned int*)(0x42A61AA4UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST10 (*((volatile unsigned int*)(0x42A61AA8UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST11 (*((volatile unsigned int*)(0x42A61AACUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST12 (*((volatile unsigned int*)(0x42A61AB0UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST13 (*((volatile unsigned int*)(0x42A61AB4UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST14 (*((volatile unsigned int*)(0x42A61AB8UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST15 (*((volatile unsigned int*)(0x42A61ABCUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST16 (*((volatile unsigned int*)(0x42A61AC0UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST17 (*((volatile unsigned int*)(0x42A61AC4UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST18 (*((volatile unsigned int*)(0x42A61AC8UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSDIST19 (*((volatile unsigned int*)(0x42A61ACCUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB0 (*((volatile unsigned int*)(0x42A61AD0UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB1 (*((volatile unsigned int*)(0x42A61AD4UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB2 (*((volatile unsigned int*)(0x42A61AD8UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB3 (*((volatile unsigned int*)(0x42A61ADCUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB4 (*((volatile unsigned int*)(0x42A61AE0UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB5 (*((volatile unsigned int*)(0x42A61AE4UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB6 (*((volatile unsigned int*)(0x42A61AE8UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB7 (*((volatile unsigned int*)(0x42A61AECUL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB8 (*((volatile unsigned int*)(0x42A61AF0UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB9 (*((volatile unsigned int*)(0x42A61AF4UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB10 (*((volatile unsigned int*)(0x42A61AF8UL))) +#define bM4_DMA1_DNSEQCTLB2_DNSCNTB11 (*((volatile unsigned int*)(0x42A61AFCUL))) +#define bM4_DMA1_LLP2_LLP0 (*((volatile unsigned int*)(0x42A61B08UL))) +#define bM4_DMA1_LLP2_LLP1 (*((volatile unsigned int*)(0x42A61B0CUL))) +#define bM4_DMA1_LLP2_LLP2 (*((volatile unsigned int*)(0x42A61B10UL))) +#define bM4_DMA1_LLP2_LLP3 (*((volatile unsigned int*)(0x42A61B14UL))) +#define bM4_DMA1_LLP2_LLP4 (*((volatile unsigned int*)(0x42A61B18UL))) +#define bM4_DMA1_LLP2_LLP5 (*((volatile unsigned int*)(0x42A61B1CUL))) +#define bM4_DMA1_LLP2_LLP6 (*((volatile unsigned int*)(0x42A61B20UL))) +#define bM4_DMA1_LLP2_LLP7 (*((volatile unsigned int*)(0x42A61B24UL))) +#define bM4_DMA1_LLP2_LLP8 (*((volatile unsigned int*)(0x42A61B28UL))) +#define bM4_DMA1_LLP2_LLP9 (*((volatile unsigned int*)(0x42A61B2CUL))) +#define bM4_DMA1_LLP2_LLP10 (*((volatile unsigned int*)(0x42A61B30UL))) +#define bM4_DMA1_LLP2_LLP11 (*((volatile unsigned int*)(0x42A61B34UL))) +#define bM4_DMA1_LLP2_LLP12 (*((volatile unsigned int*)(0x42A61B38UL))) +#define bM4_DMA1_LLP2_LLP13 (*((volatile unsigned int*)(0x42A61B3CUL))) +#define bM4_DMA1_LLP2_LLP14 (*((volatile unsigned int*)(0x42A61B40UL))) +#define bM4_DMA1_LLP2_LLP15 (*((volatile unsigned int*)(0x42A61B44UL))) +#define bM4_DMA1_LLP2_LLP16 (*((volatile unsigned int*)(0x42A61B48UL))) +#define bM4_DMA1_LLP2_LLP17 (*((volatile unsigned int*)(0x42A61B4CUL))) +#define bM4_DMA1_LLP2_LLP18 (*((volatile unsigned int*)(0x42A61B50UL))) +#define bM4_DMA1_LLP2_LLP19 (*((volatile unsigned int*)(0x42A61B54UL))) +#define bM4_DMA1_LLP2_LLP20 (*((volatile unsigned int*)(0x42A61B58UL))) +#define bM4_DMA1_LLP2_LLP21 (*((volatile unsigned int*)(0x42A61B5CUL))) +#define bM4_DMA1_LLP2_LLP22 (*((volatile unsigned int*)(0x42A61B60UL))) +#define bM4_DMA1_LLP2_LLP23 (*((volatile unsigned int*)(0x42A61B64UL))) +#define bM4_DMA1_LLP2_LLP24 (*((volatile unsigned int*)(0x42A61B68UL))) +#define bM4_DMA1_LLP2_LLP25 (*((volatile unsigned int*)(0x42A61B6CUL))) +#define bM4_DMA1_LLP2_LLP26 (*((volatile unsigned int*)(0x42A61B70UL))) +#define bM4_DMA1_LLP2_LLP27 (*((volatile unsigned int*)(0x42A61B74UL))) +#define bM4_DMA1_LLP2_LLP28 (*((volatile unsigned int*)(0x42A61B78UL))) +#define bM4_DMA1_LLP2_LLP29 (*((volatile unsigned int*)(0x42A61B7CUL))) +#define bM4_DMA1_CH2CTL_SINC0 (*((volatile unsigned int*)(0x42A61B80UL))) +#define bM4_DMA1_CH2CTL_SINC1 (*((volatile unsigned int*)(0x42A61B84UL))) +#define bM4_DMA1_CH2CTL_DINC0 (*((volatile unsigned int*)(0x42A61B88UL))) +#define bM4_DMA1_CH2CTL_DINC1 (*((volatile unsigned int*)(0x42A61B8CUL))) +#define bM4_DMA1_CH2CTL_SRPTEN (*((volatile unsigned int*)(0x42A61B90UL))) +#define bM4_DMA1_CH2CTL_DRPTEN (*((volatile unsigned int*)(0x42A61B94UL))) +#define bM4_DMA1_CH2CTL_SNSEQEN (*((volatile unsigned int*)(0x42A61B98UL))) +#define bM4_DMA1_CH2CTL_DNSEQEN (*((volatile unsigned int*)(0x42A61B9CUL))) +#define bM4_DMA1_CH2CTL_HSIZE0 (*((volatile unsigned int*)(0x42A61BA0UL))) +#define bM4_DMA1_CH2CTL_HSIZE1 (*((volatile unsigned int*)(0x42A61BA4UL))) +#define bM4_DMA1_CH2CTL_LLPEN (*((volatile unsigned int*)(0x42A61BA8UL))) +#define bM4_DMA1_CH2CTL_LLPRUN (*((volatile unsigned int*)(0x42A61BACUL))) +#define bM4_DMA1_CH2CTL_IE (*((volatile unsigned int*)(0x42A61BB0UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE0 (*((volatile unsigned int*)(0x42A61D00UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE1 (*((volatile unsigned int*)(0x42A61D04UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE2 (*((volatile unsigned int*)(0x42A61D08UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE3 (*((volatile unsigned int*)(0x42A61D0CUL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE4 (*((volatile unsigned int*)(0x42A61D10UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE5 (*((volatile unsigned int*)(0x42A61D14UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE6 (*((volatile unsigned int*)(0x42A61D18UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE7 (*((volatile unsigned int*)(0x42A61D1CUL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE8 (*((volatile unsigned int*)(0x42A61D20UL))) +#define bM4_DMA1_MONDTCTL2_BLKSIZE9 (*((volatile unsigned int*)(0x42A61D24UL))) +#define bM4_DMA1_MONDTCTL2_CNT0 (*((volatile unsigned int*)(0x42A61D40UL))) +#define bM4_DMA1_MONDTCTL2_CNT1 (*((volatile unsigned int*)(0x42A61D44UL))) +#define bM4_DMA1_MONDTCTL2_CNT2 (*((volatile unsigned int*)(0x42A61D48UL))) +#define bM4_DMA1_MONDTCTL2_CNT3 (*((volatile unsigned int*)(0x42A61D4CUL))) +#define bM4_DMA1_MONDTCTL2_CNT4 (*((volatile unsigned int*)(0x42A61D50UL))) +#define bM4_DMA1_MONDTCTL2_CNT5 (*((volatile unsigned int*)(0x42A61D54UL))) +#define bM4_DMA1_MONDTCTL2_CNT6 (*((volatile unsigned int*)(0x42A61D58UL))) +#define bM4_DMA1_MONDTCTL2_CNT7 (*((volatile unsigned int*)(0x42A61D5CUL))) +#define bM4_DMA1_MONDTCTL2_CNT8 (*((volatile unsigned int*)(0x42A61D60UL))) +#define bM4_DMA1_MONDTCTL2_CNT9 (*((volatile unsigned int*)(0x42A61D64UL))) +#define bM4_DMA1_MONDTCTL2_CNT10 (*((volatile unsigned int*)(0x42A61D68UL))) +#define bM4_DMA1_MONDTCTL2_CNT11 (*((volatile unsigned int*)(0x42A61D6CUL))) +#define bM4_DMA1_MONDTCTL2_CNT12 (*((volatile unsigned int*)(0x42A61D70UL))) +#define bM4_DMA1_MONDTCTL2_CNT13 (*((volatile unsigned int*)(0x42A61D74UL))) +#define bM4_DMA1_MONDTCTL2_CNT14 (*((volatile unsigned int*)(0x42A61D78UL))) +#define bM4_DMA1_MONDTCTL2_CNT15 (*((volatile unsigned int*)(0x42A61D7CUL))) +#define bM4_DMA1_MONRPT2_SRPT0 (*((volatile unsigned int*)(0x42A61D80UL))) +#define bM4_DMA1_MONRPT2_SRPT1 (*((volatile unsigned int*)(0x42A61D84UL))) +#define bM4_DMA1_MONRPT2_SRPT2 (*((volatile unsigned int*)(0x42A61D88UL))) +#define bM4_DMA1_MONRPT2_SRPT3 (*((volatile unsigned int*)(0x42A61D8CUL))) +#define bM4_DMA1_MONRPT2_SRPT4 (*((volatile unsigned int*)(0x42A61D90UL))) +#define bM4_DMA1_MONRPT2_SRPT5 (*((volatile unsigned int*)(0x42A61D94UL))) +#define bM4_DMA1_MONRPT2_SRPT6 (*((volatile unsigned int*)(0x42A61D98UL))) +#define bM4_DMA1_MONRPT2_SRPT7 (*((volatile unsigned int*)(0x42A61D9CUL))) +#define bM4_DMA1_MONRPT2_SRPT8 (*((volatile unsigned int*)(0x42A61DA0UL))) +#define bM4_DMA1_MONRPT2_SRPT9 (*((volatile unsigned int*)(0x42A61DA4UL))) +#define bM4_DMA1_MONRPT2_DRPT0 (*((volatile unsigned int*)(0x42A61DC0UL))) +#define bM4_DMA1_MONRPT2_DRPT1 (*((volatile unsigned int*)(0x42A61DC4UL))) +#define bM4_DMA1_MONRPT2_DRPT2 (*((volatile unsigned int*)(0x42A61DC8UL))) +#define bM4_DMA1_MONRPT2_DRPT3 (*((volatile unsigned int*)(0x42A61DCCUL))) +#define bM4_DMA1_MONRPT2_DRPT4 (*((volatile unsigned int*)(0x42A61DD0UL))) +#define bM4_DMA1_MONRPT2_DRPT5 (*((volatile unsigned int*)(0x42A61DD4UL))) +#define bM4_DMA1_MONRPT2_DRPT6 (*((volatile unsigned int*)(0x42A61DD8UL))) +#define bM4_DMA1_MONRPT2_DRPT7 (*((volatile unsigned int*)(0x42A61DDCUL))) +#define bM4_DMA1_MONRPT2_DRPT8 (*((volatile unsigned int*)(0x42A61DE0UL))) +#define bM4_DMA1_MONRPT2_DRPT9 (*((volatile unsigned int*)(0x42A61DE4UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET0 (*((volatile unsigned int*)(0x42A61E00UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET1 (*((volatile unsigned int*)(0x42A61E04UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET2 (*((volatile unsigned int*)(0x42A61E08UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET3 (*((volatile unsigned int*)(0x42A61E0CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET4 (*((volatile unsigned int*)(0x42A61E10UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET5 (*((volatile unsigned int*)(0x42A61E14UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET6 (*((volatile unsigned int*)(0x42A61E18UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET7 (*((volatile unsigned int*)(0x42A61E1CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET8 (*((volatile unsigned int*)(0x42A61E20UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET9 (*((volatile unsigned int*)(0x42A61E24UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET10 (*((volatile unsigned int*)(0x42A61E28UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET11 (*((volatile unsigned int*)(0x42A61E2CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET12 (*((volatile unsigned int*)(0x42A61E30UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET13 (*((volatile unsigned int*)(0x42A61E34UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET14 (*((volatile unsigned int*)(0x42A61E38UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET15 (*((volatile unsigned int*)(0x42A61E3CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET16 (*((volatile unsigned int*)(0x42A61E40UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET17 (*((volatile unsigned int*)(0x42A61E44UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET18 (*((volatile unsigned int*)(0x42A61E48UL))) +#define bM4_DMA1_MONSNSEQCTL2_SOFFSET19 (*((volatile unsigned int*)(0x42A61E4CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT0 (*((volatile unsigned int*)(0x42A61E50UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT1 (*((volatile unsigned int*)(0x42A61E54UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT2 (*((volatile unsigned int*)(0x42A61E58UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT3 (*((volatile unsigned int*)(0x42A61E5CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT4 (*((volatile unsigned int*)(0x42A61E60UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT5 (*((volatile unsigned int*)(0x42A61E64UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT6 (*((volatile unsigned int*)(0x42A61E68UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT7 (*((volatile unsigned int*)(0x42A61E6CUL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT8 (*((volatile unsigned int*)(0x42A61E70UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT9 (*((volatile unsigned int*)(0x42A61E74UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT10 (*((volatile unsigned int*)(0x42A61E78UL))) +#define bM4_DMA1_MONSNSEQCTL2_SNSCNT11 (*((volatile unsigned int*)(0x42A61E7CUL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET0 (*((volatile unsigned int*)(0x42A61E80UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET1 (*((volatile unsigned int*)(0x42A61E84UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET2 (*((volatile unsigned int*)(0x42A61E88UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET3 (*((volatile unsigned int*)(0x42A61E8CUL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET4 (*((volatile unsigned int*)(0x42A61E90UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET5 (*((volatile unsigned int*)(0x42A61E94UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET6 (*((volatile unsigned int*)(0x42A61E98UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET7 (*((volatile unsigned int*)(0x42A61E9CUL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET8 (*((volatile unsigned int*)(0x42A61EA0UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET9 (*((volatile unsigned int*)(0x42A61EA4UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET10 (*((volatile unsigned int*)(0x42A61EA8UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET11 (*((volatile unsigned int*)(0x42A61EACUL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET12 (*((volatile unsigned int*)(0x42A61EB0UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET13 (*((volatile unsigned int*)(0x42A61EB4UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET14 (*((volatile unsigned int*)(0x42A61EB8UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET15 (*((volatile unsigned int*)(0x42A61EBCUL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET16 (*((volatile unsigned int*)(0x42A61EC0UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET17 (*((volatile unsigned int*)(0x42A61EC4UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET18 (*((volatile unsigned int*)(0x42A61EC8UL))) +#define bM4_DMA1_MONDNSEQCTL2_DOFFSET19 (*((volatile unsigned int*)(0x42A61ECCUL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT0 (*((volatile unsigned int*)(0x42A61ED0UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT1 (*((volatile unsigned int*)(0x42A61ED4UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT2 (*((volatile unsigned int*)(0x42A61ED8UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT3 (*((volatile unsigned int*)(0x42A61EDCUL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT4 (*((volatile unsigned int*)(0x42A61EE0UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT5 (*((volatile unsigned int*)(0x42A61EE4UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT6 (*((volatile unsigned int*)(0x42A61EE8UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT7 (*((volatile unsigned int*)(0x42A61EECUL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT8 (*((volatile unsigned int*)(0x42A61EF0UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT9 (*((volatile unsigned int*)(0x42A61EF4UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT10 (*((volatile unsigned int*)(0x42A61EF8UL))) +#define bM4_DMA1_MONDNSEQCTL2_DNSCNT11 (*((volatile unsigned int*)(0x42A61EFCUL))) +#define bM4_DMA1_DTCTL3_BLKSIZE0 (*((volatile unsigned int*)(0x42A62100UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE1 (*((volatile unsigned int*)(0x42A62104UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE2 (*((volatile unsigned int*)(0x42A62108UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE3 (*((volatile unsigned int*)(0x42A6210CUL))) +#define bM4_DMA1_DTCTL3_BLKSIZE4 (*((volatile unsigned int*)(0x42A62110UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE5 (*((volatile unsigned int*)(0x42A62114UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE6 (*((volatile unsigned int*)(0x42A62118UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE7 (*((volatile unsigned int*)(0x42A6211CUL))) +#define bM4_DMA1_DTCTL3_BLKSIZE8 (*((volatile unsigned int*)(0x42A62120UL))) +#define bM4_DMA1_DTCTL3_BLKSIZE9 (*((volatile unsigned int*)(0x42A62124UL))) +#define bM4_DMA1_DTCTL3_CNT0 (*((volatile unsigned int*)(0x42A62140UL))) +#define bM4_DMA1_DTCTL3_CNT1 (*((volatile unsigned int*)(0x42A62144UL))) +#define bM4_DMA1_DTCTL3_CNT2 (*((volatile unsigned int*)(0x42A62148UL))) +#define bM4_DMA1_DTCTL3_CNT3 (*((volatile unsigned int*)(0x42A6214CUL))) +#define bM4_DMA1_DTCTL3_CNT4 (*((volatile unsigned int*)(0x42A62150UL))) +#define bM4_DMA1_DTCTL3_CNT5 (*((volatile unsigned int*)(0x42A62154UL))) +#define bM4_DMA1_DTCTL3_CNT6 (*((volatile unsigned int*)(0x42A62158UL))) +#define bM4_DMA1_DTCTL3_CNT7 (*((volatile unsigned int*)(0x42A6215CUL))) +#define bM4_DMA1_DTCTL3_CNT8 (*((volatile unsigned int*)(0x42A62160UL))) +#define bM4_DMA1_DTCTL3_CNT9 (*((volatile unsigned int*)(0x42A62164UL))) +#define bM4_DMA1_DTCTL3_CNT10 (*((volatile unsigned int*)(0x42A62168UL))) +#define bM4_DMA1_DTCTL3_CNT11 (*((volatile unsigned int*)(0x42A6216CUL))) +#define bM4_DMA1_DTCTL3_CNT12 (*((volatile unsigned int*)(0x42A62170UL))) +#define bM4_DMA1_DTCTL3_CNT13 (*((volatile unsigned int*)(0x42A62174UL))) +#define bM4_DMA1_DTCTL3_CNT14 (*((volatile unsigned int*)(0x42A62178UL))) +#define bM4_DMA1_DTCTL3_CNT15 (*((volatile unsigned int*)(0x42A6217CUL))) +#define bM4_DMA1_RPT3_SRPT0 (*((volatile unsigned int*)(0x42A62180UL))) +#define bM4_DMA1_RPT3_SRPT1 (*((volatile unsigned int*)(0x42A62184UL))) +#define bM4_DMA1_RPT3_SRPT2 (*((volatile unsigned int*)(0x42A62188UL))) +#define bM4_DMA1_RPT3_SRPT3 (*((volatile unsigned int*)(0x42A6218CUL))) +#define bM4_DMA1_RPT3_SRPT4 (*((volatile unsigned int*)(0x42A62190UL))) +#define bM4_DMA1_RPT3_SRPT5 (*((volatile unsigned int*)(0x42A62194UL))) +#define bM4_DMA1_RPT3_SRPT6 (*((volatile unsigned int*)(0x42A62198UL))) +#define bM4_DMA1_RPT3_SRPT7 (*((volatile unsigned int*)(0x42A6219CUL))) +#define bM4_DMA1_RPT3_SRPT8 (*((volatile unsigned int*)(0x42A621A0UL))) +#define bM4_DMA1_RPT3_SRPT9 (*((volatile unsigned int*)(0x42A621A4UL))) +#define bM4_DMA1_RPT3_DRPT0 (*((volatile unsigned int*)(0x42A621C0UL))) +#define bM4_DMA1_RPT3_DRPT1 (*((volatile unsigned int*)(0x42A621C4UL))) +#define bM4_DMA1_RPT3_DRPT2 (*((volatile unsigned int*)(0x42A621C8UL))) +#define bM4_DMA1_RPT3_DRPT3 (*((volatile unsigned int*)(0x42A621CCUL))) +#define bM4_DMA1_RPT3_DRPT4 (*((volatile unsigned int*)(0x42A621D0UL))) +#define bM4_DMA1_RPT3_DRPT5 (*((volatile unsigned int*)(0x42A621D4UL))) +#define bM4_DMA1_RPT3_DRPT6 (*((volatile unsigned int*)(0x42A621D8UL))) +#define bM4_DMA1_RPT3_DRPT7 (*((volatile unsigned int*)(0x42A621DCUL))) +#define bM4_DMA1_RPT3_DRPT8 (*((volatile unsigned int*)(0x42A621E0UL))) +#define bM4_DMA1_RPT3_DRPT9 (*((volatile unsigned int*)(0x42A621E4UL))) +#define bM4_DMA1_RPTB3_SRPTB0 (*((volatile unsigned int*)(0x42A62180UL))) +#define bM4_DMA1_RPTB3_SRPTB1 (*((volatile unsigned int*)(0x42A62184UL))) +#define bM4_DMA1_RPTB3_SRPTB2 (*((volatile unsigned int*)(0x42A62188UL))) +#define bM4_DMA1_RPTB3_SRPTB3 (*((volatile unsigned int*)(0x42A6218CUL))) +#define bM4_DMA1_RPTB3_SRPTB4 (*((volatile unsigned int*)(0x42A62190UL))) +#define bM4_DMA1_RPTB3_SRPTB5 (*((volatile unsigned int*)(0x42A62194UL))) +#define bM4_DMA1_RPTB3_SRPTB6 (*((volatile unsigned int*)(0x42A62198UL))) +#define bM4_DMA1_RPTB3_SRPTB7 (*((volatile unsigned int*)(0x42A6219CUL))) +#define bM4_DMA1_RPTB3_SRPTB8 (*((volatile unsigned int*)(0x42A621A0UL))) +#define bM4_DMA1_RPTB3_SRPTB9 (*((volatile unsigned int*)(0x42A621A4UL))) +#define bM4_DMA1_RPTB3_DRPTB0 (*((volatile unsigned int*)(0x42A621C0UL))) +#define bM4_DMA1_RPTB3_DRPTB1 (*((volatile unsigned int*)(0x42A621C4UL))) +#define bM4_DMA1_RPTB3_DRPTB2 (*((volatile unsigned int*)(0x42A621C8UL))) +#define bM4_DMA1_RPTB3_DRPTB3 (*((volatile unsigned int*)(0x42A621CCUL))) +#define bM4_DMA1_RPTB3_DRPTB4 (*((volatile unsigned int*)(0x42A621D0UL))) +#define bM4_DMA1_RPTB3_DRPTB5 (*((volatile unsigned int*)(0x42A621D4UL))) +#define bM4_DMA1_RPTB3_DRPTB6 (*((volatile unsigned int*)(0x42A621D8UL))) +#define bM4_DMA1_RPTB3_DRPTB7 (*((volatile unsigned int*)(0x42A621DCUL))) +#define bM4_DMA1_RPTB3_DRPTB8 (*((volatile unsigned int*)(0x42A621E0UL))) +#define bM4_DMA1_RPTB3_DRPTB9 (*((volatile unsigned int*)(0x42A621E4UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET0 (*((volatile unsigned int*)(0x42A62200UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET1 (*((volatile unsigned int*)(0x42A62204UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET2 (*((volatile unsigned int*)(0x42A62208UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET3 (*((volatile unsigned int*)(0x42A6220CUL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET4 (*((volatile unsigned int*)(0x42A62210UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET5 (*((volatile unsigned int*)(0x42A62214UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET6 (*((volatile unsigned int*)(0x42A62218UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET7 (*((volatile unsigned int*)(0x42A6221CUL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET8 (*((volatile unsigned int*)(0x42A62220UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET9 (*((volatile unsigned int*)(0x42A62224UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET10 (*((volatile unsigned int*)(0x42A62228UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET11 (*((volatile unsigned int*)(0x42A6222CUL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET12 (*((volatile unsigned int*)(0x42A62230UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET13 (*((volatile unsigned int*)(0x42A62234UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET14 (*((volatile unsigned int*)(0x42A62238UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET15 (*((volatile unsigned int*)(0x42A6223CUL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET16 (*((volatile unsigned int*)(0x42A62240UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET17 (*((volatile unsigned int*)(0x42A62244UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET18 (*((volatile unsigned int*)(0x42A62248UL))) +#define bM4_DMA1_SNSEQCTL3_SOFFSET19 (*((volatile unsigned int*)(0x42A6224CUL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT0 (*((volatile unsigned int*)(0x42A62250UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT1 (*((volatile unsigned int*)(0x42A62254UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT2 (*((volatile unsigned int*)(0x42A62258UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT3 (*((volatile unsigned int*)(0x42A6225CUL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT4 (*((volatile unsigned int*)(0x42A62260UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT5 (*((volatile unsigned int*)(0x42A62264UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT6 (*((volatile unsigned int*)(0x42A62268UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT7 (*((volatile unsigned int*)(0x42A6226CUL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT8 (*((volatile unsigned int*)(0x42A62270UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT9 (*((volatile unsigned int*)(0x42A62274UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT10 (*((volatile unsigned int*)(0x42A62278UL))) +#define bM4_DMA1_SNSEQCTL3_SNSCNT11 (*((volatile unsigned int*)(0x42A6227CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST0 (*((volatile unsigned int*)(0x42A62200UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST1 (*((volatile unsigned int*)(0x42A62204UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST2 (*((volatile unsigned int*)(0x42A62208UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST3 (*((volatile unsigned int*)(0x42A6220CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST4 (*((volatile unsigned int*)(0x42A62210UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST5 (*((volatile unsigned int*)(0x42A62214UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST6 (*((volatile unsigned int*)(0x42A62218UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST7 (*((volatile unsigned int*)(0x42A6221CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST8 (*((volatile unsigned int*)(0x42A62220UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST9 (*((volatile unsigned int*)(0x42A62224UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST10 (*((volatile unsigned int*)(0x42A62228UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST11 (*((volatile unsigned int*)(0x42A6222CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST12 (*((volatile unsigned int*)(0x42A62230UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST13 (*((volatile unsigned int*)(0x42A62234UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST14 (*((volatile unsigned int*)(0x42A62238UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST15 (*((volatile unsigned int*)(0x42A6223CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST16 (*((volatile unsigned int*)(0x42A62240UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST17 (*((volatile unsigned int*)(0x42A62244UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST18 (*((volatile unsigned int*)(0x42A62248UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSDIST19 (*((volatile unsigned int*)(0x42A6224CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB0 (*((volatile unsigned int*)(0x42A62250UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB1 (*((volatile unsigned int*)(0x42A62254UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB2 (*((volatile unsigned int*)(0x42A62258UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB3 (*((volatile unsigned int*)(0x42A6225CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB4 (*((volatile unsigned int*)(0x42A62260UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB5 (*((volatile unsigned int*)(0x42A62264UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB6 (*((volatile unsigned int*)(0x42A62268UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB7 (*((volatile unsigned int*)(0x42A6226CUL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB8 (*((volatile unsigned int*)(0x42A62270UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB9 (*((volatile unsigned int*)(0x42A62274UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB10 (*((volatile unsigned int*)(0x42A62278UL))) +#define bM4_DMA1_SNSEQCTLB3_SNSCNTB11 (*((volatile unsigned int*)(0x42A6227CUL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET0 (*((volatile unsigned int*)(0x42A62280UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET1 (*((volatile unsigned int*)(0x42A62284UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET2 (*((volatile unsigned int*)(0x42A62288UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET3 (*((volatile unsigned int*)(0x42A6228CUL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET4 (*((volatile unsigned int*)(0x42A62290UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET5 (*((volatile unsigned int*)(0x42A62294UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET6 (*((volatile unsigned int*)(0x42A62298UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET7 (*((volatile unsigned int*)(0x42A6229CUL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET8 (*((volatile unsigned int*)(0x42A622A0UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET9 (*((volatile unsigned int*)(0x42A622A4UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET10 (*((volatile unsigned int*)(0x42A622A8UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET11 (*((volatile unsigned int*)(0x42A622ACUL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET12 (*((volatile unsigned int*)(0x42A622B0UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET13 (*((volatile unsigned int*)(0x42A622B4UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET14 (*((volatile unsigned int*)(0x42A622B8UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET15 (*((volatile unsigned int*)(0x42A622BCUL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET16 (*((volatile unsigned int*)(0x42A622C0UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET17 (*((volatile unsigned int*)(0x42A622C4UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET18 (*((volatile unsigned int*)(0x42A622C8UL))) +#define bM4_DMA1_DNSEQCTL3_DOFFSET19 (*((volatile unsigned int*)(0x42A622CCUL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT0 (*((volatile unsigned int*)(0x42A622D0UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT1 (*((volatile unsigned int*)(0x42A622D4UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT2 (*((volatile unsigned int*)(0x42A622D8UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT3 (*((volatile unsigned int*)(0x42A622DCUL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT4 (*((volatile unsigned int*)(0x42A622E0UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT5 (*((volatile unsigned int*)(0x42A622E4UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT6 (*((volatile unsigned int*)(0x42A622E8UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT7 (*((volatile unsigned int*)(0x42A622ECUL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT8 (*((volatile unsigned int*)(0x42A622F0UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT9 (*((volatile unsigned int*)(0x42A622F4UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT10 (*((volatile unsigned int*)(0x42A622F8UL))) +#define bM4_DMA1_DNSEQCTL3_DNSCNT11 (*((volatile unsigned int*)(0x42A622FCUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST0 (*((volatile unsigned int*)(0x42A62280UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST1 (*((volatile unsigned int*)(0x42A62284UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST2 (*((volatile unsigned int*)(0x42A62288UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST3 (*((volatile unsigned int*)(0x42A6228CUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST4 (*((volatile unsigned int*)(0x42A62290UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST5 (*((volatile unsigned int*)(0x42A62294UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST6 (*((volatile unsigned int*)(0x42A62298UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST7 (*((volatile unsigned int*)(0x42A6229CUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST8 (*((volatile unsigned int*)(0x42A622A0UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST9 (*((volatile unsigned int*)(0x42A622A4UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST10 (*((volatile unsigned int*)(0x42A622A8UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST11 (*((volatile unsigned int*)(0x42A622ACUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST12 (*((volatile unsigned int*)(0x42A622B0UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST13 (*((volatile unsigned int*)(0x42A622B4UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST14 (*((volatile unsigned int*)(0x42A622B8UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST15 (*((volatile unsigned int*)(0x42A622BCUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST16 (*((volatile unsigned int*)(0x42A622C0UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST17 (*((volatile unsigned int*)(0x42A622C4UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST18 (*((volatile unsigned int*)(0x42A622C8UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSDIST19 (*((volatile unsigned int*)(0x42A622CCUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB0 (*((volatile unsigned int*)(0x42A622D0UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB1 (*((volatile unsigned int*)(0x42A622D4UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB2 (*((volatile unsigned int*)(0x42A622D8UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB3 (*((volatile unsigned int*)(0x42A622DCUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB4 (*((volatile unsigned int*)(0x42A622E0UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB5 (*((volatile unsigned int*)(0x42A622E4UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB6 (*((volatile unsigned int*)(0x42A622E8UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB7 (*((volatile unsigned int*)(0x42A622ECUL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB8 (*((volatile unsigned int*)(0x42A622F0UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB9 (*((volatile unsigned int*)(0x42A622F4UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB10 (*((volatile unsigned int*)(0x42A622F8UL))) +#define bM4_DMA1_DNSEQCTLB3_DNSCNTB11 (*((volatile unsigned int*)(0x42A622FCUL))) +#define bM4_DMA1_LLP3_LLP0 (*((volatile unsigned int*)(0x42A62308UL))) +#define bM4_DMA1_LLP3_LLP1 (*((volatile unsigned int*)(0x42A6230CUL))) +#define bM4_DMA1_LLP3_LLP2 (*((volatile unsigned int*)(0x42A62310UL))) +#define bM4_DMA1_LLP3_LLP3 (*((volatile unsigned int*)(0x42A62314UL))) +#define bM4_DMA1_LLP3_LLP4 (*((volatile unsigned int*)(0x42A62318UL))) +#define bM4_DMA1_LLP3_LLP5 (*((volatile unsigned int*)(0x42A6231CUL))) +#define bM4_DMA1_LLP3_LLP6 (*((volatile unsigned int*)(0x42A62320UL))) +#define bM4_DMA1_LLP3_LLP7 (*((volatile unsigned int*)(0x42A62324UL))) +#define bM4_DMA1_LLP3_LLP8 (*((volatile unsigned int*)(0x42A62328UL))) +#define bM4_DMA1_LLP3_LLP9 (*((volatile unsigned int*)(0x42A6232CUL))) +#define bM4_DMA1_LLP3_LLP10 (*((volatile unsigned int*)(0x42A62330UL))) +#define bM4_DMA1_LLP3_LLP11 (*((volatile unsigned int*)(0x42A62334UL))) +#define bM4_DMA1_LLP3_LLP12 (*((volatile unsigned int*)(0x42A62338UL))) +#define bM4_DMA1_LLP3_LLP13 (*((volatile unsigned int*)(0x42A6233CUL))) +#define bM4_DMA1_LLP3_LLP14 (*((volatile unsigned int*)(0x42A62340UL))) +#define bM4_DMA1_LLP3_LLP15 (*((volatile unsigned int*)(0x42A62344UL))) +#define bM4_DMA1_LLP3_LLP16 (*((volatile unsigned int*)(0x42A62348UL))) +#define bM4_DMA1_LLP3_LLP17 (*((volatile unsigned int*)(0x42A6234CUL))) +#define bM4_DMA1_LLP3_LLP18 (*((volatile unsigned int*)(0x42A62350UL))) +#define bM4_DMA1_LLP3_LLP19 (*((volatile unsigned int*)(0x42A62354UL))) +#define bM4_DMA1_LLP3_LLP20 (*((volatile unsigned int*)(0x42A62358UL))) +#define bM4_DMA1_LLP3_LLP21 (*((volatile unsigned int*)(0x42A6235CUL))) +#define bM4_DMA1_LLP3_LLP22 (*((volatile unsigned int*)(0x42A62360UL))) +#define bM4_DMA1_LLP3_LLP23 (*((volatile unsigned int*)(0x42A62364UL))) +#define bM4_DMA1_LLP3_LLP24 (*((volatile unsigned int*)(0x42A62368UL))) +#define bM4_DMA1_LLP3_LLP25 (*((volatile unsigned int*)(0x42A6236CUL))) +#define bM4_DMA1_LLP3_LLP26 (*((volatile unsigned int*)(0x42A62370UL))) +#define bM4_DMA1_LLP3_LLP27 (*((volatile unsigned int*)(0x42A62374UL))) +#define bM4_DMA1_LLP3_LLP28 (*((volatile unsigned int*)(0x42A62378UL))) +#define bM4_DMA1_LLP3_LLP29 (*((volatile unsigned int*)(0x42A6237CUL))) +#define bM4_DMA1_CH3CTL_SINC0 (*((volatile unsigned int*)(0x42A62380UL))) +#define bM4_DMA1_CH3CTL_SINC1 (*((volatile unsigned int*)(0x42A62384UL))) +#define bM4_DMA1_CH3CTL_DINC0 (*((volatile unsigned int*)(0x42A62388UL))) +#define bM4_DMA1_CH3CTL_DINC1 (*((volatile unsigned int*)(0x42A6238CUL))) +#define bM4_DMA1_CH3CTL_SRPTEN (*((volatile unsigned int*)(0x42A62390UL))) +#define bM4_DMA1_CH3CTL_DRPTEN (*((volatile unsigned int*)(0x42A62394UL))) +#define bM4_DMA1_CH3CTL_SNSEQEN (*((volatile unsigned int*)(0x42A62398UL))) +#define bM4_DMA1_CH3CTL_DNSEQEN (*((volatile unsigned int*)(0x42A6239CUL))) +#define bM4_DMA1_CH3CTL_HSIZE0 (*((volatile unsigned int*)(0x42A623A0UL))) +#define bM4_DMA1_CH3CTL_HSIZE1 (*((volatile unsigned int*)(0x42A623A4UL))) +#define bM4_DMA1_CH3CTL_LLPEN (*((volatile unsigned int*)(0x42A623A8UL))) +#define bM4_DMA1_CH3CTL_LLPRUN (*((volatile unsigned int*)(0x42A623ACUL))) +#define bM4_DMA1_CH3CTL_IE (*((volatile unsigned int*)(0x42A623B0UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE0 (*((volatile unsigned int*)(0x42A62500UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE1 (*((volatile unsigned int*)(0x42A62504UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE2 (*((volatile unsigned int*)(0x42A62508UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE3 (*((volatile unsigned int*)(0x42A6250CUL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE4 (*((volatile unsigned int*)(0x42A62510UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE5 (*((volatile unsigned int*)(0x42A62514UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE6 (*((volatile unsigned int*)(0x42A62518UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE7 (*((volatile unsigned int*)(0x42A6251CUL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE8 (*((volatile unsigned int*)(0x42A62520UL))) +#define bM4_DMA1_MONDTCTL3_BLKSIZE9 (*((volatile unsigned int*)(0x42A62524UL))) +#define bM4_DMA1_MONDTCTL3_CNT0 (*((volatile unsigned int*)(0x42A62540UL))) +#define bM4_DMA1_MONDTCTL3_CNT1 (*((volatile unsigned int*)(0x42A62544UL))) +#define bM4_DMA1_MONDTCTL3_CNT2 (*((volatile unsigned int*)(0x42A62548UL))) +#define bM4_DMA1_MONDTCTL3_CNT3 (*((volatile unsigned int*)(0x42A6254CUL))) +#define bM4_DMA1_MONDTCTL3_CNT4 (*((volatile unsigned int*)(0x42A62550UL))) +#define bM4_DMA1_MONDTCTL3_CNT5 (*((volatile unsigned int*)(0x42A62554UL))) +#define bM4_DMA1_MONDTCTL3_CNT6 (*((volatile unsigned int*)(0x42A62558UL))) +#define bM4_DMA1_MONDTCTL3_CNT7 (*((volatile unsigned int*)(0x42A6255CUL))) +#define bM4_DMA1_MONDTCTL3_CNT8 (*((volatile unsigned int*)(0x42A62560UL))) +#define bM4_DMA1_MONDTCTL3_CNT9 (*((volatile unsigned int*)(0x42A62564UL))) +#define bM4_DMA1_MONDTCTL3_CNT10 (*((volatile unsigned int*)(0x42A62568UL))) +#define bM4_DMA1_MONDTCTL3_CNT11 (*((volatile unsigned int*)(0x42A6256CUL))) +#define bM4_DMA1_MONDTCTL3_CNT12 (*((volatile unsigned int*)(0x42A62570UL))) +#define bM4_DMA1_MONDTCTL3_CNT13 (*((volatile unsigned int*)(0x42A62574UL))) +#define bM4_DMA1_MONDTCTL3_CNT14 (*((volatile unsigned int*)(0x42A62578UL))) +#define bM4_DMA1_MONDTCTL3_CNT15 (*((volatile unsigned int*)(0x42A6257CUL))) +#define bM4_DMA1_MONRPT3_SRPT0 (*((volatile unsigned int*)(0x42A62580UL))) +#define bM4_DMA1_MONRPT3_SRPT1 (*((volatile unsigned int*)(0x42A62584UL))) +#define bM4_DMA1_MONRPT3_SRPT2 (*((volatile unsigned int*)(0x42A62588UL))) +#define bM4_DMA1_MONRPT3_SRPT3 (*((volatile unsigned int*)(0x42A6258CUL))) +#define bM4_DMA1_MONRPT3_SRPT4 (*((volatile unsigned int*)(0x42A62590UL))) +#define bM4_DMA1_MONRPT3_SRPT5 (*((volatile unsigned int*)(0x42A62594UL))) +#define bM4_DMA1_MONRPT3_SRPT6 (*((volatile unsigned int*)(0x42A62598UL))) +#define bM4_DMA1_MONRPT3_SRPT7 (*((volatile unsigned int*)(0x42A6259CUL))) +#define bM4_DMA1_MONRPT3_SRPT8 (*((volatile unsigned int*)(0x42A625A0UL))) +#define bM4_DMA1_MONRPT3_SRPT9 (*((volatile unsigned int*)(0x42A625A4UL))) +#define bM4_DMA1_MONRPT3_DRPT0 (*((volatile unsigned int*)(0x42A625C0UL))) +#define bM4_DMA1_MONRPT3_DRPT1 (*((volatile unsigned int*)(0x42A625C4UL))) +#define bM4_DMA1_MONRPT3_DRPT2 (*((volatile unsigned int*)(0x42A625C8UL))) +#define bM4_DMA1_MONRPT3_DRPT3 (*((volatile unsigned int*)(0x42A625CCUL))) +#define bM4_DMA1_MONRPT3_DRPT4 (*((volatile unsigned int*)(0x42A625D0UL))) +#define bM4_DMA1_MONRPT3_DRPT5 (*((volatile unsigned int*)(0x42A625D4UL))) +#define bM4_DMA1_MONRPT3_DRPT6 (*((volatile unsigned int*)(0x42A625D8UL))) +#define bM4_DMA1_MONRPT3_DRPT7 (*((volatile unsigned int*)(0x42A625DCUL))) +#define bM4_DMA1_MONRPT3_DRPT8 (*((volatile unsigned int*)(0x42A625E0UL))) +#define bM4_DMA1_MONRPT3_DRPT9 (*((volatile unsigned int*)(0x42A625E4UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET0 (*((volatile unsigned int*)(0x42A62600UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET1 (*((volatile unsigned int*)(0x42A62604UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET2 (*((volatile unsigned int*)(0x42A62608UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET3 (*((volatile unsigned int*)(0x42A6260CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET4 (*((volatile unsigned int*)(0x42A62610UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET5 (*((volatile unsigned int*)(0x42A62614UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET6 (*((volatile unsigned int*)(0x42A62618UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET7 (*((volatile unsigned int*)(0x42A6261CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET8 (*((volatile unsigned int*)(0x42A62620UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET9 (*((volatile unsigned int*)(0x42A62624UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET10 (*((volatile unsigned int*)(0x42A62628UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET11 (*((volatile unsigned int*)(0x42A6262CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET12 (*((volatile unsigned int*)(0x42A62630UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET13 (*((volatile unsigned int*)(0x42A62634UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET14 (*((volatile unsigned int*)(0x42A62638UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET15 (*((volatile unsigned int*)(0x42A6263CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET16 (*((volatile unsigned int*)(0x42A62640UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET17 (*((volatile unsigned int*)(0x42A62644UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET18 (*((volatile unsigned int*)(0x42A62648UL))) +#define bM4_DMA1_MONSNSEQCTL3_SOFFSET19 (*((volatile unsigned int*)(0x42A6264CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT0 (*((volatile unsigned int*)(0x42A62650UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT1 (*((volatile unsigned int*)(0x42A62654UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT2 (*((volatile unsigned int*)(0x42A62658UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT3 (*((volatile unsigned int*)(0x42A6265CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT4 (*((volatile unsigned int*)(0x42A62660UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT5 (*((volatile unsigned int*)(0x42A62664UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT6 (*((volatile unsigned int*)(0x42A62668UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT7 (*((volatile unsigned int*)(0x42A6266CUL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT8 (*((volatile unsigned int*)(0x42A62670UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT9 (*((volatile unsigned int*)(0x42A62674UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT10 (*((volatile unsigned int*)(0x42A62678UL))) +#define bM4_DMA1_MONSNSEQCTL3_SNSCNT11 (*((volatile unsigned int*)(0x42A6267CUL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET0 (*((volatile unsigned int*)(0x42A62680UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET1 (*((volatile unsigned int*)(0x42A62684UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET2 (*((volatile unsigned int*)(0x42A62688UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET3 (*((volatile unsigned int*)(0x42A6268CUL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET4 (*((volatile unsigned int*)(0x42A62690UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET5 (*((volatile unsigned int*)(0x42A62694UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET6 (*((volatile unsigned int*)(0x42A62698UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET7 (*((volatile unsigned int*)(0x42A6269CUL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET8 (*((volatile unsigned int*)(0x42A626A0UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET9 (*((volatile unsigned int*)(0x42A626A4UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET10 (*((volatile unsigned int*)(0x42A626A8UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET11 (*((volatile unsigned int*)(0x42A626ACUL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET12 (*((volatile unsigned int*)(0x42A626B0UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET13 (*((volatile unsigned int*)(0x42A626B4UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET14 (*((volatile unsigned int*)(0x42A626B8UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET15 (*((volatile unsigned int*)(0x42A626BCUL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET16 (*((volatile unsigned int*)(0x42A626C0UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET17 (*((volatile unsigned int*)(0x42A626C4UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET18 (*((volatile unsigned int*)(0x42A626C8UL))) +#define bM4_DMA1_MONDNSEQCTL3_DOFFSET19 (*((volatile unsigned int*)(0x42A626CCUL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT0 (*((volatile unsigned int*)(0x42A626D0UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT1 (*((volatile unsigned int*)(0x42A626D4UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT2 (*((volatile unsigned int*)(0x42A626D8UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT3 (*((volatile unsigned int*)(0x42A626DCUL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT4 (*((volatile unsigned int*)(0x42A626E0UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT5 (*((volatile unsigned int*)(0x42A626E4UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT6 (*((volatile unsigned int*)(0x42A626E8UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT7 (*((volatile unsigned int*)(0x42A626ECUL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT8 (*((volatile unsigned int*)(0x42A626F0UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT9 (*((volatile unsigned int*)(0x42A626F4UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT10 (*((volatile unsigned int*)(0x42A626F8UL))) +#define bM4_DMA1_MONDNSEQCTL3_DNSCNT11 (*((volatile unsigned int*)(0x42A626FCUL))) +#define bM4_DMA2_EN_EN (*((volatile unsigned int*)(0x42A68000UL))) +#define bM4_DMA2_INTSTAT0_TRNERR0 (*((volatile unsigned int*)(0x42A68080UL))) +#define bM4_DMA2_INTSTAT0_TRNERR1 (*((volatile unsigned int*)(0x42A68084UL))) +#define bM4_DMA2_INTSTAT0_TRNERR2 (*((volatile unsigned int*)(0x42A68088UL))) +#define bM4_DMA2_INTSTAT0_TRNERR3 (*((volatile unsigned int*)(0x42A6808CUL))) +#define bM4_DMA2_INTSTAT0_REQERR0 (*((volatile unsigned int*)(0x42A680C0UL))) +#define bM4_DMA2_INTSTAT0_REQERR1 (*((volatile unsigned int*)(0x42A680C4UL))) +#define bM4_DMA2_INTSTAT0_REQERR2 (*((volatile unsigned int*)(0x42A680C8UL))) +#define bM4_DMA2_INTSTAT0_REQERR3 (*((volatile unsigned int*)(0x42A680CCUL))) +#define bM4_DMA2_INTSTAT1_TC0 (*((volatile unsigned int*)(0x42A68100UL))) +#define bM4_DMA2_INTSTAT1_TC1 (*((volatile unsigned int*)(0x42A68104UL))) +#define bM4_DMA2_INTSTAT1_TC2 (*((volatile unsigned int*)(0x42A68108UL))) +#define bM4_DMA2_INTSTAT1_TC3 (*((volatile unsigned int*)(0x42A6810CUL))) +#define bM4_DMA2_INTSTAT1_BTC0 (*((volatile unsigned int*)(0x42A68140UL))) +#define bM4_DMA2_INTSTAT1_BTC1 (*((volatile unsigned int*)(0x42A68144UL))) +#define bM4_DMA2_INTSTAT1_BTC2 (*((volatile unsigned int*)(0x42A68148UL))) +#define bM4_DMA2_INTSTAT1_BTC3 (*((volatile unsigned int*)(0x42A6814CUL))) +#define bM4_DMA2_INTMASK0_MSKTRNERR0 (*((volatile unsigned int*)(0x42A68180UL))) +#define bM4_DMA2_INTMASK0_MSKTRNERR1 (*((volatile unsigned int*)(0x42A68184UL))) +#define bM4_DMA2_INTMASK0_MSKTRNERR2 (*((volatile unsigned int*)(0x42A68188UL))) +#define bM4_DMA2_INTMASK0_MSKTRNERR3 (*((volatile unsigned int*)(0x42A6818CUL))) +#define bM4_DMA2_INTMASK0_MSKREQERR0 (*((volatile unsigned int*)(0x42A681C0UL))) +#define bM4_DMA2_INTMASK0_MSKREQERR1 (*((volatile unsigned int*)(0x42A681C4UL))) +#define bM4_DMA2_INTMASK0_MSKREQERR2 (*((volatile unsigned int*)(0x42A681C8UL))) +#define bM4_DMA2_INTMASK0_MSKREQERR3 (*((volatile unsigned int*)(0x42A681CCUL))) +#define bM4_DMA2_INTMASK1_MSKTC0 (*((volatile unsigned int*)(0x42A68200UL))) +#define bM4_DMA2_INTMASK1_MSKTC1 (*((volatile unsigned int*)(0x42A68204UL))) +#define bM4_DMA2_INTMASK1_MSKTC2 (*((volatile unsigned int*)(0x42A68208UL))) +#define bM4_DMA2_INTMASK1_MSKTC3 (*((volatile unsigned int*)(0x42A6820CUL))) +#define bM4_DMA2_INTMASK1_MSKBTC0 (*((volatile unsigned int*)(0x42A68240UL))) +#define bM4_DMA2_INTMASK1_MSKBTC1 (*((volatile unsigned int*)(0x42A68244UL))) +#define bM4_DMA2_INTMASK1_MSKBTC2 (*((volatile unsigned int*)(0x42A68248UL))) +#define bM4_DMA2_INTMASK1_MSKBTC3 (*((volatile unsigned int*)(0x42A6824CUL))) +#define bM4_DMA2_INTCLR0_CLRTRNERR0 (*((volatile unsigned int*)(0x42A68280UL))) +#define bM4_DMA2_INTCLR0_CLRTRNERR1 (*((volatile unsigned int*)(0x42A68284UL))) +#define bM4_DMA2_INTCLR0_CLRTRNERR2 (*((volatile unsigned int*)(0x42A68288UL))) +#define bM4_DMA2_INTCLR0_CLRTRNERR3 (*((volatile unsigned int*)(0x42A6828CUL))) +#define bM4_DMA2_INTCLR0_CLRREQERR0 (*((volatile unsigned int*)(0x42A682C0UL))) +#define bM4_DMA2_INTCLR0_CLRREQERR1 (*((volatile unsigned int*)(0x42A682C4UL))) +#define bM4_DMA2_INTCLR0_CLRREQERR2 (*((volatile unsigned int*)(0x42A682C8UL))) +#define bM4_DMA2_INTCLR0_CLRREQERR3 (*((volatile unsigned int*)(0x42A682CCUL))) +#define bM4_DMA2_INTCLR1_CLRTC0 (*((volatile unsigned int*)(0x42A68300UL))) +#define bM4_DMA2_INTCLR1_CLRTC1 (*((volatile unsigned int*)(0x42A68304UL))) +#define bM4_DMA2_INTCLR1_CLRTC2 (*((volatile unsigned int*)(0x42A68308UL))) +#define bM4_DMA2_INTCLR1_CLRTC3 (*((volatile unsigned int*)(0x42A6830CUL))) +#define bM4_DMA2_INTCLR1_CLRBTC0 (*((volatile unsigned int*)(0x42A68340UL))) +#define bM4_DMA2_INTCLR1_CLRBTC1 (*((volatile unsigned int*)(0x42A68344UL))) +#define bM4_DMA2_INTCLR1_CLRBTC2 (*((volatile unsigned int*)(0x42A68348UL))) +#define bM4_DMA2_INTCLR1_CLRBTC3 (*((volatile unsigned int*)(0x42A6834CUL))) +#define bM4_DMA2_CHEN_CHEN0 (*((volatile unsigned int*)(0x42A68380UL))) +#define bM4_DMA2_CHEN_CHEN1 (*((volatile unsigned int*)(0x42A68384UL))) +#define bM4_DMA2_CHEN_CHEN2 (*((volatile unsigned int*)(0x42A68388UL))) +#define bM4_DMA2_CHEN_CHEN3 (*((volatile unsigned int*)(0x42A6838CUL))) +#define bM4_DMA2_CHSTAT_DMAACT (*((volatile unsigned int*)(0x42A68480UL))) +#define bM4_DMA2_CHSTAT_RCFGACT (*((volatile unsigned int*)(0x42A68484UL))) +#define bM4_DMA2_CHSTAT_CHACT0 (*((volatile unsigned int*)(0x42A684C0UL))) +#define bM4_DMA2_CHSTAT_CHACT1 (*((volatile unsigned int*)(0x42A684C4UL))) +#define bM4_DMA2_CHSTAT_CHACT2 (*((volatile unsigned int*)(0x42A684C8UL))) +#define bM4_DMA2_CHSTAT_CHACT3 (*((volatile unsigned int*)(0x42A684CCUL))) +#define bM4_DMA2_RCFGCTL_RCFGEN (*((volatile unsigned int*)(0x42A68580UL))) +#define bM4_DMA2_RCFGCTL_RCFGLLP (*((volatile unsigned int*)(0x42A68584UL))) +#define bM4_DMA2_RCFGCTL_RCFGCHS0 (*((volatile unsigned int*)(0x42A685A0UL))) +#define bM4_DMA2_RCFGCTL_RCFGCHS1 (*((volatile unsigned int*)(0x42A685A4UL))) +#define bM4_DMA2_RCFGCTL_RCFGCHS2 (*((volatile unsigned int*)(0x42A685A8UL))) +#define bM4_DMA2_RCFGCTL_RCFGCHS3 (*((volatile unsigned int*)(0x42A685ACUL))) +#define bM4_DMA2_RCFGCTL_SARMD0 (*((volatile unsigned int*)(0x42A685C0UL))) +#define bM4_DMA2_RCFGCTL_SARMD1 (*((volatile unsigned int*)(0x42A685C4UL))) +#define bM4_DMA2_RCFGCTL_DARMD0 (*((volatile unsigned int*)(0x42A685C8UL))) +#define bM4_DMA2_RCFGCTL_DARMD1 (*((volatile unsigned int*)(0x42A685CCUL))) +#define bM4_DMA2_RCFGCTL_CNTMD0 (*((volatile unsigned int*)(0x42A685D0UL))) +#define bM4_DMA2_RCFGCTL_CNTMD1 (*((volatile unsigned int*)(0x42A685D4UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE0 (*((volatile unsigned int*)(0x42A68900UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE1 (*((volatile unsigned int*)(0x42A68904UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE2 (*((volatile unsigned int*)(0x42A68908UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE3 (*((volatile unsigned int*)(0x42A6890CUL))) +#define bM4_DMA2_DTCTL0_BLKSIZE4 (*((volatile unsigned int*)(0x42A68910UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE5 (*((volatile unsigned int*)(0x42A68914UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE6 (*((volatile unsigned int*)(0x42A68918UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE7 (*((volatile unsigned int*)(0x42A6891CUL))) +#define bM4_DMA2_DTCTL0_BLKSIZE8 (*((volatile unsigned int*)(0x42A68920UL))) +#define bM4_DMA2_DTCTL0_BLKSIZE9 (*((volatile unsigned int*)(0x42A68924UL))) +#define bM4_DMA2_DTCTL0_CNT0 (*((volatile unsigned int*)(0x42A68940UL))) +#define bM4_DMA2_DTCTL0_CNT1 (*((volatile unsigned int*)(0x42A68944UL))) +#define bM4_DMA2_DTCTL0_CNT2 (*((volatile unsigned int*)(0x42A68948UL))) +#define bM4_DMA2_DTCTL0_CNT3 (*((volatile unsigned int*)(0x42A6894CUL))) +#define bM4_DMA2_DTCTL0_CNT4 (*((volatile unsigned int*)(0x42A68950UL))) +#define bM4_DMA2_DTCTL0_CNT5 (*((volatile unsigned int*)(0x42A68954UL))) +#define bM4_DMA2_DTCTL0_CNT6 (*((volatile unsigned int*)(0x42A68958UL))) +#define bM4_DMA2_DTCTL0_CNT7 (*((volatile unsigned int*)(0x42A6895CUL))) +#define bM4_DMA2_DTCTL0_CNT8 (*((volatile unsigned int*)(0x42A68960UL))) +#define bM4_DMA2_DTCTL0_CNT9 (*((volatile unsigned int*)(0x42A68964UL))) +#define bM4_DMA2_DTCTL0_CNT10 (*((volatile unsigned int*)(0x42A68968UL))) +#define bM4_DMA2_DTCTL0_CNT11 (*((volatile unsigned int*)(0x42A6896CUL))) +#define bM4_DMA2_DTCTL0_CNT12 (*((volatile unsigned int*)(0x42A68970UL))) +#define bM4_DMA2_DTCTL0_CNT13 (*((volatile unsigned int*)(0x42A68974UL))) +#define bM4_DMA2_DTCTL0_CNT14 (*((volatile unsigned int*)(0x42A68978UL))) +#define bM4_DMA2_DTCTL0_CNT15 (*((volatile unsigned int*)(0x42A6897CUL))) +#define bM4_DMA2_RPT0_SRPT0 (*((volatile unsigned int*)(0x42A68980UL))) +#define bM4_DMA2_RPT0_SRPT1 (*((volatile unsigned int*)(0x42A68984UL))) +#define bM4_DMA2_RPT0_SRPT2 (*((volatile unsigned int*)(0x42A68988UL))) +#define bM4_DMA2_RPT0_SRPT3 (*((volatile unsigned int*)(0x42A6898CUL))) +#define bM4_DMA2_RPT0_SRPT4 (*((volatile unsigned int*)(0x42A68990UL))) +#define bM4_DMA2_RPT0_SRPT5 (*((volatile unsigned int*)(0x42A68994UL))) +#define bM4_DMA2_RPT0_SRPT6 (*((volatile unsigned int*)(0x42A68998UL))) +#define bM4_DMA2_RPT0_SRPT7 (*((volatile unsigned int*)(0x42A6899CUL))) +#define bM4_DMA2_RPT0_SRPT8 (*((volatile unsigned int*)(0x42A689A0UL))) +#define bM4_DMA2_RPT0_SRPT9 (*((volatile unsigned int*)(0x42A689A4UL))) +#define bM4_DMA2_RPT0_DRPT0 (*((volatile unsigned int*)(0x42A689C0UL))) +#define bM4_DMA2_RPT0_DRPT1 (*((volatile unsigned int*)(0x42A689C4UL))) +#define bM4_DMA2_RPT0_DRPT2 (*((volatile unsigned int*)(0x42A689C8UL))) +#define bM4_DMA2_RPT0_DRPT3 (*((volatile unsigned int*)(0x42A689CCUL))) +#define bM4_DMA2_RPT0_DRPT4 (*((volatile unsigned int*)(0x42A689D0UL))) +#define bM4_DMA2_RPT0_DRPT5 (*((volatile unsigned int*)(0x42A689D4UL))) +#define bM4_DMA2_RPT0_DRPT6 (*((volatile unsigned int*)(0x42A689D8UL))) +#define bM4_DMA2_RPT0_DRPT7 (*((volatile unsigned int*)(0x42A689DCUL))) +#define bM4_DMA2_RPT0_DRPT8 (*((volatile unsigned int*)(0x42A689E0UL))) +#define bM4_DMA2_RPT0_DRPT9 (*((volatile unsigned int*)(0x42A689E4UL))) +#define bM4_DMA2_RPTB0_SRPTB0 (*((volatile unsigned int*)(0x42A68980UL))) +#define bM4_DMA2_RPTB0_SRPTB1 (*((volatile unsigned int*)(0x42A68984UL))) +#define bM4_DMA2_RPTB0_SRPTB2 (*((volatile unsigned int*)(0x42A68988UL))) +#define bM4_DMA2_RPTB0_SRPTB3 (*((volatile unsigned int*)(0x42A6898CUL))) +#define bM4_DMA2_RPTB0_SRPTB4 (*((volatile unsigned int*)(0x42A68990UL))) +#define bM4_DMA2_RPTB0_SRPTB5 (*((volatile unsigned int*)(0x42A68994UL))) +#define bM4_DMA2_RPTB0_SRPTB6 (*((volatile unsigned int*)(0x42A68998UL))) +#define bM4_DMA2_RPTB0_SRPTB7 (*((volatile unsigned int*)(0x42A6899CUL))) +#define bM4_DMA2_RPTB0_SRPTB8 (*((volatile unsigned int*)(0x42A689A0UL))) +#define bM4_DMA2_RPTB0_SRPTB9 (*((volatile unsigned int*)(0x42A689A4UL))) +#define bM4_DMA2_RPTB0_DRPTB0 (*((volatile unsigned int*)(0x42A689C0UL))) +#define bM4_DMA2_RPTB0_DRPTB1 (*((volatile unsigned int*)(0x42A689C4UL))) +#define bM4_DMA2_RPTB0_DRPTB2 (*((volatile unsigned int*)(0x42A689C8UL))) +#define bM4_DMA2_RPTB0_DRPTB3 (*((volatile unsigned int*)(0x42A689CCUL))) +#define bM4_DMA2_RPTB0_DRPTB4 (*((volatile unsigned int*)(0x42A689D0UL))) +#define bM4_DMA2_RPTB0_DRPTB5 (*((volatile unsigned int*)(0x42A689D4UL))) +#define bM4_DMA2_RPTB0_DRPTB6 (*((volatile unsigned int*)(0x42A689D8UL))) +#define bM4_DMA2_RPTB0_DRPTB7 (*((volatile unsigned int*)(0x42A689DCUL))) +#define bM4_DMA2_RPTB0_DRPTB8 (*((volatile unsigned int*)(0x42A689E0UL))) +#define bM4_DMA2_RPTB0_DRPTB9 (*((volatile unsigned int*)(0x42A689E4UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET0 (*((volatile unsigned int*)(0x42A68A00UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET1 (*((volatile unsigned int*)(0x42A68A04UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET2 (*((volatile unsigned int*)(0x42A68A08UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET3 (*((volatile unsigned int*)(0x42A68A0CUL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET4 (*((volatile unsigned int*)(0x42A68A10UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET5 (*((volatile unsigned int*)(0x42A68A14UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET6 (*((volatile unsigned int*)(0x42A68A18UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET7 (*((volatile unsigned int*)(0x42A68A1CUL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET8 (*((volatile unsigned int*)(0x42A68A20UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET9 (*((volatile unsigned int*)(0x42A68A24UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET10 (*((volatile unsigned int*)(0x42A68A28UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET11 (*((volatile unsigned int*)(0x42A68A2CUL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET12 (*((volatile unsigned int*)(0x42A68A30UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET13 (*((volatile unsigned int*)(0x42A68A34UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET14 (*((volatile unsigned int*)(0x42A68A38UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET15 (*((volatile unsigned int*)(0x42A68A3CUL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET16 (*((volatile unsigned int*)(0x42A68A40UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET17 (*((volatile unsigned int*)(0x42A68A44UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET18 (*((volatile unsigned int*)(0x42A68A48UL))) +#define bM4_DMA2_SNSEQCTL0_SOFFSET19 (*((volatile unsigned int*)(0x42A68A4CUL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT0 (*((volatile unsigned int*)(0x42A68A50UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT1 (*((volatile unsigned int*)(0x42A68A54UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT2 (*((volatile unsigned int*)(0x42A68A58UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT3 (*((volatile unsigned int*)(0x42A68A5CUL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT4 (*((volatile unsigned int*)(0x42A68A60UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT5 (*((volatile unsigned int*)(0x42A68A64UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT6 (*((volatile unsigned int*)(0x42A68A68UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT7 (*((volatile unsigned int*)(0x42A68A6CUL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT8 (*((volatile unsigned int*)(0x42A68A70UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT9 (*((volatile unsigned int*)(0x42A68A74UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT10 (*((volatile unsigned int*)(0x42A68A78UL))) +#define bM4_DMA2_SNSEQCTL0_SNSCNT11 (*((volatile unsigned int*)(0x42A68A7CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST0 (*((volatile unsigned int*)(0x42A68A00UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST1 (*((volatile unsigned int*)(0x42A68A04UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST2 (*((volatile unsigned int*)(0x42A68A08UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST3 (*((volatile unsigned int*)(0x42A68A0CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST4 (*((volatile unsigned int*)(0x42A68A10UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST5 (*((volatile unsigned int*)(0x42A68A14UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST6 (*((volatile unsigned int*)(0x42A68A18UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST7 (*((volatile unsigned int*)(0x42A68A1CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST8 (*((volatile unsigned int*)(0x42A68A20UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST9 (*((volatile unsigned int*)(0x42A68A24UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST10 (*((volatile unsigned int*)(0x42A68A28UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST11 (*((volatile unsigned int*)(0x42A68A2CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST12 (*((volatile unsigned int*)(0x42A68A30UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST13 (*((volatile unsigned int*)(0x42A68A34UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST14 (*((volatile unsigned int*)(0x42A68A38UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST15 (*((volatile unsigned int*)(0x42A68A3CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST16 (*((volatile unsigned int*)(0x42A68A40UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST17 (*((volatile unsigned int*)(0x42A68A44UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST18 (*((volatile unsigned int*)(0x42A68A48UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSDIST19 (*((volatile unsigned int*)(0x42A68A4CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB0 (*((volatile unsigned int*)(0x42A68A50UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB1 (*((volatile unsigned int*)(0x42A68A54UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB2 (*((volatile unsigned int*)(0x42A68A58UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB3 (*((volatile unsigned int*)(0x42A68A5CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB4 (*((volatile unsigned int*)(0x42A68A60UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB5 (*((volatile unsigned int*)(0x42A68A64UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB6 (*((volatile unsigned int*)(0x42A68A68UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB7 (*((volatile unsigned int*)(0x42A68A6CUL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB8 (*((volatile unsigned int*)(0x42A68A70UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB9 (*((volatile unsigned int*)(0x42A68A74UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB10 (*((volatile unsigned int*)(0x42A68A78UL))) +#define bM4_DMA2_SNSEQCTLB0_SNSCNTB11 (*((volatile unsigned int*)(0x42A68A7CUL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET0 (*((volatile unsigned int*)(0x42A68A80UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET1 (*((volatile unsigned int*)(0x42A68A84UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET2 (*((volatile unsigned int*)(0x42A68A88UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET3 (*((volatile unsigned int*)(0x42A68A8CUL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET4 (*((volatile unsigned int*)(0x42A68A90UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET5 (*((volatile unsigned int*)(0x42A68A94UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET6 (*((volatile unsigned int*)(0x42A68A98UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET7 (*((volatile unsigned int*)(0x42A68A9CUL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET8 (*((volatile unsigned int*)(0x42A68AA0UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET9 (*((volatile unsigned int*)(0x42A68AA4UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET10 (*((volatile unsigned int*)(0x42A68AA8UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET11 (*((volatile unsigned int*)(0x42A68AACUL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET12 (*((volatile unsigned int*)(0x42A68AB0UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET13 (*((volatile unsigned int*)(0x42A68AB4UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET14 (*((volatile unsigned int*)(0x42A68AB8UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET15 (*((volatile unsigned int*)(0x42A68ABCUL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET16 (*((volatile unsigned int*)(0x42A68AC0UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET17 (*((volatile unsigned int*)(0x42A68AC4UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET18 (*((volatile unsigned int*)(0x42A68AC8UL))) +#define bM4_DMA2_DNSEQCTL0_DOFFSET19 (*((volatile unsigned int*)(0x42A68ACCUL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT0 (*((volatile unsigned int*)(0x42A68AD0UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT1 (*((volatile unsigned int*)(0x42A68AD4UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT2 (*((volatile unsigned int*)(0x42A68AD8UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT3 (*((volatile unsigned int*)(0x42A68ADCUL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT4 (*((volatile unsigned int*)(0x42A68AE0UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT5 (*((volatile unsigned int*)(0x42A68AE4UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT6 (*((volatile unsigned int*)(0x42A68AE8UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT7 (*((volatile unsigned int*)(0x42A68AECUL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT8 (*((volatile unsigned int*)(0x42A68AF0UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT9 (*((volatile unsigned int*)(0x42A68AF4UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT10 (*((volatile unsigned int*)(0x42A68AF8UL))) +#define bM4_DMA2_DNSEQCTL0_DNSCNT11 (*((volatile unsigned int*)(0x42A68AFCUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST0 (*((volatile unsigned int*)(0x42A68A80UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST1 (*((volatile unsigned int*)(0x42A68A84UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST2 (*((volatile unsigned int*)(0x42A68A88UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST3 (*((volatile unsigned int*)(0x42A68A8CUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST4 (*((volatile unsigned int*)(0x42A68A90UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST5 (*((volatile unsigned int*)(0x42A68A94UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST6 (*((volatile unsigned int*)(0x42A68A98UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST7 (*((volatile unsigned int*)(0x42A68A9CUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST8 (*((volatile unsigned int*)(0x42A68AA0UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST9 (*((volatile unsigned int*)(0x42A68AA4UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST10 (*((volatile unsigned int*)(0x42A68AA8UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST11 (*((volatile unsigned int*)(0x42A68AACUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST12 (*((volatile unsigned int*)(0x42A68AB0UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST13 (*((volatile unsigned int*)(0x42A68AB4UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST14 (*((volatile unsigned int*)(0x42A68AB8UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST15 (*((volatile unsigned int*)(0x42A68ABCUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST16 (*((volatile unsigned int*)(0x42A68AC0UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST17 (*((volatile unsigned int*)(0x42A68AC4UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST18 (*((volatile unsigned int*)(0x42A68AC8UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSDIST19 (*((volatile unsigned int*)(0x42A68ACCUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB0 (*((volatile unsigned int*)(0x42A68AD0UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB1 (*((volatile unsigned int*)(0x42A68AD4UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB2 (*((volatile unsigned int*)(0x42A68AD8UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB3 (*((volatile unsigned int*)(0x42A68ADCUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB4 (*((volatile unsigned int*)(0x42A68AE0UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB5 (*((volatile unsigned int*)(0x42A68AE4UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB6 (*((volatile unsigned int*)(0x42A68AE8UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB7 (*((volatile unsigned int*)(0x42A68AECUL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB8 (*((volatile unsigned int*)(0x42A68AF0UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB9 (*((volatile unsigned int*)(0x42A68AF4UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB10 (*((volatile unsigned int*)(0x42A68AF8UL))) +#define bM4_DMA2_DNSEQCTLB0_DNSCNTB11 (*((volatile unsigned int*)(0x42A68AFCUL))) +#define bM4_DMA2_LLP0_LLP0 (*((volatile unsigned int*)(0x42A68B08UL))) +#define bM4_DMA2_LLP0_LLP1 (*((volatile unsigned int*)(0x42A68B0CUL))) +#define bM4_DMA2_LLP0_LLP2 (*((volatile unsigned int*)(0x42A68B10UL))) +#define bM4_DMA2_LLP0_LLP3 (*((volatile unsigned int*)(0x42A68B14UL))) +#define bM4_DMA2_LLP0_LLP4 (*((volatile unsigned int*)(0x42A68B18UL))) +#define bM4_DMA2_LLP0_LLP5 (*((volatile unsigned int*)(0x42A68B1CUL))) +#define bM4_DMA2_LLP0_LLP6 (*((volatile unsigned int*)(0x42A68B20UL))) +#define bM4_DMA2_LLP0_LLP7 (*((volatile unsigned int*)(0x42A68B24UL))) +#define bM4_DMA2_LLP0_LLP8 (*((volatile unsigned int*)(0x42A68B28UL))) +#define bM4_DMA2_LLP0_LLP9 (*((volatile unsigned int*)(0x42A68B2CUL))) +#define bM4_DMA2_LLP0_LLP10 (*((volatile unsigned int*)(0x42A68B30UL))) +#define bM4_DMA2_LLP0_LLP11 (*((volatile unsigned int*)(0x42A68B34UL))) +#define bM4_DMA2_LLP0_LLP12 (*((volatile unsigned int*)(0x42A68B38UL))) +#define bM4_DMA2_LLP0_LLP13 (*((volatile unsigned int*)(0x42A68B3CUL))) +#define bM4_DMA2_LLP0_LLP14 (*((volatile unsigned int*)(0x42A68B40UL))) +#define bM4_DMA2_LLP0_LLP15 (*((volatile unsigned int*)(0x42A68B44UL))) +#define bM4_DMA2_LLP0_LLP16 (*((volatile unsigned int*)(0x42A68B48UL))) +#define bM4_DMA2_LLP0_LLP17 (*((volatile unsigned int*)(0x42A68B4CUL))) +#define bM4_DMA2_LLP0_LLP18 (*((volatile unsigned int*)(0x42A68B50UL))) +#define bM4_DMA2_LLP0_LLP19 (*((volatile unsigned int*)(0x42A68B54UL))) +#define bM4_DMA2_LLP0_LLP20 (*((volatile unsigned int*)(0x42A68B58UL))) +#define bM4_DMA2_LLP0_LLP21 (*((volatile unsigned int*)(0x42A68B5CUL))) +#define bM4_DMA2_LLP0_LLP22 (*((volatile unsigned int*)(0x42A68B60UL))) +#define bM4_DMA2_LLP0_LLP23 (*((volatile unsigned int*)(0x42A68B64UL))) +#define bM4_DMA2_LLP0_LLP24 (*((volatile unsigned int*)(0x42A68B68UL))) +#define bM4_DMA2_LLP0_LLP25 (*((volatile unsigned int*)(0x42A68B6CUL))) +#define bM4_DMA2_LLP0_LLP26 (*((volatile unsigned int*)(0x42A68B70UL))) +#define bM4_DMA2_LLP0_LLP27 (*((volatile unsigned int*)(0x42A68B74UL))) +#define bM4_DMA2_LLP0_LLP28 (*((volatile unsigned int*)(0x42A68B78UL))) +#define bM4_DMA2_LLP0_LLP29 (*((volatile unsigned int*)(0x42A68B7CUL))) +#define bM4_DMA2_CH0CTL_SINC0 (*((volatile unsigned int*)(0x42A68B80UL))) +#define bM4_DMA2_CH0CTL_SINC1 (*((volatile unsigned int*)(0x42A68B84UL))) +#define bM4_DMA2_CH0CTL_DINC0 (*((volatile unsigned int*)(0x42A68B88UL))) +#define bM4_DMA2_CH0CTL_DINC1 (*((volatile unsigned int*)(0x42A68B8CUL))) +#define bM4_DMA2_CH0CTL_SRPTEN (*((volatile unsigned int*)(0x42A68B90UL))) +#define bM4_DMA2_CH0CTL_DRPTEN (*((volatile unsigned int*)(0x42A68B94UL))) +#define bM4_DMA2_CH0CTL_SNSEQEN (*((volatile unsigned int*)(0x42A68B98UL))) +#define bM4_DMA2_CH0CTL_DNSEQEN (*((volatile unsigned int*)(0x42A68B9CUL))) +#define bM4_DMA2_CH0CTL_HSIZE0 (*((volatile unsigned int*)(0x42A68BA0UL))) +#define bM4_DMA2_CH0CTL_HSIZE1 (*((volatile unsigned int*)(0x42A68BA4UL))) +#define bM4_DMA2_CH0CTL_LLPEN (*((volatile unsigned int*)(0x42A68BA8UL))) +#define bM4_DMA2_CH0CTL_LLPRUN (*((volatile unsigned int*)(0x42A68BACUL))) +#define bM4_DMA2_CH0CTL_IE (*((volatile unsigned int*)(0x42A68BB0UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE0 (*((volatile unsigned int*)(0x42A68D00UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE1 (*((volatile unsigned int*)(0x42A68D04UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE2 (*((volatile unsigned int*)(0x42A68D08UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE3 (*((volatile unsigned int*)(0x42A68D0CUL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE4 (*((volatile unsigned int*)(0x42A68D10UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE5 (*((volatile unsigned int*)(0x42A68D14UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE6 (*((volatile unsigned int*)(0x42A68D18UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE7 (*((volatile unsigned int*)(0x42A68D1CUL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE8 (*((volatile unsigned int*)(0x42A68D20UL))) +#define bM4_DMA2_MONDTCTL0_BLKSIZE9 (*((volatile unsigned int*)(0x42A68D24UL))) +#define bM4_DMA2_MONDTCTL0_CNT0 (*((volatile unsigned int*)(0x42A68D40UL))) +#define bM4_DMA2_MONDTCTL0_CNT1 (*((volatile unsigned int*)(0x42A68D44UL))) +#define bM4_DMA2_MONDTCTL0_CNT2 (*((volatile unsigned int*)(0x42A68D48UL))) +#define bM4_DMA2_MONDTCTL0_CNT3 (*((volatile unsigned int*)(0x42A68D4CUL))) +#define bM4_DMA2_MONDTCTL0_CNT4 (*((volatile unsigned int*)(0x42A68D50UL))) +#define bM4_DMA2_MONDTCTL0_CNT5 (*((volatile unsigned int*)(0x42A68D54UL))) +#define bM4_DMA2_MONDTCTL0_CNT6 (*((volatile unsigned int*)(0x42A68D58UL))) +#define bM4_DMA2_MONDTCTL0_CNT7 (*((volatile unsigned int*)(0x42A68D5CUL))) +#define bM4_DMA2_MONDTCTL0_CNT8 (*((volatile unsigned int*)(0x42A68D60UL))) +#define bM4_DMA2_MONDTCTL0_CNT9 (*((volatile unsigned int*)(0x42A68D64UL))) +#define bM4_DMA2_MONDTCTL0_CNT10 (*((volatile unsigned int*)(0x42A68D68UL))) +#define bM4_DMA2_MONDTCTL0_CNT11 (*((volatile unsigned int*)(0x42A68D6CUL))) +#define bM4_DMA2_MONDTCTL0_CNT12 (*((volatile unsigned int*)(0x42A68D70UL))) +#define bM4_DMA2_MONDTCTL0_CNT13 (*((volatile unsigned int*)(0x42A68D74UL))) +#define bM4_DMA2_MONDTCTL0_CNT14 (*((volatile unsigned int*)(0x42A68D78UL))) +#define bM4_DMA2_MONDTCTL0_CNT15 (*((volatile unsigned int*)(0x42A68D7CUL))) +#define bM4_DMA2_MONRPT0_SRPT0 (*((volatile unsigned int*)(0x42A68D80UL))) +#define bM4_DMA2_MONRPT0_SRPT1 (*((volatile unsigned int*)(0x42A68D84UL))) +#define bM4_DMA2_MONRPT0_SRPT2 (*((volatile unsigned int*)(0x42A68D88UL))) +#define bM4_DMA2_MONRPT0_SRPT3 (*((volatile unsigned int*)(0x42A68D8CUL))) +#define bM4_DMA2_MONRPT0_SRPT4 (*((volatile unsigned int*)(0x42A68D90UL))) +#define bM4_DMA2_MONRPT0_SRPT5 (*((volatile unsigned int*)(0x42A68D94UL))) +#define bM4_DMA2_MONRPT0_SRPT6 (*((volatile unsigned int*)(0x42A68D98UL))) +#define bM4_DMA2_MONRPT0_SRPT7 (*((volatile unsigned int*)(0x42A68D9CUL))) +#define bM4_DMA2_MONRPT0_SRPT8 (*((volatile unsigned int*)(0x42A68DA0UL))) +#define bM4_DMA2_MONRPT0_SRPT9 (*((volatile unsigned int*)(0x42A68DA4UL))) +#define bM4_DMA2_MONRPT0_DRPT0 (*((volatile unsigned int*)(0x42A68DC0UL))) +#define bM4_DMA2_MONRPT0_DRPT1 (*((volatile unsigned int*)(0x42A68DC4UL))) +#define bM4_DMA2_MONRPT0_DRPT2 (*((volatile unsigned int*)(0x42A68DC8UL))) +#define bM4_DMA2_MONRPT0_DRPT3 (*((volatile unsigned int*)(0x42A68DCCUL))) +#define bM4_DMA2_MONRPT0_DRPT4 (*((volatile unsigned int*)(0x42A68DD0UL))) +#define bM4_DMA2_MONRPT0_DRPT5 (*((volatile unsigned int*)(0x42A68DD4UL))) +#define bM4_DMA2_MONRPT0_DRPT6 (*((volatile unsigned int*)(0x42A68DD8UL))) +#define bM4_DMA2_MONRPT0_DRPT7 (*((volatile unsigned int*)(0x42A68DDCUL))) +#define bM4_DMA2_MONRPT0_DRPT8 (*((volatile unsigned int*)(0x42A68DE0UL))) +#define bM4_DMA2_MONRPT0_DRPT9 (*((volatile unsigned int*)(0x42A68DE4UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET0 (*((volatile unsigned int*)(0x42A68E00UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET1 (*((volatile unsigned int*)(0x42A68E04UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET2 (*((volatile unsigned int*)(0x42A68E08UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET3 (*((volatile unsigned int*)(0x42A68E0CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET4 (*((volatile unsigned int*)(0x42A68E10UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET5 (*((volatile unsigned int*)(0x42A68E14UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET6 (*((volatile unsigned int*)(0x42A68E18UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET7 (*((volatile unsigned int*)(0x42A68E1CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET8 (*((volatile unsigned int*)(0x42A68E20UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET9 (*((volatile unsigned int*)(0x42A68E24UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET10 (*((volatile unsigned int*)(0x42A68E28UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET11 (*((volatile unsigned int*)(0x42A68E2CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET12 (*((volatile unsigned int*)(0x42A68E30UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET13 (*((volatile unsigned int*)(0x42A68E34UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET14 (*((volatile unsigned int*)(0x42A68E38UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET15 (*((volatile unsigned int*)(0x42A68E3CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET16 (*((volatile unsigned int*)(0x42A68E40UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET17 (*((volatile unsigned int*)(0x42A68E44UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET18 (*((volatile unsigned int*)(0x42A68E48UL))) +#define bM4_DMA2_MONSNSEQCTL0_SOFFSET19 (*((volatile unsigned int*)(0x42A68E4CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT0 (*((volatile unsigned int*)(0x42A68E50UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT1 (*((volatile unsigned int*)(0x42A68E54UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT2 (*((volatile unsigned int*)(0x42A68E58UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT3 (*((volatile unsigned int*)(0x42A68E5CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT4 (*((volatile unsigned int*)(0x42A68E60UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT5 (*((volatile unsigned int*)(0x42A68E64UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT6 (*((volatile unsigned int*)(0x42A68E68UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT7 (*((volatile unsigned int*)(0x42A68E6CUL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT8 (*((volatile unsigned int*)(0x42A68E70UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT9 (*((volatile unsigned int*)(0x42A68E74UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT10 (*((volatile unsigned int*)(0x42A68E78UL))) +#define bM4_DMA2_MONSNSEQCTL0_SNSCNT11 (*((volatile unsigned int*)(0x42A68E7CUL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET0 (*((volatile unsigned int*)(0x42A68E80UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET1 (*((volatile unsigned int*)(0x42A68E84UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET2 (*((volatile unsigned int*)(0x42A68E88UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET3 (*((volatile unsigned int*)(0x42A68E8CUL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET4 (*((volatile unsigned int*)(0x42A68E90UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET5 (*((volatile unsigned int*)(0x42A68E94UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET6 (*((volatile unsigned int*)(0x42A68E98UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET7 (*((volatile unsigned int*)(0x42A68E9CUL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET8 (*((volatile unsigned int*)(0x42A68EA0UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET9 (*((volatile unsigned int*)(0x42A68EA4UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET10 (*((volatile unsigned int*)(0x42A68EA8UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET11 (*((volatile unsigned int*)(0x42A68EACUL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET12 (*((volatile unsigned int*)(0x42A68EB0UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET13 (*((volatile unsigned int*)(0x42A68EB4UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET14 (*((volatile unsigned int*)(0x42A68EB8UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET15 (*((volatile unsigned int*)(0x42A68EBCUL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET16 (*((volatile unsigned int*)(0x42A68EC0UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET17 (*((volatile unsigned int*)(0x42A68EC4UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET18 (*((volatile unsigned int*)(0x42A68EC8UL))) +#define bM4_DMA2_MONDNSEQCTL0_DOFFSET19 (*((volatile unsigned int*)(0x42A68ECCUL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT0 (*((volatile unsigned int*)(0x42A68ED0UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT1 (*((volatile unsigned int*)(0x42A68ED4UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT2 (*((volatile unsigned int*)(0x42A68ED8UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT3 (*((volatile unsigned int*)(0x42A68EDCUL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT4 (*((volatile unsigned int*)(0x42A68EE0UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT5 (*((volatile unsigned int*)(0x42A68EE4UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT6 (*((volatile unsigned int*)(0x42A68EE8UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT7 (*((volatile unsigned int*)(0x42A68EECUL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT8 (*((volatile unsigned int*)(0x42A68EF0UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT9 (*((volatile unsigned int*)(0x42A68EF4UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT10 (*((volatile unsigned int*)(0x42A68EF8UL))) +#define bM4_DMA2_MONDNSEQCTL0_DNSCNT11 (*((volatile unsigned int*)(0x42A68EFCUL))) +#define bM4_DMA2_DTCTL1_BLKSIZE0 (*((volatile unsigned int*)(0x42A69100UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE1 (*((volatile unsigned int*)(0x42A69104UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE2 (*((volatile unsigned int*)(0x42A69108UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE3 (*((volatile unsigned int*)(0x42A6910CUL))) +#define bM4_DMA2_DTCTL1_BLKSIZE4 (*((volatile unsigned int*)(0x42A69110UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE5 (*((volatile unsigned int*)(0x42A69114UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE6 (*((volatile unsigned int*)(0x42A69118UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE7 (*((volatile unsigned int*)(0x42A6911CUL))) +#define bM4_DMA2_DTCTL1_BLKSIZE8 (*((volatile unsigned int*)(0x42A69120UL))) +#define bM4_DMA2_DTCTL1_BLKSIZE9 (*((volatile unsigned int*)(0x42A69124UL))) +#define bM4_DMA2_DTCTL1_CNT0 (*((volatile unsigned int*)(0x42A69140UL))) +#define bM4_DMA2_DTCTL1_CNT1 (*((volatile unsigned int*)(0x42A69144UL))) +#define bM4_DMA2_DTCTL1_CNT2 (*((volatile unsigned int*)(0x42A69148UL))) +#define bM4_DMA2_DTCTL1_CNT3 (*((volatile unsigned int*)(0x42A6914CUL))) +#define bM4_DMA2_DTCTL1_CNT4 (*((volatile unsigned int*)(0x42A69150UL))) +#define bM4_DMA2_DTCTL1_CNT5 (*((volatile unsigned int*)(0x42A69154UL))) +#define bM4_DMA2_DTCTL1_CNT6 (*((volatile unsigned int*)(0x42A69158UL))) +#define bM4_DMA2_DTCTL1_CNT7 (*((volatile unsigned int*)(0x42A6915CUL))) +#define bM4_DMA2_DTCTL1_CNT8 (*((volatile unsigned int*)(0x42A69160UL))) +#define bM4_DMA2_DTCTL1_CNT9 (*((volatile unsigned int*)(0x42A69164UL))) +#define bM4_DMA2_DTCTL1_CNT10 (*((volatile unsigned int*)(0x42A69168UL))) +#define bM4_DMA2_DTCTL1_CNT11 (*((volatile unsigned int*)(0x42A6916CUL))) +#define bM4_DMA2_DTCTL1_CNT12 (*((volatile unsigned int*)(0x42A69170UL))) +#define bM4_DMA2_DTCTL1_CNT13 (*((volatile unsigned int*)(0x42A69174UL))) +#define bM4_DMA2_DTCTL1_CNT14 (*((volatile unsigned int*)(0x42A69178UL))) +#define bM4_DMA2_DTCTL1_CNT15 (*((volatile unsigned int*)(0x42A6917CUL))) +#define bM4_DMA2_RPT1_SRPT0 (*((volatile unsigned int*)(0x42A69180UL))) +#define bM4_DMA2_RPT1_SRPT1 (*((volatile unsigned int*)(0x42A69184UL))) +#define bM4_DMA2_RPT1_SRPT2 (*((volatile unsigned int*)(0x42A69188UL))) +#define bM4_DMA2_RPT1_SRPT3 (*((volatile unsigned int*)(0x42A6918CUL))) +#define bM4_DMA2_RPT1_SRPT4 (*((volatile unsigned int*)(0x42A69190UL))) +#define bM4_DMA2_RPT1_SRPT5 (*((volatile unsigned int*)(0x42A69194UL))) +#define bM4_DMA2_RPT1_SRPT6 (*((volatile unsigned int*)(0x42A69198UL))) +#define bM4_DMA2_RPT1_SRPT7 (*((volatile unsigned int*)(0x42A6919CUL))) +#define bM4_DMA2_RPT1_SRPT8 (*((volatile unsigned int*)(0x42A691A0UL))) +#define bM4_DMA2_RPT1_SRPT9 (*((volatile unsigned int*)(0x42A691A4UL))) +#define bM4_DMA2_RPT1_DRPT0 (*((volatile unsigned int*)(0x42A691C0UL))) +#define bM4_DMA2_RPT1_DRPT1 (*((volatile unsigned int*)(0x42A691C4UL))) +#define bM4_DMA2_RPT1_DRPT2 (*((volatile unsigned int*)(0x42A691C8UL))) +#define bM4_DMA2_RPT1_DRPT3 (*((volatile unsigned int*)(0x42A691CCUL))) +#define bM4_DMA2_RPT1_DRPT4 (*((volatile unsigned int*)(0x42A691D0UL))) +#define bM4_DMA2_RPT1_DRPT5 (*((volatile unsigned int*)(0x42A691D4UL))) +#define bM4_DMA2_RPT1_DRPT6 (*((volatile unsigned int*)(0x42A691D8UL))) +#define bM4_DMA2_RPT1_DRPT7 (*((volatile unsigned int*)(0x42A691DCUL))) +#define bM4_DMA2_RPT1_DRPT8 (*((volatile unsigned int*)(0x42A691E0UL))) +#define bM4_DMA2_RPT1_DRPT9 (*((volatile unsigned int*)(0x42A691E4UL))) +#define bM4_DMA2_RPTB1_SRPTB0 (*((volatile unsigned int*)(0x42A69180UL))) +#define bM4_DMA2_RPTB1_SRPTB1 (*((volatile unsigned int*)(0x42A69184UL))) +#define bM4_DMA2_RPTB1_SRPTB2 (*((volatile unsigned int*)(0x42A69188UL))) +#define bM4_DMA2_RPTB1_SRPTB3 (*((volatile unsigned int*)(0x42A6918CUL))) +#define bM4_DMA2_RPTB1_SRPTB4 (*((volatile unsigned int*)(0x42A69190UL))) +#define bM4_DMA2_RPTB1_SRPTB5 (*((volatile unsigned int*)(0x42A69194UL))) +#define bM4_DMA2_RPTB1_SRPTB6 (*((volatile unsigned int*)(0x42A69198UL))) +#define bM4_DMA2_RPTB1_SRPTB7 (*((volatile unsigned int*)(0x42A6919CUL))) +#define bM4_DMA2_RPTB1_SRPTB8 (*((volatile unsigned int*)(0x42A691A0UL))) +#define bM4_DMA2_RPTB1_SRPTB9 (*((volatile unsigned int*)(0x42A691A4UL))) +#define bM4_DMA2_RPTB1_DRPTB0 (*((volatile unsigned int*)(0x42A691C0UL))) +#define bM4_DMA2_RPTB1_DRPTB1 (*((volatile unsigned int*)(0x42A691C4UL))) +#define bM4_DMA2_RPTB1_DRPTB2 (*((volatile unsigned int*)(0x42A691C8UL))) +#define bM4_DMA2_RPTB1_DRPTB3 (*((volatile unsigned int*)(0x42A691CCUL))) +#define bM4_DMA2_RPTB1_DRPTB4 (*((volatile unsigned int*)(0x42A691D0UL))) +#define bM4_DMA2_RPTB1_DRPTB5 (*((volatile unsigned int*)(0x42A691D4UL))) +#define bM4_DMA2_RPTB1_DRPTB6 (*((volatile unsigned int*)(0x42A691D8UL))) +#define bM4_DMA2_RPTB1_DRPTB7 (*((volatile unsigned int*)(0x42A691DCUL))) +#define bM4_DMA2_RPTB1_DRPTB8 (*((volatile unsigned int*)(0x42A691E0UL))) +#define bM4_DMA2_RPTB1_DRPTB9 (*((volatile unsigned int*)(0x42A691E4UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET0 (*((volatile unsigned int*)(0x42A69200UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET1 (*((volatile unsigned int*)(0x42A69204UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET2 (*((volatile unsigned int*)(0x42A69208UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET3 (*((volatile unsigned int*)(0x42A6920CUL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET4 (*((volatile unsigned int*)(0x42A69210UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET5 (*((volatile unsigned int*)(0x42A69214UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET6 (*((volatile unsigned int*)(0x42A69218UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET7 (*((volatile unsigned int*)(0x42A6921CUL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET8 (*((volatile unsigned int*)(0x42A69220UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET9 (*((volatile unsigned int*)(0x42A69224UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET10 (*((volatile unsigned int*)(0x42A69228UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET11 (*((volatile unsigned int*)(0x42A6922CUL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET12 (*((volatile unsigned int*)(0x42A69230UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET13 (*((volatile unsigned int*)(0x42A69234UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET14 (*((volatile unsigned int*)(0x42A69238UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET15 (*((volatile unsigned int*)(0x42A6923CUL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET16 (*((volatile unsigned int*)(0x42A69240UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET17 (*((volatile unsigned int*)(0x42A69244UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET18 (*((volatile unsigned int*)(0x42A69248UL))) +#define bM4_DMA2_SNSEQCTL1_SOFFSET19 (*((volatile unsigned int*)(0x42A6924CUL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT0 (*((volatile unsigned int*)(0x42A69250UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT1 (*((volatile unsigned int*)(0x42A69254UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT2 (*((volatile unsigned int*)(0x42A69258UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT3 (*((volatile unsigned int*)(0x42A6925CUL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT4 (*((volatile unsigned int*)(0x42A69260UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT5 (*((volatile unsigned int*)(0x42A69264UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT6 (*((volatile unsigned int*)(0x42A69268UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT7 (*((volatile unsigned int*)(0x42A6926CUL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT8 (*((volatile unsigned int*)(0x42A69270UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT9 (*((volatile unsigned int*)(0x42A69274UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT10 (*((volatile unsigned int*)(0x42A69278UL))) +#define bM4_DMA2_SNSEQCTL1_SNSCNT11 (*((volatile unsigned int*)(0x42A6927CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST0 (*((volatile unsigned int*)(0x42A69200UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST1 (*((volatile unsigned int*)(0x42A69204UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST2 (*((volatile unsigned int*)(0x42A69208UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST3 (*((volatile unsigned int*)(0x42A6920CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST4 (*((volatile unsigned int*)(0x42A69210UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST5 (*((volatile unsigned int*)(0x42A69214UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST6 (*((volatile unsigned int*)(0x42A69218UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST7 (*((volatile unsigned int*)(0x42A6921CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST8 (*((volatile unsigned int*)(0x42A69220UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST9 (*((volatile unsigned int*)(0x42A69224UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST10 (*((volatile unsigned int*)(0x42A69228UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST11 (*((volatile unsigned int*)(0x42A6922CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST12 (*((volatile unsigned int*)(0x42A69230UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST13 (*((volatile unsigned int*)(0x42A69234UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST14 (*((volatile unsigned int*)(0x42A69238UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST15 (*((volatile unsigned int*)(0x42A6923CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST16 (*((volatile unsigned int*)(0x42A69240UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST17 (*((volatile unsigned int*)(0x42A69244UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST18 (*((volatile unsigned int*)(0x42A69248UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSDIST19 (*((volatile unsigned int*)(0x42A6924CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB0 (*((volatile unsigned int*)(0x42A69250UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB1 (*((volatile unsigned int*)(0x42A69254UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB2 (*((volatile unsigned int*)(0x42A69258UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB3 (*((volatile unsigned int*)(0x42A6925CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB4 (*((volatile unsigned int*)(0x42A69260UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB5 (*((volatile unsigned int*)(0x42A69264UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB6 (*((volatile unsigned int*)(0x42A69268UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB7 (*((volatile unsigned int*)(0x42A6926CUL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB8 (*((volatile unsigned int*)(0x42A69270UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB9 (*((volatile unsigned int*)(0x42A69274UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB10 (*((volatile unsigned int*)(0x42A69278UL))) +#define bM4_DMA2_SNSEQCTLB1_SNSCNTB11 (*((volatile unsigned int*)(0x42A6927CUL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET0 (*((volatile unsigned int*)(0x42A69280UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET1 (*((volatile unsigned int*)(0x42A69284UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET2 (*((volatile unsigned int*)(0x42A69288UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET3 (*((volatile unsigned int*)(0x42A6928CUL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET4 (*((volatile unsigned int*)(0x42A69290UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET5 (*((volatile unsigned int*)(0x42A69294UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET6 (*((volatile unsigned int*)(0x42A69298UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET7 (*((volatile unsigned int*)(0x42A6929CUL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET8 (*((volatile unsigned int*)(0x42A692A0UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET9 (*((volatile unsigned int*)(0x42A692A4UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET10 (*((volatile unsigned int*)(0x42A692A8UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET11 (*((volatile unsigned int*)(0x42A692ACUL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET12 (*((volatile unsigned int*)(0x42A692B0UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET13 (*((volatile unsigned int*)(0x42A692B4UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET14 (*((volatile unsigned int*)(0x42A692B8UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET15 (*((volatile unsigned int*)(0x42A692BCUL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET16 (*((volatile unsigned int*)(0x42A692C0UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET17 (*((volatile unsigned int*)(0x42A692C4UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET18 (*((volatile unsigned int*)(0x42A692C8UL))) +#define bM4_DMA2_DNSEQCTL1_DOFFSET19 (*((volatile unsigned int*)(0x42A692CCUL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT0 (*((volatile unsigned int*)(0x42A692D0UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT1 (*((volatile unsigned int*)(0x42A692D4UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT2 (*((volatile unsigned int*)(0x42A692D8UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT3 (*((volatile unsigned int*)(0x42A692DCUL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT4 (*((volatile unsigned int*)(0x42A692E0UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT5 (*((volatile unsigned int*)(0x42A692E4UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT6 (*((volatile unsigned int*)(0x42A692E8UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT7 (*((volatile unsigned int*)(0x42A692ECUL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT8 (*((volatile unsigned int*)(0x42A692F0UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT9 (*((volatile unsigned int*)(0x42A692F4UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT10 (*((volatile unsigned int*)(0x42A692F8UL))) +#define bM4_DMA2_DNSEQCTL1_DNSCNT11 (*((volatile unsigned int*)(0x42A692FCUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST0 (*((volatile unsigned int*)(0x42A69280UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST1 (*((volatile unsigned int*)(0x42A69284UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST2 (*((volatile unsigned int*)(0x42A69288UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST3 (*((volatile unsigned int*)(0x42A6928CUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST4 (*((volatile unsigned int*)(0x42A69290UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST5 (*((volatile unsigned int*)(0x42A69294UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST6 (*((volatile unsigned int*)(0x42A69298UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST7 (*((volatile unsigned int*)(0x42A6929CUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST8 (*((volatile unsigned int*)(0x42A692A0UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST9 (*((volatile unsigned int*)(0x42A692A4UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST10 (*((volatile unsigned int*)(0x42A692A8UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST11 (*((volatile unsigned int*)(0x42A692ACUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST12 (*((volatile unsigned int*)(0x42A692B0UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST13 (*((volatile unsigned int*)(0x42A692B4UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST14 (*((volatile unsigned int*)(0x42A692B8UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST15 (*((volatile unsigned int*)(0x42A692BCUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST16 (*((volatile unsigned int*)(0x42A692C0UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST17 (*((volatile unsigned int*)(0x42A692C4UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST18 (*((volatile unsigned int*)(0x42A692C8UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSDIST19 (*((volatile unsigned int*)(0x42A692CCUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB0 (*((volatile unsigned int*)(0x42A692D0UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB1 (*((volatile unsigned int*)(0x42A692D4UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB2 (*((volatile unsigned int*)(0x42A692D8UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB3 (*((volatile unsigned int*)(0x42A692DCUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB4 (*((volatile unsigned int*)(0x42A692E0UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB5 (*((volatile unsigned int*)(0x42A692E4UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB6 (*((volatile unsigned int*)(0x42A692E8UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB7 (*((volatile unsigned int*)(0x42A692ECUL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB8 (*((volatile unsigned int*)(0x42A692F0UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB9 (*((volatile unsigned int*)(0x42A692F4UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB10 (*((volatile unsigned int*)(0x42A692F8UL))) +#define bM4_DMA2_DNSEQCTLB1_DNSCNTB11 (*((volatile unsigned int*)(0x42A692FCUL))) +#define bM4_DMA2_LLP1_LLP0 (*((volatile unsigned int*)(0x42A69308UL))) +#define bM4_DMA2_LLP1_LLP1 (*((volatile unsigned int*)(0x42A6930CUL))) +#define bM4_DMA2_LLP1_LLP2 (*((volatile unsigned int*)(0x42A69310UL))) +#define bM4_DMA2_LLP1_LLP3 (*((volatile unsigned int*)(0x42A69314UL))) +#define bM4_DMA2_LLP1_LLP4 (*((volatile unsigned int*)(0x42A69318UL))) +#define bM4_DMA2_LLP1_LLP5 (*((volatile unsigned int*)(0x42A6931CUL))) +#define bM4_DMA2_LLP1_LLP6 (*((volatile unsigned int*)(0x42A69320UL))) +#define bM4_DMA2_LLP1_LLP7 (*((volatile unsigned int*)(0x42A69324UL))) +#define bM4_DMA2_LLP1_LLP8 (*((volatile unsigned int*)(0x42A69328UL))) +#define bM4_DMA2_LLP1_LLP9 (*((volatile unsigned int*)(0x42A6932CUL))) +#define bM4_DMA2_LLP1_LLP10 (*((volatile unsigned int*)(0x42A69330UL))) +#define bM4_DMA2_LLP1_LLP11 (*((volatile unsigned int*)(0x42A69334UL))) +#define bM4_DMA2_LLP1_LLP12 (*((volatile unsigned int*)(0x42A69338UL))) +#define bM4_DMA2_LLP1_LLP13 (*((volatile unsigned int*)(0x42A6933CUL))) +#define bM4_DMA2_LLP1_LLP14 (*((volatile unsigned int*)(0x42A69340UL))) +#define bM4_DMA2_LLP1_LLP15 (*((volatile unsigned int*)(0x42A69344UL))) +#define bM4_DMA2_LLP1_LLP16 (*((volatile unsigned int*)(0x42A69348UL))) +#define bM4_DMA2_LLP1_LLP17 (*((volatile unsigned int*)(0x42A6934CUL))) +#define bM4_DMA2_LLP1_LLP18 (*((volatile unsigned int*)(0x42A69350UL))) +#define bM4_DMA2_LLP1_LLP19 (*((volatile unsigned int*)(0x42A69354UL))) +#define bM4_DMA2_LLP1_LLP20 (*((volatile unsigned int*)(0x42A69358UL))) +#define bM4_DMA2_LLP1_LLP21 (*((volatile unsigned int*)(0x42A6935CUL))) +#define bM4_DMA2_LLP1_LLP22 (*((volatile unsigned int*)(0x42A69360UL))) +#define bM4_DMA2_LLP1_LLP23 (*((volatile unsigned int*)(0x42A69364UL))) +#define bM4_DMA2_LLP1_LLP24 (*((volatile unsigned int*)(0x42A69368UL))) +#define bM4_DMA2_LLP1_LLP25 (*((volatile unsigned int*)(0x42A6936CUL))) +#define bM4_DMA2_LLP1_LLP26 (*((volatile unsigned int*)(0x42A69370UL))) +#define bM4_DMA2_LLP1_LLP27 (*((volatile unsigned int*)(0x42A69374UL))) +#define bM4_DMA2_LLP1_LLP28 (*((volatile unsigned int*)(0x42A69378UL))) +#define bM4_DMA2_LLP1_LLP29 (*((volatile unsigned int*)(0x42A6937CUL))) +#define bM4_DMA2_CH1CTL_SINC0 (*((volatile unsigned int*)(0x42A69380UL))) +#define bM4_DMA2_CH1CTL_SINC1 (*((volatile unsigned int*)(0x42A69384UL))) +#define bM4_DMA2_CH1CTL_DINC0 (*((volatile unsigned int*)(0x42A69388UL))) +#define bM4_DMA2_CH1CTL_DINC1 (*((volatile unsigned int*)(0x42A6938CUL))) +#define bM4_DMA2_CH1CTL_SRPTEN (*((volatile unsigned int*)(0x42A69390UL))) +#define bM4_DMA2_CH1CTL_DRPTEN (*((volatile unsigned int*)(0x42A69394UL))) +#define bM4_DMA2_CH1CTL_SNSEQEN (*((volatile unsigned int*)(0x42A69398UL))) +#define bM4_DMA2_CH1CTL_DNSEQEN (*((volatile unsigned int*)(0x42A6939CUL))) +#define bM4_DMA2_CH1CTL_HSIZE0 (*((volatile unsigned int*)(0x42A693A0UL))) +#define bM4_DMA2_CH1CTL_HSIZE1 (*((volatile unsigned int*)(0x42A693A4UL))) +#define bM4_DMA2_CH1CTL_LLPEN (*((volatile unsigned int*)(0x42A693A8UL))) +#define bM4_DMA2_CH1CTL_LLPRUN (*((volatile unsigned int*)(0x42A693ACUL))) +#define bM4_DMA2_CH1CTL_IE (*((volatile unsigned int*)(0x42A693B0UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE0 (*((volatile unsigned int*)(0x42A69500UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE1 (*((volatile unsigned int*)(0x42A69504UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE2 (*((volatile unsigned int*)(0x42A69508UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE3 (*((volatile unsigned int*)(0x42A6950CUL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE4 (*((volatile unsigned int*)(0x42A69510UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE5 (*((volatile unsigned int*)(0x42A69514UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE6 (*((volatile unsigned int*)(0x42A69518UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE7 (*((volatile unsigned int*)(0x42A6951CUL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE8 (*((volatile unsigned int*)(0x42A69520UL))) +#define bM4_DMA2_MONDTCTL1_BLKSIZE9 (*((volatile unsigned int*)(0x42A69524UL))) +#define bM4_DMA2_MONDTCTL1_CNT0 (*((volatile unsigned int*)(0x42A69540UL))) +#define bM4_DMA2_MONDTCTL1_CNT1 (*((volatile unsigned int*)(0x42A69544UL))) +#define bM4_DMA2_MONDTCTL1_CNT2 (*((volatile unsigned int*)(0x42A69548UL))) +#define bM4_DMA2_MONDTCTL1_CNT3 (*((volatile unsigned int*)(0x42A6954CUL))) +#define bM4_DMA2_MONDTCTL1_CNT4 (*((volatile unsigned int*)(0x42A69550UL))) +#define bM4_DMA2_MONDTCTL1_CNT5 (*((volatile unsigned int*)(0x42A69554UL))) +#define bM4_DMA2_MONDTCTL1_CNT6 (*((volatile unsigned int*)(0x42A69558UL))) +#define bM4_DMA2_MONDTCTL1_CNT7 (*((volatile unsigned int*)(0x42A6955CUL))) +#define bM4_DMA2_MONDTCTL1_CNT8 (*((volatile unsigned int*)(0x42A69560UL))) +#define bM4_DMA2_MONDTCTL1_CNT9 (*((volatile unsigned int*)(0x42A69564UL))) +#define bM4_DMA2_MONDTCTL1_CNT10 (*((volatile unsigned int*)(0x42A69568UL))) +#define bM4_DMA2_MONDTCTL1_CNT11 (*((volatile unsigned int*)(0x42A6956CUL))) +#define bM4_DMA2_MONDTCTL1_CNT12 (*((volatile unsigned int*)(0x42A69570UL))) +#define bM4_DMA2_MONDTCTL1_CNT13 (*((volatile unsigned int*)(0x42A69574UL))) +#define bM4_DMA2_MONDTCTL1_CNT14 (*((volatile unsigned int*)(0x42A69578UL))) +#define bM4_DMA2_MONDTCTL1_CNT15 (*((volatile unsigned int*)(0x42A6957CUL))) +#define bM4_DMA2_MONRPT1_SRPT0 (*((volatile unsigned int*)(0x42A69580UL))) +#define bM4_DMA2_MONRPT1_SRPT1 (*((volatile unsigned int*)(0x42A69584UL))) +#define bM4_DMA2_MONRPT1_SRPT2 (*((volatile unsigned int*)(0x42A69588UL))) +#define bM4_DMA2_MONRPT1_SRPT3 (*((volatile unsigned int*)(0x42A6958CUL))) +#define bM4_DMA2_MONRPT1_SRPT4 (*((volatile unsigned int*)(0x42A69590UL))) +#define bM4_DMA2_MONRPT1_SRPT5 (*((volatile unsigned int*)(0x42A69594UL))) +#define bM4_DMA2_MONRPT1_SRPT6 (*((volatile unsigned int*)(0x42A69598UL))) +#define bM4_DMA2_MONRPT1_SRPT7 (*((volatile unsigned int*)(0x42A6959CUL))) +#define bM4_DMA2_MONRPT1_SRPT8 (*((volatile unsigned int*)(0x42A695A0UL))) +#define bM4_DMA2_MONRPT1_SRPT9 (*((volatile unsigned int*)(0x42A695A4UL))) +#define bM4_DMA2_MONRPT1_DRPT0 (*((volatile unsigned int*)(0x42A695C0UL))) +#define bM4_DMA2_MONRPT1_DRPT1 (*((volatile unsigned int*)(0x42A695C4UL))) +#define bM4_DMA2_MONRPT1_DRPT2 (*((volatile unsigned int*)(0x42A695C8UL))) +#define bM4_DMA2_MONRPT1_DRPT3 (*((volatile unsigned int*)(0x42A695CCUL))) +#define bM4_DMA2_MONRPT1_DRPT4 (*((volatile unsigned int*)(0x42A695D0UL))) +#define bM4_DMA2_MONRPT1_DRPT5 (*((volatile unsigned int*)(0x42A695D4UL))) +#define bM4_DMA2_MONRPT1_DRPT6 (*((volatile unsigned int*)(0x42A695D8UL))) +#define bM4_DMA2_MONRPT1_DRPT7 (*((volatile unsigned int*)(0x42A695DCUL))) +#define bM4_DMA2_MONRPT1_DRPT8 (*((volatile unsigned int*)(0x42A695E0UL))) +#define bM4_DMA2_MONRPT1_DRPT9 (*((volatile unsigned int*)(0x42A695E4UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET0 (*((volatile unsigned int*)(0x42A69600UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET1 (*((volatile unsigned int*)(0x42A69604UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET2 (*((volatile unsigned int*)(0x42A69608UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET3 (*((volatile unsigned int*)(0x42A6960CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET4 (*((volatile unsigned int*)(0x42A69610UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET5 (*((volatile unsigned int*)(0x42A69614UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET6 (*((volatile unsigned int*)(0x42A69618UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET7 (*((volatile unsigned int*)(0x42A6961CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET8 (*((volatile unsigned int*)(0x42A69620UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET9 (*((volatile unsigned int*)(0x42A69624UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET10 (*((volatile unsigned int*)(0x42A69628UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET11 (*((volatile unsigned int*)(0x42A6962CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET12 (*((volatile unsigned int*)(0x42A69630UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET13 (*((volatile unsigned int*)(0x42A69634UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET14 (*((volatile unsigned int*)(0x42A69638UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET15 (*((volatile unsigned int*)(0x42A6963CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET16 (*((volatile unsigned int*)(0x42A69640UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET17 (*((volatile unsigned int*)(0x42A69644UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET18 (*((volatile unsigned int*)(0x42A69648UL))) +#define bM4_DMA2_MONSNSEQCTL1_SOFFSET19 (*((volatile unsigned int*)(0x42A6964CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT0 (*((volatile unsigned int*)(0x42A69650UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT1 (*((volatile unsigned int*)(0x42A69654UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT2 (*((volatile unsigned int*)(0x42A69658UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT3 (*((volatile unsigned int*)(0x42A6965CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT4 (*((volatile unsigned int*)(0x42A69660UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT5 (*((volatile unsigned int*)(0x42A69664UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT6 (*((volatile unsigned int*)(0x42A69668UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT7 (*((volatile unsigned int*)(0x42A6966CUL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT8 (*((volatile unsigned int*)(0x42A69670UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT9 (*((volatile unsigned int*)(0x42A69674UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT10 (*((volatile unsigned int*)(0x42A69678UL))) +#define bM4_DMA2_MONSNSEQCTL1_SNSCNT11 (*((volatile unsigned int*)(0x42A6967CUL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET0 (*((volatile unsigned int*)(0x42A69680UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET1 (*((volatile unsigned int*)(0x42A69684UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET2 (*((volatile unsigned int*)(0x42A69688UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET3 (*((volatile unsigned int*)(0x42A6968CUL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET4 (*((volatile unsigned int*)(0x42A69690UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET5 (*((volatile unsigned int*)(0x42A69694UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET6 (*((volatile unsigned int*)(0x42A69698UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET7 (*((volatile unsigned int*)(0x42A6969CUL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET8 (*((volatile unsigned int*)(0x42A696A0UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET9 (*((volatile unsigned int*)(0x42A696A4UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET10 (*((volatile unsigned int*)(0x42A696A8UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET11 (*((volatile unsigned int*)(0x42A696ACUL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET12 (*((volatile unsigned int*)(0x42A696B0UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET13 (*((volatile unsigned int*)(0x42A696B4UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET14 (*((volatile unsigned int*)(0x42A696B8UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET15 (*((volatile unsigned int*)(0x42A696BCUL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET16 (*((volatile unsigned int*)(0x42A696C0UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET17 (*((volatile unsigned int*)(0x42A696C4UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET18 (*((volatile unsigned int*)(0x42A696C8UL))) +#define bM4_DMA2_MONDNSEQCTL1_DOFFSET19 (*((volatile unsigned int*)(0x42A696CCUL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT0 (*((volatile unsigned int*)(0x42A696D0UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT1 (*((volatile unsigned int*)(0x42A696D4UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT2 (*((volatile unsigned int*)(0x42A696D8UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT3 (*((volatile unsigned int*)(0x42A696DCUL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT4 (*((volatile unsigned int*)(0x42A696E0UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT5 (*((volatile unsigned int*)(0x42A696E4UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT6 (*((volatile unsigned int*)(0x42A696E8UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT7 (*((volatile unsigned int*)(0x42A696ECUL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT8 (*((volatile unsigned int*)(0x42A696F0UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT9 (*((volatile unsigned int*)(0x42A696F4UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT10 (*((volatile unsigned int*)(0x42A696F8UL))) +#define bM4_DMA2_MONDNSEQCTL1_DNSCNT11 (*((volatile unsigned int*)(0x42A696FCUL))) +#define bM4_DMA2_DTCTL2_BLKSIZE0 (*((volatile unsigned int*)(0x42A69900UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE1 (*((volatile unsigned int*)(0x42A69904UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE2 (*((volatile unsigned int*)(0x42A69908UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE3 (*((volatile unsigned int*)(0x42A6990CUL))) +#define bM4_DMA2_DTCTL2_BLKSIZE4 (*((volatile unsigned int*)(0x42A69910UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE5 (*((volatile unsigned int*)(0x42A69914UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE6 (*((volatile unsigned int*)(0x42A69918UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE7 (*((volatile unsigned int*)(0x42A6991CUL))) +#define bM4_DMA2_DTCTL2_BLKSIZE8 (*((volatile unsigned int*)(0x42A69920UL))) +#define bM4_DMA2_DTCTL2_BLKSIZE9 (*((volatile unsigned int*)(0x42A69924UL))) +#define bM4_DMA2_DTCTL2_CNT0 (*((volatile unsigned int*)(0x42A69940UL))) +#define bM4_DMA2_DTCTL2_CNT1 (*((volatile unsigned int*)(0x42A69944UL))) +#define bM4_DMA2_DTCTL2_CNT2 (*((volatile unsigned int*)(0x42A69948UL))) +#define bM4_DMA2_DTCTL2_CNT3 (*((volatile unsigned int*)(0x42A6994CUL))) +#define bM4_DMA2_DTCTL2_CNT4 (*((volatile unsigned int*)(0x42A69950UL))) +#define bM4_DMA2_DTCTL2_CNT5 (*((volatile unsigned int*)(0x42A69954UL))) +#define bM4_DMA2_DTCTL2_CNT6 (*((volatile unsigned int*)(0x42A69958UL))) +#define bM4_DMA2_DTCTL2_CNT7 (*((volatile unsigned int*)(0x42A6995CUL))) +#define bM4_DMA2_DTCTL2_CNT8 (*((volatile unsigned int*)(0x42A69960UL))) +#define bM4_DMA2_DTCTL2_CNT9 (*((volatile unsigned int*)(0x42A69964UL))) +#define bM4_DMA2_DTCTL2_CNT10 (*((volatile unsigned int*)(0x42A69968UL))) +#define bM4_DMA2_DTCTL2_CNT11 (*((volatile unsigned int*)(0x42A6996CUL))) +#define bM4_DMA2_DTCTL2_CNT12 (*((volatile unsigned int*)(0x42A69970UL))) +#define bM4_DMA2_DTCTL2_CNT13 (*((volatile unsigned int*)(0x42A69974UL))) +#define bM4_DMA2_DTCTL2_CNT14 (*((volatile unsigned int*)(0x42A69978UL))) +#define bM4_DMA2_DTCTL2_CNT15 (*((volatile unsigned int*)(0x42A6997CUL))) +#define bM4_DMA2_RPT2_SRPT0 (*((volatile unsigned int*)(0x42A69980UL))) +#define bM4_DMA2_RPT2_SRPT1 (*((volatile unsigned int*)(0x42A69984UL))) +#define bM4_DMA2_RPT2_SRPT2 (*((volatile unsigned int*)(0x42A69988UL))) +#define bM4_DMA2_RPT2_SRPT3 (*((volatile unsigned int*)(0x42A6998CUL))) +#define bM4_DMA2_RPT2_SRPT4 (*((volatile unsigned int*)(0x42A69990UL))) +#define bM4_DMA2_RPT2_SRPT5 (*((volatile unsigned int*)(0x42A69994UL))) +#define bM4_DMA2_RPT2_SRPT6 (*((volatile unsigned int*)(0x42A69998UL))) +#define bM4_DMA2_RPT2_SRPT7 (*((volatile unsigned int*)(0x42A6999CUL))) +#define bM4_DMA2_RPT2_SRPT8 (*((volatile unsigned int*)(0x42A699A0UL))) +#define bM4_DMA2_RPT2_SRPT9 (*((volatile unsigned int*)(0x42A699A4UL))) +#define bM4_DMA2_RPT2_DRPT0 (*((volatile unsigned int*)(0x42A699C0UL))) +#define bM4_DMA2_RPT2_DRPT1 (*((volatile unsigned int*)(0x42A699C4UL))) +#define bM4_DMA2_RPT2_DRPT2 (*((volatile unsigned int*)(0x42A699C8UL))) +#define bM4_DMA2_RPT2_DRPT3 (*((volatile unsigned int*)(0x42A699CCUL))) +#define bM4_DMA2_RPT2_DRPT4 (*((volatile unsigned int*)(0x42A699D0UL))) +#define bM4_DMA2_RPT2_DRPT5 (*((volatile unsigned int*)(0x42A699D4UL))) +#define bM4_DMA2_RPT2_DRPT6 (*((volatile unsigned int*)(0x42A699D8UL))) +#define bM4_DMA2_RPT2_DRPT7 (*((volatile unsigned int*)(0x42A699DCUL))) +#define bM4_DMA2_RPT2_DRPT8 (*((volatile unsigned int*)(0x42A699E0UL))) +#define bM4_DMA2_RPT2_DRPT9 (*((volatile unsigned int*)(0x42A699E4UL))) +#define bM4_DMA2_RPTB2_SRPTB0 (*((volatile unsigned int*)(0x42A69980UL))) +#define bM4_DMA2_RPTB2_SRPTB1 (*((volatile unsigned int*)(0x42A69984UL))) +#define bM4_DMA2_RPTB2_SRPTB2 (*((volatile unsigned int*)(0x42A69988UL))) +#define bM4_DMA2_RPTB2_SRPTB3 (*((volatile unsigned int*)(0x42A6998CUL))) +#define bM4_DMA2_RPTB2_SRPTB4 (*((volatile unsigned int*)(0x42A69990UL))) +#define bM4_DMA2_RPTB2_SRPTB5 (*((volatile unsigned int*)(0x42A69994UL))) +#define bM4_DMA2_RPTB2_SRPTB6 (*((volatile unsigned int*)(0x42A69998UL))) +#define bM4_DMA2_RPTB2_SRPTB7 (*((volatile unsigned int*)(0x42A6999CUL))) +#define bM4_DMA2_RPTB2_SRPTB8 (*((volatile unsigned int*)(0x42A699A0UL))) +#define bM4_DMA2_RPTB2_SRPTB9 (*((volatile unsigned int*)(0x42A699A4UL))) +#define bM4_DMA2_RPTB2_DRPTB0 (*((volatile unsigned int*)(0x42A699C0UL))) +#define bM4_DMA2_RPTB2_DRPTB1 (*((volatile unsigned int*)(0x42A699C4UL))) +#define bM4_DMA2_RPTB2_DRPTB2 (*((volatile unsigned int*)(0x42A699C8UL))) +#define bM4_DMA2_RPTB2_DRPTB3 (*((volatile unsigned int*)(0x42A699CCUL))) +#define bM4_DMA2_RPTB2_DRPTB4 (*((volatile unsigned int*)(0x42A699D0UL))) +#define bM4_DMA2_RPTB2_DRPTB5 (*((volatile unsigned int*)(0x42A699D4UL))) +#define bM4_DMA2_RPTB2_DRPTB6 (*((volatile unsigned int*)(0x42A699D8UL))) +#define bM4_DMA2_RPTB2_DRPTB7 (*((volatile unsigned int*)(0x42A699DCUL))) +#define bM4_DMA2_RPTB2_DRPTB8 (*((volatile unsigned int*)(0x42A699E0UL))) +#define bM4_DMA2_RPTB2_DRPTB9 (*((volatile unsigned int*)(0x42A699E4UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET0 (*((volatile unsigned int*)(0x42A69A00UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET1 (*((volatile unsigned int*)(0x42A69A04UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET2 (*((volatile unsigned int*)(0x42A69A08UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET3 (*((volatile unsigned int*)(0x42A69A0CUL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET4 (*((volatile unsigned int*)(0x42A69A10UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET5 (*((volatile unsigned int*)(0x42A69A14UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET6 (*((volatile unsigned int*)(0x42A69A18UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET7 (*((volatile unsigned int*)(0x42A69A1CUL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET8 (*((volatile unsigned int*)(0x42A69A20UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET9 (*((volatile unsigned int*)(0x42A69A24UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET10 (*((volatile unsigned int*)(0x42A69A28UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET11 (*((volatile unsigned int*)(0x42A69A2CUL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET12 (*((volatile unsigned int*)(0x42A69A30UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET13 (*((volatile unsigned int*)(0x42A69A34UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET14 (*((volatile unsigned int*)(0x42A69A38UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET15 (*((volatile unsigned int*)(0x42A69A3CUL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET16 (*((volatile unsigned int*)(0x42A69A40UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET17 (*((volatile unsigned int*)(0x42A69A44UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET18 (*((volatile unsigned int*)(0x42A69A48UL))) +#define bM4_DMA2_SNSEQCTL2_SOFFSET19 (*((volatile unsigned int*)(0x42A69A4CUL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT0 (*((volatile unsigned int*)(0x42A69A50UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT1 (*((volatile unsigned int*)(0x42A69A54UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT2 (*((volatile unsigned int*)(0x42A69A58UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT3 (*((volatile unsigned int*)(0x42A69A5CUL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT4 (*((volatile unsigned int*)(0x42A69A60UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT5 (*((volatile unsigned int*)(0x42A69A64UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT6 (*((volatile unsigned int*)(0x42A69A68UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT7 (*((volatile unsigned int*)(0x42A69A6CUL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT8 (*((volatile unsigned int*)(0x42A69A70UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT9 (*((volatile unsigned int*)(0x42A69A74UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT10 (*((volatile unsigned int*)(0x42A69A78UL))) +#define bM4_DMA2_SNSEQCTL2_SNSCNT11 (*((volatile unsigned int*)(0x42A69A7CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST0 (*((volatile unsigned int*)(0x42A69A00UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST1 (*((volatile unsigned int*)(0x42A69A04UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST2 (*((volatile unsigned int*)(0x42A69A08UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST3 (*((volatile unsigned int*)(0x42A69A0CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST4 (*((volatile unsigned int*)(0x42A69A10UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST5 (*((volatile unsigned int*)(0x42A69A14UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST6 (*((volatile unsigned int*)(0x42A69A18UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST7 (*((volatile unsigned int*)(0x42A69A1CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST8 (*((volatile unsigned int*)(0x42A69A20UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST9 (*((volatile unsigned int*)(0x42A69A24UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST10 (*((volatile unsigned int*)(0x42A69A28UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST11 (*((volatile unsigned int*)(0x42A69A2CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST12 (*((volatile unsigned int*)(0x42A69A30UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST13 (*((volatile unsigned int*)(0x42A69A34UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST14 (*((volatile unsigned int*)(0x42A69A38UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST15 (*((volatile unsigned int*)(0x42A69A3CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST16 (*((volatile unsigned int*)(0x42A69A40UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST17 (*((volatile unsigned int*)(0x42A69A44UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST18 (*((volatile unsigned int*)(0x42A69A48UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSDIST19 (*((volatile unsigned int*)(0x42A69A4CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB0 (*((volatile unsigned int*)(0x42A69A50UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB1 (*((volatile unsigned int*)(0x42A69A54UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB2 (*((volatile unsigned int*)(0x42A69A58UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB3 (*((volatile unsigned int*)(0x42A69A5CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB4 (*((volatile unsigned int*)(0x42A69A60UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB5 (*((volatile unsigned int*)(0x42A69A64UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB6 (*((volatile unsigned int*)(0x42A69A68UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB7 (*((volatile unsigned int*)(0x42A69A6CUL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB8 (*((volatile unsigned int*)(0x42A69A70UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB9 (*((volatile unsigned int*)(0x42A69A74UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB10 (*((volatile unsigned int*)(0x42A69A78UL))) +#define bM4_DMA2_SNSEQCTLB2_SNSCNTB11 (*((volatile unsigned int*)(0x42A69A7CUL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET0 (*((volatile unsigned int*)(0x42A69A80UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET1 (*((volatile unsigned int*)(0x42A69A84UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET2 (*((volatile unsigned int*)(0x42A69A88UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET3 (*((volatile unsigned int*)(0x42A69A8CUL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET4 (*((volatile unsigned int*)(0x42A69A90UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET5 (*((volatile unsigned int*)(0x42A69A94UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET6 (*((volatile unsigned int*)(0x42A69A98UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET7 (*((volatile unsigned int*)(0x42A69A9CUL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET8 (*((volatile unsigned int*)(0x42A69AA0UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET9 (*((volatile unsigned int*)(0x42A69AA4UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET10 (*((volatile unsigned int*)(0x42A69AA8UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET11 (*((volatile unsigned int*)(0x42A69AACUL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET12 (*((volatile unsigned int*)(0x42A69AB0UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET13 (*((volatile unsigned int*)(0x42A69AB4UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET14 (*((volatile unsigned int*)(0x42A69AB8UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET15 (*((volatile unsigned int*)(0x42A69ABCUL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET16 (*((volatile unsigned int*)(0x42A69AC0UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET17 (*((volatile unsigned int*)(0x42A69AC4UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET18 (*((volatile unsigned int*)(0x42A69AC8UL))) +#define bM4_DMA2_DNSEQCTL2_DOFFSET19 (*((volatile unsigned int*)(0x42A69ACCUL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT0 (*((volatile unsigned int*)(0x42A69AD0UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT1 (*((volatile unsigned int*)(0x42A69AD4UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT2 (*((volatile unsigned int*)(0x42A69AD8UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT3 (*((volatile unsigned int*)(0x42A69ADCUL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT4 (*((volatile unsigned int*)(0x42A69AE0UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT5 (*((volatile unsigned int*)(0x42A69AE4UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT6 (*((volatile unsigned int*)(0x42A69AE8UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT7 (*((volatile unsigned int*)(0x42A69AECUL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT8 (*((volatile unsigned int*)(0x42A69AF0UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT9 (*((volatile unsigned int*)(0x42A69AF4UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT10 (*((volatile unsigned int*)(0x42A69AF8UL))) +#define bM4_DMA2_DNSEQCTL2_DNSCNT11 (*((volatile unsigned int*)(0x42A69AFCUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST0 (*((volatile unsigned int*)(0x42A69A80UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST1 (*((volatile unsigned int*)(0x42A69A84UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST2 (*((volatile unsigned int*)(0x42A69A88UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST3 (*((volatile unsigned int*)(0x42A69A8CUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST4 (*((volatile unsigned int*)(0x42A69A90UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST5 (*((volatile unsigned int*)(0x42A69A94UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST6 (*((volatile unsigned int*)(0x42A69A98UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST7 (*((volatile unsigned int*)(0x42A69A9CUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST8 (*((volatile unsigned int*)(0x42A69AA0UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST9 (*((volatile unsigned int*)(0x42A69AA4UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST10 (*((volatile unsigned int*)(0x42A69AA8UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST11 (*((volatile unsigned int*)(0x42A69AACUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST12 (*((volatile unsigned int*)(0x42A69AB0UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST13 (*((volatile unsigned int*)(0x42A69AB4UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST14 (*((volatile unsigned int*)(0x42A69AB8UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST15 (*((volatile unsigned int*)(0x42A69ABCUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST16 (*((volatile unsigned int*)(0x42A69AC0UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST17 (*((volatile unsigned int*)(0x42A69AC4UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST18 (*((volatile unsigned int*)(0x42A69AC8UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSDIST19 (*((volatile unsigned int*)(0x42A69ACCUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB0 (*((volatile unsigned int*)(0x42A69AD0UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB1 (*((volatile unsigned int*)(0x42A69AD4UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB2 (*((volatile unsigned int*)(0x42A69AD8UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB3 (*((volatile unsigned int*)(0x42A69ADCUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB4 (*((volatile unsigned int*)(0x42A69AE0UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB5 (*((volatile unsigned int*)(0x42A69AE4UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB6 (*((volatile unsigned int*)(0x42A69AE8UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB7 (*((volatile unsigned int*)(0x42A69AECUL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB8 (*((volatile unsigned int*)(0x42A69AF0UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB9 (*((volatile unsigned int*)(0x42A69AF4UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB10 (*((volatile unsigned int*)(0x42A69AF8UL))) +#define bM4_DMA2_DNSEQCTLB2_DNSCNTB11 (*((volatile unsigned int*)(0x42A69AFCUL))) +#define bM4_DMA2_LLP2_LLP0 (*((volatile unsigned int*)(0x42A69B08UL))) +#define bM4_DMA2_LLP2_LLP1 (*((volatile unsigned int*)(0x42A69B0CUL))) +#define bM4_DMA2_LLP2_LLP2 (*((volatile unsigned int*)(0x42A69B10UL))) +#define bM4_DMA2_LLP2_LLP3 (*((volatile unsigned int*)(0x42A69B14UL))) +#define bM4_DMA2_LLP2_LLP4 (*((volatile unsigned int*)(0x42A69B18UL))) +#define bM4_DMA2_LLP2_LLP5 (*((volatile unsigned int*)(0x42A69B1CUL))) +#define bM4_DMA2_LLP2_LLP6 (*((volatile unsigned int*)(0x42A69B20UL))) +#define bM4_DMA2_LLP2_LLP7 (*((volatile unsigned int*)(0x42A69B24UL))) +#define bM4_DMA2_LLP2_LLP8 (*((volatile unsigned int*)(0x42A69B28UL))) +#define bM4_DMA2_LLP2_LLP9 (*((volatile unsigned int*)(0x42A69B2CUL))) +#define bM4_DMA2_LLP2_LLP10 (*((volatile unsigned int*)(0x42A69B30UL))) +#define bM4_DMA2_LLP2_LLP11 (*((volatile unsigned int*)(0x42A69B34UL))) +#define bM4_DMA2_LLP2_LLP12 (*((volatile unsigned int*)(0x42A69B38UL))) +#define bM4_DMA2_LLP2_LLP13 (*((volatile unsigned int*)(0x42A69B3CUL))) +#define bM4_DMA2_LLP2_LLP14 (*((volatile unsigned int*)(0x42A69B40UL))) +#define bM4_DMA2_LLP2_LLP15 (*((volatile unsigned int*)(0x42A69B44UL))) +#define bM4_DMA2_LLP2_LLP16 (*((volatile unsigned int*)(0x42A69B48UL))) +#define bM4_DMA2_LLP2_LLP17 (*((volatile unsigned int*)(0x42A69B4CUL))) +#define bM4_DMA2_LLP2_LLP18 (*((volatile unsigned int*)(0x42A69B50UL))) +#define bM4_DMA2_LLP2_LLP19 (*((volatile unsigned int*)(0x42A69B54UL))) +#define bM4_DMA2_LLP2_LLP20 (*((volatile unsigned int*)(0x42A69B58UL))) +#define bM4_DMA2_LLP2_LLP21 (*((volatile unsigned int*)(0x42A69B5CUL))) +#define bM4_DMA2_LLP2_LLP22 (*((volatile unsigned int*)(0x42A69B60UL))) +#define bM4_DMA2_LLP2_LLP23 (*((volatile unsigned int*)(0x42A69B64UL))) +#define bM4_DMA2_LLP2_LLP24 (*((volatile unsigned int*)(0x42A69B68UL))) +#define bM4_DMA2_LLP2_LLP25 (*((volatile unsigned int*)(0x42A69B6CUL))) +#define bM4_DMA2_LLP2_LLP26 (*((volatile unsigned int*)(0x42A69B70UL))) +#define bM4_DMA2_LLP2_LLP27 (*((volatile unsigned int*)(0x42A69B74UL))) +#define bM4_DMA2_LLP2_LLP28 (*((volatile unsigned int*)(0x42A69B78UL))) +#define bM4_DMA2_LLP2_LLP29 (*((volatile unsigned int*)(0x42A69B7CUL))) +#define bM4_DMA2_CH2CTL_SINC0 (*((volatile unsigned int*)(0x42A69B80UL))) +#define bM4_DMA2_CH2CTL_SINC1 (*((volatile unsigned int*)(0x42A69B84UL))) +#define bM4_DMA2_CH2CTL_DINC0 (*((volatile unsigned int*)(0x42A69B88UL))) +#define bM4_DMA2_CH2CTL_DINC1 (*((volatile unsigned int*)(0x42A69B8CUL))) +#define bM4_DMA2_CH2CTL_SRPTEN (*((volatile unsigned int*)(0x42A69B90UL))) +#define bM4_DMA2_CH2CTL_DRPTEN (*((volatile unsigned int*)(0x42A69B94UL))) +#define bM4_DMA2_CH2CTL_SNSEQEN (*((volatile unsigned int*)(0x42A69B98UL))) +#define bM4_DMA2_CH2CTL_DNSEQEN (*((volatile unsigned int*)(0x42A69B9CUL))) +#define bM4_DMA2_CH2CTL_HSIZE0 (*((volatile unsigned int*)(0x42A69BA0UL))) +#define bM4_DMA2_CH2CTL_HSIZE1 (*((volatile unsigned int*)(0x42A69BA4UL))) +#define bM4_DMA2_CH2CTL_LLPEN (*((volatile unsigned int*)(0x42A69BA8UL))) +#define bM4_DMA2_CH2CTL_LLPRUN (*((volatile unsigned int*)(0x42A69BACUL))) +#define bM4_DMA2_CH2CTL_IE (*((volatile unsigned int*)(0x42A69BB0UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE0 (*((volatile unsigned int*)(0x42A69D00UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE1 (*((volatile unsigned int*)(0x42A69D04UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE2 (*((volatile unsigned int*)(0x42A69D08UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE3 (*((volatile unsigned int*)(0x42A69D0CUL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE4 (*((volatile unsigned int*)(0x42A69D10UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE5 (*((volatile unsigned int*)(0x42A69D14UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE6 (*((volatile unsigned int*)(0x42A69D18UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE7 (*((volatile unsigned int*)(0x42A69D1CUL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE8 (*((volatile unsigned int*)(0x42A69D20UL))) +#define bM4_DMA2_MONDTCTL2_BLKSIZE9 (*((volatile unsigned int*)(0x42A69D24UL))) +#define bM4_DMA2_MONDTCTL2_CNT0 (*((volatile unsigned int*)(0x42A69D40UL))) +#define bM4_DMA2_MONDTCTL2_CNT1 (*((volatile unsigned int*)(0x42A69D44UL))) +#define bM4_DMA2_MONDTCTL2_CNT2 (*((volatile unsigned int*)(0x42A69D48UL))) +#define bM4_DMA2_MONDTCTL2_CNT3 (*((volatile unsigned int*)(0x42A69D4CUL))) +#define bM4_DMA2_MONDTCTL2_CNT4 (*((volatile unsigned int*)(0x42A69D50UL))) +#define bM4_DMA2_MONDTCTL2_CNT5 (*((volatile unsigned int*)(0x42A69D54UL))) +#define bM4_DMA2_MONDTCTL2_CNT6 (*((volatile unsigned int*)(0x42A69D58UL))) +#define bM4_DMA2_MONDTCTL2_CNT7 (*((volatile unsigned int*)(0x42A69D5CUL))) +#define bM4_DMA2_MONDTCTL2_CNT8 (*((volatile unsigned int*)(0x42A69D60UL))) +#define bM4_DMA2_MONDTCTL2_CNT9 (*((volatile unsigned int*)(0x42A69D64UL))) +#define bM4_DMA2_MONDTCTL2_CNT10 (*((volatile unsigned int*)(0x42A69D68UL))) +#define bM4_DMA2_MONDTCTL2_CNT11 (*((volatile unsigned int*)(0x42A69D6CUL))) +#define bM4_DMA2_MONDTCTL2_CNT12 (*((volatile unsigned int*)(0x42A69D70UL))) +#define bM4_DMA2_MONDTCTL2_CNT13 (*((volatile unsigned int*)(0x42A69D74UL))) +#define bM4_DMA2_MONDTCTL2_CNT14 (*((volatile unsigned int*)(0x42A69D78UL))) +#define bM4_DMA2_MONDTCTL2_CNT15 (*((volatile unsigned int*)(0x42A69D7CUL))) +#define bM4_DMA2_MONRPT2_SRPT0 (*((volatile unsigned int*)(0x42A69D80UL))) +#define bM4_DMA2_MONRPT2_SRPT1 (*((volatile unsigned int*)(0x42A69D84UL))) +#define bM4_DMA2_MONRPT2_SRPT2 (*((volatile unsigned int*)(0x42A69D88UL))) +#define bM4_DMA2_MONRPT2_SRPT3 (*((volatile unsigned int*)(0x42A69D8CUL))) +#define bM4_DMA2_MONRPT2_SRPT4 (*((volatile unsigned int*)(0x42A69D90UL))) +#define bM4_DMA2_MONRPT2_SRPT5 (*((volatile unsigned int*)(0x42A69D94UL))) +#define bM4_DMA2_MONRPT2_SRPT6 (*((volatile unsigned int*)(0x42A69D98UL))) +#define bM4_DMA2_MONRPT2_SRPT7 (*((volatile unsigned int*)(0x42A69D9CUL))) +#define bM4_DMA2_MONRPT2_SRPT8 (*((volatile unsigned int*)(0x42A69DA0UL))) +#define bM4_DMA2_MONRPT2_SRPT9 (*((volatile unsigned int*)(0x42A69DA4UL))) +#define bM4_DMA2_MONRPT2_DRPT0 (*((volatile unsigned int*)(0x42A69DC0UL))) +#define bM4_DMA2_MONRPT2_DRPT1 (*((volatile unsigned int*)(0x42A69DC4UL))) +#define bM4_DMA2_MONRPT2_DRPT2 (*((volatile unsigned int*)(0x42A69DC8UL))) +#define bM4_DMA2_MONRPT2_DRPT3 (*((volatile unsigned int*)(0x42A69DCCUL))) +#define bM4_DMA2_MONRPT2_DRPT4 (*((volatile unsigned int*)(0x42A69DD0UL))) +#define bM4_DMA2_MONRPT2_DRPT5 (*((volatile unsigned int*)(0x42A69DD4UL))) +#define bM4_DMA2_MONRPT2_DRPT6 (*((volatile unsigned int*)(0x42A69DD8UL))) +#define bM4_DMA2_MONRPT2_DRPT7 (*((volatile unsigned int*)(0x42A69DDCUL))) +#define bM4_DMA2_MONRPT2_DRPT8 (*((volatile unsigned int*)(0x42A69DE0UL))) +#define bM4_DMA2_MONRPT2_DRPT9 (*((volatile unsigned int*)(0x42A69DE4UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET0 (*((volatile unsigned int*)(0x42A69E00UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET1 (*((volatile unsigned int*)(0x42A69E04UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET2 (*((volatile unsigned int*)(0x42A69E08UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET3 (*((volatile unsigned int*)(0x42A69E0CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET4 (*((volatile unsigned int*)(0x42A69E10UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET5 (*((volatile unsigned int*)(0x42A69E14UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET6 (*((volatile unsigned int*)(0x42A69E18UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET7 (*((volatile unsigned int*)(0x42A69E1CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET8 (*((volatile unsigned int*)(0x42A69E20UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET9 (*((volatile unsigned int*)(0x42A69E24UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET10 (*((volatile unsigned int*)(0x42A69E28UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET11 (*((volatile unsigned int*)(0x42A69E2CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET12 (*((volatile unsigned int*)(0x42A69E30UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET13 (*((volatile unsigned int*)(0x42A69E34UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET14 (*((volatile unsigned int*)(0x42A69E38UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET15 (*((volatile unsigned int*)(0x42A69E3CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET16 (*((volatile unsigned int*)(0x42A69E40UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET17 (*((volatile unsigned int*)(0x42A69E44UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET18 (*((volatile unsigned int*)(0x42A69E48UL))) +#define bM4_DMA2_MONSNSEQCTL2_SOFFSET19 (*((volatile unsigned int*)(0x42A69E4CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT0 (*((volatile unsigned int*)(0x42A69E50UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT1 (*((volatile unsigned int*)(0x42A69E54UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT2 (*((volatile unsigned int*)(0x42A69E58UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT3 (*((volatile unsigned int*)(0x42A69E5CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT4 (*((volatile unsigned int*)(0x42A69E60UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT5 (*((volatile unsigned int*)(0x42A69E64UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT6 (*((volatile unsigned int*)(0x42A69E68UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT7 (*((volatile unsigned int*)(0x42A69E6CUL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT8 (*((volatile unsigned int*)(0x42A69E70UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT9 (*((volatile unsigned int*)(0x42A69E74UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT10 (*((volatile unsigned int*)(0x42A69E78UL))) +#define bM4_DMA2_MONSNSEQCTL2_SNSCNT11 (*((volatile unsigned int*)(0x42A69E7CUL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET0 (*((volatile unsigned int*)(0x42A69E80UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET1 (*((volatile unsigned int*)(0x42A69E84UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET2 (*((volatile unsigned int*)(0x42A69E88UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET3 (*((volatile unsigned int*)(0x42A69E8CUL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET4 (*((volatile unsigned int*)(0x42A69E90UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET5 (*((volatile unsigned int*)(0x42A69E94UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET6 (*((volatile unsigned int*)(0x42A69E98UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET7 (*((volatile unsigned int*)(0x42A69E9CUL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET8 (*((volatile unsigned int*)(0x42A69EA0UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET9 (*((volatile unsigned int*)(0x42A69EA4UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET10 (*((volatile unsigned int*)(0x42A69EA8UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET11 (*((volatile unsigned int*)(0x42A69EACUL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET12 (*((volatile unsigned int*)(0x42A69EB0UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET13 (*((volatile unsigned int*)(0x42A69EB4UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET14 (*((volatile unsigned int*)(0x42A69EB8UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET15 (*((volatile unsigned int*)(0x42A69EBCUL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET16 (*((volatile unsigned int*)(0x42A69EC0UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET17 (*((volatile unsigned int*)(0x42A69EC4UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET18 (*((volatile unsigned int*)(0x42A69EC8UL))) +#define bM4_DMA2_MONDNSEQCTL2_DOFFSET19 (*((volatile unsigned int*)(0x42A69ECCUL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT0 (*((volatile unsigned int*)(0x42A69ED0UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT1 (*((volatile unsigned int*)(0x42A69ED4UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT2 (*((volatile unsigned int*)(0x42A69ED8UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT3 (*((volatile unsigned int*)(0x42A69EDCUL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT4 (*((volatile unsigned int*)(0x42A69EE0UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT5 (*((volatile unsigned int*)(0x42A69EE4UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT6 (*((volatile unsigned int*)(0x42A69EE8UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT7 (*((volatile unsigned int*)(0x42A69EECUL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT8 (*((volatile unsigned int*)(0x42A69EF0UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT9 (*((volatile unsigned int*)(0x42A69EF4UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT10 (*((volatile unsigned int*)(0x42A69EF8UL))) +#define bM4_DMA2_MONDNSEQCTL2_DNSCNT11 (*((volatile unsigned int*)(0x42A69EFCUL))) +#define bM4_DMA2_DTCTL3_BLKSIZE0 (*((volatile unsigned int*)(0x42A6A100UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE1 (*((volatile unsigned int*)(0x42A6A104UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE2 (*((volatile unsigned int*)(0x42A6A108UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE3 (*((volatile unsigned int*)(0x42A6A10CUL))) +#define bM4_DMA2_DTCTL3_BLKSIZE4 (*((volatile unsigned int*)(0x42A6A110UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE5 (*((volatile unsigned int*)(0x42A6A114UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE6 (*((volatile unsigned int*)(0x42A6A118UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE7 (*((volatile unsigned int*)(0x42A6A11CUL))) +#define bM4_DMA2_DTCTL3_BLKSIZE8 (*((volatile unsigned int*)(0x42A6A120UL))) +#define bM4_DMA2_DTCTL3_BLKSIZE9 (*((volatile unsigned int*)(0x42A6A124UL))) +#define bM4_DMA2_DTCTL3_CNT0 (*((volatile unsigned int*)(0x42A6A140UL))) +#define bM4_DMA2_DTCTL3_CNT1 (*((volatile unsigned int*)(0x42A6A144UL))) +#define bM4_DMA2_DTCTL3_CNT2 (*((volatile unsigned int*)(0x42A6A148UL))) +#define bM4_DMA2_DTCTL3_CNT3 (*((volatile unsigned int*)(0x42A6A14CUL))) +#define bM4_DMA2_DTCTL3_CNT4 (*((volatile unsigned int*)(0x42A6A150UL))) +#define bM4_DMA2_DTCTL3_CNT5 (*((volatile unsigned int*)(0x42A6A154UL))) +#define bM4_DMA2_DTCTL3_CNT6 (*((volatile unsigned int*)(0x42A6A158UL))) +#define bM4_DMA2_DTCTL3_CNT7 (*((volatile unsigned int*)(0x42A6A15CUL))) +#define bM4_DMA2_DTCTL3_CNT8 (*((volatile unsigned int*)(0x42A6A160UL))) +#define bM4_DMA2_DTCTL3_CNT9 (*((volatile unsigned int*)(0x42A6A164UL))) +#define bM4_DMA2_DTCTL3_CNT10 (*((volatile unsigned int*)(0x42A6A168UL))) +#define bM4_DMA2_DTCTL3_CNT11 (*((volatile unsigned int*)(0x42A6A16CUL))) +#define bM4_DMA2_DTCTL3_CNT12 (*((volatile unsigned int*)(0x42A6A170UL))) +#define bM4_DMA2_DTCTL3_CNT13 (*((volatile unsigned int*)(0x42A6A174UL))) +#define bM4_DMA2_DTCTL3_CNT14 (*((volatile unsigned int*)(0x42A6A178UL))) +#define bM4_DMA2_DTCTL3_CNT15 (*((volatile unsigned int*)(0x42A6A17CUL))) +#define bM4_DMA2_RPT3_SRPT0 (*((volatile unsigned int*)(0x42A6A180UL))) +#define bM4_DMA2_RPT3_SRPT1 (*((volatile unsigned int*)(0x42A6A184UL))) +#define bM4_DMA2_RPT3_SRPT2 (*((volatile unsigned int*)(0x42A6A188UL))) +#define bM4_DMA2_RPT3_SRPT3 (*((volatile unsigned int*)(0x42A6A18CUL))) +#define bM4_DMA2_RPT3_SRPT4 (*((volatile unsigned int*)(0x42A6A190UL))) +#define bM4_DMA2_RPT3_SRPT5 (*((volatile unsigned int*)(0x42A6A194UL))) +#define bM4_DMA2_RPT3_SRPT6 (*((volatile unsigned int*)(0x42A6A198UL))) +#define bM4_DMA2_RPT3_SRPT7 (*((volatile unsigned int*)(0x42A6A19CUL))) +#define bM4_DMA2_RPT3_SRPT8 (*((volatile unsigned int*)(0x42A6A1A0UL))) +#define bM4_DMA2_RPT3_SRPT9 (*((volatile unsigned int*)(0x42A6A1A4UL))) +#define bM4_DMA2_RPT3_DRPT0 (*((volatile unsigned int*)(0x42A6A1C0UL))) +#define bM4_DMA2_RPT3_DRPT1 (*((volatile unsigned int*)(0x42A6A1C4UL))) +#define bM4_DMA2_RPT3_DRPT2 (*((volatile unsigned int*)(0x42A6A1C8UL))) +#define bM4_DMA2_RPT3_DRPT3 (*((volatile unsigned int*)(0x42A6A1CCUL))) +#define bM4_DMA2_RPT3_DRPT4 (*((volatile unsigned int*)(0x42A6A1D0UL))) +#define bM4_DMA2_RPT3_DRPT5 (*((volatile unsigned int*)(0x42A6A1D4UL))) +#define bM4_DMA2_RPT3_DRPT6 (*((volatile unsigned int*)(0x42A6A1D8UL))) +#define bM4_DMA2_RPT3_DRPT7 (*((volatile unsigned int*)(0x42A6A1DCUL))) +#define bM4_DMA2_RPT3_DRPT8 (*((volatile unsigned int*)(0x42A6A1E0UL))) +#define bM4_DMA2_RPT3_DRPT9 (*((volatile unsigned int*)(0x42A6A1E4UL))) +#define bM4_DMA2_RPTB3_SRPTB0 (*((volatile unsigned int*)(0x42A6A180UL))) +#define bM4_DMA2_RPTB3_SRPTB1 (*((volatile unsigned int*)(0x42A6A184UL))) +#define bM4_DMA2_RPTB3_SRPTB2 (*((volatile unsigned int*)(0x42A6A188UL))) +#define bM4_DMA2_RPTB3_SRPTB3 (*((volatile unsigned int*)(0x42A6A18CUL))) +#define bM4_DMA2_RPTB3_SRPTB4 (*((volatile unsigned int*)(0x42A6A190UL))) +#define bM4_DMA2_RPTB3_SRPTB5 (*((volatile unsigned int*)(0x42A6A194UL))) +#define bM4_DMA2_RPTB3_SRPTB6 (*((volatile unsigned int*)(0x42A6A198UL))) +#define bM4_DMA2_RPTB3_SRPTB7 (*((volatile unsigned int*)(0x42A6A19CUL))) +#define bM4_DMA2_RPTB3_SRPTB8 (*((volatile unsigned int*)(0x42A6A1A0UL))) +#define bM4_DMA2_RPTB3_SRPTB9 (*((volatile unsigned int*)(0x42A6A1A4UL))) +#define bM4_DMA2_RPTB3_DRPTB0 (*((volatile unsigned int*)(0x42A6A1C0UL))) +#define bM4_DMA2_RPTB3_DRPTB1 (*((volatile unsigned int*)(0x42A6A1C4UL))) +#define bM4_DMA2_RPTB3_DRPTB2 (*((volatile unsigned int*)(0x42A6A1C8UL))) +#define bM4_DMA2_RPTB3_DRPTB3 (*((volatile unsigned int*)(0x42A6A1CCUL))) +#define bM4_DMA2_RPTB3_DRPTB4 (*((volatile unsigned int*)(0x42A6A1D0UL))) +#define bM4_DMA2_RPTB3_DRPTB5 (*((volatile unsigned int*)(0x42A6A1D4UL))) +#define bM4_DMA2_RPTB3_DRPTB6 (*((volatile unsigned int*)(0x42A6A1D8UL))) +#define bM4_DMA2_RPTB3_DRPTB7 (*((volatile unsigned int*)(0x42A6A1DCUL))) +#define bM4_DMA2_RPTB3_DRPTB8 (*((volatile unsigned int*)(0x42A6A1E0UL))) +#define bM4_DMA2_RPTB3_DRPTB9 (*((volatile unsigned int*)(0x42A6A1E4UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET0 (*((volatile unsigned int*)(0x42A6A200UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET1 (*((volatile unsigned int*)(0x42A6A204UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET2 (*((volatile unsigned int*)(0x42A6A208UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET3 (*((volatile unsigned int*)(0x42A6A20CUL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET4 (*((volatile unsigned int*)(0x42A6A210UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET5 (*((volatile unsigned int*)(0x42A6A214UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET6 (*((volatile unsigned int*)(0x42A6A218UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET7 (*((volatile unsigned int*)(0x42A6A21CUL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET8 (*((volatile unsigned int*)(0x42A6A220UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET9 (*((volatile unsigned int*)(0x42A6A224UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET10 (*((volatile unsigned int*)(0x42A6A228UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET11 (*((volatile unsigned int*)(0x42A6A22CUL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET12 (*((volatile unsigned int*)(0x42A6A230UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET13 (*((volatile unsigned int*)(0x42A6A234UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET14 (*((volatile unsigned int*)(0x42A6A238UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET15 (*((volatile unsigned int*)(0x42A6A23CUL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET16 (*((volatile unsigned int*)(0x42A6A240UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET17 (*((volatile unsigned int*)(0x42A6A244UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET18 (*((volatile unsigned int*)(0x42A6A248UL))) +#define bM4_DMA2_SNSEQCTL3_SOFFSET19 (*((volatile unsigned int*)(0x42A6A24CUL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT0 (*((volatile unsigned int*)(0x42A6A250UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT1 (*((volatile unsigned int*)(0x42A6A254UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT2 (*((volatile unsigned int*)(0x42A6A258UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT3 (*((volatile unsigned int*)(0x42A6A25CUL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT4 (*((volatile unsigned int*)(0x42A6A260UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT5 (*((volatile unsigned int*)(0x42A6A264UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT6 (*((volatile unsigned int*)(0x42A6A268UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT7 (*((volatile unsigned int*)(0x42A6A26CUL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT8 (*((volatile unsigned int*)(0x42A6A270UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT9 (*((volatile unsigned int*)(0x42A6A274UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT10 (*((volatile unsigned int*)(0x42A6A278UL))) +#define bM4_DMA2_SNSEQCTL3_SNSCNT11 (*((volatile unsigned int*)(0x42A6A27CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST0 (*((volatile unsigned int*)(0x42A6A200UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST1 (*((volatile unsigned int*)(0x42A6A204UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST2 (*((volatile unsigned int*)(0x42A6A208UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST3 (*((volatile unsigned int*)(0x42A6A20CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST4 (*((volatile unsigned int*)(0x42A6A210UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST5 (*((volatile unsigned int*)(0x42A6A214UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST6 (*((volatile unsigned int*)(0x42A6A218UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST7 (*((volatile unsigned int*)(0x42A6A21CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST8 (*((volatile unsigned int*)(0x42A6A220UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST9 (*((volatile unsigned int*)(0x42A6A224UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST10 (*((volatile unsigned int*)(0x42A6A228UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST11 (*((volatile unsigned int*)(0x42A6A22CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST12 (*((volatile unsigned int*)(0x42A6A230UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST13 (*((volatile unsigned int*)(0x42A6A234UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST14 (*((volatile unsigned int*)(0x42A6A238UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST15 (*((volatile unsigned int*)(0x42A6A23CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST16 (*((volatile unsigned int*)(0x42A6A240UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST17 (*((volatile unsigned int*)(0x42A6A244UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST18 (*((volatile unsigned int*)(0x42A6A248UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSDIST19 (*((volatile unsigned int*)(0x42A6A24CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB0 (*((volatile unsigned int*)(0x42A6A250UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB1 (*((volatile unsigned int*)(0x42A6A254UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB2 (*((volatile unsigned int*)(0x42A6A258UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB3 (*((volatile unsigned int*)(0x42A6A25CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB4 (*((volatile unsigned int*)(0x42A6A260UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB5 (*((volatile unsigned int*)(0x42A6A264UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB6 (*((volatile unsigned int*)(0x42A6A268UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB7 (*((volatile unsigned int*)(0x42A6A26CUL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB8 (*((volatile unsigned int*)(0x42A6A270UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB9 (*((volatile unsigned int*)(0x42A6A274UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB10 (*((volatile unsigned int*)(0x42A6A278UL))) +#define bM4_DMA2_SNSEQCTLB3_SNSCNTB11 (*((volatile unsigned int*)(0x42A6A27CUL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET0 (*((volatile unsigned int*)(0x42A6A280UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET1 (*((volatile unsigned int*)(0x42A6A284UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET2 (*((volatile unsigned int*)(0x42A6A288UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET3 (*((volatile unsigned int*)(0x42A6A28CUL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET4 (*((volatile unsigned int*)(0x42A6A290UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET5 (*((volatile unsigned int*)(0x42A6A294UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET6 (*((volatile unsigned int*)(0x42A6A298UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET7 (*((volatile unsigned int*)(0x42A6A29CUL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET8 (*((volatile unsigned int*)(0x42A6A2A0UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET9 (*((volatile unsigned int*)(0x42A6A2A4UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET10 (*((volatile unsigned int*)(0x42A6A2A8UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET11 (*((volatile unsigned int*)(0x42A6A2ACUL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET12 (*((volatile unsigned int*)(0x42A6A2B0UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET13 (*((volatile unsigned int*)(0x42A6A2B4UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET14 (*((volatile unsigned int*)(0x42A6A2B8UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET15 (*((volatile unsigned int*)(0x42A6A2BCUL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET16 (*((volatile unsigned int*)(0x42A6A2C0UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET17 (*((volatile unsigned int*)(0x42A6A2C4UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET18 (*((volatile unsigned int*)(0x42A6A2C8UL))) +#define bM4_DMA2_DNSEQCTL3_DOFFSET19 (*((volatile unsigned int*)(0x42A6A2CCUL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT0 (*((volatile unsigned int*)(0x42A6A2D0UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT1 (*((volatile unsigned int*)(0x42A6A2D4UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT2 (*((volatile unsigned int*)(0x42A6A2D8UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT3 (*((volatile unsigned int*)(0x42A6A2DCUL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT4 (*((volatile unsigned int*)(0x42A6A2E0UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT5 (*((volatile unsigned int*)(0x42A6A2E4UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT6 (*((volatile unsigned int*)(0x42A6A2E8UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT7 (*((volatile unsigned int*)(0x42A6A2ECUL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT8 (*((volatile unsigned int*)(0x42A6A2F0UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT9 (*((volatile unsigned int*)(0x42A6A2F4UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT10 (*((volatile unsigned int*)(0x42A6A2F8UL))) +#define bM4_DMA2_DNSEQCTL3_DNSCNT11 (*((volatile unsigned int*)(0x42A6A2FCUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST0 (*((volatile unsigned int*)(0x42A6A280UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST1 (*((volatile unsigned int*)(0x42A6A284UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST2 (*((volatile unsigned int*)(0x42A6A288UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST3 (*((volatile unsigned int*)(0x42A6A28CUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST4 (*((volatile unsigned int*)(0x42A6A290UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST5 (*((volatile unsigned int*)(0x42A6A294UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST6 (*((volatile unsigned int*)(0x42A6A298UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST7 (*((volatile unsigned int*)(0x42A6A29CUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST8 (*((volatile unsigned int*)(0x42A6A2A0UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST9 (*((volatile unsigned int*)(0x42A6A2A4UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST10 (*((volatile unsigned int*)(0x42A6A2A8UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST11 (*((volatile unsigned int*)(0x42A6A2ACUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST12 (*((volatile unsigned int*)(0x42A6A2B0UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST13 (*((volatile unsigned int*)(0x42A6A2B4UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST14 (*((volatile unsigned int*)(0x42A6A2B8UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST15 (*((volatile unsigned int*)(0x42A6A2BCUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST16 (*((volatile unsigned int*)(0x42A6A2C0UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST17 (*((volatile unsigned int*)(0x42A6A2C4UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST18 (*((volatile unsigned int*)(0x42A6A2C8UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSDIST19 (*((volatile unsigned int*)(0x42A6A2CCUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB0 (*((volatile unsigned int*)(0x42A6A2D0UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB1 (*((volatile unsigned int*)(0x42A6A2D4UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB2 (*((volatile unsigned int*)(0x42A6A2D8UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB3 (*((volatile unsigned int*)(0x42A6A2DCUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB4 (*((volatile unsigned int*)(0x42A6A2E0UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB5 (*((volatile unsigned int*)(0x42A6A2E4UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB6 (*((volatile unsigned int*)(0x42A6A2E8UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB7 (*((volatile unsigned int*)(0x42A6A2ECUL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB8 (*((volatile unsigned int*)(0x42A6A2F0UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB9 (*((volatile unsigned int*)(0x42A6A2F4UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB10 (*((volatile unsigned int*)(0x42A6A2F8UL))) +#define bM4_DMA2_DNSEQCTLB3_DNSCNTB11 (*((volatile unsigned int*)(0x42A6A2FCUL))) +#define bM4_DMA2_LLP3_LLP0 (*((volatile unsigned int*)(0x42A6A308UL))) +#define bM4_DMA2_LLP3_LLP1 (*((volatile unsigned int*)(0x42A6A30CUL))) +#define bM4_DMA2_LLP3_LLP2 (*((volatile unsigned int*)(0x42A6A310UL))) +#define bM4_DMA2_LLP3_LLP3 (*((volatile unsigned int*)(0x42A6A314UL))) +#define bM4_DMA2_LLP3_LLP4 (*((volatile unsigned int*)(0x42A6A318UL))) +#define bM4_DMA2_LLP3_LLP5 (*((volatile unsigned int*)(0x42A6A31CUL))) +#define bM4_DMA2_LLP3_LLP6 (*((volatile unsigned int*)(0x42A6A320UL))) +#define bM4_DMA2_LLP3_LLP7 (*((volatile unsigned int*)(0x42A6A324UL))) +#define bM4_DMA2_LLP3_LLP8 (*((volatile unsigned int*)(0x42A6A328UL))) +#define bM4_DMA2_LLP3_LLP9 (*((volatile unsigned int*)(0x42A6A32CUL))) +#define bM4_DMA2_LLP3_LLP10 (*((volatile unsigned int*)(0x42A6A330UL))) +#define bM4_DMA2_LLP3_LLP11 (*((volatile unsigned int*)(0x42A6A334UL))) +#define bM4_DMA2_LLP3_LLP12 (*((volatile unsigned int*)(0x42A6A338UL))) +#define bM4_DMA2_LLP3_LLP13 (*((volatile unsigned int*)(0x42A6A33CUL))) +#define bM4_DMA2_LLP3_LLP14 (*((volatile unsigned int*)(0x42A6A340UL))) +#define bM4_DMA2_LLP3_LLP15 (*((volatile unsigned int*)(0x42A6A344UL))) +#define bM4_DMA2_LLP3_LLP16 (*((volatile unsigned int*)(0x42A6A348UL))) +#define bM4_DMA2_LLP3_LLP17 (*((volatile unsigned int*)(0x42A6A34CUL))) +#define bM4_DMA2_LLP3_LLP18 (*((volatile unsigned int*)(0x42A6A350UL))) +#define bM4_DMA2_LLP3_LLP19 (*((volatile unsigned int*)(0x42A6A354UL))) +#define bM4_DMA2_LLP3_LLP20 (*((volatile unsigned int*)(0x42A6A358UL))) +#define bM4_DMA2_LLP3_LLP21 (*((volatile unsigned int*)(0x42A6A35CUL))) +#define bM4_DMA2_LLP3_LLP22 (*((volatile unsigned int*)(0x42A6A360UL))) +#define bM4_DMA2_LLP3_LLP23 (*((volatile unsigned int*)(0x42A6A364UL))) +#define bM4_DMA2_LLP3_LLP24 (*((volatile unsigned int*)(0x42A6A368UL))) +#define bM4_DMA2_LLP3_LLP25 (*((volatile unsigned int*)(0x42A6A36CUL))) +#define bM4_DMA2_LLP3_LLP26 (*((volatile unsigned int*)(0x42A6A370UL))) +#define bM4_DMA2_LLP3_LLP27 (*((volatile unsigned int*)(0x42A6A374UL))) +#define bM4_DMA2_LLP3_LLP28 (*((volatile unsigned int*)(0x42A6A378UL))) +#define bM4_DMA2_LLP3_LLP29 (*((volatile unsigned int*)(0x42A6A37CUL))) +#define bM4_DMA2_CH3CTL_SINC0 (*((volatile unsigned int*)(0x42A6A380UL))) +#define bM4_DMA2_CH3CTL_SINC1 (*((volatile unsigned int*)(0x42A6A384UL))) +#define bM4_DMA2_CH3CTL_DINC0 (*((volatile unsigned int*)(0x42A6A388UL))) +#define bM4_DMA2_CH3CTL_DINC1 (*((volatile unsigned int*)(0x42A6A38CUL))) +#define bM4_DMA2_CH3CTL_SRPTEN (*((volatile unsigned int*)(0x42A6A390UL))) +#define bM4_DMA2_CH3CTL_DRPTEN (*((volatile unsigned int*)(0x42A6A394UL))) +#define bM4_DMA2_CH3CTL_SNSEQEN (*((volatile unsigned int*)(0x42A6A398UL))) +#define bM4_DMA2_CH3CTL_DNSEQEN (*((volatile unsigned int*)(0x42A6A39CUL))) +#define bM4_DMA2_CH3CTL_HSIZE0 (*((volatile unsigned int*)(0x42A6A3A0UL))) +#define bM4_DMA2_CH3CTL_HSIZE1 (*((volatile unsigned int*)(0x42A6A3A4UL))) +#define bM4_DMA2_CH3CTL_LLPEN (*((volatile unsigned int*)(0x42A6A3A8UL))) +#define bM4_DMA2_CH3CTL_LLPRUN (*((volatile unsigned int*)(0x42A6A3ACUL))) +#define bM4_DMA2_CH3CTL_IE (*((volatile unsigned int*)(0x42A6A3B0UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE0 (*((volatile unsigned int*)(0x42A6A500UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE1 (*((volatile unsigned int*)(0x42A6A504UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE2 (*((volatile unsigned int*)(0x42A6A508UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE3 (*((volatile unsigned int*)(0x42A6A50CUL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE4 (*((volatile unsigned int*)(0x42A6A510UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE5 (*((volatile unsigned int*)(0x42A6A514UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE6 (*((volatile unsigned int*)(0x42A6A518UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE7 (*((volatile unsigned int*)(0x42A6A51CUL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE8 (*((volatile unsigned int*)(0x42A6A520UL))) +#define bM4_DMA2_MONDTCTL3_BLKSIZE9 (*((volatile unsigned int*)(0x42A6A524UL))) +#define bM4_DMA2_MONDTCTL3_CNT0 (*((volatile unsigned int*)(0x42A6A540UL))) +#define bM4_DMA2_MONDTCTL3_CNT1 (*((volatile unsigned int*)(0x42A6A544UL))) +#define bM4_DMA2_MONDTCTL3_CNT2 (*((volatile unsigned int*)(0x42A6A548UL))) +#define bM4_DMA2_MONDTCTL3_CNT3 (*((volatile unsigned int*)(0x42A6A54CUL))) +#define bM4_DMA2_MONDTCTL3_CNT4 (*((volatile unsigned int*)(0x42A6A550UL))) +#define bM4_DMA2_MONDTCTL3_CNT5 (*((volatile unsigned int*)(0x42A6A554UL))) +#define bM4_DMA2_MONDTCTL3_CNT6 (*((volatile unsigned int*)(0x42A6A558UL))) +#define bM4_DMA2_MONDTCTL3_CNT7 (*((volatile unsigned int*)(0x42A6A55CUL))) +#define bM4_DMA2_MONDTCTL3_CNT8 (*((volatile unsigned int*)(0x42A6A560UL))) +#define bM4_DMA2_MONDTCTL3_CNT9 (*((volatile unsigned int*)(0x42A6A564UL))) +#define bM4_DMA2_MONDTCTL3_CNT10 (*((volatile unsigned int*)(0x42A6A568UL))) +#define bM4_DMA2_MONDTCTL3_CNT11 (*((volatile unsigned int*)(0x42A6A56CUL))) +#define bM4_DMA2_MONDTCTL3_CNT12 (*((volatile unsigned int*)(0x42A6A570UL))) +#define bM4_DMA2_MONDTCTL3_CNT13 (*((volatile unsigned int*)(0x42A6A574UL))) +#define bM4_DMA2_MONDTCTL3_CNT14 (*((volatile unsigned int*)(0x42A6A578UL))) +#define bM4_DMA2_MONDTCTL3_CNT15 (*((volatile unsigned int*)(0x42A6A57CUL))) +#define bM4_DMA2_MONRPT3_SRPT0 (*((volatile unsigned int*)(0x42A6A580UL))) +#define bM4_DMA2_MONRPT3_SRPT1 (*((volatile unsigned int*)(0x42A6A584UL))) +#define bM4_DMA2_MONRPT3_SRPT2 (*((volatile unsigned int*)(0x42A6A588UL))) +#define bM4_DMA2_MONRPT3_SRPT3 (*((volatile unsigned int*)(0x42A6A58CUL))) +#define bM4_DMA2_MONRPT3_SRPT4 (*((volatile unsigned int*)(0x42A6A590UL))) +#define bM4_DMA2_MONRPT3_SRPT5 (*((volatile unsigned int*)(0x42A6A594UL))) +#define bM4_DMA2_MONRPT3_SRPT6 (*((volatile unsigned int*)(0x42A6A598UL))) +#define bM4_DMA2_MONRPT3_SRPT7 (*((volatile unsigned int*)(0x42A6A59CUL))) +#define bM4_DMA2_MONRPT3_SRPT8 (*((volatile unsigned int*)(0x42A6A5A0UL))) +#define bM4_DMA2_MONRPT3_SRPT9 (*((volatile unsigned int*)(0x42A6A5A4UL))) +#define bM4_DMA2_MONRPT3_DRPT0 (*((volatile unsigned int*)(0x42A6A5C0UL))) +#define bM4_DMA2_MONRPT3_DRPT1 (*((volatile unsigned int*)(0x42A6A5C4UL))) +#define bM4_DMA2_MONRPT3_DRPT2 (*((volatile unsigned int*)(0x42A6A5C8UL))) +#define bM4_DMA2_MONRPT3_DRPT3 (*((volatile unsigned int*)(0x42A6A5CCUL))) +#define bM4_DMA2_MONRPT3_DRPT4 (*((volatile unsigned int*)(0x42A6A5D0UL))) +#define bM4_DMA2_MONRPT3_DRPT5 (*((volatile unsigned int*)(0x42A6A5D4UL))) +#define bM4_DMA2_MONRPT3_DRPT6 (*((volatile unsigned int*)(0x42A6A5D8UL))) +#define bM4_DMA2_MONRPT3_DRPT7 (*((volatile unsigned int*)(0x42A6A5DCUL))) +#define bM4_DMA2_MONRPT3_DRPT8 (*((volatile unsigned int*)(0x42A6A5E0UL))) +#define bM4_DMA2_MONRPT3_DRPT9 (*((volatile unsigned int*)(0x42A6A5E4UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET0 (*((volatile unsigned int*)(0x42A6A600UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET1 (*((volatile unsigned int*)(0x42A6A604UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET2 (*((volatile unsigned int*)(0x42A6A608UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET3 (*((volatile unsigned int*)(0x42A6A60CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET4 (*((volatile unsigned int*)(0x42A6A610UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET5 (*((volatile unsigned int*)(0x42A6A614UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET6 (*((volatile unsigned int*)(0x42A6A618UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET7 (*((volatile unsigned int*)(0x42A6A61CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET8 (*((volatile unsigned int*)(0x42A6A620UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET9 (*((volatile unsigned int*)(0x42A6A624UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET10 (*((volatile unsigned int*)(0x42A6A628UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET11 (*((volatile unsigned int*)(0x42A6A62CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET12 (*((volatile unsigned int*)(0x42A6A630UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET13 (*((volatile unsigned int*)(0x42A6A634UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET14 (*((volatile unsigned int*)(0x42A6A638UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET15 (*((volatile unsigned int*)(0x42A6A63CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET16 (*((volatile unsigned int*)(0x42A6A640UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET17 (*((volatile unsigned int*)(0x42A6A644UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET18 (*((volatile unsigned int*)(0x42A6A648UL))) +#define bM4_DMA2_MONSNSEQCTL3_SOFFSET19 (*((volatile unsigned int*)(0x42A6A64CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT0 (*((volatile unsigned int*)(0x42A6A650UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT1 (*((volatile unsigned int*)(0x42A6A654UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT2 (*((volatile unsigned int*)(0x42A6A658UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT3 (*((volatile unsigned int*)(0x42A6A65CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT4 (*((volatile unsigned int*)(0x42A6A660UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT5 (*((volatile unsigned int*)(0x42A6A664UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT6 (*((volatile unsigned int*)(0x42A6A668UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT7 (*((volatile unsigned int*)(0x42A6A66CUL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT8 (*((volatile unsigned int*)(0x42A6A670UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT9 (*((volatile unsigned int*)(0x42A6A674UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT10 (*((volatile unsigned int*)(0x42A6A678UL))) +#define bM4_DMA2_MONSNSEQCTL3_SNSCNT11 (*((volatile unsigned int*)(0x42A6A67CUL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET0 (*((volatile unsigned int*)(0x42A6A680UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET1 (*((volatile unsigned int*)(0x42A6A684UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET2 (*((volatile unsigned int*)(0x42A6A688UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET3 (*((volatile unsigned int*)(0x42A6A68CUL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET4 (*((volatile unsigned int*)(0x42A6A690UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET5 (*((volatile unsigned int*)(0x42A6A694UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET6 (*((volatile unsigned int*)(0x42A6A698UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET7 (*((volatile unsigned int*)(0x42A6A69CUL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET8 (*((volatile unsigned int*)(0x42A6A6A0UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET9 (*((volatile unsigned int*)(0x42A6A6A4UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET10 (*((volatile unsigned int*)(0x42A6A6A8UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET11 (*((volatile unsigned int*)(0x42A6A6ACUL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET12 (*((volatile unsigned int*)(0x42A6A6B0UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET13 (*((volatile unsigned int*)(0x42A6A6B4UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET14 (*((volatile unsigned int*)(0x42A6A6B8UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET15 (*((volatile unsigned int*)(0x42A6A6BCUL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET16 (*((volatile unsigned int*)(0x42A6A6C0UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET17 (*((volatile unsigned int*)(0x42A6A6C4UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET18 (*((volatile unsigned int*)(0x42A6A6C8UL))) +#define bM4_DMA2_MONDNSEQCTL3_DOFFSET19 (*((volatile unsigned int*)(0x42A6A6CCUL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT0 (*((volatile unsigned int*)(0x42A6A6D0UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT1 (*((volatile unsigned int*)(0x42A6A6D4UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT2 (*((volatile unsigned int*)(0x42A6A6D8UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT3 (*((volatile unsigned int*)(0x42A6A6DCUL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT4 (*((volatile unsigned int*)(0x42A6A6E0UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT5 (*((volatile unsigned int*)(0x42A6A6E4UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT6 (*((volatile unsigned int*)(0x42A6A6E8UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT7 (*((volatile unsigned int*)(0x42A6A6ECUL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT8 (*((volatile unsigned int*)(0x42A6A6F0UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT9 (*((volatile unsigned int*)(0x42A6A6F4UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT10 (*((volatile unsigned int*)(0x42A6A6F8UL))) +#define bM4_DMA2_MONDNSEQCTL3_DNSCNT11 (*((volatile unsigned int*)(0x42A6A6FCUL))) +#define bM4_EFM_FAPRT_FAPRT0 (*((volatile unsigned int*)(0x42208000UL))) +#define bM4_EFM_FAPRT_FAPRT1 (*((volatile unsigned int*)(0x42208004UL))) +#define bM4_EFM_FAPRT_FAPRT2 (*((volatile unsigned int*)(0x42208008UL))) +#define bM4_EFM_FAPRT_FAPRT3 (*((volatile unsigned int*)(0x4220800CUL))) +#define bM4_EFM_FAPRT_FAPRT4 (*((volatile unsigned int*)(0x42208010UL))) +#define bM4_EFM_FAPRT_FAPRT5 (*((volatile unsigned int*)(0x42208014UL))) +#define bM4_EFM_FAPRT_FAPRT6 (*((volatile unsigned int*)(0x42208018UL))) +#define bM4_EFM_FAPRT_FAPRT7 (*((volatile unsigned int*)(0x4220801CUL))) +#define bM4_EFM_FAPRT_FAPRT8 (*((volatile unsigned int*)(0x42208020UL))) +#define bM4_EFM_FAPRT_FAPRT9 (*((volatile unsigned int*)(0x42208024UL))) +#define bM4_EFM_FAPRT_FAPRT10 (*((volatile unsigned int*)(0x42208028UL))) +#define bM4_EFM_FAPRT_FAPRT11 (*((volatile unsigned int*)(0x4220802CUL))) +#define bM4_EFM_FAPRT_FAPRT12 (*((volatile unsigned int*)(0x42208030UL))) +#define bM4_EFM_FAPRT_FAPRT13 (*((volatile unsigned int*)(0x42208034UL))) +#define bM4_EFM_FAPRT_FAPRT14 (*((volatile unsigned int*)(0x42208038UL))) +#define bM4_EFM_FAPRT_FAPRT15 (*((volatile unsigned int*)(0x4220803CUL))) +#define bM4_EFM_FSTP_FSTP (*((volatile unsigned int*)(0x42208080UL))) +#define bM4_EFM_FRMC_SLPMD (*((volatile unsigned int*)(0x42208100UL))) +#define bM4_EFM_FRMC_FLWT0 (*((volatile unsigned int*)(0x42208110UL))) +#define bM4_EFM_FRMC_FLWT1 (*((volatile unsigned int*)(0x42208114UL))) +#define bM4_EFM_FRMC_FLWT2 (*((volatile unsigned int*)(0x42208118UL))) +#define bM4_EFM_FRMC_FLWT3 (*((volatile unsigned int*)(0x4220811CUL))) +#define bM4_EFM_FRMC_LVM (*((volatile unsigned int*)(0x42208120UL))) +#define bM4_EFM_FRMC_CACHE (*((volatile unsigned int*)(0x42208140UL))) +#define bM4_EFM_FRMC_CRST (*((volatile unsigned int*)(0x42208160UL))) +#define bM4_EFM_FWMC_PEMODE (*((volatile unsigned int*)(0x42208180UL))) +#define bM4_EFM_FWMC_PEMOD0 (*((volatile unsigned int*)(0x42208190UL))) +#define bM4_EFM_FWMC_PEMOD1 (*((volatile unsigned int*)(0x42208194UL))) +#define bM4_EFM_FWMC_PEMOD2 (*((volatile unsigned int*)(0x42208198UL))) +#define bM4_EFM_FWMC_BUSHLDCTL (*((volatile unsigned int*)(0x422081A0UL))) +#define bM4_EFM_FSR_PEWERR (*((volatile unsigned int*)(0x42208200UL))) +#define bM4_EFM_FSR_PEPRTERR (*((volatile unsigned int*)(0x42208204UL))) +#define bM4_EFM_FSR_PGSZERR (*((volatile unsigned int*)(0x42208208UL))) +#define bM4_EFM_FSR_PGMISMTCH (*((volatile unsigned int*)(0x4220820CUL))) +#define bM4_EFM_FSR_OPTEND (*((volatile unsigned int*)(0x42208210UL))) +#define bM4_EFM_FSR_COLERR (*((volatile unsigned int*)(0x42208214UL))) +#define bM4_EFM_FSR_RDY (*((volatile unsigned int*)(0x42208220UL))) +#define bM4_EFM_FSCLR_PEWERRCLR (*((volatile unsigned int*)(0x42208280UL))) +#define bM4_EFM_FSCLR_PEPRTERRCLR (*((volatile unsigned int*)(0x42208284UL))) +#define bM4_EFM_FSCLR_PGSZERRCLR (*((volatile unsigned int*)(0x42208288UL))) +#define bM4_EFM_FSCLR_PGMISMTCHCLR (*((volatile unsigned int*)(0x4220828CUL))) +#define bM4_EFM_FSCLR_OPTENDCLR (*((volatile unsigned int*)(0x42208290UL))) +#define bM4_EFM_FSCLR_COLERRCLR (*((volatile unsigned int*)(0x42208294UL))) +#define bM4_EFM_FITE_PEERRITE (*((volatile unsigned int*)(0x42208300UL))) +#define bM4_EFM_FITE_OPTENDITE (*((volatile unsigned int*)(0x42208304UL))) +#define bM4_EFM_FITE_COLERRITE (*((volatile unsigned int*)(0x42208308UL))) +#define bM4_EFM_FSWP_FSWP (*((volatile unsigned int*)(0x42208380UL))) +#define bM4_EFM_FPMTSW_FPMTSW0 (*((volatile unsigned int*)(0x42208400UL))) +#define bM4_EFM_FPMTSW_FPMTSW1 (*((volatile unsigned int*)(0x42208404UL))) +#define bM4_EFM_FPMTSW_FPMTSW2 (*((volatile unsigned int*)(0x42208408UL))) +#define bM4_EFM_FPMTSW_FPMTSW3 (*((volatile unsigned int*)(0x4220840CUL))) +#define bM4_EFM_FPMTSW_FPMTSW4 (*((volatile unsigned int*)(0x42208410UL))) +#define bM4_EFM_FPMTSW_FPMTSW5 (*((volatile unsigned int*)(0x42208414UL))) +#define bM4_EFM_FPMTSW_FPMTSW6 (*((volatile unsigned int*)(0x42208418UL))) +#define bM4_EFM_FPMTSW_FPMTSW7 (*((volatile unsigned int*)(0x4220841CUL))) +#define bM4_EFM_FPMTSW_FPMTSW8 (*((volatile unsigned int*)(0x42208420UL))) +#define bM4_EFM_FPMTSW_FPMTSW9 (*((volatile unsigned int*)(0x42208424UL))) +#define bM4_EFM_FPMTSW_FPMTSW10 (*((volatile unsigned int*)(0x42208428UL))) +#define bM4_EFM_FPMTSW_FPMTSW11 (*((volatile unsigned int*)(0x4220842CUL))) +#define bM4_EFM_FPMTSW_FPMTSW12 (*((volatile unsigned int*)(0x42208430UL))) +#define bM4_EFM_FPMTSW_FPMTSW13 (*((volatile unsigned int*)(0x42208434UL))) +#define bM4_EFM_FPMTSW_FPMTSW14 (*((volatile unsigned int*)(0x42208438UL))) +#define bM4_EFM_FPMTSW_FPMTSW15 (*((volatile unsigned int*)(0x4220843CUL))) +#define bM4_EFM_FPMTSW_FPMTSW16 (*((volatile unsigned int*)(0x42208440UL))) +#define bM4_EFM_FPMTSW_FPMTSW17 (*((volatile unsigned int*)(0x42208444UL))) +#define bM4_EFM_FPMTSW_FPMTSW18 (*((volatile unsigned int*)(0x42208448UL))) +#define bM4_EFM_FPMTEW_FPMTEW0 (*((volatile unsigned int*)(0x42208480UL))) +#define bM4_EFM_FPMTEW_FPMTEW1 (*((volatile unsigned int*)(0x42208484UL))) +#define bM4_EFM_FPMTEW_FPMTEW2 (*((volatile unsigned int*)(0x42208488UL))) +#define bM4_EFM_FPMTEW_FPMTEW3 (*((volatile unsigned int*)(0x4220848CUL))) +#define bM4_EFM_FPMTEW_FPMTEW4 (*((volatile unsigned int*)(0x42208490UL))) +#define bM4_EFM_FPMTEW_FPMTEW5 (*((volatile unsigned int*)(0x42208494UL))) +#define bM4_EFM_FPMTEW_FPMTEW6 (*((volatile unsigned int*)(0x42208498UL))) +#define bM4_EFM_FPMTEW_FPMTEW7 (*((volatile unsigned int*)(0x4220849CUL))) +#define bM4_EFM_FPMTEW_FPMTEW8 (*((volatile unsigned int*)(0x422084A0UL))) +#define bM4_EFM_FPMTEW_FPMTEW9 (*((volatile unsigned int*)(0x422084A4UL))) +#define bM4_EFM_FPMTEW_FPMTEW10 (*((volatile unsigned int*)(0x422084A8UL))) +#define bM4_EFM_FPMTEW_FPMTEW11 (*((volatile unsigned int*)(0x422084ACUL))) +#define bM4_EFM_FPMTEW_FPMTEW12 (*((volatile unsigned int*)(0x422084B0UL))) +#define bM4_EFM_FPMTEW_FPMTEW13 (*((volatile unsigned int*)(0x422084B4UL))) +#define bM4_EFM_FPMTEW_FPMTEW14 (*((volatile unsigned int*)(0x422084B8UL))) +#define bM4_EFM_FPMTEW_FPMTEW15 (*((volatile unsigned int*)(0x422084BCUL))) +#define bM4_EFM_FPMTEW_FPMTEW16 (*((volatile unsigned int*)(0x422084C0UL))) +#define bM4_EFM_FPMTEW_FPMTEW17 (*((volatile unsigned int*)(0x422084C4UL))) +#define bM4_EFM_FPMTEW_FPMTEW18 (*((volatile unsigned int*)(0x422084C8UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT0 (*((volatile unsigned int*)(0x4220A000UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT1 (*((volatile unsigned int*)(0x4220A004UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT2 (*((volatile unsigned int*)(0x4220A008UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT3 (*((volatile unsigned int*)(0x4220A00CUL))) +#define bM4_EFM_MMF_REMPRT_REMPRT4 (*((volatile unsigned int*)(0x4220A010UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT5 (*((volatile unsigned int*)(0x4220A014UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT6 (*((volatile unsigned int*)(0x4220A018UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT7 (*((volatile unsigned int*)(0x4220A01CUL))) +#define bM4_EFM_MMF_REMPRT_REMPRT8 (*((volatile unsigned int*)(0x4220A020UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT9 (*((volatile unsigned int*)(0x4220A024UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT10 (*((volatile unsigned int*)(0x4220A028UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT11 (*((volatile unsigned int*)(0x4220A02CUL))) +#define bM4_EFM_MMF_REMPRT_REMPRT12 (*((volatile unsigned int*)(0x4220A030UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT13 (*((volatile unsigned int*)(0x4220A034UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT14 (*((volatile unsigned int*)(0x4220A038UL))) +#define bM4_EFM_MMF_REMPRT_REMPRT15 (*((volatile unsigned int*)(0x4220A03CUL))) +#define bM4_EFM_MMF_REMCR0_RM0SIZE0 (*((volatile unsigned int*)(0x4220A080UL))) +#define bM4_EFM_MMF_REMCR0_RM0SIZE1 (*((volatile unsigned int*)(0x4220A084UL))) +#define bM4_EFM_MMF_REMCR0_RM0SIZE2 (*((volatile unsigned int*)(0x4220A088UL))) +#define bM4_EFM_MMF_REMCR0_RM0SIZE3 (*((volatile unsigned int*)(0x4220A08CUL))) +#define bM4_EFM_MMF_REMCR0_RM0SIZE4 (*((volatile unsigned int*)(0x4220A090UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR0 (*((volatile unsigned int*)(0x4220A0B0UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR1 (*((volatile unsigned int*)(0x4220A0B4UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR2 (*((volatile unsigned int*)(0x4220A0B8UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR3 (*((volatile unsigned int*)(0x4220A0BCUL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR4 (*((volatile unsigned int*)(0x4220A0C0UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR5 (*((volatile unsigned int*)(0x4220A0C4UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR6 (*((volatile unsigned int*)(0x4220A0C8UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR7 (*((volatile unsigned int*)(0x4220A0CCUL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR8 (*((volatile unsigned int*)(0x4220A0D0UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR9 (*((volatile unsigned int*)(0x4220A0D4UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR10 (*((volatile unsigned int*)(0x4220A0D8UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR11 (*((volatile unsigned int*)(0x4220A0DCUL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR12 (*((volatile unsigned int*)(0x4220A0E0UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR13 (*((volatile unsigned int*)(0x4220A0E4UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR14 (*((volatile unsigned int*)(0x4220A0E8UL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR15 (*((volatile unsigned int*)(0x4220A0ECUL))) +#define bM4_EFM_MMF_REMCR0_RM0TADDR16 (*((volatile unsigned int*)(0x4220A0F0UL))) +#define bM4_EFM_MMF_REMCR0_EN0 (*((volatile unsigned int*)(0x4220A0FCUL))) +#define bM4_EFM_MMF_REMCR1_RM1SIZE0 (*((volatile unsigned int*)(0x4220A100UL))) +#define bM4_EFM_MMF_REMCR1_RM1SIZE1 (*((volatile unsigned int*)(0x4220A104UL))) +#define bM4_EFM_MMF_REMCR1_RM1SIZE2 (*((volatile unsigned int*)(0x4220A108UL))) +#define bM4_EFM_MMF_REMCR1_RM1SIZE3 (*((volatile unsigned int*)(0x4220A10CUL))) +#define bM4_EFM_MMF_REMCR1_RM1SIZE4 (*((volatile unsigned int*)(0x4220A110UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR0 (*((volatile unsigned int*)(0x4220A130UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR1 (*((volatile unsigned int*)(0x4220A134UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR2 (*((volatile unsigned int*)(0x4220A138UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR3 (*((volatile unsigned int*)(0x4220A13CUL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR4 (*((volatile unsigned int*)(0x4220A140UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR5 (*((volatile unsigned int*)(0x4220A144UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR6 (*((volatile unsigned int*)(0x4220A148UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR7 (*((volatile unsigned int*)(0x4220A14CUL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR8 (*((volatile unsigned int*)(0x4220A150UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR9 (*((volatile unsigned int*)(0x4220A154UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR10 (*((volatile unsigned int*)(0x4220A158UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR11 (*((volatile unsigned int*)(0x4220A15CUL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR12 (*((volatile unsigned int*)(0x4220A160UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR13 (*((volatile unsigned int*)(0x4220A164UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR14 (*((volatile unsigned int*)(0x4220A168UL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR15 (*((volatile unsigned int*)(0x4220A16CUL))) +#define bM4_EFM_MMF_REMCR1_RM1TADDR16 (*((volatile unsigned int*)(0x4220A170UL))) +#define bM4_EFM_MMF_REMCR1_EN1 (*((volatile unsigned int*)(0x4220A17CUL))) +#define bM4_EFM_EFM_FRANDS_FRANDS0 (*((volatile unsigned int*)(0x4220C084UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS1 (*((volatile unsigned int*)(0x4220C088UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS2 (*((volatile unsigned int*)(0x4220C08CUL))) +#define bM4_EFM_EFM_FRANDS_FRANDS3 (*((volatile unsigned int*)(0x4220C090UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS4 (*((volatile unsigned int*)(0x4220C094UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS5 (*((volatile unsigned int*)(0x4220C098UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS6 (*((volatile unsigned int*)(0x4220C09CUL))) +#define bM4_EFM_EFM_FRANDS_FRANDS7 (*((volatile unsigned int*)(0x4220C0A0UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS8 (*((volatile unsigned int*)(0x4220C0A4UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS9 (*((volatile unsigned int*)(0x4220C0A8UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS10 (*((volatile unsigned int*)(0x4220C0ACUL))) +#define bM4_EFM_EFM_FRANDS_FRANDS11 (*((volatile unsigned int*)(0x4220C0B0UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS12 (*((volatile unsigned int*)(0x4220C0B4UL))) +#define bM4_EFM_EFM_FRANDS_FRANDS13 (*((volatile unsigned int*)(0x4220C0B8UL))) +#define bM4_EFM_EFM_FRANDS_FRANDFG (*((volatile unsigned int*)(0x4220C0C0UL))) +#define bM4_EMB1_CTL_PORTINEN (*((volatile unsigned int*)(0x422F8000UL))) +#define bM4_EMB1_CTL_CMPEN0 (*((volatile unsigned int*)(0x422F8004UL))) +#define bM4_EMB1_CTL_CMPEN1 (*((volatile unsigned int*)(0x422F8008UL))) +#define bM4_EMB1_CTL_CMPEN2 (*((volatile unsigned int*)(0x422F800CUL))) +#define bM4_EMB1_CTL_OSCSTPEN (*((volatile unsigned int*)(0x422F8014UL))) +#define bM4_EMB1_CTL_PWMSEN0 (*((volatile unsigned int*)(0x422F8018UL))) +#define bM4_EMB1_CTL_PWMSEN1 (*((volatile unsigned int*)(0x422F801CUL))) +#define bM4_EMB1_CTL_PWMSEN2 (*((volatile unsigned int*)(0x422F8020UL))) +#define bM4_EMB1_CTL_NFSEL0 (*((volatile unsigned int*)(0x422F8070UL))) +#define bM4_EMB1_CTL_NFSEL1 (*((volatile unsigned int*)(0x422F8074UL))) +#define bM4_EMB1_CTL_NFEN (*((volatile unsigned int*)(0x422F8078UL))) +#define bM4_EMB1_CTL_INVSEL (*((volatile unsigned int*)(0x422F807CUL))) +#define bM4_EMB1_PWMLV_PWMLV0 (*((volatile unsigned int*)(0x422F8080UL))) +#define bM4_EMB1_PWMLV_PWMLV1 (*((volatile unsigned int*)(0x422F8084UL))) +#define bM4_EMB1_PWMLV_PWMLV2 (*((volatile unsigned int*)(0x422F8088UL))) +#define bM4_EMB1_SOE_SOE (*((volatile unsigned int*)(0x422F8100UL))) +#define bM4_EMB1_STAT_PORTINF (*((volatile unsigned int*)(0x422F8180UL))) +#define bM4_EMB1_STAT_PWMSF (*((volatile unsigned int*)(0x422F8184UL))) +#define bM4_EMB1_STAT_CMPF (*((volatile unsigned int*)(0x422F8188UL))) +#define bM4_EMB1_STAT_OSF (*((volatile unsigned int*)(0x422F818CUL))) +#define bM4_EMB1_STAT_PORTINST (*((volatile unsigned int*)(0x422F8190UL))) +#define bM4_EMB1_STAT_PWMST (*((volatile unsigned int*)(0x422F8194UL))) +#define bM4_EMB1_STATCLR_PORTINFCLR (*((volatile unsigned int*)(0x422F8200UL))) +#define bM4_EMB1_STATCLR_PWMSFCLR (*((volatile unsigned int*)(0x422F8204UL))) +#define bM4_EMB1_STATCLR_CMPFCLR (*((volatile unsigned int*)(0x422F8208UL))) +#define bM4_EMB1_STATCLR_OSFCLR (*((volatile unsigned int*)(0x422F820CUL))) +#define bM4_EMB1_INTEN_PORTINTEN (*((volatile unsigned int*)(0x422F8280UL))) +#define bM4_EMB1_INTEN_PWMINTEN (*((volatile unsigned int*)(0x422F8284UL))) +#define bM4_EMB1_INTEN_CMPINTEN (*((volatile unsigned int*)(0x422F8288UL))) +#define bM4_EMB1_INTEN_OSINTEN (*((volatile unsigned int*)(0x422F828CUL))) +#define bM4_EMB2_CTL_PORTINEN (*((volatile unsigned int*)(0x422F8400UL))) +#define bM4_EMB2_CTL_CMPEN0 (*((volatile unsigned int*)(0x422F8404UL))) +#define bM4_EMB2_CTL_CMPEN1 (*((volatile unsigned int*)(0x422F8408UL))) +#define bM4_EMB2_CTL_CMPEN2 (*((volatile unsigned int*)(0x422F840CUL))) +#define bM4_EMB2_CTL_OSCSTPEN (*((volatile unsigned int*)(0x422F8414UL))) +#define bM4_EMB2_CTL_PWMSEN0 (*((volatile unsigned int*)(0x422F8418UL))) +#define bM4_EMB2_CTL_PWMSEN1 (*((volatile unsigned int*)(0x422F841CUL))) +#define bM4_EMB2_CTL_PWMSEN2 (*((volatile unsigned int*)(0x422F8420UL))) +#define bM4_EMB2_CTL_NFSEL0 (*((volatile unsigned int*)(0x422F8470UL))) +#define bM4_EMB2_CTL_NFSEL1 (*((volatile unsigned int*)(0x422F8474UL))) +#define bM4_EMB2_CTL_NFEN (*((volatile unsigned int*)(0x422F8478UL))) +#define bM4_EMB2_CTL_INVSEL (*((volatile unsigned int*)(0x422F847CUL))) +#define bM4_EMB2_PWMLV_PWMLV0 (*((volatile unsigned int*)(0x422F8480UL))) +#define bM4_EMB2_PWMLV_PWMLV1 (*((volatile unsigned int*)(0x422F8484UL))) +#define bM4_EMB2_PWMLV_PWMLV2 (*((volatile unsigned int*)(0x422F8488UL))) +#define bM4_EMB2_SOE_SOE (*((volatile unsigned int*)(0x422F8500UL))) +#define bM4_EMB2_STAT_PORTINF (*((volatile unsigned int*)(0x422F8580UL))) +#define bM4_EMB2_STAT_PWMSF (*((volatile unsigned int*)(0x422F8584UL))) +#define bM4_EMB2_STAT_CMPF (*((volatile unsigned int*)(0x422F8588UL))) +#define bM4_EMB2_STAT_OSF (*((volatile unsigned int*)(0x422F858CUL))) +#define bM4_EMB2_STAT_PORTINST (*((volatile unsigned int*)(0x422F8590UL))) +#define bM4_EMB2_STAT_PWMST (*((volatile unsigned int*)(0x422F8594UL))) +#define bM4_EMB2_STATCLR_PORTINFCLR (*((volatile unsigned int*)(0x422F8600UL))) +#define bM4_EMB2_STATCLR_PWMSFCLR (*((volatile unsigned int*)(0x422F8604UL))) +#define bM4_EMB2_STATCLR_CMPFCLR (*((volatile unsigned int*)(0x422F8608UL))) +#define bM4_EMB2_STATCLR_OSFCLR (*((volatile unsigned int*)(0x422F860CUL))) +#define bM4_EMB2_INTEN_PORTINTEN (*((volatile unsigned int*)(0x422F8680UL))) +#define bM4_EMB2_INTEN_PWMINTEN (*((volatile unsigned int*)(0x422F8684UL))) +#define bM4_EMB2_INTEN_CMPINTEN (*((volatile unsigned int*)(0x422F8688UL))) +#define bM4_EMB2_INTEN_OSINTEN (*((volatile unsigned int*)(0x422F868CUL))) +#define bM4_EMB3_CTL_PORTINEN (*((volatile unsigned int*)(0x422F8800UL))) +#define bM4_EMB3_CTL_CMPEN0 (*((volatile unsigned int*)(0x422F8804UL))) +#define bM4_EMB3_CTL_CMPEN1 (*((volatile unsigned int*)(0x422F8808UL))) +#define bM4_EMB3_CTL_CMPEN2 (*((volatile unsigned int*)(0x422F880CUL))) +#define bM4_EMB3_CTL_OSCSTPEN (*((volatile unsigned int*)(0x422F8814UL))) +#define bM4_EMB3_CTL_PWMSEN0 (*((volatile unsigned int*)(0x422F8818UL))) +#define bM4_EMB3_CTL_PWMSEN1 (*((volatile unsigned int*)(0x422F881CUL))) +#define bM4_EMB3_CTL_PWMSEN2 (*((volatile unsigned int*)(0x422F8820UL))) +#define bM4_EMB3_CTL_NFSEL0 (*((volatile unsigned int*)(0x422F8870UL))) +#define bM4_EMB3_CTL_NFSEL1 (*((volatile unsigned int*)(0x422F8874UL))) +#define bM4_EMB3_CTL_NFEN (*((volatile unsigned int*)(0x422F8878UL))) +#define bM4_EMB3_CTL_INVSEL (*((volatile unsigned int*)(0x422F887CUL))) +#define bM4_EMB3_PWMLV_PWMLV0 (*((volatile unsigned int*)(0x422F8880UL))) +#define bM4_EMB3_PWMLV_PWMLV1 (*((volatile unsigned int*)(0x422F8884UL))) +#define bM4_EMB3_PWMLV_PWMLV2 (*((volatile unsigned int*)(0x422F8888UL))) +#define bM4_EMB3_SOE_SOE (*((volatile unsigned int*)(0x422F8900UL))) +#define bM4_EMB3_STAT_PORTINF (*((volatile unsigned int*)(0x422F8980UL))) +#define bM4_EMB3_STAT_PWMSF (*((volatile unsigned int*)(0x422F8984UL))) +#define bM4_EMB3_STAT_CMPF (*((volatile unsigned int*)(0x422F8988UL))) +#define bM4_EMB3_STAT_OSF (*((volatile unsigned int*)(0x422F898CUL))) +#define bM4_EMB3_STAT_PORTINST (*((volatile unsigned int*)(0x422F8990UL))) +#define bM4_EMB3_STAT_PWMST (*((volatile unsigned int*)(0x422F8994UL))) +#define bM4_EMB3_STATCLR_PORTINFCLR (*((volatile unsigned int*)(0x422F8A00UL))) +#define bM4_EMB3_STATCLR_PWMSFCLR (*((volatile unsigned int*)(0x422F8A04UL))) +#define bM4_EMB3_STATCLR_CMPFCLR (*((volatile unsigned int*)(0x422F8A08UL))) +#define bM4_EMB3_STATCLR_OSFCLR (*((volatile unsigned int*)(0x422F8A0CUL))) +#define bM4_EMB3_INTEN_PORTINTEN (*((volatile unsigned int*)(0x422F8A80UL))) +#define bM4_EMB3_INTEN_PWMINTEN (*((volatile unsigned int*)(0x422F8A84UL))) +#define bM4_EMB3_INTEN_CMPINTEN (*((volatile unsigned int*)(0x422F8A88UL))) +#define bM4_EMB3_INTEN_OSINTEN (*((volatile unsigned int*)(0x422F8A8CUL))) +#define bM4_EMB4_CTL_PORTINEN (*((volatile unsigned int*)(0x422F8C00UL))) +#define bM4_EMB4_CTL_CMPEN0 (*((volatile unsigned int*)(0x422F8C04UL))) +#define bM4_EMB4_CTL_CMPEN1 (*((volatile unsigned int*)(0x422F8C08UL))) +#define bM4_EMB4_CTL_CMPEN2 (*((volatile unsigned int*)(0x422F8C0CUL))) +#define bM4_EMB4_CTL_OSCSTPEN (*((volatile unsigned int*)(0x422F8C14UL))) +#define bM4_EMB4_CTL_PWMSEN0 (*((volatile unsigned int*)(0x422F8C18UL))) +#define bM4_EMB4_CTL_PWMSEN1 (*((volatile unsigned int*)(0x422F8C1CUL))) +#define bM4_EMB4_CTL_PWMSEN2 (*((volatile unsigned int*)(0x422F8C20UL))) +#define bM4_EMB4_CTL_NFSEL0 (*((volatile unsigned int*)(0x422F8C70UL))) +#define bM4_EMB4_CTL_NFSEL1 (*((volatile unsigned int*)(0x422F8C74UL))) +#define bM4_EMB4_CTL_NFEN (*((volatile unsigned int*)(0x422F8C78UL))) +#define bM4_EMB4_CTL_INVSEL (*((volatile unsigned int*)(0x422F8C7CUL))) +#define bM4_EMB4_PWMLV_PWMLV0 (*((volatile unsigned int*)(0x422F8C80UL))) +#define bM4_EMB4_PWMLV_PWMLV1 (*((volatile unsigned int*)(0x422F8C84UL))) +#define bM4_EMB4_PWMLV_PWMLV2 (*((volatile unsigned int*)(0x422F8C88UL))) +#define bM4_EMB4_SOE_SOE (*((volatile unsigned int*)(0x422F8D00UL))) +#define bM4_EMB4_STAT_PORTINF (*((volatile unsigned int*)(0x422F8D80UL))) +#define bM4_EMB4_STAT_PWMSF (*((volatile unsigned int*)(0x422F8D84UL))) +#define bM4_EMB4_STAT_CMPF (*((volatile unsigned int*)(0x422F8D88UL))) +#define bM4_EMB4_STAT_OSF (*((volatile unsigned int*)(0x422F8D8CUL))) +#define bM4_EMB4_STAT_PORTINST (*((volatile unsigned int*)(0x422F8D90UL))) +#define bM4_EMB4_STAT_PWMST (*((volatile unsigned int*)(0x422F8D94UL))) +#define bM4_EMB4_STATCLR_PORTINFCLR (*((volatile unsigned int*)(0x422F8E00UL))) +#define bM4_EMB4_STATCLR_PWMSFCLR (*((volatile unsigned int*)(0x422F8E04UL))) +#define bM4_EMB4_STATCLR_CMPFCLR (*((volatile unsigned int*)(0x422F8E08UL))) +#define bM4_EMB4_STATCLR_OSFCLR (*((volatile unsigned int*)(0x422F8E0CUL))) +#define bM4_EMB4_INTEN_PORTINTEN (*((volatile unsigned int*)(0x422F8E80UL))) +#define bM4_EMB4_INTEN_PWMINTEN (*((volatile unsigned int*)(0x422F8E84UL))) +#define bM4_EMB4_INTEN_CMPINTEN (*((volatile unsigned int*)(0x422F8E88UL))) +#define bM4_EMB4_INTEN_OSINTEN (*((volatile unsigned int*)(0x422F8E8CUL))) +#define bM4_FCM_LVR_LVR0 (*((volatile unsigned int*)(0x42908000UL))) +#define bM4_FCM_LVR_LVR1 (*((volatile unsigned int*)(0x42908004UL))) +#define bM4_FCM_LVR_LVR2 (*((volatile unsigned int*)(0x42908008UL))) +#define bM4_FCM_LVR_LVR3 (*((volatile unsigned int*)(0x4290800CUL))) +#define bM4_FCM_LVR_LVR4 (*((volatile unsigned int*)(0x42908010UL))) +#define bM4_FCM_LVR_LVR5 (*((volatile unsigned int*)(0x42908014UL))) +#define bM4_FCM_LVR_LVR6 (*((volatile unsigned int*)(0x42908018UL))) +#define bM4_FCM_LVR_LVR7 (*((volatile unsigned int*)(0x4290801CUL))) +#define bM4_FCM_LVR_LVR8 (*((volatile unsigned int*)(0x42908020UL))) +#define bM4_FCM_LVR_LVR9 (*((volatile unsigned int*)(0x42908024UL))) +#define bM4_FCM_LVR_LVR10 (*((volatile unsigned int*)(0x42908028UL))) +#define bM4_FCM_LVR_LVR11 (*((volatile unsigned int*)(0x4290802CUL))) +#define bM4_FCM_LVR_LVR12 (*((volatile unsigned int*)(0x42908030UL))) +#define bM4_FCM_LVR_LVR13 (*((volatile unsigned int*)(0x42908034UL))) +#define bM4_FCM_LVR_LVR14 (*((volatile unsigned int*)(0x42908038UL))) +#define bM4_FCM_LVR_LVR15 (*((volatile unsigned int*)(0x4290803CUL))) +#define bM4_FCM_UVR_UVR0 (*((volatile unsigned int*)(0x42908080UL))) +#define bM4_FCM_UVR_UVR1 (*((volatile unsigned int*)(0x42908084UL))) +#define bM4_FCM_UVR_UVR2 (*((volatile unsigned int*)(0x42908088UL))) +#define bM4_FCM_UVR_UVR3 (*((volatile unsigned int*)(0x4290808CUL))) +#define bM4_FCM_UVR_UVR4 (*((volatile unsigned int*)(0x42908090UL))) +#define bM4_FCM_UVR_UVR5 (*((volatile unsigned int*)(0x42908094UL))) +#define bM4_FCM_UVR_UVR6 (*((volatile unsigned int*)(0x42908098UL))) +#define bM4_FCM_UVR_UVR7 (*((volatile unsigned int*)(0x4290809CUL))) +#define bM4_FCM_UVR_UVR8 (*((volatile unsigned int*)(0x429080A0UL))) +#define bM4_FCM_UVR_UVR9 (*((volatile unsigned int*)(0x429080A4UL))) +#define bM4_FCM_UVR_UVR10 (*((volatile unsigned int*)(0x429080A8UL))) +#define bM4_FCM_UVR_UVR11 (*((volatile unsigned int*)(0x429080ACUL))) +#define bM4_FCM_UVR_UVR12 (*((volatile unsigned int*)(0x429080B0UL))) +#define bM4_FCM_UVR_UVR13 (*((volatile unsigned int*)(0x429080B4UL))) +#define bM4_FCM_UVR_UVR14 (*((volatile unsigned int*)(0x429080B8UL))) +#define bM4_FCM_UVR_UVR15 (*((volatile unsigned int*)(0x429080BCUL))) +#define bM4_FCM_CNTR_CNTR0 (*((volatile unsigned int*)(0x42908100UL))) +#define bM4_FCM_CNTR_CNTR1 (*((volatile unsigned int*)(0x42908104UL))) +#define bM4_FCM_CNTR_CNTR2 (*((volatile unsigned int*)(0x42908108UL))) +#define bM4_FCM_CNTR_CNTR3 (*((volatile unsigned int*)(0x4290810CUL))) +#define bM4_FCM_CNTR_CNTR4 (*((volatile unsigned int*)(0x42908110UL))) +#define bM4_FCM_CNTR_CNTR5 (*((volatile unsigned int*)(0x42908114UL))) +#define bM4_FCM_CNTR_CNTR6 (*((volatile unsigned int*)(0x42908118UL))) +#define bM4_FCM_CNTR_CNTR7 (*((volatile unsigned int*)(0x4290811CUL))) +#define bM4_FCM_CNTR_CNTR8 (*((volatile unsigned int*)(0x42908120UL))) +#define bM4_FCM_CNTR_CNTR9 (*((volatile unsigned int*)(0x42908124UL))) +#define bM4_FCM_CNTR_CNTR10 (*((volatile unsigned int*)(0x42908128UL))) +#define bM4_FCM_CNTR_CNTR11 (*((volatile unsigned int*)(0x4290812CUL))) +#define bM4_FCM_CNTR_CNTR12 (*((volatile unsigned int*)(0x42908130UL))) +#define bM4_FCM_CNTR_CNTR13 (*((volatile unsigned int*)(0x42908134UL))) +#define bM4_FCM_CNTR_CNTR14 (*((volatile unsigned int*)(0x42908138UL))) +#define bM4_FCM_CNTR_CNTR15 (*((volatile unsigned int*)(0x4290813CUL))) +#define bM4_FCM_STR_START (*((volatile unsigned int*)(0x42908180UL))) +#define bM4_FCM_MCCR_MDIVS0 (*((volatile unsigned int*)(0x42908200UL))) +#define bM4_FCM_MCCR_MDIVS1 (*((volatile unsigned int*)(0x42908204UL))) +#define bM4_FCM_MCCR_MCKS0 (*((volatile unsigned int*)(0x42908210UL))) +#define bM4_FCM_MCCR_MCKS1 (*((volatile unsigned int*)(0x42908214UL))) +#define bM4_FCM_MCCR_MCKS2 (*((volatile unsigned int*)(0x42908218UL))) +#define bM4_FCM_MCCR_MCKS3 (*((volatile unsigned int*)(0x4290821CUL))) +#define bM4_FCM_RCCR_RDIVS0 (*((volatile unsigned int*)(0x42908280UL))) +#define bM4_FCM_RCCR_RDIVS1 (*((volatile unsigned int*)(0x42908284UL))) +#define bM4_FCM_RCCR_RCKS0 (*((volatile unsigned int*)(0x4290828CUL))) +#define bM4_FCM_RCCR_RCKS1 (*((volatile unsigned int*)(0x42908290UL))) +#define bM4_FCM_RCCR_RCKS2 (*((volatile unsigned int*)(0x42908294UL))) +#define bM4_FCM_RCCR_RCKS3 (*((volatile unsigned int*)(0x42908298UL))) +#define bM4_FCM_RCCR_INEXS (*((volatile unsigned int*)(0x4290829CUL))) +#define bM4_FCM_RCCR_DNFS0 (*((volatile unsigned int*)(0x429082A0UL))) +#define bM4_FCM_RCCR_DNFS1 (*((volatile unsigned int*)(0x429082A4UL))) +#define bM4_FCM_RCCR_EDGES0 (*((volatile unsigned int*)(0x429082B0UL))) +#define bM4_FCM_RCCR_EDGES1 (*((volatile unsigned int*)(0x429082B4UL))) +#define bM4_FCM_RCCR_EXREFE (*((volatile unsigned int*)(0x429082BCUL))) +#define bM4_FCM_RIER_ERRIE (*((volatile unsigned int*)(0x42908300UL))) +#define bM4_FCM_RIER_MENDIE (*((volatile unsigned int*)(0x42908304UL))) +#define bM4_FCM_RIER_OVFIE (*((volatile unsigned int*)(0x42908308UL))) +#define bM4_FCM_RIER_ERRINTRS (*((volatile unsigned int*)(0x42908310UL))) +#define bM4_FCM_RIER_ERRE (*((volatile unsigned int*)(0x4290831CUL))) +#define bM4_FCM_SR_ERRF (*((volatile unsigned int*)(0x42908380UL))) +#define bM4_FCM_SR_MENDF (*((volatile unsigned int*)(0x42908384UL))) +#define bM4_FCM_SR_OVF (*((volatile unsigned int*)(0x42908388UL))) +#define bM4_FCM_CLR_ERRFCLR (*((volatile unsigned int*)(0x42908400UL))) +#define bM4_FCM_CLR_MENDFCLR (*((volatile unsigned int*)(0x42908404UL))) +#define bM4_FCM_CLR_OVFCLR (*((volatile unsigned int*)(0x42908408UL))) +#define bM4_HASH_CR_START (*((volatile unsigned int*)(0x42108000UL))) +#define bM4_HASH_CR_FST_GRP (*((volatile unsigned int*)(0x42108004UL))) +#define bM4_I2C1_CR1_PE (*((volatile unsigned int*)(0x429C0000UL))) +#define bM4_I2C1_CR1_SMBUS (*((volatile unsigned int*)(0x429C0004UL))) +#define bM4_I2C1_CR1_SMBALRTEN (*((volatile unsigned int*)(0x429C0008UL))) +#define bM4_I2C1_CR1_SMBDEFAULTEN (*((volatile unsigned int*)(0x429C000CUL))) +#define bM4_I2C1_CR1_SMBHOSTEN (*((volatile unsigned int*)(0x429C0010UL))) +#define bM4_I2C1_CR1_ENGC (*((volatile unsigned int*)(0x429C0018UL))) +#define bM4_I2C1_CR1_RESTART (*((volatile unsigned int*)(0x429C001CUL))) +#define bM4_I2C1_CR1_START (*((volatile unsigned int*)(0x429C0020UL))) +#define bM4_I2C1_CR1_STOP (*((volatile unsigned int*)(0x429C0024UL))) +#define bM4_I2C1_CR1_ACK (*((volatile unsigned int*)(0x429C0028UL))) +#define bM4_I2C1_CR1_SWRST (*((volatile unsigned int*)(0x429C003CUL))) +#define bM4_I2C1_CR2_STARTIE (*((volatile unsigned int*)(0x429C0080UL))) +#define bM4_I2C1_CR2_SLADDR0IE (*((volatile unsigned int*)(0x429C0084UL))) +#define bM4_I2C1_CR2_SLADDR1IE (*((volatile unsigned int*)(0x429C0088UL))) +#define bM4_I2C1_CR2_TENDIE (*((volatile unsigned int*)(0x429C008CUL))) +#define bM4_I2C1_CR2_STOPIE (*((volatile unsigned int*)(0x429C0090UL))) +#define bM4_I2C1_CR2_RFULLIE (*((volatile unsigned int*)(0x429C0098UL))) +#define bM4_I2C1_CR2_TEMPTYIE (*((volatile unsigned int*)(0x429C009CUL))) +#define bM4_I2C1_CR2_ARLOIE (*((volatile unsigned int*)(0x429C00A4UL))) +#define bM4_I2C1_CR2_NACKIE (*((volatile unsigned int*)(0x429C00B0UL))) +#define bM4_I2C1_CR2_TMOUTIE (*((volatile unsigned int*)(0x429C00B8UL))) +#define bM4_I2C1_CR2_GENCALLIE (*((volatile unsigned int*)(0x429C00D0UL))) +#define bM4_I2C1_CR2_SMBDEFAULTIE (*((volatile unsigned int*)(0x429C00D4UL))) +#define bM4_I2C1_CR2_SMBHOSTIE (*((volatile unsigned int*)(0x429C00D8UL))) +#define bM4_I2C1_CR2_SMBALRTIE (*((volatile unsigned int*)(0x429C00DCUL))) +#define bM4_I2C1_CR3_TMOUTEN (*((volatile unsigned int*)(0x429C0100UL))) +#define bM4_I2C1_CR3_LTMOUT (*((volatile unsigned int*)(0x429C0104UL))) +#define bM4_I2C1_CR3_HTMOUT (*((volatile unsigned int*)(0x429C0108UL))) +#define bM4_I2C1_CR3_FACKEN (*((volatile unsigned int*)(0x429C011CUL))) +#define bM4_I2C1_SLR0_SLADDR00 (*((volatile unsigned int*)(0x429C0200UL))) +#define bM4_I2C1_SLR0_SLADDR01 (*((volatile unsigned int*)(0x429C0204UL))) +#define bM4_I2C1_SLR0_SLADDR02 (*((volatile unsigned int*)(0x429C0208UL))) +#define bM4_I2C1_SLR0_SLADDR03 (*((volatile unsigned int*)(0x429C020CUL))) +#define bM4_I2C1_SLR0_SLADDR04 (*((volatile unsigned int*)(0x429C0210UL))) +#define bM4_I2C1_SLR0_SLADDR05 (*((volatile unsigned int*)(0x429C0214UL))) +#define bM4_I2C1_SLR0_SLADDR06 (*((volatile unsigned int*)(0x429C0218UL))) +#define bM4_I2C1_SLR0_SLADDR07 (*((volatile unsigned int*)(0x429C021CUL))) +#define bM4_I2C1_SLR0_SLADDR08 (*((volatile unsigned int*)(0x429C0220UL))) +#define bM4_I2C1_SLR0_SLADDR09 (*((volatile unsigned int*)(0x429C0224UL))) +#define bM4_I2C1_SLR0_SLADDR0EN (*((volatile unsigned int*)(0x429C0230UL))) +#define bM4_I2C1_SLR0_ADDRMOD0 (*((volatile unsigned int*)(0x429C023CUL))) +#define bM4_I2C1_SLR1_SLADDR10 (*((volatile unsigned int*)(0x429C0280UL))) +#define bM4_I2C1_SLR1_SLADDR11 (*((volatile unsigned int*)(0x429C0284UL))) +#define bM4_I2C1_SLR1_SLADDR12 (*((volatile unsigned int*)(0x429C0288UL))) +#define bM4_I2C1_SLR1_SLADDR13 (*((volatile unsigned int*)(0x429C028CUL))) +#define bM4_I2C1_SLR1_SLADDR14 (*((volatile unsigned int*)(0x429C0290UL))) +#define bM4_I2C1_SLR1_SLADDR15 (*((volatile unsigned int*)(0x429C0294UL))) +#define bM4_I2C1_SLR1_SLADDR16 (*((volatile unsigned int*)(0x429C0298UL))) +#define bM4_I2C1_SLR1_SLADDR17 (*((volatile unsigned int*)(0x429C029CUL))) +#define bM4_I2C1_SLR1_SLADDR18 (*((volatile unsigned int*)(0x429C02A0UL))) +#define bM4_I2C1_SLR1_SLADDR19 (*((volatile unsigned int*)(0x429C02A4UL))) +#define bM4_I2C1_SLR1_SLADDR1EN (*((volatile unsigned int*)(0x429C02B0UL))) +#define bM4_I2C1_SLR1_ADDRMOD1 (*((volatile unsigned int*)(0x429C02BCUL))) +#define bM4_I2C1_SLTR_TOUTLOW0 (*((volatile unsigned int*)(0x429C0300UL))) +#define bM4_I2C1_SLTR_TOUTLOW1 (*((volatile unsigned int*)(0x429C0304UL))) +#define bM4_I2C1_SLTR_TOUTLOW2 (*((volatile unsigned int*)(0x429C0308UL))) +#define bM4_I2C1_SLTR_TOUTLOW3 (*((volatile unsigned int*)(0x429C030CUL))) +#define bM4_I2C1_SLTR_TOUTLOW4 (*((volatile unsigned int*)(0x429C0310UL))) +#define bM4_I2C1_SLTR_TOUTLOW5 (*((volatile unsigned int*)(0x429C0314UL))) +#define bM4_I2C1_SLTR_TOUTLOW6 (*((volatile unsigned int*)(0x429C0318UL))) +#define bM4_I2C1_SLTR_TOUTLOW7 (*((volatile unsigned int*)(0x429C031CUL))) +#define bM4_I2C1_SLTR_TOUTLOW8 (*((volatile unsigned int*)(0x429C0320UL))) +#define bM4_I2C1_SLTR_TOUTLOW9 (*((volatile unsigned int*)(0x429C0324UL))) +#define bM4_I2C1_SLTR_TOUTLOW10 (*((volatile unsigned int*)(0x429C0328UL))) +#define bM4_I2C1_SLTR_TOUTLOW11 (*((volatile unsigned int*)(0x429C032CUL))) +#define bM4_I2C1_SLTR_TOUTLOW12 (*((volatile unsigned int*)(0x429C0330UL))) +#define bM4_I2C1_SLTR_TOUTLOW13 (*((volatile unsigned int*)(0x429C0334UL))) +#define bM4_I2C1_SLTR_TOUTLOW14 (*((volatile unsigned int*)(0x429C0338UL))) +#define bM4_I2C1_SLTR_TOUTLOW15 (*((volatile unsigned int*)(0x429C033CUL))) +#define bM4_I2C1_SLTR_TOUTHIGH0 (*((volatile unsigned int*)(0x429C0340UL))) +#define bM4_I2C1_SLTR_TOUTHIGH1 (*((volatile unsigned int*)(0x429C0344UL))) +#define bM4_I2C1_SLTR_TOUTHIGH2 (*((volatile unsigned int*)(0x429C0348UL))) +#define bM4_I2C1_SLTR_TOUTHIGH3 (*((volatile unsigned int*)(0x429C034CUL))) +#define bM4_I2C1_SLTR_TOUTHIGH4 (*((volatile unsigned int*)(0x429C0350UL))) +#define bM4_I2C1_SLTR_TOUTHIGH5 (*((volatile unsigned int*)(0x429C0354UL))) +#define bM4_I2C1_SLTR_TOUTHIGH6 (*((volatile unsigned int*)(0x429C0358UL))) +#define bM4_I2C1_SLTR_TOUTHIGH7 (*((volatile unsigned int*)(0x429C035CUL))) +#define bM4_I2C1_SLTR_TOUTHIGH8 (*((volatile unsigned int*)(0x429C0360UL))) +#define bM4_I2C1_SLTR_TOUTHIGH9 (*((volatile unsigned int*)(0x429C0364UL))) +#define bM4_I2C1_SLTR_TOUTHIGH10 (*((volatile unsigned int*)(0x429C0368UL))) +#define bM4_I2C1_SLTR_TOUTHIGH11 (*((volatile unsigned int*)(0x429C036CUL))) +#define bM4_I2C1_SLTR_TOUTHIGH12 (*((volatile unsigned int*)(0x429C0370UL))) +#define bM4_I2C1_SLTR_TOUTHIGH13 (*((volatile unsigned int*)(0x429C0374UL))) +#define bM4_I2C1_SLTR_TOUTHIGH14 (*((volatile unsigned int*)(0x429C0378UL))) +#define bM4_I2C1_SLTR_TOUTHIGH15 (*((volatile unsigned int*)(0x429C037CUL))) +#define bM4_I2C1_SR_STARTF (*((volatile unsigned int*)(0x429C0380UL))) +#define bM4_I2C1_SR_SLADDR0F (*((volatile unsigned int*)(0x429C0384UL))) +#define bM4_I2C1_SR_SLADDR1F (*((volatile unsigned int*)(0x429C0388UL))) +#define bM4_I2C1_SR_TENDF (*((volatile unsigned int*)(0x429C038CUL))) +#define bM4_I2C1_SR_STOPF (*((volatile unsigned int*)(0x429C0390UL))) +#define bM4_I2C1_SR_RFULLF (*((volatile unsigned int*)(0x429C0398UL))) +#define bM4_I2C1_SR_TEMPTYF (*((volatile unsigned int*)(0x429C039CUL))) +#define bM4_I2C1_SR_ARLOF (*((volatile unsigned int*)(0x429C03A4UL))) +#define bM4_I2C1_SR_ACKRF (*((volatile unsigned int*)(0x429C03A8UL))) +#define bM4_I2C1_SR_NACKF (*((volatile unsigned int*)(0x429C03B0UL))) +#define bM4_I2C1_SR_TMOUTF (*((volatile unsigned int*)(0x429C03B8UL))) +#define bM4_I2C1_SR_MSL (*((volatile unsigned int*)(0x429C03C0UL))) +#define bM4_I2C1_SR_BUSY (*((volatile unsigned int*)(0x429C03C4UL))) +#define bM4_I2C1_SR_TRA (*((volatile unsigned int*)(0x429C03C8UL))) +#define bM4_I2C1_SR_GENCALLF (*((volatile unsigned int*)(0x429C03D0UL))) +#define bM4_I2C1_SR_SMBDEFAULTF (*((volatile unsigned int*)(0x429C03D4UL))) +#define bM4_I2C1_SR_SMBHOSTF (*((volatile unsigned int*)(0x429C03D8UL))) +#define bM4_I2C1_SR_SMBALRTF (*((volatile unsigned int*)(0x429C03DCUL))) +#define bM4_I2C1_CLR_STARTFCLR (*((volatile unsigned int*)(0x429C0400UL))) +#define bM4_I2C1_CLR_SLADDR0FCLR (*((volatile unsigned int*)(0x429C0404UL))) +#define bM4_I2C1_CLR_SLADDR1FCLR (*((volatile unsigned int*)(0x429C0408UL))) +#define bM4_I2C1_CLR_TENDFCLR (*((volatile unsigned int*)(0x429C040CUL))) +#define bM4_I2C1_CLR_STOPFCLR (*((volatile unsigned int*)(0x429C0410UL))) +#define bM4_I2C1_CLR_RFULLFCLR (*((volatile unsigned int*)(0x429C0418UL))) +#define bM4_I2C1_CLR_TEMPTYFCLR (*((volatile unsigned int*)(0x429C041CUL))) +#define bM4_I2C1_CLR_ARLOFCLR (*((volatile unsigned int*)(0x429C0424UL))) +#define bM4_I2C1_CLR_NACKFCLR (*((volatile unsigned int*)(0x429C0430UL))) +#define bM4_I2C1_CLR_TMOUTFCLR (*((volatile unsigned int*)(0x429C0438UL))) +#define bM4_I2C1_CLR_GENCALLFCLR (*((volatile unsigned int*)(0x429C0450UL))) +#define bM4_I2C1_CLR_SMBDEFAULTFCLR (*((volatile unsigned int*)(0x429C0454UL))) +#define bM4_I2C1_CLR_SMBHOSTFCLR (*((volatile unsigned int*)(0x429C0458UL))) +#define bM4_I2C1_CLR_SMBALRTFCLR (*((volatile unsigned int*)(0x429C045CUL))) +#define bM4_I2C1_DTR_DT0 (*((volatile unsigned int*)(0x429C0480UL))) +#define bM4_I2C1_DTR_DT1 (*((volatile unsigned int*)(0x429C0484UL))) +#define bM4_I2C1_DTR_DT2 (*((volatile unsigned int*)(0x429C0488UL))) +#define bM4_I2C1_DTR_DT3 (*((volatile unsigned int*)(0x429C048CUL))) +#define bM4_I2C1_DTR_DT4 (*((volatile unsigned int*)(0x429C0490UL))) +#define bM4_I2C1_DTR_DT5 (*((volatile unsigned int*)(0x429C0494UL))) +#define bM4_I2C1_DTR_DT6 (*((volatile unsigned int*)(0x429C0498UL))) +#define bM4_I2C1_DTR_DT7 (*((volatile unsigned int*)(0x429C049CUL))) +#define bM4_I2C1_DRR_DR0 (*((volatile unsigned int*)(0x429C0500UL))) +#define bM4_I2C1_DRR_DR1 (*((volatile unsigned int*)(0x429C0504UL))) +#define bM4_I2C1_DRR_DR2 (*((volatile unsigned int*)(0x429C0508UL))) +#define bM4_I2C1_DRR_DR3 (*((volatile unsigned int*)(0x429C050CUL))) +#define bM4_I2C1_DRR_DR4 (*((volatile unsigned int*)(0x429C0510UL))) +#define bM4_I2C1_DRR_DR5 (*((volatile unsigned int*)(0x429C0514UL))) +#define bM4_I2C1_DRR_DR6 (*((volatile unsigned int*)(0x429C0518UL))) +#define bM4_I2C1_DRR_DR7 (*((volatile unsigned int*)(0x429C051CUL))) +#define bM4_I2C1_CCR_SLOWW0 (*((volatile unsigned int*)(0x429C0580UL))) +#define bM4_I2C1_CCR_SLOWW1 (*((volatile unsigned int*)(0x429C0584UL))) +#define bM4_I2C1_CCR_SLOWW2 (*((volatile unsigned int*)(0x429C0588UL))) +#define bM4_I2C1_CCR_SLOWW3 (*((volatile unsigned int*)(0x429C058CUL))) +#define bM4_I2C1_CCR_SLOWW4 (*((volatile unsigned int*)(0x429C0590UL))) +#define bM4_I2C1_CCR_SHIGHW0 (*((volatile unsigned int*)(0x429C05A0UL))) +#define bM4_I2C1_CCR_SHIGHW1 (*((volatile unsigned int*)(0x429C05A4UL))) +#define bM4_I2C1_CCR_SHIGHW2 (*((volatile unsigned int*)(0x429C05A8UL))) +#define bM4_I2C1_CCR_SHIGHW3 (*((volatile unsigned int*)(0x429C05ACUL))) +#define bM4_I2C1_CCR_SHIGHW4 (*((volatile unsigned int*)(0x429C05B0UL))) +#define bM4_I2C1_CCR_FREQ0 (*((volatile unsigned int*)(0x429C05C0UL))) +#define bM4_I2C1_CCR_FREQ1 (*((volatile unsigned int*)(0x429C05C4UL))) +#define bM4_I2C1_CCR_FREQ2 (*((volatile unsigned int*)(0x429C05C8UL))) +#define bM4_I2C1_FLTR_DNF0 (*((volatile unsigned int*)(0x429C0600UL))) +#define bM4_I2C1_FLTR_DNF1 (*((volatile unsigned int*)(0x429C0604UL))) +#define bM4_I2C1_FLTR_DNFEN (*((volatile unsigned int*)(0x429C0610UL))) +#define bM4_I2C1_FLTR_ANFEN (*((volatile unsigned int*)(0x429C0614UL))) +#define bM4_I2C2_CR1_PE (*((volatile unsigned int*)(0x429C8000UL))) +#define bM4_I2C2_CR1_SMBUS (*((volatile unsigned int*)(0x429C8004UL))) +#define bM4_I2C2_CR1_SMBALRTEN (*((volatile unsigned int*)(0x429C8008UL))) +#define bM4_I2C2_CR1_SMBDEFAULTEN (*((volatile unsigned int*)(0x429C800CUL))) +#define bM4_I2C2_CR1_SMBHOSTEN (*((volatile unsigned int*)(0x429C8010UL))) +#define bM4_I2C2_CR1_ENGC (*((volatile unsigned int*)(0x429C8018UL))) +#define bM4_I2C2_CR1_RESTART (*((volatile unsigned int*)(0x429C801CUL))) +#define bM4_I2C2_CR1_START (*((volatile unsigned int*)(0x429C8020UL))) +#define bM4_I2C2_CR1_STOP (*((volatile unsigned int*)(0x429C8024UL))) +#define bM4_I2C2_CR1_ACK (*((volatile unsigned int*)(0x429C8028UL))) +#define bM4_I2C2_CR1_SWRST (*((volatile unsigned int*)(0x429C803CUL))) +#define bM4_I2C2_CR2_STARTIE (*((volatile unsigned int*)(0x429C8080UL))) +#define bM4_I2C2_CR2_SLADDR0IE (*((volatile unsigned int*)(0x429C8084UL))) +#define bM4_I2C2_CR2_SLADDR1IE (*((volatile unsigned int*)(0x429C8088UL))) +#define bM4_I2C2_CR2_TENDIE (*((volatile unsigned int*)(0x429C808CUL))) +#define bM4_I2C2_CR2_STOPIE (*((volatile unsigned int*)(0x429C8090UL))) +#define bM4_I2C2_CR2_RFULLIE (*((volatile unsigned int*)(0x429C8098UL))) +#define bM4_I2C2_CR2_TEMPTYIE (*((volatile unsigned int*)(0x429C809CUL))) +#define bM4_I2C2_CR2_ARLOIE (*((volatile unsigned int*)(0x429C80A4UL))) +#define bM4_I2C2_CR2_NACKIE (*((volatile unsigned int*)(0x429C80B0UL))) +#define bM4_I2C2_CR2_TMOUTIE (*((volatile unsigned int*)(0x429C80B8UL))) +#define bM4_I2C2_CR2_GENCALLIE (*((volatile unsigned int*)(0x429C80D0UL))) +#define bM4_I2C2_CR2_SMBDEFAULTIE (*((volatile unsigned int*)(0x429C80D4UL))) +#define bM4_I2C2_CR2_SMBHOSTIE (*((volatile unsigned int*)(0x429C80D8UL))) +#define bM4_I2C2_CR2_SMBALRTIE (*((volatile unsigned int*)(0x429C80DCUL))) +#define bM4_I2C2_CR3_TMOUTEN (*((volatile unsigned int*)(0x429C8100UL))) +#define bM4_I2C2_CR3_LTMOUT (*((volatile unsigned int*)(0x429C8104UL))) +#define bM4_I2C2_CR3_HTMOUT (*((volatile unsigned int*)(0x429C8108UL))) +#define bM4_I2C2_CR3_FACKEN (*((volatile unsigned int*)(0x429C811CUL))) +#define bM4_I2C2_SLR0_SLADDR00 (*((volatile unsigned int*)(0x429C8200UL))) +#define bM4_I2C2_SLR0_SLADDR01 (*((volatile unsigned int*)(0x429C8204UL))) +#define bM4_I2C2_SLR0_SLADDR02 (*((volatile unsigned int*)(0x429C8208UL))) +#define bM4_I2C2_SLR0_SLADDR03 (*((volatile unsigned int*)(0x429C820CUL))) +#define bM4_I2C2_SLR0_SLADDR04 (*((volatile unsigned int*)(0x429C8210UL))) +#define bM4_I2C2_SLR0_SLADDR05 (*((volatile unsigned int*)(0x429C8214UL))) +#define bM4_I2C2_SLR0_SLADDR06 (*((volatile unsigned int*)(0x429C8218UL))) +#define bM4_I2C2_SLR0_SLADDR07 (*((volatile unsigned int*)(0x429C821CUL))) +#define bM4_I2C2_SLR0_SLADDR08 (*((volatile unsigned int*)(0x429C8220UL))) +#define bM4_I2C2_SLR0_SLADDR09 (*((volatile unsigned int*)(0x429C8224UL))) +#define bM4_I2C2_SLR0_SLADDR0EN (*((volatile unsigned int*)(0x429C8230UL))) +#define bM4_I2C2_SLR0_ADDRMOD0 (*((volatile unsigned int*)(0x429C823CUL))) +#define bM4_I2C2_SLR1_SLADDR10 (*((volatile unsigned int*)(0x429C8280UL))) +#define bM4_I2C2_SLR1_SLADDR11 (*((volatile unsigned int*)(0x429C8284UL))) +#define bM4_I2C2_SLR1_SLADDR12 (*((volatile unsigned int*)(0x429C8288UL))) +#define bM4_I2C2_SLR1_SLADDR13 (*((volatile unsigned int*)(0x429C828CUL))) +#define bM4_I2C2_SLR1_SLADDR14 (*((volatile unsigned int*)(0x429C8290UL))) +#define bM4_I2C2_SLR1_SLADDR15 (*((volatile unsigned int*)(0x429C8294UL))) +#define bM4_I2C2_SLR1_SLADDR16 (*((volatile unsigned int*)(0x429C8298UL))) +#define bM4_I2C2_SLR1_SLADDR17 (*((volatile unsigned int*)(0x429C829CUL))) +#define bM4_I2C2_SLR1_SLADDR18 (*((volatile unsigned int*)(0x429C82A0UL))) +#define bM4_I2C2_SLR1_SLADDR19 (*((volatile unsigned int*)(0x429C82A4UL))) +#define bM4_I2C2_SLR1_SLADDR1EN (*((volatile unsigned int*)(0x429C82B0UL))) +#define bM4_I2C2_SLR1_ADDRMOD1 (*((volatile unsigned int*)(0x429C82BCUL))) +#define bM4_I2C2_SLTR_TOUTLOW0 (*((volatile unsigned int*)(0x429C8300UL))) +#define bM4_I2C2_SLTR_TOUTLOW1 (*((volatile unsigned int*)(0x429C8304UL))) +#define bM4_I2C2_SLTR_TOUTLOW2 (*((volatile unsigned int*)(0x429C8308UL))) +#define bM4_I2C2_SLTR_TOUTLOW3 (*((volatile unsigned int*)(0x429C830CUL))) +#define bM4_I2C2_SLTR_TOUTLOW4 (*((volatile unsigned int*)(0x429C8310UL))) +#define bM4_I2C2_SLTR_TOUTLOW5 (*((volatile unsigned int*)(0x429C8314UL))) +#define bM4_I2C2_SLTR_TOUTLOW6 (*((volatile unsigned int*)(0x429C8318UL))) +#define bM4_I2C2_SLTR_TOUTLOW7 (*((volatile unsigned int*)(0x429C831CUL))) +#define bM4_I2C2_SLTR_TOUTLOW8 (*((volatile unsigned int*)(0x429C8320UL))) +#define bM4_I2C2_SLTR_TOUTLOW9 (*((volatile unsigned int*)(0x429C8324UL))) +#define bM4_I2C2_SLTR_TOUTLOW10 (*((volatile unsigned int*)(0x429C8328UL))) +#define bM4_I2C2_SLTR_TOUTLOW11 (*((volatile unsigned int*)(0x429C832CUL))) +#define bM4_I2C2_SLTR_TOUTLOW12 (*((volatile unsigned int*)(0x429C8330UL))) +#define bM4_I2C2_SLTR_TOUTLOW13 (*((volatile unsigned int*)(0x429C8334UL))) +#define bM4_I2C2_SLTR_TOUTLOW14 (*((volatile unsigned int*)(0x429C8338UL))) +#define bM4_I2C2_SLTR_TOUTLOW15 (*((volatile unsigned int*)(0x429C833CUL))) +#define bM4_I2C2_SLTR_TOUTHIGH0 (*((volatile unsigned int*)(0x429C8340UL))) +#define bM4_I2C2_SLTR_TOUTHIGH1 (*((volatile unsigned int*)(0x429C8344UL))) +#define bM4_I2C2_SLTR_TOUTHIGH2 (*((volatile unsigned int*)(0x429C8348UL))) +#define bM4_I2C2_SLTR_TOUTHIGH3 (*((volatile unsigned int*)(0x429C834CUL))) +#define bM4_I2C2_SLTR_TOUTHIGH4 (*((volatile unsigned int*)(0x429C8350UL))) +#define bM4_I2C2_SLTR_TOUTHIGH5 (*((volatile unsigned int*)(0x429C8354UL))) +#define bM4_I2C2_SLTR_TOUTHIGH6 (*((volatile unsigned int*)(0x429C8358UL))) +#define bM4_I2C2_SLTR_TOUTHIGH7 (*((volatile unsigned int*)(0x429C835CUL))) +#define bM4_I2C2_SLTR_TOUTHIGH8 (*((volatile unsigned int*)(0x429C8360UL))) +#define bM4_I2C2_SLTR_TOUTHIGH9 (*((volatile unsigned int*)(0x429C8364UL))) +#define bM4_I2C2_SLTR_TOUTHIGH10 (*((volatile unsigned int*)(0x429C8368UL))) +#define bM4_I2C2_SLTR_TOUTHIGH11 (*((volatile unsigned int*)(0x429C836CUL))) +#define bM4_I2C2_SLTR_TOUTHIGH12 (*((volatile unsigned int*)(0x429C8370UL))) +#define bM4_I2C2_SLTR_TOUTHIGH13 (*((volatile unsigned int*)(0x429C8374UL))) +#define bM4_I2C2_SLTR_TOUTHIGH14 (*((volatile unsigned int*)(0x429C8378UL))) +#define bM4_I2C2_SLTR_TOUTHIGH15 (*((volatile unsigned int*)(0x429C837CUL))) +#define bM4_I2C2_SR_STARTF (*((volatile unsigned int*)(0x429C8380UL))) +#define bM4_I2C2_SR_SLADDR0F (*((volatile unsigned int*)(0x429C8384UL))) +#define bM4_I2C2_SR_SLADDR1F (*((volatile unsigned int*)(0x429C8388UL))) +#define bM4_I2C2_SR_TENDF (*((volatile unsigned int*)(0x429C838CUL))) +#define bM4_I2C2_SR_STOPF (*((volatile unsigned int*)(0x429C8390UL))) +#define bM4_I2C2_SR_RFULLF (*((volatile unsigned int*)(0x429C8398UL))) +#define bM4_I2C2_SR_TEMPTYF (*((volatile unsigned int*)(0x429C839CUL))) +#define bM4_I2C2_SR_ARLOF (*((volatile unsigned int*)(0x429C83A4UL))) +#define bM4_I2C2_SR_ACKRF (*((volatile unsigned int*)(0x429C83A8UL))) +#define bM4_I2C2_SR_NACKF (*((volatile unsigned int*)(0x429C83B0UL))) +#define bM4_I2C2_SR_TMOUTF (*((volatile unsigned int*)(0x429C83B8UL))) +#define bM4_I2C2_SR_MSL (*((volatile unsigned int*)(0x429C83C0UL))) +#define bM4_I2C2_SR_BUSY (*((volatile unsigned int*)(0x429C83C4UL))) +#define bM4_I2C2_SR_TRA (*((volatile unsigned int*)(0x429C83C8UL))) +#define bM4_I2C2_SR_GENCALLF (*((volatile unsigned int*)(0x429C83D0UL))) +#define bM4_I2C2_SR_SMBDEFAULTF (*((volatile unsigned int*)(0x429C83D4UL))) +#define bM4_I2C2_SR_SMBHOSTF (*((volatile unsigned int*)(0x429C83D8UL))) +#define bM4_I2C2_SR_SMBALRTF (*((volatile unsigned int*)(0x429C83DCUL))) +#define bM4_I2C2_CLR_STARTFCLR (*((volatile unsigned int*)(0x429C8400UL))) +#define bM4_I2C2_CLR_SLADDR0FCLR (*((volatile unsigned int*)(0x429C8404UL))) +#define bM4_I2C2_CLR_SLADDR1FCLR (*((volatile unsigned int*)(0x429C8408UL))) +#define bM4_I2C2_CLR_TENDFCLR (*((volatile unsigned int*)(0x429C840CUL))) +#define bM4_I2C2_CLR_STOPFCLR (*((volatile unsigned int*)(0x429C8410UL))) +#define bM4_I2C2_CLR_RFULLFCLR (*((volatile unsigned int*)(0x429C8418UL))) +#define bM4_I2C2_CLR_TEMPTYFCLR (*((volatile unsigned int*)(0x429C841CUL))) +#define bM4_I2C2_CLR_ARLOFCLR (*((volatile unsigned int*)(0x429C8424UL))) +#define bM4_I2C2_CLR_NACKFCLR (*((volatile unsigned int*)(0x429C8430UL))) +#define bM4_I2C2_CLR_TMOUTFCLR (*((volatile unsigned int*)(0x429C8438UL))) +#define bM4_I2C2_CLR_GENCALLFCLR (*((volatile unsigned int*)(0x429C8450UL))) +#define bM4_I2C2_CLR_SMBDEFAULTFCLR (*((volatile unsigned int*)(0x429C8454UL))) +#define bM4_I2C2_CLR_SMBHOSTFCLR (*((volatile unsigned int*)(0x429C8458UL))) +#define bM4_I2C2_CLR_SMBALRTFCLR (*((volatile unsigned int*)(0x429C845CUL))) +#define bM4_I2C2_DTR_DT0 (*((volatile unsigned int*)(0x429C8480UL))) +#define bM4_I2C2_DTR_DT1 (*((volatile unsigned int*)(0x429C8484UL))) +#define bM4_I2C2_DTR_DT2 (*((volatile unsigned int*)(0x429C8488UL))) +#define bM4_I2C2_DTR_DT3 (*((volatile unsigned int*)(0x429C848CUL))) +#define bM4_I2C2_DTR_DT4 (*((volatile unsigned int*)(0x429C8490UL))) +#define bM4_I2C2_DTR_DT5 (*((volatile unsigned int*)(0x429C8494UL))) +#define bM4_I2C2_DTR_DT6 (*((volatile unsigned int*)(0x429C8498UL))) +#define bM4_I2C2_DTR_DT7 (*((volatile unsigned int*)(0x429C849CUL))) +#define bM4_I2C2_DRR_DR0 (*((volatile unsigned int*)(0x429C8500UL))) +#define bM4_I2C2_DRR_DR1 (*((volatile unsigned int*)(0x429C8504UL))) +#define bM4_I2C2_DRR_DR2 (*((volatile unsigned int*)(0x429C8508UL))) +#define bM4_I2C2_DRR_DR3 (*((volatile unsigned int*)(0x429C850CUL))) +#define bM4_I2C2_DRR_DR4 (*((volatile unsigned int*)(0x429C8510UL))) +#define bM4_I2C2_DRR_DR5 (*((volatile unsigned int*)(0x429C8514UL))) +#define bM4_I2C2_DRR_DR6 (*((volatile unsigned int*)(0x429C8518UL))) +#define bM4_I2C2_DRR_DR7 (*((volatile unsigned int*)(0x429C851CUL))) +#define bM4_I2C2_CCR_SLOWW0 (*((volatile unsigned int*)(0x429C8580UL))) +#define bM4_I2C2_CCR_SLOWW1 (*((volatile unsigned int*)(0x429C8584UL))) +#define bM4_I2C2_CCR_SLOWW2 (*((volatile unsigned int*)(0x429C8588UL))) +#define bM4_I2C2_CCR_SLOWW3 (*((volatile unsigned int*)(0x429C858CUL))) +#define bM4_I2C2_CCR_SLOWW4 (*((volatile unsigned int*)(0x429C8590UL))) +#define bM4_I2C2_CCR_SHIGHW0 (*((volatile unsigned int*)(0x429C85A0UL))) +#define bM4_I2C2_CCR_SHIGHW1 (*((volatile unsigned int*)(0x429C85A4UL))) +#define bM4_I2C2_CCR_SHIGHW2 (*((volatile unsigned int*)(0x429C85A8UL))) +#define bM4_I2C2_CCR_SHIGHW3 (*((volatile unsigned int*)(0x429C85ACUL))) +#define bM4_I2C2_CCR_SHIGHW4 (*((volatile unsigned int*)(0x429C85B0UL))) +#define bM4_I2C2_CCR_FREQ0 (*((volatile unsigned int*)(0x429C85C0UL))) +#define bM4_I2C2_CCR_FREQ1 (*((volatile unsigned int*)(0x429C85C4UL))) +#define bM4_I2C2_CCR_FREQ2 (*((volatile unsigned int*)(0x429C85C8UL))) +#define bM4_I2C2_FLTR_DNF0 (*((volatile unsigned int*)(0x429C8600UL))) +#define bM4_I2C2_FLTR_DNF1 (*((volatile unsigned int*)(0x429C8604UL))) +#define bM4_I2C2_FLTR_DNFEN (*((volatile unsigned int*)(0x429C8610UL))) +#define bM4_I2C2_FLTR_ANFEN (*((volatile unsigned int*)(0x429C8614UL))) +#define bM4_I2C3_CR1_PE (*((volatile unsigned int*)(0x429D0000UL))) +#define bM4_I2C3_CR1_SMBUS (*((volatile unsigned int*)(0x429D0004UL))) +#define bM4_I2C3_CR1_SMBALRTEN (*((volatile unsigned int*)(0x429D0008UL))) +#define bM4_I2C3_CR1_SMBDEFAULTEN (*((volatile unsigned int*)(0x429D000CUL))) +#define bM4_I2C3_CR1_SMBHOSTEN (*((volatile unsigned int*)(0x429D0010UL))) +#define bM4_I2C3_CR1_ENGC (*((volatile unsigned int*)(0x429D0018UL))) +#define bM4_I2C3_CR1_RESTART (*((volatile unsigned int*)(0x429D001CUL))) +#define bM4_I2C3_CR1_START (*((volatile unsigned int*)(0x429D0020UL))) +#define bM4_I2C3_CR1_STOP (*((volatile unsigned int*)(0x429D0024UL))) +#define bM4_I2C3_CR1_ACK (*((volatile unsigned int*)(0x429D0028UL))) +#define bM4_I2C3_CR1_SWRST (*((volatile unsigned int*)(0x429D003CUL))) +#define bM4_I2C3_CR2_STARTIE (*((volatile unsigned int*)(0x429D0080UL))) +#define bM4_I2C3_CR2_SLADDR0IE (*((volatile unsigned int*)(0x429D0084UL))) +#define bM4_I2C3_CR2_SLADDR1IE (*((volatile unsigned int*)(0x429D0088UL))) +#define bM4_I2C3_CR2_TENDIE (*((volatile unsigned int*)(0x429D008CUL))) +#define bM4_I2C3_CR2_STOPIE (*((volatile unsigned int*)(0x429D0090UL))) +#define bM4_I2C3_CR2_RFULLIE (*((volatile unsigned int*)(0x429D0098UL))) +#define bM4_I2C3_CR2_TEMPTYIE (*((volatile unsigned int*)(0x429D009CUL))) +#define bM4_I2C3_CR2_ARLOIE (*((volatile unsigned int*)(0x429D00A4UL))) +#define bM4_I2C3_CR2_NACKIE (*((volatile unsigned int*)(0x429D00B0UL))) +#define bM4_I2C3_CR2_TMOUTIE (*((volatile unsigned int*)(0x429D00B8UL))) +#define bM4_I2C3_CR2_GENCALLIE (*((volatile unsigned int*)(0x429D00D0UL))) +#define bM4_I2C3_CR2_SMBDEFAULTIE (*((volatile unsigned int*)(0x429D00D4UL))) +#define bM4_I2C3_CR2_SMBHOSTIE (*((volatile unsigned int*)(0x429D00D8UL))) +#define bM4_I2C3_CR2_SMBALRTIE (*((volatile unsigned int*)(0x429D00DCUL))) +#define bM4_I2C3_CR3_TMOUTEN (*((volatile unsigned int*)(0x429D0100UL))) +#define bM4_I2C3_CR3_LTMOUT (*((volatile unsigned int*)(0x429D0104UL))) +#define bM4_I2C3_CR3_HTMOUT (*((volatile unsigned int*)(0x429D0108UL))) +#define bM4_I2C3_CR3_FACKEN (*((volatile unsigned int*)(0x429D011CUL))) +#define bM4_I2C3_SLR0_SLADDR00 (*((volatile unsigned int*)(0x429D0200UL))) +#define bM4_I2C3_SLR0_SLADDR01 (*((volatile unsigned int*)(0x429D0204UL))) +#define bM4_I2C3_SLR0_SLADDR02 (*((volatile unsigned int*)(0x429D0208UL))) +#define bM4_I2C3_SLR0_SLADDR03 (*((volatile unsigned int*)(0x429D020CUL))) +#define bM4_I2C3_SLR0_SLADDR04 (*((volatile unsigned int*)(0x429D0210UL))) +#define bM4_I2C3_SLR0_SLADDR05 (*((volatile unsigned int*)(0x429D0214UL))) +#define bM4_I2C3_SLR0_SLADDR06 (*((volatile unsigned int*)(0x429D0218UL))) +#define bM4_I2C3_SLR0_SLADDR07 (*((volatile unsigned int*)(0x429D021CUL))) +#define bM4_I2C3_SLR0_SLADDR08 (*((volatile unsigned int*)(0x429D0220UL))) +#define bM4_I2C3_SLR0_SLADDR09 (*((volatile unsigned int*)(0x429D0224UL))) +#define bM4_I2C3_SLR0_SLADDR0EN (*((volatile unsigned int*)(0x429D0230UL))) +#define bM4_I2C3_SLR0_ADDRMOD0 (*((volatile unsigned int*)(0x429D023CUL))) +#define bM4_I2C3_SLR1_SLADDR10 (*((volatile unsigned int*)(0x429D0280UL))) +#define bM4_I2C3_SLR1_SLADDR11 (*((volatile unsigned int*)(0x429D0284UL))) +#define bM4_I2C3_SLR1_SLADDR12 (*((volatile unsigned int*)(0x429D0288UL))) +#define bM4_I2C3_SLR1_SLADDR13 (*((volatile unsigned int*)(0x429D028CUL))) +#define bM4_I2C3_SLR1_SLADDR14 (*((volatile unsigned int*)(0x429D0290UL))) +#define bM4_I2C3_SLR1_SLADDR15 (*((volatile unsigned int*)(0x429D0294UL))) +#define bM4_I2C3_SLR1_SLADDR16 (*((volatile unsigned int*)(0x429D0298UL))) +#define bM4_I2C3_SLR1_SLADDR17 (*((volatile unsigned int*)(0x429D029CUL))) +#define bM4_I2C3_SLR1_SLADDR18 (*((volatile unsigned int*)(0x429D02A0UL))) +#define bM4_I2C3_SLR1_SLADDR19 (*((volatile unsigned int*)(0x429D02A4UL))) +#define bM4_I2C3_SLR1_SLADDR1EN (*((volatile unsigned int*)(0x429D02B0UL))) +#define bM4_I2C3_SLR1_ADDRMOD1 (*((volatile unsigned int*)(0x429D02BCUL))) +#define bM4_I2C3_SLTR_TOUTLOW0 (*((volatile unsigned int*)(0x429D0300UL))) +#define bM4_I2C3_SLTR_TOUTLOW1 (*((volatile unsigned int*)(0x429D0304UL))) +#define bM4_I2C3_SLTR_TOUTLOW2 (*((volatile unsigned int*)(0x429D0308UL))) +#define bM4_I2C3_SLTR_TOUTLOW3 (*((volatile unsigned int*)(0x429D030CUL))) +#define bM4_I2C3_SLTR_TOUTLOW4 (*((volatile unsigned int*)(0x429D0310UL))) +#define bM4_I2C3_SLTR_TOUTLOW5 (*((volatile unsigned int*)(0x429D0314UL))) +#define bM4_I2C3_SLTR_TOUTLOW6 (*((volatile unsigned int*)(0x429D0318UL))) +#define bM4_I2C3_SLTR_TOUTLOW7 (*((volatile unsigned int*)(0x429D031CUL))) +#define bM4_I2C3_SLTR_TOUTLOW8 (*((volatile unsigned int*)(0x429D0320UL))) +#define bM4_I2C3_SLTR_TOUTLOW9 (*((volatile unsigned int*)(0x429D0324UL))) +#define bM4_I2C3_SLTR_TOUTLOW10 (*((volatile unsigned int*)(0x429D0328UL))) +#define bM4_I2C3_SLTR_TOUTLOW11 (*((volatile unsigned int*)(0x429D032CUL))) +#define bM4_I2C3_SLTR_TOUTLOW12 (*((volatile unsigned int*)(0x429D0330UL))) +#define bM4_I2C3_SLTR_TOUTLOW13 (*((volatile unsigned int*)(0x429D0334UL))) +#define bM4_I2C3_SLTR_TOUTLOW14 (*((volatile unsigned int*)(0x429D0338UL))) +#define bM4_I2C3_SLTR_TOUTLOW15 (*((volatile unsigned int*)(0x429D033CUL))) +#define bM4_I2C3_SLTR_TOUTHIGH0 (*((volatile unsigned int*)(0x429D0340UL))) +#define bM4_I2C3_SLTR_TOUTHIGH1 (*((volatile unsigned int*)(0x429D0344UL))) +#define bM4_I2C3_SLTR_TOUTHIGH2 (*((volatile unsigned int*)(0x429D0348UL))) +#define bM4_I2C3_SLTR_TOUTHIGH3 (*((volatile unsigned int*)(0x429D034CUL))) +#define bM4_I2C3_SLTR_TOUTHIGH4 (*((volatile unsigned int*)(0x429D0350UL))) +#define bM4_I2C3_SLTR_TOUTHIGH5 (*((volatile unsigned int*)(0x429D0354UL))) +#define bM4_I2C3_SLTR_TOUTHIGH6 (*((volatile unsigned int*)(0x429D0358UL))) +#define bM4_I2C3_SLTR_TOUTHIGH7 (*((volatile unsigned int*)(0x429D035CUL))) +#define bM4_I2C3_SLTR_TOUTHIGH8 (*((volatile unsigned int*)(0x429D0360UL))) +#define bM4_I2C3_SLTR_TOUTHIGH9 (*((volatile unsigned int*)(0x429D0364UL))) +#define bM4_I2C3_SLTR_TOUTHIGH10 (*((volatile unsigned int*)(0x429D0368UL))) +#define bM4_I2C3_SLTR_TOUTHIGH11 (*((volatile unsigned int*)(0x429D036CUL))) +#define bM4_I2C3_SLTR_TOUTHIGH12 (*((volatile unsigned int*)(0x429D0370UL))) +#define bM4_I2C3_SLTR_TOUTHIGH13 (*((volatile unsigned int*)(0x429D0374UL))) +#define bM4_I2C3_SLTR_TOUTHIGH14 (*((volatile unsigned int*)(0x429D0378UL))) +#define bM4_I2C3_SLTR_TOUTHIGH15 (*((volatile unsigned int*)(0x429D037CUL))) +#define bM4_I2C3_SR_STARTF (*((volatile unsigned int*)(0x429D0380UL))) +#define bM4_I2C3_SR_SLADDR0F (*((volatile unsigned int*)(0x429D0384UL))) +#define bM4_I2C3_SR_SLADDR1F (*((volatile unsigned int*)(0x429D0388UL))) +#define bM4_I2C3_SR_TENDF (*((volatile unsigned int*)(0x429D038CUL))) +#define bM4_I2C3_SR_STOPF (*((volatile unsigned int*)(0x429D0390UL))) +#define bM4_I2C3_SR_RFULLF (*((volatile unsigned int*)(0x429D0398UL))) +#define bM4_I2C3_SR_TEMPTYF (*((volatile unsigned int*)(0x429D039CUL))) +#define bM4_I2C3_SR_ARLOF (*((volatile unsigned int*)(0x429D03A4UL))) +#define bM4_I2C3_SR_ACKRF (*((volatile unsigned int*)(0x429D03A8UL))) +#define bM4_I2C3_SR_NACKF (*((volatile unsigned int*)(0x429D03B0UL))) +#define bM4_I2C3_SR_TMOUTF (*((volatile unsigned int*)(0x429D03B8UL))) +#define bM4_I2C3_SR_MSL (*((volatile unsigned int*)(0x429D03C0UL))) +#define bM4_I2C3_SR_BUSY (*((volatile unsigned int*)(0x429D03C4UL))) +#define bM4_I2C3_SR_TRA (*((volatile unsigned int*)(0x429D03C8UL))) +#define bM4_I2C3_SR_GENCALLF (*((volatile unsigned int*)(0x429D03D0UL))) +#define bM4_I2C3_SR_SMBDEFAULTF (*((volatile unsigned int*)(0x429D03D4UL))) +#define bM4_I2C3_SR_SMBHOSTF (*((volatile unsigned int*)(0x429D03D8UL))) +#define bM4_I2C3_SR_SMBALRTF (*((volatile unsigned int*)(0x429D03DCUL))) +#define bM4_I2C3_CLR_STARTFCLR (*((volatile unsigned int*)(0x429D0400UL))) +#define bM4_I2C3_CLR_SLADDR0FCLR (*((volatile unsigned int*)(0x429D0404UL))) +#define bM4_I2C3_CLR_SLADDR1FCLR (*((volatile unsigned int*)(0x429D0408UL))) +#define bM4_I2C3_CLR_TENDFCLR (*((volatile unsigned int*)(0x429D040CUL))) +#define bM4_I2C3_CLR_STOPFCLR (*((volatile unsigned int*)(0x429D0410UL))) +#define bM4_I2C3_CLR_RFULLFCLR (*((volatile unsigned int*)(0x429D0418UL))) +#define bM4_I2C3_CLR_TEMPTYFCLR (*((volatile unsigned int*)(0x429D041CUL))) +#define bM4_I2C3_CLR_ARLOFCLR (*((volatile unsigned int*)(0x429D0424UL))) +#define bM4_I2C3_CLR_NACKFCLR (*((volatile unsigned int*)(0x429D0430UL))) +#define bM4_I2C3_CLR_TMOUTFCLR (*((volatile unsigned int*)(0x429D0438UL))) +#define bM4_I2C3_CLR_GENCALLFCLR (*((volatile unsigned int*)(0x429D0450UL))) +#define bM4_I2C3_CLR_SMBDEFAULTFCLR (*((volatile unsigned int*)(0x429D0454UL))) +#define bM4_I2C3_CLR_SMBHOSTFCLR (*((volatile unsigned int*)(0x429D0458UL))) +#define bM4_I2C3_CLR_SMBALRTFCLR (*((volatile unsigned int*)(0x429D045CUL))) +#define bM4_I2C3_DTR_DT0 (*((volatile unsigned int*)(0x429D0480UL))) +#define bM4_I2C3_DTR_DT1 (*((volatile unsigned int*)(0x429D0484UL))) +#define bM4_I2C3_DTR_DT2 (*((volatile unsigned int*)(0x429D0488UL))) +#define bM4_I2C3_DTR_DT3 (*((volatile unsigned int*)(0x429D048CUL))) +#define bM4_I2C3_DTR_DT4 (*((volatile unsigned int*)(0x429D0490UL))) +#define bM4_I2C3_DTR_DT5 (*((volatile unsigned int*)(0x429D0494UL))) +#define bM4_I2C3_DTR_DT6 (*((volatile unsigned int*)(0x429D0498UL))) +#define bM4_I2C3_DTR_DT7 (*((volatile unsigned int*)(0x429D049CUL))) +#define bM4_I2C3_DRR_DR0 (*((volatile unsigned int*)(0x429D0500UL))) +#define bM4_I2C3_DRR_DR1 (*((volatile unsigned int*)(0x429D0504UL))) +#define bM4_I2C3_DRR_DR2 (*((volatile unsigned int*)(0x429D0508UL))) +#define bM4_I2C3_DRR_DR3 (*((volatile unsigned int*)(0x429D050CUL))) +#define bM4_I2C3_DRR_DR4 (*((volatile unsigned int*)(0x429D0510UL))) +#define bM4_I2C3_DRR_DR5 (*((volatile unsigned int*)(0x429D0514UL))) +#define bM4_I2C3_DRR_DR6 (*((volatile unsigned int*)(0x429D0518UL))) +#define bM4_I2C3_DRR_DR7 (*((volatile unsigned int*)(0x429D051CUL))) +#define bM4_I2C3_CCR_SLOWW0 (*((volatile unsigned int*)(0x429D0580UL))) +#define bM4_I2C3_CCR_SLOWW1 (*((volatile unsigned int*)(0x429D0584UL))) +#define bM4_I2C3_CCR_SLOWW2 (*((volatile unsigned int*)(0x429D0588UL))) +#define bM4_I2C3_CCR_SLOWW3 (*((volatile unsigned int*)(0x429D058CUL))) +#define bM4_I2C3_CCR_SLOWW4 (*((volatile unsigned int*)(0x429D0590UL))) +#define bM4_I2C3_CCR_SHIGHW0 (*((volatile unsigned int*)(0x429D05A0UL))) +#define bM4_I2C3_CCR_SHIGHW1 (*((volatile unsigned int*)(0x429D05A4UL))) +#define bM4_I2C3_CCR_SHIGHW2 (*((volatile unsigned int*)(0x429D05A8UL))) +#define bM4_I2C3_CCR_SHIGHW3 (*((volatile unsigned int*)(0x429D05ACUL))) +#define bM4_I2C3_CCR_SHIGHW4 (*((volatile unsigned int*)(0x429D05B0UL))) +#define bM4_I2C3_CCR_FREQ0 (*((volatile unsigned int*)(0x429D05C0UL))) +#define bM4_I2C3_CCR_FREQ1 (*((volatile unsigned int*)(0x429D05C4UL))) +#define bM4_I2C3_CCR_FREQ2 (*((volatile unsigned int*)(0x429D05C8UL))) +#define bM4_I2C3_FLTR_DNF0 (*((volatile unsigned int*)(0x429D0600UL))) +#define bM4_I2C3_FLTR_DNF1 (*((volatile unsigned int*)(0x429D0604UL))) +#define bM4_I2C3_FLTR_DNFEN (*((volatile unsigned int*)(0x429D0610UL))) +#define bM4_I2C3_FLTR_ANFEN (*((volatile unsigned int*)(0x429D0614UL))) +#define bM4_I2S1_CTRL_TXE (*((volatile unsigned int*)(0x423C0000UL))) +#define bM4_I2S1_CTRL_TXIE (*((volatile unsigned int*)(0x423C0004UL))) +#define bM4_I2S1_CTRL_RXE (*((volatile unsigned int*)(0x423C0008UL))) +#define bM4_I2S1_CTRL_RXIE (*((volatile unsigned int*)(0x423C000CUL))) +#define bM4_I2S1_CTRL_EIE (*((volatile unsigned int*)(0x423C0010UL))) +#define bM4_I2S1_CTRL_WMS (*((volatile unsigned int*)(0x423C0014UL))) +#define bM4_I2S1_CTRL_ODD (*((volatile unsigned int*)(0x423C0018UL))) +#define bM4_I2S1_CTRL_MCKOE (*((volatile unsigned int*)(0x423C001CUL))) +#define bM4_I2S1_CTRL_TXBIRQWL0 (*((volatile unsigned int*)(0x423C0020UL))) +#define bM4_I2S1_CTRL_TXBIRQWL1 (*((volatile unsigned int*)(0x423C0024UL))) +#define bM4_I2S1_CTRL_TXBIRQWL2 (*((volatile unsigned int*)(0x423C0028UL))) +#define bM4_I2S1_CTRL_RXBIRQWL0 (*((volatile unsigned int*)(0x423C0030UL))) +#define bM4_I2S1_CTRL_RXBIRQWL1 (*((volatile unsigned int*)(0x423C0034UL))) +#define bM4_I2S1_CTRL_RXBIRQWL2 (*((volatile unsigned int*)(0x423C0038UL))) +#define bM4_I2S1_CTRL_FIFOR (*((volatile unsigned int*)(0x423C0040UL))) +#define bM4_I2S1_CTRL_CODECRC (*((volatile unsigned int*)(0x423C0044UL))) +#define bM4_I2S1_CTRL_I2SPLLSEL (*((volatile unsigned int*)(0x423C0048UL))) +#define bM4_I2S1_CTRL_SDOE (*((volatile unsigned int*)(0x423C004CUL))) +#define bM4_I2S1_CTRL_LRCKOE (*((volatile unsigned int*)(0x423C0050UL))) +#define bM4_I2S1_CTRL_CKOE (*((volatile unsigned int*)(0x423C0054UL))) +#define bM4_I2S1_CTRL_DUPLEX (*((volatile unsigned int*)(0x423C0058UL))) +#define bM4_I2S1_CTRL_CLKSEL (*((volatile unsigned int*)(0x423C005CUL))) +#define bM4_I2S1_SR_TXBA (*((volatile unsigned int*)(0x423C0080UL))) +#define bM4_I2S1_SR_RXBA (*((volatile unsigned int*)(0x423C0084UL))) +#define bM4_I2S1_SR_TXBE (*((volatile unsigned int*)(0x423C0088UL))) +#define bM4_I2S1_SR_TXBF (*((volatile unsigned int*)(0x423C008CUL))) +#define bM4_I2S1_SR_RXBE (*((volatile unsigned int*)(0x423C0090UL))) +#define bM4_I2S1_SR_RXBF (*((volatile unsigned int*)(0x423C0094UL))) +#define bM4_I2S1_ER_TXERR (*((volatile unsigned int*)(0x423C0100UL))) +#define bM4_I2S1_ER_RXERR (*((volatile unsigned int*)(0x423C0104UL))) +#define bM4_I2S1_CFGR_I2SSTD0 (*((volatile unsigned int*)(0x423C0180UL))) +#define bM4_I2S1_CFGR_I2SSTD1 (*((volatile unsigned int*)(0x423C0184UL))) +#define bM4_I2S1_CFGR_DATLEN0 (*((volatile unsigned int*)(0x423C0188UL))) +#define bM4_I2S1_CFGR_DATLEN1 (*((volatile unsigned int*)(0x423C018CUL))) +#define bM4_I2S1_CFGR_CHLEN (*((volatile unsigned int*)(0x423C0190UL))) +#define bM4_I2S1_CFGR_PCMSYNC (*((volatile unsigned int*)(0x423C0194UL))) +#define bM4_I2S1_PR_I2SDIV0 (*((volatile unsigned int*)(0x423C0300UL))) +#define bM4_I2S1_PR_I2SDIV1 (*((volatile unsigned int*)(0x423C0304UL))) +#define bM4_I2S1_PR_I2SDIV2 (*((volatile unsigned int*)(0x423C0308UL))) +#define bM4_I2S1_PR_I2SDIV3 (*((volatile unsigned int*)(0x423C030CUL))) +#define bM4_I2S1_PR_I2SDIV4 (*((volatile unsigned int*)(0x423C0310UL))) +#define bM4_I2S1_PR_I2SDIV5 (*((volatile unsigned int*)(0x423C0314UL))) +#define bM4_I2S1_PR_I2SDIV6 (*((volatile unsigned int*)(0x423C0318UL))) +#define bM4_I2S1_PR_I2SDIV7 (*((volatile unsigned int*)(0x423C031CUL))) +#define bM4_I2S2_CTRL_TXE (*((volatile unsigned int*)(0x423C8000UL))) +#define bM4_I2S2_CTRL_TXIE (*((volatile unsigned int*)(0x423C8004UL))) +#define bM4_I2S2_CTRL_RXE (*((volatile unsigned int*)(0x423C8008UL))) +#define bM4_I2S2_CTRL_RXIE (*((volatile unsigned int*)(0x423C800CUL))) +#define bM4_I2S2_CTRL_EIE (*((volatile unsigned int*)(0x423C8010UL))) +#define bM4_I2S2_CTRL_WMS (*((volatile unsigned int*)(0x423C8014UL))) +#define bM4_I2S2_CTRL_ODD (*((volatile unsigned int*)(0x423C8018UL))) +#define bM4_I2S2_CTRL_MCKOE (*((volatile unsigned int*)(0x423C801CUL))) +#define bM4_I2S2_CTRL_TXBIRQWL0 (*((volatile unsigned int*)(0x423C8020UL))) +#define bM4_I2S2_CTRL_TXBIRQWL1 (*((volatile unsigned int*)(0x423C8024UL))) +#define bM4_I2S2_CTRL_TXBIRQWL2 (*((volatile unsigned int*)(0x423C8028UL))) +#define bM4_I2S2_CTRL_RXBIRQWL0 (*((volatile unsigned int*)(0x423C8030UL))) +#define bM4_I2S2_CTRL_RXBIRQWL1 (*((volatile unsigned int*)(0x423C8034UL))) +#define bM4_I2S2_CTRL_RXBIRQWL2 (*((volatile unsigned int*)(0x423C8038UL))) +#define bM4_I2S2_CTRL_FIFOR (*((volatile unsigned int*)(0x423C8040UL))) +#define bM4_I2S2_CTRL_CODECRC (*((volatile unsigned int*)(0x423C8044UL))) +#define bM4_I2S2_CTRL_I2SPLLSEL (*((volatile unsigned int*)(0x423C8048UL))) +#define bM4_I2S2_CTRL_SDOE (*((volatile unsigned int*)(0x423C804CUL))) +#define bM4_I2S2_CTRL_LRCKOE (*((volatile unsigned int*)(0x423C8050UL))) +#define bM4_I2S2_CTRL_CKOE (*((volatile unsigned int*)(0x423C8054UL))) +#define bM4_I2S2_CTRL_DUPLEX (*((volatile unsigned int*)(0x423C8058UL))) +#define bM4_I2S2_CTRL_CLKSEL (*((volatile unsigned int*)(0x423C805CUL))) +#define bM4_I2S2_SR_TXBA (*((volatile unsigned int*)(0x423C8080UL))) +#define bM4_I2S2_SR_RXBA (*((volatile unsigned int*)(0x423C8084UL))) +#define bM4_I2S2_SR_TXBE (*((volatile unsigned int*)(0x423C8088UL))) +#define bM4_I2S2_SR_TXBF (*((volatile unsigned int*)(0x423C808CUL))) +#define bM4_I2S2_SR_RXBE (*((volatile unsigned int*)(0x423C8090UL))) +#define bM4_I2S2_SR_RXBF (*((volatile unsigned int*)(0x423C8094UL))) +#define bM4_I2S2_ER_TXERR (*((volatile unsigned int*)(0x423C8100UL))) +#define bM4_I2S2_ER_RXERR (*((volatile unsigned int*)(0x423C8104UL))) +#define bM4_I2S2_CFGR_I2SSTD0 (*((volatile unsigned int*)(0x423C8180UL))) +#define bM4_I2S2_CFGR_I2SSTD1 (*((volatile unsigned int*)(0x423C8184UL))) +#define bM4_I2S2_CFGR_DATLEN0 (*((volatile unsigned int*)(0x423C8188UL))) +#define bM4_I2S2_CFGR_DATLEN1 (*((volatile unsigned int*)(0x423C818CUL))) +#define bM4_I2S2_CFGR_CHLEN (*((volatile unsigned int*)(0x423C8190UL))) +#define bM4_I2S2_CFGR_PCMSYNC (*((volatile unsigned int*)(0x423C8194UL))) +#define bM4_I2S2_PR_I2SDIV0 (*((volatile unsigned int*)(0x423C8300UL))) +#define bM4_I2S2_PR_I2SDIV1 (*((volatile unsigned int*)(0x423C8304UL))) +#define bM4_I2S2_PR_I2SDIV2 (*((volatile unsigned int*)(0x423C8308UL))) +#define bM4_I2S2_PR_I2SDIV3 (*((volatile unsigned int*)(0x423C830CUL))) +#define bM4_I2S2_PR_I2SDIV4 (*((volatile unsigned int*)(0x423C8310UL))) +#define bM4_I2S2_PR_I2SDIV5 (*((volatile unsigned int*)(0x423C8314UL))) +#define bM4_I2S2_PR_I2SDIV6 (*((volatile unsigned int*)(0x423C8318UL))) +#define bM4_I2S2_PR_I2SDIV7 (*((volatile unsigned int*)(0x423C831CUL))) +#define bM4_I2S3_CTRL_TXE (*((volatile unsigned int*)(0x42440000UL))) +#define bM4_I2S3_CTRL_TXIE (*((volatile unsigned int*)(0x42440004UL))) +#define bM4_I2S3_CTRL_RXE (*((volatile unsigned int*)(0x42440008UL))) +#define bM4_I2S3_CTRL_RXIE (*((volatile unsigned int*)(0x4244000CUL))) +#define bM4_I2S3_CTRL_EIE (*((volatile unsigned int*)(0x42440010UL))) +#define bM4_I2S3_CTRL_WMS (*((volatile unsigned int*)(0x42440014UL))) +#define bM4_I2S3_CTRL_ODD (*((volatile unsigned int*)(0x42440018UL))) +#define bM4_I2S3_CTRL_MCKOE (*((volatile unsigned int*)(0x4244001CUL))) +#define bM4_I2S3_CTRL_TXBIRQWL0 (*((volatile unsigned int*)(0x42440020UL))) +#define bM4_I2S3_CTRL_TXBIRQWL1 (*((volatile unsigned int*)(0x42440024UL))) +#define bM4_I2S3_CTRL_TXBIRQWL2 (*((volatile unsigned int*)(0x42440028UL))) +#define bM4_I2S3_CTRL_RXBIRQWL0 (*((volatile unsigned int*)(0x42440030UL))) +#define bM4_I2S3_CTRL_RXBIRQWL1 (*((volatile unsigned int*)(0x42440034UL))) +#define bM4_I2S3_CTRL_RXBIRQWL2 (*((volatile unsigned int*)(0x42440038UL))) +#define bM4_I2S3_CTRL_FIFOR (*((volatile unsigned int*)(0x42440040UL))) +#define bM4_I2S3_CTRL_CODECRC (*((volatile unsigned int*)(0x42440044UL))) +#define bM4_I2S3_CTRL_I2SPLLSEL (*((volatile unsigned int*)(0x42440048UL))) +#define bM4_I2S3_CTRL_SDOE (*((volatile unsigned int*)(0x4244004CUL))) +#define bM4_I2S3_CTRL_LRCKOE (*((volatile unsigned int*)(0x42440050UL))) +#define bM4_I2S3_CTRL_CKOE (*((volatile unsigned int*)(0x42440054UL))) +#define bM4_I2S3_CTRL_DUPLEX (*((volatile unsigned int*)(0x42440058UL))) +#define bM4_I2S3_CTRL_CLKSEL (*((volatile unsigned int*)(0x4244005CUL))) +#define bM4_I2S3_SR_TXBA (*((volatile unsigned int*)(0x42440080UL))) +#define bM4_I2S3_SR_RXBA (*((volatile unsigned int*)(0x42440084UL))) +#define bM4_I2S3_SR_TXBE (*((volatile unsigned int*)(0x42440088UL))) +#define bM4_I2S3_SR_TXBF (*((volatile unsigned int*)(0x4244008CUL))) +#define bM4_I2S3_SR_RXBE (*((volatile unsigned int*)(0x42440090UL))) +#define bM4_I2S3_SR_RXBF (*((volatile unsigned int*)(0x42440094UL))) +#define bM4_I2S3_ER_TXERR (*((volatile unsigned int*)(0x42440100UL))) +#define bM4_I2S3_ER_RXERR (*((volatile unsigned int*)(0x42440104UL))) +#define bM4_I2S3_CFGR_I2SSTD0 (*((volatile unsigned int*)(0x42440180UL))) +#define bM4_I2S3_CFGR_I2SSTD1 (*((volatile unsigned int*)(0x42440184UL))) +#define bM4_I2S3_CFGR_DATLEN0 (*((volatile unsigned int*)(0x42440188UL))) +#define bM4_I2S3_CFGR_DATLEN1 (*((volatile unsigned int*)(0x4244018CUL))) +#define bM4_I2S3_CFGR_CHLEN (*((volatile unsigned int*)(0x42440190UL))) +#define bM4_I2S3_CFGR_PCMSYNC (*((volatile unsigned int*)(0x42440194UL))) +#define bM4_I2S3_PR_I2SDIV0 (*((volatile unsigned int*)(0x42440300UL))) +#define bM4_I2S3_PR_I2SDIV1 (*((volatile unsigned int*)(0x42440304UL))) +#define bM4_I2S3_PR_I2SDIV2 (*((volatile unsigned int*)(0x42440308UL))) +#define bM4_I2S3_PR_I2SDIV3 (*((volatile unsigned int*)(0x4244030CUL))) +#define bM4_I2S3_PR_I2SDIV4 (*((volatile unsigned int*)(0x42440310UL))) +#define bM4_I2S3_PR_I2SDIV5 (*((volatile unsigned int*)(0x42440314UL))) +#define bM4_I2S3_PR_I2SDIV6 (*((volatile unsigned int*)(0x42440318UL))) +#define bM4_I2S3_PR_I2SDIV7 (*((volatile unsigned int*)(0x4244031CUL))) +#define bM4_I2S4_CTRL_TXE (*((volatile unsigned int*)(0x42448000UL))) +#define bM4_I2S4_CTRL_TXIE (*((volatile unsigned int*)(0x42448004UL))) +#define bM4_I2S4_CTRL_RXE (*((volatile unsigned int*)(0x42448008UL))) +#define bM4_I2S4_CTRL_RXIE (*((volatile unsigned int*)(0x4244800CUL))) +#define bM4_I2S4_CTRL_EIE (*((volatile unsigned int*)(0x42448010UL))) +#define bM4_I2S4_CTRL_WMS (*((volatile unsigned int*)(0x42448014UL))) +#define bM4_I2S4_CTRL_ODD (*((volatile unsigned int*)(0x42448018UL))) +#define bM4_I2S4_CTRL_MCKOE (*((volatile unsigned int*)(0x4244801CUL))) +#define bM4_I2S4_CTRL_TXBIRQWL0 (*((volatile unsigned int*)(0x42448020UL))) +#define bM4_I2S4_CTRL_TXBIRQWL1 (*((volatile unsigned int*)(0x42448024UL))) +#define bM4_I2S4_CTRL_TXBIRQWL2 (*((volatile unsigned int*)(0x42448028UL))) +#define bM4_I2S4_CTRL_RXBIRQWL0 (*((volatile unsigned int*)(0x42448030UL))) +#define bM4_I2S4_CTRL_RXBIRQWL1 (*((volatile unsigned int*)(0x42448034UL))) +#define bM4_I2S4_CTRL_RXBIRQWL2 (*((volatile unsigned int*)(0x42448038UL))) +#define bM4_I2S4_CTRL_FIFOR (*((volatile unsigned int*)(0x42448040UL))) +#define bM4_I2S4_CTRL_CODECRC (*((volatile unsigned int*)(0x42448044UL))) +#define bM4_I2S4_CTRL_I2SPLLSEL (*((volatile unsigned int*)(0x42448048UL))) +#define bM4_I2S4_CTRL_SDOE (*((volatile unsigned int*)(0x4244804CUL))) +#define bM4_I2S4_CTRL_LRCKOE (*((volatile unsigned int*)(0x42448050UL))) +#define bM4_I2S4_CTRL_CKOE (*((volatile unsigned int*)(0x42448054UL))) +#define bM4_I2S4_CTRL_DUPLEX (*((volatile unsigned int*)(0x42448058UL))) +#define bM4_I2S4_CTRL_CLKSEL (*((volatile unsigned int*)(0x4244805CUL))) +#define bM4_I2S4_SR_TXBA (*((volatile unsigned int*)(0x42448080UL))) +#define bM4_I2S4_SR_RXBA (*((volatile unsigned int*)(0x42448084UL))) +#define bM4_I2S4_SR_TXBE (*((volatile unsigned int*)(0x42448088UL))) +#define bM4_I2S4_SR_TXBF (*((volatile unsigned int*)(0x4244808CUL))) +#define bM4_I2S4_SR_RXBE (*((volatile unsigned int*)(0x42448090UL))) +#define bM4_I2S4_SR_RXBF (*((volatile unsigned int*)(0x42448094UL))) +#define bM4_I2S4_ER_TXERR (*((volatile unsigned int*)(0x42448100UL))) +#define bM4_I2S4_ER_RXERR (*((volatile unsigned int*)(0x42448104UL))) +#define bM4_I2S4_CFGR_I2SSTD0 (*((volatile unsigned int*)(0x42448180UL))) +#define bM4_I2S4_CFGR_I2SSTD1 (*((volatile unsigned int*)(0x42448184UL))) +#define bM4_I2S4_CFGR_DATLEN0 (*((volatile unsigned int*)(0x42448188UL))) +#define bM4_I2S4_CFGR_DATLEN1 (*((volatile unsigned int*)(0x4244818CUL))) +#define bM4_I2S4_CFGR_CHLEN (*((volatile unsigned int*)(0x42448190UL))) +#define bM4_I2S4_CFGR_PCMSYNC (*((volatile unsigned int*)(0x42448194UL))) +#define bM4_I2S4_PR_I2SDIV0 (*((volatile unsigned int*)(0x42448300UL))) +#define bM4_I2S4_PR_I2SDIV1 (*((volatile unsigned int*)(0x42448304UL))) +#define bM4_I2S4_PR_I2SDIV2 (*((volatile unsigned int*)(0x42448308UL))) +#define bM4_I2S4_PR_I2SDIV3 (*((volatile unsigned int*)(0x4244830CUL))) +#define bM4_I2S4_PR_I2SDIV4 (*((volatile unsigned int*)(0x42448310UL))) +#define bM4_I2S4_PR_I2SDIV5 (*((volatile unsigned int*)(0x42448314UL))) +#define bM4_I2S4_PR_I2SDIV6 (*((volatile unsigned int*)(0x42448318UL))) +#define bM4_I2S4_PR_I2SDIV7 (*((volatile unsigned int*)(0x4244831CUL))) +#define bM4_INTC_NMICR_NMITRG (*((volatile unsigned int*)(0x42A20000UL))) +#define bM4_INTC_NMICR_NSMPCLK0 (*((volatile unsigned int*)(0x42A20010UL))) +#define bM4_INTC_NMICR_NSMPCLK1 (*((volatile unsigned int*)(0x42A20014UL))) +#define bM4_INTC_NMICR_NFEN (*((volatile unsigned int*)(0x42A2001CUL))) +#define bM4_INTC_NMIENR_NMIENR (*((volatile unsigned int*)(0x42A20080UL))) +#define bM4_INTC_NMIENR_SWDTENR (*((volatile unsigned int*)(0x42A20084UL))) +#define bM4_INTC_NMIENR_PVD1ENR (*((volatile unsigned int*)(0x42A20088UL))) +#define bM4_INTC_NMIENR_PVD2ENR (*((volatile unsigned int*)(0x42A2008CUL))) +#define bM4_INTC_NMIENR_XTALSTPENR (*((volatile unsigned int*)(0x42A20094UL))) +#define bM4_INTC_NMIENR_REPENR (*((volatile unsigned int*)(0x42A200A0UL))) +#define bM4_INTC_NMIENR_RECCENR (*((volatile unsigned int*)(0x42A200A4UL))) +#define bM4_INTC_NMIENR_BUSMENR (*((volatile unsigned int*)(0x42A200A8UL))) +#define bM4_INTC_NMIENR_WDTENR (*((volatile unsigned int*)(0x42A200ACUL))) +#define bM4_INTC_NMIFR_NMIFR (*((volatile unsigned int*)(0x42A20100UL))) +#define bM4_INTC_NMIFR_SWDTFR (*((volatile unsigned int*)(0x42A20104UL))) +#define bM4_INTC_NMIFR_PVD1FR (*((volatile unsigned int*)(0x42A20108UL))) +#define bM4_INTC_NMIFR_PVD2FR (*((volatile unsigned int*)(0x42A2010CUL))) +#define bM4_INTC_NMIFR_XTALSTPFR (*((volatile unsigned int*)(0x42A20114UL))) +#define bM4_INTC_NMIFR_REPFR (*((volatile unsigned int*)(0x42A20120UL))) +#define bM4_INTC_NMIFR_RECCFR (*((volatile unsigned int*)(0x42A20124UL))) +#define bM4_INTC_NMIFR_BUSMFR (*((volatile unsigned int*)(0x42A20128UL))) +#define bM4_INTC_NMIFR_WDTFR (*((volatile unsigned int*)(0x42A2012CUL))) +#define bM4_INTC_NMICFR_NMICFR (*((volatile unsigned int*)(0x42A20180UL))) +#define bM4_INTC_NMICFR_SWDTCFR (*((volatile unsigned int*)(0x42A20184UL))) +#define bM4_INTC_NMICFR_PVD1CFR (*((volatile unsigned int*)(0x42A20188UL))) +#define bM4_INTC_NMICFR_PVD2CFR (*((volatile unsigned int*)(0x42A2018CUL))) +#define bM4_INTC_NMICFR_XTALSTPCFR (*((volatile unsigned int*)(0x42A20194UL))) +#define bM4_INTC_NMICFR_REPCFR (*((volatile unsigned int*)(0x42A201A0UL))) +#define bM4_INTC_NMICFR_RECCCFR (*((volatile unsigned int*)(0x42A201A4UL))) +#define bM4_INTC_NMICFR_BUSMCFR (*((volatile unsigned int*)(0x42A201A8UL))) +#define bM4_INTC_NMICFR_WDTCFR (*((volatile unsigned int*)(0x42A201ACUL))) +#define bM4_INTC_EIRQCR0_EIRQTRG0 (*((volatile unsigned int*)(0x42A20200UL))) +#define bM4_INTC_EIRQCR0_EIRQTRG1 (*((volatile unsigned int*)(0x42A20204UL))) +#define bM4_INTC_EIRQCR0_EISMPCLK0 (*((volatile unsigned int*)(0x42A20210UL))) +#define bM4_INTC_EIRQCR0_EISMPCLK1 (*((volatile unsigned int*)(0x42A20214UL))) +#define bM4_INTC_EIRQCR0_EFEN (*((volatile unsigned int*)(0x42A2021CUL))) +#define bM4_INTC_EIRQCR1_EIRQTRG0 (*((volatile unsigned int*)(0x42A20280UL))) +#define bM4_INTC_EIRQCR1_EIRQTRG1 (*((volatile unsigned int*)(0x42A20284UL))) +#define bM4_INTC_EIRQCR1_EISMPCLK0 (*((volatile unsigned int*)(0x42A20290UL))) +#define bM4_INTC_EIRQCR1_EISMPCLK1 (*((volatile unsigned int*)(0x42A20294UL))) +#define bM4_INTC_EIRQCR1_EFEN (*((volatile unsigned int*)(0x42A2029CUL))) +#define bM4_INTC_EIRQCR2_EIRQTRG0 (*((volatile unsigned int*)(0x42A20300UL))) +#define bM4_INTC_EIRQCR2_EIRQTRG1 (*((volatile unsigned int*)(0x42A20304UL))) +#define bM4_INTC_EIRQCR2_EISMPCLK0 (*((volatile unsigned int*)(0x42A20310UL))) +#define bM4_INTC_EIRQCR2_EISMPCLK1 (*((volatile unsigned int*)(0x42A20314UL))) +#define bM4_INTC_EIRQCR2_EFEN (*((volatile unsigned int*)(0x42A2031CUL))) +#define bM4_INTC_EIRQCR3_EIRQTRG0 (*((volatile unsigned int*)(0x42A20380UL))) +#define bM4_INTC_EIRQCR3_EIRQTRG1 (*((volatile unsigned int*)(0x42A20384UL))) +#define bM4_INTC_EIRQCR3_EISMPCLK0 (*((volatile unsigned int*)(0x42A20390UL))) +#define bM4_INTC_EIRQCR3_EISMPCLK1 (*((volatile unsigned int*)(0x42A20394UL))) +#define bM4_INTC_EIRQCR3_EFEN (*((volatile unsigned int*)(0x42A2039CUL))) +#define bM4_INTC_EIRQCR4_EIRQTRG0 (*((volatile unsigned int*)(0x42A20400UL))) +#define bM4_INTC_EIRQCR4_EIRQTRG1 (*((volatile unsigned int*)(0x42A20404UL))) +#define bM4_INTC_EIRQCR4_EISMPCLK0 (*((volatile unsigned int*)(0x42A20410UL))) +#define bM4_INTC_EIRQCR4_EISMPCLK1 (*((volatile unsigned int*)(0x42A20414UL))) +#define bM4_INTC_EIRQCR4_EFEN (*((volatile unsigned int*)(0x42A2041CUL))) +#define bM4_INTC_EIRQCR5_EIRQTRG0 (*((volatile unsigned int*)(0x42A20480UL))) +#define bM4_INTC_EIRQCR5_EIRQTRG1 (*((volatile unsigned int*)(0x42A20484UL))) +#define bM4_INTC_EIRQCR5_EISMPCLK0 (*((volatile unsigned int*)(0x42A20490UL))) +#define bM4_INTC_EIRQCR5_EISMPCLK1 (*((volatile unsigned int*)(0x42A20494UL))) +#define bM4_INTC_EIRQCR5_EFEN (*((volatile unsigned int*)(0x42A2049CUL))) +#define bM4_INTC_EIRQCR6_EIRQTRG0 (*((volatile unsigned int*)(0x42A20500UL))) +#define bM4_INTC_EIRQCR6_EIRQTRG1 (*((volatile unsigned int*)(0x42A20504UL))) +#define bM4_INTC_EIRQCR6_EISMPCLK0 (*((volatile unsigned int*)(0x42A20510UL))) +#define bM4_INTC_EIRQCR6_EISMPCLK1 (*((volatile unsigned int*)(0x42A20514UL))) +#define bM4_INTC_EIRQCR6_EFEN (*((volatile unsigned int*)(0x42A2051CUL))) +#define bM4_INTC_EIRQCR7_EIRQTRG0 (*((volatile unsigned int*)(0x42A20580UL))) +#define bM4_INTC_EIRQCR7_EIRQTRG1 (*((volatile unsigned int*)(0x42A20584UL))) +#define bM4_INTC_EIRQCR7_EISMPCLK0 (*((volatile unsigned int*)(0x42A20590UL))) +#define bM4_INTC_EIRQCR7_EISMPCLK1 (*((volatile unsigned int*)(0x42A20594UL))) +#define bM4_INTC_EIRQCR7_EFEN (*((volatile unsigned int*)(0x42A2059CUL))) +#define bM4_INTC_EIRQCR8_EIRQTRG0 (*((volatile unsigned int*)(0x42A20600UL))) +#define bM4_INTC_EIRQCR8_EIRQTRG1 (*((volatile unsigned int*)(0x42A20604UL))) +#define bM4_INTC_EIRQCR8_EISMPCLK0 (*((volatile unsigned int*)(0x42A20610UL))) +#define bM4_INTC_EIRQCR8_EISMPCLK1 (*((volatile unsigned int*)(0x42A20614UL))) +#define bM4_INTC_EIRQCR8_EFEN (*((volatile unsigned int*)(0x42A2061CUL))) +#define bM4_INTC_EIRQCR9_EIRQTRG0 (*((volatile unsigned int*)(0x42A20680UL))) +#define bM4_INTC_EIRQCR9_EIRQTRG1 (*((volatile unsigned int*)(0x42A20684UL))) +#define bM4_INTC_EIRQCR9_EISMPCLK0 (*((volatile unsigned int*)(0x42A20690UL))) +#define bM4_INTC_EIRQCR9_EISMPCLK1 (*((volatile unsigned int*)(0x42A20694UL))) +#define bM4_INTC_EIRQCR9_EFEN (*((volatile unsigned int*)(0x42A2069CUL))) +#define bM4_INTC_EIRQCR10_EIRQTRG0 (*((volatile unsigned int*)(0x42A20700UL))) +#define bM4_INTC_EIRQCR10_EIRQTRG1 (*((volatile unsigned int*)(0x42A20704UL))) +#define bM4_INTC_EIRQCR10_EISMPCLK0 (*((volatile unsigned int*)(0x42A20710UL))) +#define bM4_INTC_EIRQCR10_EISMPCLK1 (*((volatile unsigned int*)(0x42A20714UL))) +#define bM4_INTC_EIRQCR10_EFEN (*((volatile unsigned int*)(0x42A2071CUL))) +#define bM4_INTC_EIRQCR11_EIRQTRG0 (*((volatile unsigned int*)(0x42A20780UL))) +#define bM4_INTC_EIRQCR11_EIRQTRG1 (*((volatile unsigned int*)(0x42A20784UL))) +#define bM4_INTC_EIRQCR11_EISMPCLK0 (*((volatile unsigned int*)(0x42A20790UL))) +#define bM4_INTC_EIRQCR11_EISMPCLK1 (*((volatile unsigned int*)(0x42A20794UL))) +#define bM4_INTC_EIRQCR11_EFEN (*((volatile unsigned int*)(0x42A2079CUL))) +#define bM4_INTC_EIRQCR12_EIRQTRG0 (*((volatile unsigned int*)(0x42A20800UL))) +#define bM4_INTC_EIRQCR12_EIRQTRG1 (*((volatile unsigned int*)(0x42A20804UL))) +#define bM4_INTC_EIRQCR12_EISMPCLK0 (*((volatile unsigned int*)(0x42A20810UL))) +#define bM4_INTC_EIRQCR12_EISMPCLK1 (*((volatile unsigned int*)(0x42A20814UL))) +#define bM4_INTC_EIRQCR12_EFEN (*((volatile unsigned int*)(0x42A2081CUL))) +#define bM4_INTC_EIRQCR13_EIRQTRG0 (*((volatile unsigned int*)(0x42A20880UL))) +#define bM4_INTC_EIRQCR13_EIRQTRG1 (*((volatile unsigned int*)(0x42A20884UL))) +#define bM4_INTC_EIRQCR13_EISMPCLK0 (*((volatile unsigned int*)(0x42A20890UL))) +#define bM4_INTC_EIRQCR13_EISMPCLK1 (*((volatile unsigned int*)(0x42A20894UL))) +#define bM4_INTC_EIRQCR13_EFEN (*((volatile unsigned int*)(0x42A2089CUL))) +#define bM4_INTC_EIRQCR14_EIRQTRG0 (*((volatile unsigned int*)(0x42A20900UL))) +#define bM4_INTC_EIRQCR14_EIRQTRG1 (*((volatile unsigned int*)(0x42A20904UL))) +#define bM4_INTC_EIRQCR14_EISMPCLK0 (*((volatile unsigned int*)(0x42A20910UL))) +#define bM4_INTC_EIRQCR14_EISMPCLK1 (*((volatile unsigned int*)(0x42A20914UL))) +#define bM4_INTC_EIRQCR14_EFEN (*((volatile unsigned int*)(0x42A2091CUL))) +#define bM4_INTC_EIRQCR15_EIRQTRG0 (*((volatile unsigned int*)(0x42A20980UL))) +#define bM4_INTC_EIRQCR15_EIRQTRG1 (*((volatile unsigned int*)(0x42A20984UL))) +#define bM4_INTC_EIRQCR15_EISMPCLK0 (*((volatile unsigned int*)(0x42A20990UL))) +#define bM4_INTC_EIRQCR15_EISMPCLK1 (*((volatile unsigned int*)(0x42A20994UL))) +#define bM4_INTC_EIRQCR15_EFEN (*((volatile unsigned int*)(0x42A2099CUL))) +#define bM4_INTC_WUPEN_EIRQWUEN0 (*((volatile unsigned int*)(0x42A20A00UL))) +#define bM4_INTC_WUPEN_EIRQWUEN1 (*((volatile unsigned int*)(0x42A20A04UL))) +#define bM4_INTC_WUPEN_EIRQWUEN2 (*((volatile unsigned int*)(0x42A20A08UL))) +#define bM4_INTC_WUPEN_EIRQWUEN3 (*((volatile unsigned int*)(0x42A20A0CUL))) +#define bM4_INTC_WUPEN_EIRQWUEN4 (*((volatile unsigned int*)(0x42A20A10UL))) +#define bM4_INTC_WUPEN_EIRQWUEN5 (*((volatile unsigned int*)(0x42A20A14UL))) +#define bM4_INTC_WUPEN_EIRQWUEN6 (*((volatile unsigned int*)(0x42A20A18UL))) +#define bM4_INTC_WUPEN_EIRQWUEN7 (*((volatile unsigned int*)(0x42A20A1CUL))) +#define bM4_INTC_WUPEN_EIRQWUEN8 (*((volatile unsigned int*)(0x42A20A20UL))) +#define bM4_INTC_WUPEN_EIRQWUEN9 (*((volatile unsigned int*)(0x42A20A24UL))) +#define bM4_INTC_WUPEN_EIRQWUEN10 (*((volatile unsigned int*)(0x42A20A28UL))) +#define bM4_INTC_WUPEN_EIRQWUEN11 (*((volatile unsigned int*)(0x42A20A2CUL))) +#define bM4_INTC_WUPEN_EIRQWUEN12 (*((volatile unsigned int*)(0x42A20A30UL))) +#define bM4_INTC_WUPEN_EIRQWUEN13 (*((volatile unsigned int*)(0x42A20A34UL))) +#define bM4_INTC_WUPEN_EIRQWUEN14 (*((volatile unsigned int*)(0x42A20A38UL))) +#define bM4_INTC_WUPEN_EIRQWUEN15 (*((volatile unsigned int*)(0x42A20A3CUL))) +#define bM4_INTC_WUPEN_SWDTWUEN (*((volatile unsigned int*)(0x42A20A40UL))) +#define bM4_INTC_WUPEN_PVD1WUEN (*((volatile unsigned int*)(0x42A20A44UL))) +#define bM4_INTC_WUPEN_PVD2WUEN (*((volatile unsigned int*)(0x42A20A48UL))) +#define bM4_INTC_WUPEN_CMPI0WUEN (*((volatile unsigned int*)(0x42A20A4CUL))) +#define bM4_INTC_WUPEN_WKTMWUEN (*((volatile unsigned int*)(0x42A20A50UL))) +#define bM4_INTC_WUPEN_RTCALMWUEN (*((volatile unsigned int*)(0x42A20A54UL))) +#define bM4_INTC_WUPEN_RTCPRDWUEN (*((volatile unsigned int*)(0x42A20A58UL))) +#define bM4_INTC_WUPEN_TMR0WUEN (*((volatile unsigned int*)(0x42A20A5CUL))) +#define bM4_INTC_WUPEN_RXWUEN (*((volatile unsigned int*)(0x42A20A64UL))) +#define bM4_INTC_EIFR_EIFR0 (*((volatile unsigned int*)(0x42A20A80UL))) +#define bM4_INTC_EIFR_EIFR1 (*((volatile unsigned int*)(0x42A20A84UL))) +#define bM4_INTC_EIFR_EIFR2 (*((volatile unsigned int*)(0x42A20A88UL))) +#define bM4_INTC_EIFR_EIFR3 (*((volatile unsigned int*)(0x42A20A8CUL))) +#define bM4_INTC_EIFR_EIFR4 (*((volatile unsigned int*)(0x42A20A90UL))) +#define bM4_INTC_EIFR_EIFR5 (*((volatile unsigned int*)(0x42A20A94UL))) +#define bM4_INTC_EIFR_EIFR6 (*((volatile unsigned int*)(0x42A20A98UL))) +#define bM4_INTC_EIFR_EIFR7 (*((volatile unsigned int*)(0x42A20A9CUL))) +#define bM4_INTC_EIFR_EIFR8 (*((volatile unsigned int*)(0x42A20AA0UL))) +#define bM4_INTC_EIFR_EIFR9 (*((volatile unsigned int*)(0x42A20AA4UL))) +#define bM4_INTC_EIFR_EIFR10 (*((volatile unsigned int*)(0x42A20AA8UL))) +#define bM4_INTC_EIFR_EIFR11 (*((volatile unsigned int*)(0x42A20AACUL))) +#define bM4_INTC_EIFR_EIFR12 (*((volatile unsigned int*)(0x42A20AB0UL))) +#define bM4_INTC_EIFR_EIFR13 (*((volatile unsigned int*)(0x42A20AB4UL))) +#define bM4_INTC_EIFR_EIFR14 (*((volatile unsigned int*)(0x42A20AB8UL))) +#define bM4_INTC_EIFR_EIFR15 (*((volatile unsigned int*)(0x42A20ABCUL))) +#define bM4_INTC_EICFR_EICFR0 (*((volatile unsigned int*)(0x42A20B00UL))) +#define bM4_INTC_EICFR_EICFR1 (*((volatile unsigned int*)(0x42A20B04UL))) +#define bM4_INTC_EICFR_EICFR2 (*((volatile unsigned int*)(0x42A20B08UL))) +#define bM4_INTC_EICFR_EICFR3 (*((volatile unsigned int*)(0x42A20B0CUL))) +#define bM4_INTC_EICFR_EICFR4 (*((volatile unsigned int*)(0x42A20B10UL))) +#define bM4_INTC_EICFR_EICFR5 (*((volatile unsigned int*)(0x42A20B14UL))) +#define bM4_INTC_EICFR_EICFR6 (*((volatile unsigned int*)(0x42A20B18UL))) +#define bM4_INTC_EICFR_EICFR7 (*((volatile unsigned int*)(0x42A20B1CUL))) +#define bM4_INTC_EICFR_EICFR8 (*((volatile unsigned int*)(0x42A20B20UL))) +#define bM4_INTC_EICFR_EICFR9 (*((volatile unsigned int*)(0x42A20B24UL))) +#define bM4_INTC_EICFR_EICFR10 (*((volatile unsigned int*)(0x42A20B28UL))) +#define bM4_INTC_EICFR_EICFR11 (*((volatile unsigned int*)(0x42A20B2CUL))) +#define bM4_INTC_EICFR_EICFR12 (*((volatile unsigned int*)(0x42A20B30UL))) +#define bM4_INTC_EICFR_EICFR13 (*((volatile unsigned int*)(0x42A20B34UL))) +#define bM4_INTC_EICFR_EICFR14 (*((volatile unsigned int*)(0x42A20B38UL))) +#define bM4_INTC_EICFR_EICFR15 (*((volatile unsigned int*)(0x42A20B3CUL))) +#define bM4_INTC_SEL0_INTSEL0 (*((volatile unsigned int*)(0x42A20B80UL))) +#define bM4_INTC_SEL0_INTSEL1 (*((volatile unsigned int*)(0x42A20B84UL))) +#define bM4_INTC_SEL0_INTSEL2 (*((volatile unsigned int*)(0x42A20B88UL))) +#define bM4_INTC_SEL0_INTSEL3 (*((volatile unsigned int*)(0x42A20B8CUL))) +#define bM4_INTC_SEL0_INTSEL4 (*((volatile unsigned int*)(0x42A20B90UL))) +#define bM4_INTC_SEL0_INTSEL5 (*((volatile unsigned int*)(0x42A20B94UL))) +#define bM4_INTC_SEL0_INTSEL6 (*((volatile unsigned int*)(0x42A20B98UL))) +#define bM4_INTC_SEL0_INTSEL7 (*((volatile unsigned int*)(0x42A20B9CUL))) +#define bM4_INTC_SEL0_INTSEL8 (*((volatile unsigned int*)(0x42A20BA0UL))) +#define bM4_INTC_SEL1_INTSEL0 (*((volatile unsigned int*)(0x42A20C00UL))) +#define bM4_INTC_SEL1_INTSEL1 (*((volatile unsigned int*)(0x42A20C04UL))) +#define bM4_INTC_SEL1_INTSEL2 (*((volatile unsigned int*)(0x42A20C08UL))) +#define bM4_INTC_SEL1_INTSEL3 (*((volatile unsigned int*)(0x42A20C0CUL))) +#define bM4_INTC_SEL1_INTSEL4 (*((volatile unsigned int*)(0x42A20C10UL))) +#define bM4_INTC_SEL1_INTSEL5 (*((volatile unsigned int*)(0x42A20C14UL))) +#define bM4_INTC_SEL1_INTSEL6 (*((volatile unsigned int*)(0x42A20C18UL))) +#define bM4_INTC_SEL1_INTSEL7 (*((volatile unsigned int*)(0x42A20C1CUL))) +#define bM4_INTC_SEL1_INTSEL8 (*((volatile unsigned int*)(0x42A20C20UL))) +#define bM4_INTC_SEL2_INTSEL0 (*((volatile unsigned int*)(0x42A20C80UL))) +#define bM4_INTC_SEL2_INTSEL1 (*((volatile unsigned int*)(0x42A20C84UL))) +#define bM4_INTC_SEL2_INTSEL2 (*((volatile unsigned int*)(0x42A20C88UL))) +#define bM4_INTC_SEL2_INTSEL3 (*((volatile unsigned int*)(0x42A20C8CUL))) +#define bM4_INTC_SEL2_INTSEL4 (*((volatile unsigned int*)(0x42A20C90UL))) +#define bM4_INTC_SEL2_INTSEL5 (*((volatile unsigned int*)(0x42A20C94UL))) +#define bM4_INTC_SEL2_INTSEL6 (*((volatile unsigned int*)(0x42A20C98UL))) +#define bM4_INTC_SEL2_INTSEL7 (*((volatile unsigned int*)(0x42A20C9CUL))) +#define bM4_INTC_SEL2_INTSEL8 (*((volatile unsigned int*)(0x42A20CA0UL))) +#define bM4_INTC_SEL3_INTSEL0 (*((volatile unsigned int*)(0x42A20D00UL))) +#define bM4_INTC_SEL3_INTSEL1 (*((volatile unsigned int*)(0x42A20D04UL))) +#define bM4_INTC_SEL3_INTSEL2 (*((volatile unsigned int*)(0x42A20D08UL))) +#define bM4_INTC_SEL3_INTSEL3 (*((volatile unsigned int*)(0x42A20D0CUL))) +#define bM4_INTC_SEL3_INTSEL4 (*((volatile unsigned int*)(0x42A20D10UL))) +#define bM4_INTC_SEL3_INTSEL5 (*((volatile unsigned int*)(0x42A20D14UL))) +#define bM4_INTC_SEL3_INTSEL6 (*((volatile unsigned int*)(0x42A20D18UL))) +#define bM4_INTC_SEL3_INTSEL7 (*((volatile unsigned int*)(0x42A20D1CUL))) +#define bM4_INTC_SEL3_INTSEL8 (*((volatile unsigned int*)(0x42A20D20UL))) +#define bM4_INTC_SEL4_INTSEL0 (*((volatile unsigned int*)(0x42A20D80UL))) +#define bM4_INTC_SEL4_INTSEL1 (*((volatile unsigned int*)(0x42A20D84UL))) +#define bM4_INTC_SEL4_INTSEL2 (*((volatile unsigned int*)(0x42A20D88UL))) +#define bM4_INTC_SEL4_INTSEL3 (*((volatile unsigned int*)(0x42A20D8CUL))) +#define bM4_INTC_SEL4_INTSEL4 (*((volatile unsigned int*)(0x42A20D90UL))) +#define bM4_INTC_SEL4_INTSEL5 (*((volatile unsigned int*)(0x42A20D94UL))) +#define bM4_INTC_SEL4_INTSEL6 (*((volatile unsigned int*)(0x42A20D98UL))) +#define bM4_INTC_SEL4_INTSEL7 (*((volatile unsigned int*)(0x42A20D9CUL))) +#define bM4_INTC_SEL4_INTSEL8 (*((volatile unsigned int*)(0x42A20DA0UL))) +#define bM4_INTC_SEL5_INTSEL0 (*((volatile unsigned int*)(0x42A20E00UL))) +#define bM4_INTC_SEL5_INTSEL1 (*((volatile unsigned int*)(0x42A20E04UL))) +#define bM4_INTC_SEL5_INTSEL2 (*((volatile unsigned int*)(0x42A20E08UL))) +#define bM4_INTC_SEL5_INTSEL3 (*((volatile unsigned int*)(0x42A20E0CUL))) +#define bM4_INTC_SEL5_INTSEL4 (*((volatile unsigned int*)(0x42A20E10UL))) +#define bM4_INTC_SEL5_INTSEL5 (*((volatile unsigned int*)(0x42A20E14UL))) +#define bM4_INTC_SEL5_INTSEL6 (*((volatile unsigned int*)(0x42A20E18UL))) +#define bM4_INTC_SEL5_INTSEL7 (*((volatile unsigned int*)(0x42A20E1CUL))) +#define bM4_INTC_SEL5_INTSEL8 (*((volatile unsigned int*)(0x42A20E20UL))) +#define bM4_INTC_SEL6_INTSEL0 (*((volatile unsigned int*)(0x42A20E80UL))) +#define bM4_INTC_SEL6_INTSEL1 (*((volatile unsigned int*)(0x42A20E84UL))) +#define bM4_INTC_SEL6_INTSEL2 (*((volatile unsigned int*)(0x42A20E88UL))) +#define bM4_INTC_SEL6_INTSEL3 (*((volatile unsigned int*)(0x42A20E8CUL))) +#define bM4_INTC_SEL6_INTSEL4 (*((volatile unsigned int*)(0x42A20E90UL))) +#define bM4_INTC_SEL6_INTSEL5 (*((volatile unsigned int*)(0x42A20E94UL))) +#define bM4_INTC_SEL6_INTSEL6 (*((volatile unsigned int*)(0x42A20E98UL))) +#define bM4_INTC_SEL6_INTSEL7 (*((volatile unsigned int*)(0x42A20E9CUL))) +#define bM4_INTC_SEL6_INTSEL8 (*((volatile unsigned int*)(0x42A20EA0UL))) +#define bM4_INTC_SEL7_INTSEL0 (*((volatile unsigned int*)(0x42A20F00UL))) +#define bM4_INTC_SEL7_INTSEL1 (*((volatile unsigned int*)(0x42A20F04UL))) +#define bM4_INTC_SEL7_INTSEL2 (*((volatile unsigned int*)(0x42A20F08UL))) +#define bM4_INTC_SEL7_INTSEL3 (*((volatile unsigned int*)(0x42A20F0CUL))) +#define bM4_INTC_SEL7_INTSEL4 (*((volatile unsigned int*)(0x42A20F10UL))) +#define bM4_INTC_SEL7_INTSEL5 (*((volatile unsigned int*)(0x42A20F14UL))) +#define bM4_INTC_SEL7_INTSEL6 (*((volatile unsigned int*)(0x42A20F18UL))) +#define bM4_INTC_SEL7_INTSEL7 (*((volatile unsigned int*)(0x42A20F1CUL))) +#define bM4_INTC_SEL7_INTSEL8 (*((volatile unsigned int*)(0x42A20F20UL))) +#define bM4_INTC_SEL8_INTSEL0 (*((volatile unsigned int*)(0x42A20F80UL))) +#define bM4_INTC_SEL8_INTSEL1 (*((volatile unsigned int*)(0x42A20F84UL))) +#define bM4_INTC_SEL8_INTSEL2 (*((volatile unsigned int*)(0x42A20F88UL))) +#define bM4_INTC_SEL8_INTSEL3 (*((volatile unsigned int*)(0x42A20F8CUL))) +#define bM4_INTC_SEL8_INTSEL4 (*((volatile unsigned int*)(0x42A20F90UL))) +#define bM4_INTC_SEL8_INTSEL5 (*((volatile unsigned int*)(0x42A20F94UL))) +#define bM4_INTC_SEL8_INTSEL6 (*((volatile unsigned int*)(0x42A20F98UL))) +#define bM4_INTC_SEL8_INTSEL7 (*((volatile unsigned int*)(0x42A20F9CUL))) +#define bM4_INTC_SEL8_INTSEL8 (*((volatile unsigned int*)(0x42A20FA0UL))) +#define bM4_INTC_SEL9_INTSEL0 (*((volatile unsigned int*)(0x42A21000UL))) +#define bM4_INTC_SEL9_INTSEL1 (*((volatile unsigned int*)(0x42A21004UL))) +#define bM4_INTC_SEL9_INTSEL2 (*((volatile unsigned int*)(0x42A21008UL))) +#define bM4_INTC_SEL9_INTSEL3 (*((volatile unsigned int*)(0x42A2100CUL))) +#define bM4_INTC_SEL9_INTSEL4 (*((volatile unsigned int*)(0x42A21010UL))) +#define bM4_INTC_SEL9_INTSEL5 (*((volatile unsigned int*)(0x42A21014UL))) +#define bM4_INTC_SEL9_INTSEL6 (*((volatile unsigned int*)(0x42A21018UL))) +#define bM4_INTC_SEL9_INTSEL7 (*((volatile unsigned int*)(0x42A2101CUL))) +#define bM4_INTC_SEL9_INTSEL8 (*((volatile unsigned int*)(0x42A21020UL))) +#define bM4_INTC_SEL10_INTSEL0 (*((volatile unsigned int*)(0x42A21080UL))) +#define bM4_INTC_SEL10_INTSEL1 (*((volatile unsigned int*)(0x42A21084UL))) +#define bM4_INTC_SEL10_INTSEL2 (*((volatile unsigned int*)(0x42A21088UL))) +#define bM4_INTC_SEL10_INTSEL3 (*((volatile unsigned int*)(0x42A2108CUL))) +#define bM4_INTC_SEL10_INTSEL4 (*((volatile unsigned int*)(0x42A21090UL))) +#define bM4_INTC_SEL10_INTSEL5 (*((volatile unsigned int*)(0x42A21094UL))) +#define bM4_INTC_SEL10_INTSEL6 (*((volatile unsigned int*)(0x42A21098UL))) +#define bM4_INTC_SEL10_INTSEL7 (*((volatile unsigned int*)(0x42A2109CUL))) +#define bM4_INTC_SEL10_INTSEL8 (*((volatile unsigned int*)(0x42A210A0UL))) +#define bM4_INTC_SEL11_INTSEL0 (*((volatile unsigned int*)(0x42A21100UL))) +#define bM4_INTC_SEL11_INTSEL1 (*((volatile unsigned int*)(0x42A21104UL))) +#define bM4_INTC_SEL11_INTSEL2 (*((volatile unsigned int*)(0x42A21108UL))) +#define bM4_INTC_SEL11_INTSEL3 (*((volatile unsigned int*)(0x42A2110CUL))) +#define bM4_INTC_SEL11_INTSEL4 (*((volatile unsigned int*)(0x42A21110UL))) +#define bM4_INTC_SEL11_INTSEL5 (*((volatile unsigned int*)(0x42A21114UL))) +#define bM4_INTC_SEL11_INTSEL6 (*((volatile unsigned int*)(0x42A21118UL))) +#define bM4_INTC_SEL11_INTSEL7 (*((volatile unsigned int*)(0x42A2111CUL))) +#define bM4_INTC_SEL11_INTSEL8 (*((volatile unsigned int*)(0x42A21120UL))) +#define bM4_INTC_SEL12_INTSEL0 (*((volatile unsigned int*)(0x42A21180UL))) +#define bM4_INTC_SEL12_INTSEL1 (*((volatile unsigned int*)(0x42A21184UL))) +#define bM4_INTC_SEL12_INTSEL2 (*((volatile unsigned int*)(0x42A21188UL))) +#define bM4_INTC_SEL12_INTSEL3 (*((volatile unsigned int*)(0x42A2118CUL))) +#define bM4_INTC_SEL12_INTSEL4 (*((volatile unsigned int*)(0x42A21190UL))) +#define bM4_INTC_SEL12_INTSEL5 (*((volatile unsigned int*)(0x42A21194UL))) +#define bM4_INTC_SEL12_INTSEL6 (*((volatile unsigned int*)(0x42A21198UL))) +#define bM4_INTC_SEL12_INTSEL7 (*((volatile unsigned int*)(0x42A2119CUL))) +#define bM4_INTC_SEL12_INTSEL8 (*((volatile unsigned int*)(0x42A211A0UL))) +#define bM4_INTC_SEL13_INTSEL0 (*((volatile unsigned int*)(0x42A21200UL))) +#define bM4_INTC_SEL13_INTSEL1 (*((volatile unsigned int*)(0x42A21204UL))) +#define bM4_INTC_SEL13_INTSEL2 (*((volatile unsigned int*)(0x42A21208UL))) +#define bM4_INTC_SEL13_INTSEL3 (*((volatile unsigned int*)(0x42A2120CUL))) +#define bM4_INTC_SEL13_INTSEL4 (*((volatile unsigned int*)(0x42A21210UL))) +#define bM4_INTC_SEL13_INTSEL5 (*((volatile unsigned int*)(0x42A21214UL))) +#define bM4_INTC_SEL13_INTSEL6 (*((volatile unsigned int*)(0x42A21218UL))) +#define bM4_INTC_SEL13_INTSEL7 (*((volatile unsigned int*)(0x42A2121CUL))) +#define bM4_INTC_SEL13_INTSEL8 (*((volatile unsigned int*)(0x42A21220UL))) +#define bM4_INTC_SEL14_INTSEL0 (*((volatile unsigned int*)(0x42A21280UL))) +#define bM4_INTC_SEL14_INTSEL1 (*((volatile unsigned int*)(0x42A21284UL))) +#define bM4_INTC_SEL14_INTSEL2 (*((volatile unsigned int*)(0x42A21288UL))) +#define bM4_INTC_SEL14_INTSEL3 (*((volatile unsigned int*)(0x42A2128CUL))) +#define bM4_INTC_SEL14_INTSEL4 (*((volatile unsigned int*)(0x42A21290UL))) +#define bM4_INTC_SEL14_INTSEL5 (*((volatile unsigned int*)(0x42A21294UL))) +#define bM4_INTC_SEL14_INTSEL6 (*((volatile unsigned int*)(0x42A21298UL))) +#define bM4_INTC_SEL14_INTSEL7 (*((volatile unsigned int*)(0x42A2129CUL))) +#define bM4_INTC_SEL14_INTSEL8 (*((volatile unsigned int*)(0x42A212A0UL))) +#define bM4_INTC_SEL15_INTSEL0 (*((volatile unsigned int*)(0x42A21300UL))) +#define bM4_INTC_SEL15_INTSEL1 (*((volatile unsigned int*)(0x42A21304UL))) +#define bM4_INTC_SEL15_INTSEL2 (*((volatile unsigned int*)(0x42A21308UL))) +#define bM4_INTC_SEL15_INTSEL3 (*((volatile unsigned int*)(0x42A2130CUL))) +#define bM4_INTC_SEL15_INTSEL4 (*((volatile unsigned int*)(0x42A21310UL))) +#define bM4_INTC_SEL15_INTSEL5 (*((volatile unsigned int*)(0x42A21314UL))) +#define bM4_INTC_SEL15_INTSEL6 (*((volatile unsigned int*)(0x42A21318UL))) +#define bM4_INTC_SEL15_INTSEL7 (*((volatile unsigned int*)(0x42A2131CUL))) +#define bM4_INTC_SEL15_INTSEL8 (*((volatile unsigned int*)(0x42A21320UL))) +#define bM4_INTC_SEL16_INTSEL0 (*((volatile unsigned int*)(0x42A21380UL))) +#define bM4_INTC_SEL16_INTSEL1 (*((volatile unsigned int*)(0x42A21384UL))) +#define bM4_INTC_SEL16_INTSEL2 (*((volatile unsigned int*)(0x42A21388UL))) +#define bM4_INTC_SEL16_INTSEL3 (*((volatile unsigned int*)(0x42A2138CUL))) +#define bM4_INTC_SEL16_INTSEL4 (*((volatile unsigned int*)(0x42A21390UL))) +#define bM4_INTC_SEL16_INTSEL5 (*((volatile unsigned int*)(0x42A21394UL))) +#define bM4_INTC_SEL16_INTSEL6 (*((volatile unsigned int*)(0x42A21398UL))) +#define bM4_INTC_SEL16_INTSEL7 (*((volatile unsigned int*)(0x42A2139CUL))) +#define bM4_INTC_SEL16_INTSEL8 (*((volatile unsigned int*)(0x42A213A0UL))) +#define bM4_INTC_SEL17_INTSEL0 (*((volatile unsigned int*)(0x42A21400UL))) +#define bM4_INTC_SEL17_INTSEL1 (*((volatile unsigned int*)(0x42A21404UL))) +#define bM4_INTC_SEL17_INTSEL2 (*((volatile unsigned int*)(0x42A21408UL))) +#define bM4_INTC_SEL17_INTSEL3 (*((volatile unsigned int*)(0x42A2140CUL))) +#define bM4_INTC_SEL17_INTSEL4 (*((volatile unsigned int*)(0x42A21410UL))) +#define bM4_INTC_SEL17_INTSEL5 (*((volatile unsigned int*)(0x42A21414UL))) +#define bM4_INTC_SEL17_INTSEL6 (*((volatile unsigned int*)(0x42A21418UL))) +#define bM4_INTC_SEL17_INTSEL7 (*((volatile unsigned int*)(0x42A2141CUL))) +#define bM4_INTC_SEL17_INTSEL8 (*((volatile unsigned int*)(0x42A21420UL))) +#define bM4_INTC_SEL18_INTSEL0 (*((volatile unsigned int*)(0x42A21480UL))) +#define bM4_INTC_SEL18_INTSEL1 (*((volatile unsigned int*)(0x42A21484UL))) +#define bM4_INTC_SEL18_INTSEL2 (*((volatile unsigned int*)(0x42A21488UL))) +#define bM4_INTC_SEL18_INTSEL3 (*((volatile unsigned int*)(0x42A2148CUL))) +#define bM4_INTC_SEL18_INTSEL4 (*((volatile unsigned int*)(0x42A21490UL))) +#define bM4_INTC_SEL18_INTSEL5 (*((volatile unsigned int*)(0x42A21494UL))) +#define bM4_INTC_SEL18_INTSEL6 (*((volatile unsigned int*)(0x42A21498UL))) +#define bM4_INTC_SEL18_INTSEL7 (*((volatile unsigned int*)(0x42A2149CUL))) +#define bM4_INTC_SEL18_INTSEL8 (*((volatile unsigned int*)(0x42A214A0UL))) +#define bM4_INTC_SEL19_INTSEL0 (*((volatile unsigned int*)(0x42A21500UL))) +#define bM4_INTC_SEL19_INTSEL1 (*((volatile unsigned int*)(0x42A21504UL))) +#define bM4_INTC_SEL19_INTSEL2 (*((volatile unsigned int*)(0x42A21508UL))) +#define bM4_INTC_SEL19_INTSEL3 (*((volatile unsigned int*)(0x42A2150CUL))) +#define bM4_INTC_SEL19_INTSEL4 (*((volatile unsigned int*)(0x42A21510UL))) +#define bM4_INTC_SEL19_INTSEL5 (*((volatile unsigned int*)(0x42A21514UL))) +#define bM4_INTC_SEL19_INTSEL6 (*((volatile unsigned int*)(0x42A21518UL))) +#define bM4_INTC_SEL19_INTSEL7 (*((volatile unsigned int*)(0x42A2151CUL))) +#define bM4_INTC_SEL19_INTSEL8 (*((volatile unsigned int*)(0x42A21520UL))) +#define bM4_INTC_SEL20_INTSEL0 (*((volatile unsigned int*)(0x42A21580UL))) +#define bM4_INTC_SEL20_INTSEL1 (*((volatile unsigned int*)(0x42A21584UL))) +#define bM4_INTC_SEL20_INTSEL2 (*((volatile unsigned int*)(0x42A21588UL))) +#define bM4_INTC_SEL20_INTSEL3 (*((volatile unsigned int*)(0x42A2158CUL))) +#define bM4_INTC_SEL20_INTSEL4 (*((volatile unsigned int*)(0x42A21590UL))) +#define bM4_INTC_SEL20_INTSEL5 (*((volatile unsigned int*)(0x42A21594UL))) +#define bM4_INTC_SEL20_INTSEL6 (*((volatile unsigned int*)(0x42A21598UL))) +#define bM4_INTC_SEL20_INTSEL7 (*((volatile unsigned int*)(0x42A2159CUL))) +#define bM4_INTC_SEL20_INTSEL8 (*((volatile unsigned int*)(0x42A215A0UL))) +#define bM4_INTC_SEL21_INTSEL0 (*((volatile unsigned int*)(0x42A21600UL))) +#define bM4_INTC_SEL21_INTSEL1 (*((volatile unsigned int*)(0x42A21604UL))) +#define bM4_INTC_SEL21_INTSEL2 (*((volatile unsigned int*)(0x42A21608UL))) +#define bM4_INTC_SEL21_INTSEL3 (*((volatile unsigned int*)(0x42A2160CUL))) +#define bM4_INTC_SEL21_INTSEL4 (*((volatile unsigned int*)(0x42A21610UL))) +#define bM4_INTC_SEL21_INTSEL5 (*((volatile unsigned int*)(0x42A21614UL))) +#define bM4_INTC_SEL21_INTSEL6 (*((volatile unsigned int*)(0x42A21618UL))) +#define bM4_INTC_SEL21_INTSEL7 (*((volatile unsigned int*)(0x42A2161CUL))) +#define bM4_INTC_SEL21_INTSEL8 (*((volatile unsigned int*)(0x42A21620UL))) +#define bM4_INTC_SEL22_INTSEL0 (*((volatile unsigned int*)(0x42A21680UL))) +#define bM4_INTC_SEL22_INTSEL1 (*((volatile unsigned int*)(0x42A21684UL))) +#define bM4_INTC_SEL22_INTSEL2 (*((volatile unsigned int*)(0x42A21688UL))) +#define bM4_INTC_SEL22_INTSEL3 (*((volatile unsigned int*)(0x42A2168CUL))) +#define bM4_INTC_SEL22_INTSEL4 (*((volatile unsigned int*)(0x42A21690UL))) +#define bM4_INTC_SEL22_INTSEL5 (*((volatile unsigned int*)(0x42A21694UL))) +#define bM4_INTC_SEL22_INTSEL6 (*((volatile unsigned int*)(0x42A21698UL))) +#define bM4_INTC_SEL22_INTSEL7 (*((volatile unsigned int*)(0x42A2169CUL))) +#define bM4_INTC_SEL22_INTSEL8 (*((volatile unsigned int*)(0x42A216A0UL))) +#define bM4_INTC_SEL23_INTSEL0 (*((volatile unsigned int*)(0x42A21700UL))) +#define bM4_INTC_SEL23_INTSEL1 (*((volatile unsigned int*)(0x42A21704UL))) +#define bM4_INTC_SEL23_INTSEL2 (*((volatile unsigned int*)(0x42A21708UL))) +#define bM4_INTC_SEL23_INTSEL3 (*((volatile unsigned int*)(0x42A2170CUL))) +#define bM4_INTC_SEL23_INTSEL4 (*((volatile unsigned int*)(0x42A21710UL))) +#define bM4_INTC_SEL23_INTSEL5 (*((volatile unsigned int*)(0x42A21714UL))) +#define bM4_INTC_SEL23_INTSEL6 (*((volatile unsigned int*)(0x42A21718UL))) +#define bM4_INTC_SEL23_INTSEL7 (*((volatile unsigned int*)(0x42A2171CUL))) +#define bM4_INTC_SEL23_INTSEL8 (*((volatile unsigned int*)(0x42A21720UL))) +#define bM4_INTC_SEL24_INTSEL0 (*((volatile unsigned int*)(0x42A21780UL))) +#define bM4_INTC_SEL24_INTSEL1 (*((volatile unsigned int*)(0x42A21784UL))) +#define bM4_INTC_SEL24_INTSEL2 (*((volatile unsigned int*)(0x42A21788UL))) +#define bM4_INTC_SEL24_INTSEL3 (*((volatile unsigned int*)(0x42A2178CUL))) +#define bM4_INTC_SEL24_INTSEL4 (*((volatile unsigned int*)(0x42A21790UL))) +#define bM4_INTC_SEL24_INTSEL5 (*((volatile unsigned int*)(0x42A21794UL))) +#define bM4_INTC_SEL24_INTSEL6 (*((volatile unsigned int*)(0x42A21798UL))) +#define bM4_INTC_SEL24_INTSEL7 (*((volatile unsigned int*)(0x42A2179CUL))) +#define bM4_INTC_SEL24_INTSEL8 (*((volatile unsigned int*)(0x42A217A0UL))) +#define bM4_INTC_SEL25_INTSEL0 (*((volatile unsigned int*)(0x42A21800UL))) +#define bM4_INTC_SEL25_INTSEL1 (*((volatile unsigned int*)(0x42A21804UL))) +#define bM4_INTC_SEL25_INTSEL2 (*((volatile unsigned int*)(0x42A21808UL))) +#define bM4_INTC_SEL25_INTSEL3 (*((volatile unsigned int*)(0x42A2180CUL))) +#define bM4_INTC_SEL25_INTSEL4 (*((volatile unsigned int*)(0x42A21810UL))) +#define bM4_INTC_SEL25_INTSEL5 (*((volatile unsigned int*)(0x42A21814UL))) +#define bM4_INTC_SEL25_INTSEL6 (*((volatile unsigned int*)(0x42A21818UL))) +#define bM4_INTC_SEL25_INTSEL7 (*((volatile unsigned int*)(0x42A2181CUL))) +#define bM4_INTC_SEL25_INTSEL8 (*((volatile unsigned int*)(0x42A21820UL))) +#define bM4_INTC_SEL26_INTSEL0 (*((volatile unsigned int*)(0x42A21880UL))) +#define bM4_INTC_SEL26_INTSEL1 (*((volatile unsigned int*)(0x42A21884UL))) +#define bM4_INTC_SEL26_INTSEL2 (*((volatile unsigned int*)(0x42A21888UL))) +#define bM4_INTC_SEL26_INTSEL3 (*((volatile unsigned int*)(0x42A2188CUL))) +#define bM4_INTC_SEL26_INTSEL4 (*((volatile unsigned int*)(0x42A21890UL))) +#define bM4_INTC_SEL26_INTSEL5 (*((volatile unsigned int*)(0x42A21894UL))) +#define bM4_INTC_SEL26_INTSEL6 (*((volatile unsigned int*)(0x42A21898UL))) +#define bM4_INTC_SEL26_INTSEL7 (*((volatile unsigned int*)(0x42A2189CUL))) +#define bM4_INTC_SEL26_INTSEL8 (*((volatile unsigned int*)(0x42A218A0UL))) +#define bM4_INTC_SEL27_INTSEL0 (*((volatile unsigned int*)(0x42A21900UL))) +#define bM4_INTC_SEL27_INTSEL1 (*((volatile unsigned int*)(0x42A21904UL))) +#define bM4_INTC_SEL27_INTSEL2 (*((volatile unsigned int*)(0x42A21908UL))) +#define bM4_INTC_SEL27_INTSEL3 (*((volatile unsigned int*)(0x42A2190CUL))) +#define bM4_INTC_SEL27_INTSEL4 (*((volatile unsigned int*)(0x42A21910UL))) +#define bM4_INTC_SEL27_INTSEL5 (*((volatile unsigned int*)(0x42A21914UL))) +#define bM4_INTC_SEL27_INTSEL6 (*((volatile unsigned int*)(0x42A21918UL))) +#define bM4_INTC_SEL27_INTSEL7 (*((volatile unsigned int*)(0x42A2191CUL))) +#define bM4_INTC_SEL27_INTSEL8 (*((volatile unsigned int*)(0x42A21920UL))) +#define bM4_INTC_SEL28_INTSEL0 (*((volatile unsigned int*)(0x42A21980UL))) +#define bM4_INTC_SEL28_INTSEL1 (*((volatile unsigned int*)(0x42A21984UL))) +#define bM4_INTC_SEL28_INTSEL2 (*((volatile unsigned int*)(0x42A21988UL))) +#define bM4_INTC_SEL28_INTSEL3 (*((volatile unsigned int*)(0x42A2198CUL))) +#define bM4_INTC_SEL28_INTSEL4 (*((volatile unsigned int*)(0x42A21990UL))) +#define bM4_INTC_SEL28_INTSEL5 (*((volatile unsigned int*)(0x42A21994UL))) +#define bM4_INTC_SEL28_INTSEL6 (*((volatile unsigned int*)(0x42A21998UL))) +#define bM4_INTC_SEL28_INTSEL7 (*((volatile unsigned int*)(0x42A2199CUL))) +#define bM4_INTC_SEL28_INTSEL8 (*((volatile unsigned int*)(0x42A219A0UL))) +#define bM4_INTC_SEL29_INTSEL0 (*((volatile unsigned int*)(0x42A21A00UL))) +#define bM4_INTC_SEL29_INTSEL1 (*((volatile unsigned int*)(0x42A21A04UL))) +#define bM4_INTC_SEL29_INTSEL2 (*((volatile unsigned int*)(0x42A21A08UL))) +#define bM4_INTC_SEL29_INTSEL3 (*((volatile unsigned int*)(0x42A21A0CUL))) +#define bM4_INTC_SEL29_INTSEL4 (*((volatile unsigned int*)(0x42A21A10UL))) +#define bM4_INTC_SEL29_INTSEL5 (*((volatile unsigned int*)(0x42A21A14UL))) +#define bM4_INTC_SEL29_INTSEL6 (*((volatile unsigned int*)(0x42A21A18UL))) +#define bM4_INTC_SEL29_INTSEL7 (*((volatile unsigned int*)(0x42A21A1CUL))) +#define bM4_INTC_SEL29_INTSEL8 (*((volatile unsigned int*)(0x42A21A20UL))) +#define bM4_INTC_SEL30_INTSEL0 (*((volatile unsigned int*)(0x42A21A80UL))) +#define bM4_INTC_SEL30_INTSEL1 (*((volatile unsigned int*)(0x42A21A84UL))) +#define bM4_INTC_SEL30_INTSEL2 (*((volatile unsigned int*)(0x42A21A88UL))) +#define bM4_INTC_SEL30_INTSEL3 (*((volatile unsigned int*)(0x42A21A8CUL))) +#define bM4_INTC_SEL30_INTSEL4 (*((volatile unsigned int*)(0x42A21A90UL))) +#define bM4_INTC_SEL30_INTSEL5 (*((volatile unsigned int*)(0x42A21A94UL))) +#define bM4_INTC_SEL30_INTSEL6 (*((volatile unsigned int*)(0x42A21A98UL))) +#define bM4_INTC_SEL30_INTSEL7 (*((volatile unsigned int*)(0x42A21A9CUL))) +#define bM4_INTC_SEL30_INTSEL8 (*((volatile unsigned int*)(0x42A21AA0UL))) +#define bM4_INTC_SEL31_INTSEL0 (*((volatile unsigned int*)(0x42A21B00UL))) +#define bM4_INTC_SEL31_INTSEL1 (*((volatile unsigned int*)(0x42A21B04UL))) +#define bM4_INTC_SEL31_INTSEL2 (*((volatile unsigned int*)(0x42A21B08UL))) +#define bM4_INTC_SEL31_INTSEL3 (*((volatile unsigned int*)(0x42A21B0CUL))) +#define bM4_INTC_SEL31_INTSEL4 (*((volatile unsigned int*)(0x42A21B10UL))) +#define bM4_INTC_SEL31_INTSEL5 (*((volatile unsigned int*)(0x42A21B14UL))) +#define bM4_INTC_SEL31_INTSEL6 (*((volatile unsigned int*)(0x42A21B18UL))) +#define bM4_INTC_SEL31_INTSEL7 (*((volatile unsigned int*)(0x42A21B1CUL))) +#define bM4_INTC_SEL31_INTSEL8 (*((volatile unsigned int*)(0x42A21B20UL))) +#define bM4_INTC_SEL32_INTSEL0 (*((volatile unsigned int*)(0x42A21B80UL))) +#define bM4_INTC_SEL32_INTSEL1 (*((volatile unsigned int*)(0x42A21B84UL))) +#define bM4_INTC_SEL32_INTSEL2 (*((volatile unsigned int*)(0x42A21B88UL))) +#define bM4_INTC_SEL32_INTSEL3 (*((volatile unsigned int*)(0x42A21B8CUL))) +#define bM4_INTC_SEL32_INTSEL4 (*((volatile unsigned int*)(0x42A21B90UL))) +#define bM4_INTC_SEL32_INTSEL5 (*((volatile unsigned int*)(0x42A21B94UL))) +#define bM4_INTC_SEL32_INTSEL6 (*((volatile unsigned int*)(0x42A21B98UL))) +#define bM4_INTC_SEL32_INTSEL7 (*((volatile unsigned int*)(0x42A21B9CUL))) +#define bM4_INTC_SEL32_INTSEL8 (*((volatile unsigned int*)(0x42A21BA0UL))) +#define bM4_INTC_SEL33_INTSEL0 (*((volatile unsigned int*)(0x42A21C00UL))) +#define bM4_INTC_SEL33_INTSEL1 (*((volatile unsigned int*)(0x42A21C04UL))) +#define bM4_INTC_SEL33_INTSEL2 (*((volatile unsigned int*)(0x42A21C08UL))) +#define bM4_INTC_SEL33_INTSEL3 (*((volatile unsigned int*)(0x42A21C0CUL))) +#define bM4_INTC_SEL33_INTSEL4 (*((volatile unsigned int*)(0x42A21C10UL))) +#define bM4_INTC_SEL33_INTSEL5 (*((volatile unsigned int*)(0x42A21C14UL))) +#define bM4_INTC_SEL33_INTSEL6 (*((volatile unsigned int*)(0x42A21C18UL))) +#define bM4_INTC_SEL33_INTSEL7 (*((volatile unsigned int*)(0x42A21C1CUL))) +#define bM4_INTC_SEL33_INTSEL8 (*((volatile unsigned int*)(0x42A21C20UL))) +#define bM4_INTC_SEL34_INTSEL0 (*((volatile unsigned int*)(0x42A21C80UL))) +#define bM4_INTC_SEL34_INTSEL1 (*((volatile unsigned int*)(0x42A21C84UL))) +#define bM4_INTC_SEL34_INTSEL2 (*((volatile unsigned int*)(0x42A21C88UL))) +#define bM4_INTC_SEL34_INTSEL3 (*((volatile unsigned int*)(0x42A21C8CUL))) +#define bM4_INTC_SEL34_INTSEL4 (*((volatile unsigned int*)(0x42A21C90UL))) +#define bM4_INTC_SEL34_INTSEL5 (*((volatile unsigned int*)(0x42A21C94UL))) +#define bM4_INTC_SEL34_INTSEL6 (*((volatile unsigned int*)(0x42A21C98UL))) +#define bM4_INTC_SEL34_INTSEL7 (*((volatile unsigned int*)(0x42A21C9CUL))) +#define bM4_INTC_SEL34_INTSEL8 (*((volatile unsigned int*)(0x42A21CA0UL))) +#define bM4_INTC_SEL35_INTSEL0 (*((volatile unsigned int*)(0x42A21D00UL))) +#define bM4_INTC_SEL35_INTSEL1 (*((volatile unsigned int*)(0x42A21D04UL))) +#define bM4_INTC_SEL35_INTSEL2 (*((volatile unsigned int*)(0x42A21D08UL))) +#define bM4_INTC_SEL35_INTSEL3 (*((volatile unsigned int*)(0x42A21D0CUL))) +#define bM4_INTC_SEL35_INTSEL4 (*((volatile unsigned int*)(0x42A21D10UL))) +#define bM4_INTC_SEL35_INTSEL5 (*((volatile unsigned int*)(0x42A21D14UL))) +#define bM4_INTC_SEL35_INTSEL6 (*((volatile unsigned int*)(0x42A21D18UL))) +#define bM4_INTC_SEL35_INTSEL7 (*((volatile unsigned int*)(0x42A21D1CUL))) +#define bM4_INTC_SEL35_INTSEL8 (*((volatile unsigned int*)(0x42A21D20UL))) +#define bM4_INTC_SEL36_INTSEL0 (*((volatile unsigned int*)(0x42A21D80UL))) +#define bM4_INTC_SEL36_INTSEL1 (*((volatile unsigned int*)(0x42A21D84UL))) +#define bM4_INTC_SEL36_INTSEL2 (*((volatile unsigned int*)(0x42A21D88UL))) +#define bM4_INTC_SEL36_INTSEL3 (*((volatile unsigned int*)(0x42A21D8CUL))) +#define bM4_INTC_SEL36_INTSEL4 (*((volatile unsigned int*)(0x42A21D90UL))) +#define bM4_INTC_SEL36_INTSEL5 (*((volatile unsigned int*)(0x42A21D94UL))) +#define bM4_INTC_SEL36_INTSEL6 (*((volatile unsigned int*)(0x42A21D98UL))) +#define bM4_INTC_SEL36_INTSEL7 (*((volatile unsigned int*)(0x42A21D9CUL))) +#define bM4_INTC_SEL36_INTSEL8 (*((volatile unsigned int*)(0x42A21DA0UL))) +#define bM4_INTC_SEL37_INTSEL0 (*((volatile unsigned int*)(0x42A21E00UL))) +#define bM4_INTC_SEL37_INTSEL1 (*((volatile unsigned int*)(0x42A21E04UL))) +#define bM4_INTC_SEL37_INTSEL2 (*((volatile unsigned int*)(0x42A21E08UL))) +#define bM4_INTC_SEL37_INTSEL3 (*((volatile unsigned int*)(0x42A21E0CUL))) +#define bM4_INTC_SEL37_INTSEL4 (*((volatile unsigned int*)(0x42A21E10UL))) +#define bM4_INTC_SEL37_INTSEL5 (*((volatile unsigned int*)(0x42A21E14UL))) +#define bM4_INTC_SEL37_INTSEL6 (*((volatile unsigned int*)(0x42A21E18UL))) +#define bM4_INTC_SEL37_INTSEL7 (*((volatile unsigned int*)(0x42A21E1CUL))) +#define bM4_INTC_SEL37_INTSEL8 (*((volatile unsigned int*)(0x42A21E20UL))) +#define bM4_INTC_SEL38_INTSEL0 (*((volatile unsigned int*)(0x42A21E80UL))) +#define bM4_INTC_SEL38_INTSEL1 (*((volatile unsigned int*)(0x42A21E84UL))) +#define bM4_INTC_SEL38_INTSEL2 (*((volatile unsigned int*)(0x42A21E88UL))) +#define bM4_INTC_SEL38_INTSEL3 (*((volatile unsigned int*)(0x42A21E8CUL))) +#define bM4_INTC_SEL38_INTSEL4 (*((volatile unsigned int*)(0x42A21E90UL))) +#define bM4_INTC_SEL38_INTSEL5 (*((volatile unsigned int*)(0x42A21E94UL))) +#define bM4_INTC_SEL38_INTSEL6 (*((volatile unsigned int*)(0x42A21E98UL))) +#define bM4_INTC_SEL38_INTSEL7 (*((volatile unsigned int*)(0x42A21E9CUL))) +#define bM4_INTC_SEL38_INTSEL8 (*((volatile unsigned int*)(0x42A21EA0UL))) +#define bM4_INTC_SEL39_INTSEL0 (*((volatile unsigned int*)(0x42A21F00UL))) +#define bM4_INTC_SEL39_INTSEL1 (*((volatile unsigned int*)(0x42A21F04UL))) +#define bM4_INTC_SEL39_INTSEL2 (*((volatile unsigned int*)(0x42A21F08UL))) +#define bM4_INTC_SEL39_INTSEL3 (*((volatile unsigned int*)(0x42A21F0CUL))) +#define bM4_INTC_SEL39_INTSEL4 (*((volatile unsigned int*)(0x42A21F10UL))) +#define bM4_INTC_SEL39_INTSEL5 (*((volatile unsigned int*)(0x42A21F14UL))) +#define bM4_INTC_SEL39_INTSEL6 (*((volatile unsigned int*)(0x42A21F18UL))) +#define bM4_INTC_SEL39_INTSEL7 (*((volatile unsigned int*)(0x42A21F1CUL))) +#define bM4_INTC_SEL39_INTSEL8 (*((volatile unsigned int*)(0x42A21F20UL))) +#define bM4_INTC_SEL40_INTSEL0 (*((volatile unsigned int*)(0x42A21F80UL))) +#define bM4_INTC_SEL40_INTSEL1 (*((volatile unsigned int*)(0x42A21F84UL))) +#define bM4_INTC_SEL40_INTSEL2 (*((volatile unsigned int*)(0x42A21F88UL))) +#define bM4_INTC_SEL40_INTSEL3 (*((volatile unsigned int*)(0x42A21F8CUL))) +#define bM4_INTC_SEL40_INTSEL4 (*((volatile unsigned int*)(0x42A21F90UL))) +#define bM4_INTC_SEL40_INTSEL5 (*((volatile unsigned int*)(0x42A21F94UL))) +#define bM4_INTC_SEL40_INTSEL6 (*((volatile unsigned int*)(0x42A21F98UL))) +#define bM4_INTC_SEL40_INTSEL7 (*((volatile unsigned int*)(0x42A21F9CUL))) +#define bM4_INTC_SEL40_INTSEL8 (*((volatile unsigned int*)(0x42A21FA0UL))) +#define bM4_INTC_SEL41_INTSEL0 (*((volatile unsigned int*)(0x42A22000UL))) +#define bM4_INTC_SEL41_INTSEL1 (*((volatile unsigned int*)(0x42A22004UL))) +#define bM4_INTC_SEL41_INTSEL2 (*((volatile unsigned int*)(0x42A22008UL))) +#define bM4_INTC_SEL41_INTSEL3 (*((volatile unsigned int*)(0x42A2200CUL))) +#define bM4_INTC_SEL41_INTSEL4 (*((volatile unsigned int*)(0x42A22010UL))) +#define bM4_INTC_SEL41_INTSEL5 (*((volatile unsigned int*)(0x42A22014UL))) +#define bM4_INTC_SEL41_INTSEL6 (*((volatile unsigned int*)(0x42A22018UL))) +#define bM4_INTC_SEL41_INTSEL7 (*((volatile unsigned int*)(0x42A2201CUL))) +#define bM4_INTC_SEL41_INTSEL8 (*((volatile unsigned int*)(0x42A22020UL))) +#define bM4_INTC_SEL42_INTSEL0 (*((volatile unsigned int*)(0x42A22080UL))) +#define bM4_INTC_SEL42_INTSEL1 (*((volatile unsigned int*)(0x42A22084UL))) +#define bM4_INTC_SEL42_INTSEL2 (*((volatile unsigned int*)(0x42A22088UL))) +#define bM4_INTC_SEL42_INTSEL3 (*((volatile unsigned int*)(0x42A2208CUL))) +#define bM4_INTC_SEL42_INTSEL4 (*((volatile unsigned int*)(0x42A22090UL))) +#define bM4_INTC_SEL42_INTSEL5 (*((volatile unsigned int*)(0x42A22094UL))) +#define bM4_INTC_SEL42_INTSEL6 (*((volatile unsigned int*)(0x42A22098UL))) +#define bM4_INTC_SEL42_INTSEL7 (*((volatile unsigned int*)(0x42A2209CUL))) +#define bM4_INTC_SEL42_INTSEL8 (*((volatile unsigned int*)(0x42A220A0UL))) +#define bM4_INTC_SEL43_INTSEL0 (*((volatile unsigned int*)(0x42A22100UL))) +#define bM4_INTC_SEL43_INTSEL1 (*((volatile unsigned int*)(0x42A22104UL))) +#define bM4_INTC_SEL43_INTSEL2 (*((volatile unsigned int*)(0x42A22108UL))) +#define bM4_INTC_SEL43_INTSEL3 (*((volatile unsigned int*)(0x42A2210CUL))) +#define bM4_INTC_SEL43_INTSEL4 (*((volatile unsigned int*)(0x42A22110UL))) +#define bM4_INTC_SEL43_INTSEL5 (*((volatile unsigned int*)(0x42A22114UL))) +#define bM4_INTC_SEL43_INTSEL6 (*((volatile unsigned int*)(0x42A22118UL))) +#define bM4_INTC_SEL43_INTSEL7 (*((volatile unsigned int*)(0x42A2211CUL))) +#define bM4_INTC_SEL43_INTSEL8 (*((volatile unsigned int*)(0x42A22120UL))) +#define bM4_INTC_SEL44_INTSEL0 (*((volatile unsigned int*)(0x42A22180UL))) +#define bM4_INTC_SEL44_INTSEL1 (*((volatile unsigned int*)(0x42A22184UL))) +#define bM4_INTC_SEL44_INTSEL2 (*((volatile unsigned int*)(0x42A22188UL))) +#define bM4_INTC_SEL44_INTSEL3 (*((volatile unsigned int*)(0x42A2218CUL))) +#define bM4_INTC_SEL44_INTSEL4 (*((volatile unsigned int*)(0x42A22190UL))) +#define bM4_INTC_SEL44_INTSEL5 (*((volatile unsigned int*)(0x42A22194UL))) +#define bM4_INTC_SEL44_INTSEL6 (*((volatile unsigned int*)(0x42A22198UL))) +#define bM4_INTC_SEL44_INTSEL7 (*((volatile unsigned int*)(0x42A2219CUL))) +#define bM4_INTC_SEL44_INTSEL8 (*((volatile unsigned int*)(0x42A221A0UL))) +#define bM4_INTC_SEL45_INTSEL0 (*((volatile unsigned int*)(0x42A22200UL))) +#define bM4_INTC_SEL45_INTSEL1 (*((volatile unsigned int*)(0x42A22204UL))) +#define bM4_INTC_SEL45_INTSEL2 (*((volatile unsigned int*)(0x42A22208UL))) +#define bM4_INTC_SEL45_INTSEL3 (*((volatile unsigned int*)(0x42A2220CUL))) +#define bM4_INTC_SEL45_INTSEL4 (*((volatile unsigned int*)(0x42A22210UL))) +#define bM4_INTC_SEL45_INTSEL5 (*((volatile unsigned int*)(0x42A22214UL))) +#define bM4_INTC_SEL45_INTSEL6 (*((volatile unsigned int*)(0x42A22218UL))) +#define bM4_INTC_SEL45_INTSEL7 (*((volatile unsigned int*)(0x42A2221CUL))) +#define bM4_INTC_SEL45_INTSEL8 (*((volatile unsigned int*)(0x42A22220UL))) +#define bM4_INTC_SEL46_INTSEL0 (*((volatile unsigned int*)(0x42A22280UL))) +#define bM4_INTC_SEL46_INTSEL1 (*((volatile unsigned int*)(0x42A22284UL))) +#define bM4_INTC_SEL46_INTSEL2 (*((volatile unsigned int*)(0x42A22288UL))) +#define bM4_INTC_SEL46_INTSEL3 (*((volatile unsigned int*)(0x42A2228CUL))) +#define bM4_INTC_SEL46_INTSEL4 (*((volatile unsigned int*)(0x42A22290UL))) +#define bM4_INTC_SEL46_INTSEL5 (*((volatile unsigned int*)(0x42A22294UL))) +#define bM4_INTC_SEL46_INTSEL6 (*((volatile unsigned int*)(0x42A22298UL))) +#define bM4_INTC_SEL46_INTSEL7 (*((volatile unsigned int*)(0x42A2229CUL))) +#define bM4_INTC_SEL46_INTSEL8 (*((volatile unsigned int*)(0x42A222A0UL))) +#define bM4_INTC_SEL47_INTSEL0 (*((volatile unsigned int*)(0x42A22300UL))) +#define bM4_INTC_SEL47_INTSEL1 (*((volatile unsigned int*)(0x42A22304UL))) +#define bM4_INTC_SEL47_INTSEL2 (*((volatile unsigned int*)(0x42A22308UL))) +#define bM4_INTC_SEL47_INTSEL3 (*((volatile unsigned int*)(0x42A2230CUL))) +#define bM4_INTC_SEL47_INTSEL4 (*((volatile unsigned int*)(0x42A22310UL))) +#define bM4_INTC_SEL47_INTSEL5 (*((volatile unsigned int*)(0x42A22314UL))) +#define bM4_INTC_SEL47_INTSEL6 (*((volatile unsigned int*)(0x42A22318UL))) +#define bM4_INTC_SEL47_INTSEL7 (*((volatile unsigned int*)(0x42A2231CUL))) +#define bM4_INTC_SEL47_INTSEL8 (*((volatile unsigned int*)(0x42A22320UL))) +#define bM4_INTC_SEL48_INTSEL0 (*((volatile unsigned int*)(0x42A22380UL))) +#define bM4_INTC_SEL48_INTSEL1 (*((volatile unsigned int*)(0x42A22384UL))) +#define bM4_INTC_SEL48_INTSEL2 (*((volatile unsigned int*)(0x42A22388UL))) +#define bM4_INTC_SEL48_INTSEL3 (*((volatile unsigned int*)(0x42A2238CUL))) +#define bM4_INTC_SEL48_INTSEL4 (*((volatile unsigned int*)(0x42A22390UL))) +#define bM4_INTC_SEL48_INTSEL5 (*((volatile unsigned int*)(0x42A22394UL))) +#define bM4_INTC_SEL48_INTSEL6 (*((volatile unsigned int*)(0x42A22398UL))) +#define bM4_INTC_SEL48_INTSEL7 (*((volatile unsigned int*)(0x42A2239CUL))) +#define bM4_INTC_SEL48_INTSEL8 (*((volatile unsigned int*)(0x42A223A0UL))) +#define bM4_INTC_SEL49_INTSEL0 (*((volatile unsigned int*)(0x42A22400UL))) +#define bM4_INTC_SEL49_INTSEL1 (*((volatile unsigned int*)(0x42A22404UL))) +#define bM4_INTC_SEL49_INTSEL2 (*((volatile unsigned int*)(0x42A22408UL))) +#define bM4_INTC_SEL49_INTSEL3 (*((volatile unsigned int*)(0x42A2240CUL))) +#define bM4_INTC_SEL49_INTSEL4 (*((volatile unsigned int*)(0x42A22410UL))) +#define bM4_INTC_SEL49_INTSEL5 (*((volatile unsigned int*)(0x42A22414UL))) +#define bM4_INTC_SEL49_INTSEL6 (*((volatile unsigned int*)(0x42A22418UL))) +#define bM4_INTC_SEL49_INTSEL7 (*((volatile unsigned int*)(0x42A2241CUL))) +#define bM4_INTC_SEL49_INTSEL8 (*((volatile unsigned int*)(0x42A22420UL))) +#define bM4_INTC_SEL50_INTSEL0 (*((volatile unsigned int*)(0x42A22480UL))) +#define bM4_INTC_SEL50_INTSEL1 (*((volatile unsigned int*)(0x42A22484UL))) +#define bM4_INTC_SEL50_INTSEL2 (*((volatile unsigned int*)(0x42A22488UL))) +#define bM4_INTC_SEL50_INTSEL3 (*((volatile unsigned int*)(0x42A2248CUL))) +#define bM4_INTC_SEL50_INTSEL4 (*((volatile unsigned int*)(0x42A22490UL))) +#define bM4_INTC_SEL50_INTSEL5 (*((volatile unsigned int*)(0x42A22494UL))) +#define bM4_INTC_SEL50_INTSEL6 (*((volatile unsigned int*)(0x42A22498UL))) +#define bM4_INTC_SEL50_INTSEL7 (*((volatile unsigned int*)(0x42A2249CUL))) +#define bM4_INTC_SEL50_INTSEL8 (*((volatile unsigned int*)(0x42A224A0UL))) +#define bM4_INTC_SEL51_INTSEL0 (*((volatile unsigned int*)(0x42A22500UL))) +#define bM4_INTC_SEL51_INTSEL1 (*((volatile unsigned int*)(0x42A22504UL))) +#define bM4_INTC_SEL51_INTSEL2 (*((volatile unsigned int*)(0x42A22508UL))) +#define bM4_INTC_SEL51_INTSEL3 (*((volatile unsigned int*)(0x42A2250CUL))) +#define bM4_INTC_SEL51_INTSEL4 (*((volatile unsigned int*)(0x42A22510UL))) +#define bM4_INTC_SEL51_INTSEL5 (*((volatile unsigned int*)(0x42A22514UL))) +#define bM4_INTC_SEL51_INTSEL6 (*((volatile unsigned int*)(0x42A22518UL))) +#define bM4_INTC_SEL51_INTSEL7 (*((volatile unsigned int*)(0x42A2251CUL))) +#define bM4_INTC_SEL51_INTSEL8 (*((volatile unsigned int*)(0x42A22520UL))) +#define bM4_INTC_SEL52_INTSEL0 (*((volatile unsigned int*)(0x42A22580UL))) +#define bM4_INTC_SEL52_INTSEL1 (*((volatile unsigned int*)(0x42A22584UL))) +#define bM4_INTC_SEL52_INTSEL2 (*((volatile unsigned int*)(0x42A22588UL))) +#define bM4_INTC_SEL52_INTSEL3 (*((volatile unsigned int*)(0x42A2258CUL))) +#define bM4_INTC_SEL52_INTSEL4 (*((volatile unsigned int*)(0x42A22590UL))) +#define bM4_INTC_SEL52_INTSEL5 (*((volatile unsigned int*)(0x42A22594UL))) +#define bM4_INTC_SEL52_INTSEL6 (*((volatile unsigned int*)(0x42A22598UL))) +#define bM4_INTC_SEL52_INTSEL7 (*((volatile unsigned int*)(0x42A2259CUL))) +#define bM4_INTC_SEL52_INTSEL8 (*((volatile unsigned int*)(0x42A225A0UL))) +#define bM4_INTC_SEL53_INTSEL0 (*((volatile unsigned int*)(0x42A22600UL))) +#define bM4_INTC_SEL53_INTSEL1 (*((volatile unsigned int*)(0x42A22604UL))) +#define bM4_INTC_SEL53_INTSEL2 (*((volatile unsigned int*)(0x42A22608UL))) +#define bM4_INTC_SEL53_INTSEL3 (*((volatile unsigned int*)(0x42A2260CUL))) +#define bM4_INTC_SEL53_INTSEL4 (*((volatile unsigned int*)(0x42A22610UL))) +#define bM4_INTC_SEL53_INTSEL5 (*((volatile unsigned int*)(0x42A22614UL))) +#define bM4_INTC_SEL53_INTSEL6 (*((volatile unsigned int*)(0x42A22618UL))) +#define bM4_INTC_SEL53_INTSEL7 (*((volatile unsigned int*)(0x42A2261CUL))) +#define bM4_INTC_SEL53_INTSEL8 (*((volatile unsigned int*)(0x42A22620UL))) +#define bM4_INTC_SEL54_INTSEL0 (*((volatile unsigned int*)(0x42A22680UL))) +#define bM4_INTC_SEL54_INTSEL1 (*((volatile unsigned int*)(0x42A22684UL))) +#define bM4_INTC_SEL54_INTSEL2 (*((volatile unsigned int*)(0x42A22688UL))) +#define bM4_INTC_SEL54_INTSEL3 (*((volatile unsigned int*)(0x42A2268CUL))) +#define bM4_INTC_SEL54_INTSEL4 (*((volatile unsigned int*)(0x42A22690UL))) +#define bM4_INTC_SEL54_INTSEL5 (*((volatile unsigned int*)(0x42A22694UL))) +#define bM4_INTC_SEL54_INTSEL6 (*((volatile unsigned int*)(0x42A22698UL))) +#define bM4_INTC_SEL54_INTSEL7 (*((volatile unsigned int*)(0x42A2269CUL))) +#define bM4_INTC_SEL54_INTSEL8 (*((volatile unsigned int*)(0x42A226A0UL))) +#define bM4_INTC_SEL55_INTSEL0 (*((volatile unsigned int*)(0x42A22700UL))) +#define bM4_INTC_SEL55_INTSEL1 (*((volatile unsigned int*)(0x42A22704UL))) +#define bM4_INTC_SEL55_INTSEL2 (*((volatile unsigned int*)(0x42A22708UL))) +#define bM4_INTC_SEL55_INTSEL3 (*((volatile unsigned int*)(0x42A2270CUL))) +#define bM4_INTC_SEL55_INTSEL4 (*((volatile unsigned int*)(0x42A22710UL))) +#define bM4_INTC_SEL55_INTSEL5 (*((volatile unsigned int*)(0x42A22714UL))) +#define bM4_INTC_SEL55_INTSEL6 (*((volatile unsigned int*)(0x42A22718UL))) +#define bM4_INTC_SEL55_INTSEL7 (*((volatile unsigned int*)(0x42A2271CUL))) +#define bM4_INTC_SEL55_INTSEL8 (*((volatile unsigned int*)(0x42A22720UL))) +#define bM4_INTC_SEL56_INTSEL0 (*((volatile unsigned int*)(0x42A22780UL))) +#define bM4_INTC_SEL56_INTSEL1 (*((volatile unsigned int*)(0x42A22784UL))) +#define bM4_INTC_SEL56_INTSEL2 (*((volatile unsigned int*)(0x42A22788UL))) +#define bM4_INTC_SEL56_INTSEL3 (*((volatile unsigned int*)(0x42A2278CUL))) +#define bM4_INTC_SEL56_INTSEL4 (*((volatile unsigned int*)(0x42A22790UL))) +#define bM4_INTC_SEL56_INTSEL5 (*((volatile unsigned int*)(0x42A22794UL))) +#define bM4_INTC_SEL56_INTSEL6 (*((volatile unsigned int*)(0x42A22798UL))) +#define bM4_INTC_SEL56_INTSEL7 (*((volatile unsigned int*)(0x42A2279CUL))) +#define bM4_INTC_SEL56_INTSEL8 (*((volatile unsigned int*)(0x42A227A0UL))) +#define bM4_INTC_SEL57_INTSEL0 (*((volatile unsigned int*)(0x42A22800UL))) +#define bM4_INTC_SEL57_INTSEL1 (*((volatile unsigned int*)(0x42A22804UL))) +#define bM4_INTC_SEL57_INTSEL2 (*((volatile unsigned int*)(0x42A22808UL))) +#define bM4_INTC_SEL57_INTSEL3 (*((volatile unsigned int*)(0x42A2280CUL))) +#define bM4_INTC_SEL57_INTSEL4 (*((volatile unsigned int*)(0x42A22810UL))) +#define bM4_INTC_SEL57_INTSEL5 (*((volatile unsigned int*)(0x42A22814UL))) +#define bM4_INTC_SEL57_INTSEL6 (*((volatile unsigned int*)(0x42A22818UL))) +#define bM4_INTC_SEL57_INTSEL7 (*((volatile unsigned int*)(0x42A2281CUL))) +#define bM4_INTC_SEL57_INTSEL8 (*((volatile unsigned int*)(0x42A22820UL))) +#define bM4_INTC_SEL58_INTSEL0 (*((volatile unsigned int*)(0x42A22880UL))) +#define bM4_INTC_SEL58_INTSEL1 (*((volatile unsigned int*)(0x42A22884UL))) +#define bM4_INTC_SEL58_INTSEL2 (*((volatile unsigned int*)(0x42A22888UL))) +#define bM4_INTC_SEL58_INTSEL3 (*((volatile unsigned int*)(0x42A2288CUL))) +#define bM4_INTC_SEL58_INTSEL4 (*((volatile unsigned int*)(0x42A22890UL))) +#define bM4_INTC_SEL58_INTSEL5 (*((volatile unsigned int*)(0x42A22894UL))) +#define bM4_INTC_SEL58_INTSEL6 (*((volatile unsigned int*)(0x42A22898UL))) +#define bM4_INTC_SEL58_INTSEL7 (*((volatile unsigned int*)(0x42A2289CUL))) +#define bM4_INTC_SEL58_INTSEL8 (*((volatile unsigned int*)(0x42A228A0UL))) +#define bM4_INTC_SEL59_INTSEL0 (*((volatile unsigned int*)(0x42A22900UL))) +#define bM4_INTC_SEL59_INTSEL1 (*((volatile unsigned int*)(0x42A22904UL))) +#define bM4_INTC_SEL59_INTSEL2 (*((volatile unsigned int*)(0x42A22908UL))) +#define bM4_INTC_SEL59_INTSEL3 (*((volatile unsigned int*)(0x42A2290CUL))) +#define bM4_INTC_SEL59_INTSEL4 (*((volatile unsigned int*)(0x42A22910UL))) +#define bM4_INTC_SEL59_INTSEL5 (*((volatile unsigned int*)(0x42A22914UL))) +#define bM4_INTC_SEL59_INTSEL6 (*((volatile unsigned int*)(0x42A22918UL))) +#define bM4_INTC_SEL59_INTSEL7 (*((volatile unsigned int*)(0x42A2291CUL))) +#define bM4_INTC_SEL59_INTSEL8 (*((volatile unsigned int*)(0x42A22920UL))) +#define bM4_INTC_SEL60_INTSEL0 (*((volatile unsigned int*)(0x42A22980UL))) +#define bM4_INTC_SEL60_INTSEL1 (*((volatile unsigned int*)(0x42A22984UL))) +#define bM4_INTC_SEL60_INTSEL2 (*((volatile unsigned int*)(0x42A22988UL))) +#define bM4_INTC_SEL60_INTSEL3 (*((volatile unsigned int*)(0x42A2298CUL))) +#define bM4_INTC_SEL60_INTSEL4 (*((volatile unsigned int*)(0x42A22990UL))) +#define bM4_INTC_SEL60_INTSEL5 (*((volatile unsigned int*)(0x42A22994UL))) +#define bM4_INTC_SEL60_INTSEL6 (*((volatile unsigned int*)(0x42A22998UL))) +#define bM4_INTC_SEL60_INTSEL7 (*((volatile unsigned int*)(0x42A2299CUL))) +#define bM4_INTC_SEL60_INTSEL8 (*((volatile unsigned int*)(0x42A229A0UL))) +#define bM4_INTC_SEL61_INTSEL0 (*((volatile unsigned int*)(0x42A22A00UL))) +#define bM4_INTC_SEL61_INTSEL1 (*((volatile unsigned int*)(0x42A22A04UL))) +#define bM4_INTC_SEL61_INTSEL2 (*((volatile unsigned int*)(0x42A22A08UL))) +#define bM4_INTC_SEL61_INTSEL3 (*((volatile unsigned int*)(0x42A22A0CUL))) +#define bM4_INTC_SEL61_INTSEL4 (*((volatile unsigned int*)(0x42A22A10UL))) +#define bM4_INTC_SEL61_INTSEL5 (*((volatile unsigned int*)(0x42A22A14UL))) +#define bM4_INTC_SEL61_INTSEL6 (*((volatile unsigned int*)(0x42A22A18UL))) +#define bM4_INTC_SEL61_INTSEL7 (*((volatile unsigned int*)(0x42A22A1CUL))) +#define bM4_INTC_SEL61_INTSEL8 (*((volatile unsigned int*)(0x42A22A20UL))) +#define bM4_INTC_SEL62_INTSEL0 (*((volatile unsigned int*)(0x42A22A80UL))) +#define bM4_INTC_SEL62_INTSEL1 (*((volatile unsigned int*)(0x42A22A84UL))) +#define bM4_INTC_SEL62_INTSEL2 (*((volatile unsigned int*)(0x42A22A88UL))) +#define bM4_INTC_SEL62_INTSEL3 (*((volatile unsigned int*)(0x42A22A8CUL))) +#define bM4_INTC_SEL62_INTSEL4 (*((volatile unsigned int*)(0x42A22A90UL))) +#define bM4_INTC_SEL62_INTSEL5 (*((volatile unsigned int*)(0x42A22A94UL))) +#define bM4_INTC_SEL62_INTSEL6 (*((volatile unsigned int*)(0x42A22A98UL))) +#define bM4_INTC_SEL62_INTSEL7 (*((volatile unsigned int*)(0x42A22A9CUL))) +#define bM4_INTC_SEL62_INTSEL8 (*((volatile unsigned int*)(0x42A22AA0UL))) +#define bM4_INTC_SEL63_INTSEL0 (*((volatile unsigned int*)(0x42A22B00UL))) +#define bM4_INTC_SEL63_INTSEL1 (*((volatile unsigned int*)(0x42A22B04UL))) +#define bM4_INTC_SEL63_INTSEL2 (*((volatile unsigned int*)(0x42A22B08UL))) +#define bM4_INTC_SEL63_INTSEL3 (*((volatile unsigned int*)(0x42A22B0CUL))) +#define bM4_INTC_SEL63_INTSEL4 (*((volatile unsigned int*)(0x42A22B10UL))) +#define bM4_INTC_SEL63_INTSEL5 (*((volatile unsigned int*)(0x42A22B14UL))) +#define bM4_INTC_SEL63_INTSEL6 (*((volatile unsigned int*)(0x42A22B18UL))) +#define bM4_INTC_SEL63_INTSEL7 (*((volatile unsigned int*)(0x42A22B1CUL))) +#define bM4_INTC_SEL63_INTSEL8 (*((volatile unsigned int*)(0x42A22B20UL))) +#define bM4_INTC_SEL64_INTSEL0 (*((volatile unsigned int*)(0x42A22B80UL))) +#define bM4_INTC_SEL64_INTSEL1 (*((volatile unsigned int*)(0x42A22B84UL))) +#define bM4_INTC_SEL64_INTSEL2 (*((volatile unsigned int*)(0x42A22B88UL))) +#define bM4_INTC_SEL64_INTSEL3 (*((volatile unsigned int*)(0x42A22B8CUL))) +#define bM4_INTC_SEL64_INTSEL4 (*((volatile unsigned int*)(0x42A22B90UL))) +#define bM4_INTC_SEL64_INTSEL5 (*((volatile unsigned int*)(0x42A22B94UL))) +#define bM4_INTC_SEL64_INTSEL6 (*((volatile unsigned int*)(0x42A22B98UL))) +#define bM4_INTC_SEL64_INTSEL7 (*((volatile unsigned int*)(0x42A22B9CUL))) +#define bM4_INTC_SEL64_INTSEL8 (*((volatile unsigned int*)(0x42A22BA0UL))) +#define bM4_INTC_SEL65_INTSEL0 (*((volatile unsigned int*)(0x42A22C00UL))) +#define bM4_INTC_SEL65_INTSEL1 (*((volatile unsigned int*)(0x42A22C04UL))) +#define bM4_INTC_SEL65_INTSEL2 (*((volatile unsigned int*)(0x42A22C08UL))) +#define bM4_INTC_SEL65_INTSEL3 (*((volatile unsigned int*)(0x42A22C0CUL))) +#define bM4_INTC_SEL65_INTSEL4 (*((volatile unsigned int*)(0x42A22C10UL))) +#define bM4_INTC_SEL65_INTSEL5 (*((volatile unsigned int*)(0x42A22C14UL))) +#define bM4_INTC_SEL65_INTSEL6 (*((volatile unsigned int*)(0x42A22C18UL))) +#define bM4_INTC_SEL65_INTSEL7 (*((volatile unsigned int*)(0x42A22C1CUL))) +#define bM4_INTC_SEL65_INTSEL8 (*((volatile unsigned int*)(0x42A22C20UL))) +#define bM4_INTC_SEL66_INTSEL0 (*((volatile unsigned int*)(0x42A22C80UL))) +#define bM4_INTC_SEL66_INTSEL1 (*((volatile unsigned int*)(0x42A22C84UL))) +#define bM4_INTC_SEL66_INTSEL2 (*((volatile unsigned int*)(0x42A22C88UL))) +#define bM4_INTC_SEL66_INTSEL3 (*((volatile unsigned int*)(0x42A22C8CUL))) +#define bM4_INTC_SEL66_INTSEL4 (*((volatile unsigned int*)(0x42A22C90UL))) +#define bM4_INTC_SEL66_INTSEL5 (*((volatile unsigned int*)(0x42A22C94UL))) +#define bM4_INTC_SEL66_INTSEL6 (*((volatile unsigned int*)(0x42A22C98UL))) +#define bM4_INTC_SEL66_INTSEL7 (*((volatile unsigned int*)(0x42A22C9CUL))) +#define bM4_INTC_SEL66_INTSEL8 (*((volatile unsigned int*)(0x42A22CA0UL))) +#define bM4_INTC_SEL67_INTSEL0 (*((volatile unsigned int*)(0x42A22D00UL))) +#define bM4_INTC_SEL67_INTSEL1 (*((volatile unsigned int*)(0x42A22D04UL))) +#define bM4_INTC_SEL67_INTSEL2 (*((volatile unsigned int*)(0x42A22D08UL))) +#define bM4_INTC_SEL67_INTSEL3 (*((volatile unsigned int*)(0x42A22D0CUL))) +#define bM4_INTC_SEL67_INTSEL4 (*((volatile unsigned int*)(0x42A22D10UL))) +#define bM4_INTC_SEL67_INTSEL5 (*((volatile unsigned int*)(0x42A22D14UL))) +#define bM4_INTC_SEL67_INTSEL6 (*((volatile unsigned int*)(0x42A22D18UL))) +#define bM4_INTC_SEL67_INTSEL7 (*((volatile unsigned int*)(0x42A22D1CUL))) +#define bM4_INTC_SEL67_INTSEL8 (*((volatile unsigned int*)(0x42A22D20UL))) +#define bM4_INTC_SEL68_INTSEL0 (*((volatile unsigned int*)(0x42A22D80UL))) +#define bM4_INTC_SEL68_INTSEL1 (*((volatile unsigned int*)(0x42A22D84UL))) +#define bM4_INTC_SEL68_INTSEL2 (*((volatile unsigned int*)(0x42A22D88UL))) +#define bM4_INTC_SEL68_INTSEL3 (*((volatile unsigned int*)(0x42A22D8CUL))) +#define bM4_INTC_SEL68_INTSEL4 (*((volatile unsigned int*)(0x42A22D90UL))) +#define bM4_INTC_SEL68_INTSEL5 (*((volatile unsigned int*)(0x42A22D94UL))) +#define bM4_INTC_SEL68_INTSEL6 (*((volatile unsigned int*)(0x42A22D98UL))) +#define bM4_INTC_SEL68_INTSEL7 (*((volatile unsigned int*)(0x42A22D9CUL))) +#define bM4_INTC_SEL68_INTSEL8 (*((volatile unsigned int*)(0x42A22DA0UL))) +#define bM4_INTC_SEL69_INTSEL0 (*((volatile unsigned int*)(0x42A22E00UL))) +#define bM4_INTC_SEL69_INTSEL1 (*((volatile unsigned int*)(0x42A22E04UL))) +#define bM4_INTC_SEL69_INTSEL2 (*((volatile unsigned int*)(0x42A22E08UL))) +#define bM4_INTC_SEL69_INTSEL3 (*((volatile unsigned int*)(0x42A22E0CUL))) +#define bM4_INTC_SEL69_INTSEL4 (*((volatile unsigned int*)(0x42A22E10UL))) +#define bM4_INTC_SEL69_INTSEL5 (*((volatile unsigned int*)(0x42A22E14UL))) +#define bM4_INTC_SEL69_INTSEL6 (*((volatile unsigned int*)(0x42A22E18UL))) +#define bM4_INTC_SEL69_INTSEL7 (*((volatile unsigned int*)(0x42A22E1CUL))) +#define bM4_INTC_SEL69_INTSEL8 (*((volatile unsigned int*)(0x42A22E20UL))) +#define bM4_INTC_SEL70_INTSEL0 (*((volatile unsigned int*)(0x42A22E80UL))) +#define bM4_INTC_SEL70_INTSEL1 (*((volatile unsigned int*)(0x42A22E84UL))) +#define bM4_INTC_SEL70_INTSEL2 (*((volatile unsigned int*)(0x42A22E88UL))) +#define bM4_INTC_SEL70_INTSEL3 (*((volatile unsigned int*)(0x42A22E8CUL))) +#define bM4_INTC_SEL70_INTSEL4 (*((volatile unsigned int*)(0x42A22E90UL))) +#define bM4_INTC_SEL70_INTSEL5 (*((volatile unsigned int*)(0x42A22E94UL))) +#define bM4_INTC_SEL70_INTSEL6 (*((volatile unsigned int*)(0x42A22E98UL))) +#define bM4_INTC_SEL70_INTSEL7 (*((volatile unsigned int*)(0x42A22E9CUL))) +#define bM4_INTC_SEL70_INTSEL8 (*((volatile unsigned int*)(0x42A22EA0UL))) +#define bM4_INTC_SEL71_INTSEL0 (*((volatile unsigned int*)(0x42A22F00UL))) +#define bM4_INTC_SEL71_INTSEL1 (*((volatile unsigned int*)(0x42A22F04UL))) +#define bM4_INTC_SEL71_INTSEL2 (*((volatile unsigned int*)(0x42A22F08UL))) +#define bM4_INTC_SEL71_INTSEL3 (*((volatile unsigned int*)(0x42A22F0CUL))) +#define bM4_INTC_SEL71_INTSEL4 (*((volatile unsigned int*)(0x42A22F10UL))) +#define bM4_INTC_SEL71_INTSEL5 (*((volatile unsigned int*)(0x42A22F14UL))) +#define bM4_INTC_SEL71_INTSEL6 (*((volatile unsigned int*)(0x42A22F18UL))) +#define bM4_INTC_SEL71_INTSEL7 (*((volatile unsigned int*)(0x42A22F1CUL))) +#define bM4_INTC_SEL71_INTSEL8 (*((volatile unsigned int*)(0x42A22F20UL))) +#define bM4_INTC_SEL72_INTSEL0 (*((volatile unsigned int*)(0x42A22F80UL))) +#define bM4_INTC_SEL72_INTSEL1 (*((volatile unsigned int*)(0x42A22F84UL))) +#define bM4_INTC_SEL72_INTSEL2 (*((volatile unsigned int*)(0x42A22F88UL))) +#define bM4_INTC_SEL72_INTSEL3 (*((volatile unsigned int*)(0x42A22F8CUL))) +#define bM4_INTC_SEL72_INTSEL4 (*((volatile unsigned int*)(0x42A22F90UL))) +#define bM4_INTC_SEL72_INTSEL5 (*((volatile unsigned int*)(0x42A22F94UL))) +#define bM4_INTC_SEL72_INTSEL6 (*((volatile unsigned int*)(0x42A22F98UL))) +#define bM4_INTC_SEL72_INTSEL7 (*((volatile unsigned int*)(0x42A22F9CUL))) +#define bM4_INTC_SEL72_INTSEL8 (*((volatile unsigned int*)(0x42A22FA0UL))) +#define bM4_INTC_SEL73_INTSEL0 (*((volatile unsigned int*)(0x42A23000UL))) +#define bM4_INTC_SEL73_INTSEL1 (*((volatile unsigned int*)(0x42A23004UL))) +#define bM4_INTC_SEL73_INTSEL2 (*((volatile unsigned int*)(0x42A23008UL))) +#define bM4_INTC_SEL73_INTSEL3 (*((volatile unsigned int*)(0x42A2300CUL))) +#define bM4_INTC_SEL73_INTSEL4 (*((volatile unsigned int*)(0x42A23010UL))) +#define bM4_INTC_SEL73_INTSEL5 (*((volatile unsigned int*)(0x42A23014UL))) +#define bM4_INTC_SEL73_INTSEL6 (*((volatile unsigned int*)(0x42A23018UL))) +#define bM4_INTC_SEL73_INTSEL7 (*((volatile unsigned int*)(0x42A2301CUL))) +#define bM4_INTC_SEL73_INTSEL8 (*((volatile unsigned int*)(0x42A23020UL))) +#define bM4_INTC_SEL74_INTSEL0 (*((volatile unsigned int*)(0x42A23080UL))) +#define bM4_INTC_SEL74_INTSEL1 (*((volatile unsigned int*)(0x42A23084UL))) +#define bM4_INTC_SEL74_INTSEL2 (*((volatile unsigned int*)(0x42A23088UL))) +#define bM4_INTC_SEL74_INTSEL3 (*((volatile unsigned int*)(0x42A2308CUL))) +#define bM4_INTC_SEL74_INTSEL4 (*((volatile unsigned int*)(0x42A23090UL))) +#define bM4_INTC_SEL74_INTSEL5 (*((volatile unsigned int*)(0x42A23094UL))) +#define bM4_INTC_SEL74_INTSEL6 (*((volatile unsigned int*)(0x42A23098UL))) +#define bM4_INTC_SEL74_INTSEL7 (*((volatile unsigned int*)(0x42A2309CUL))) +#define bM4_INTC_SEL74_INTSEL8 (*((volatile unsigned int*)(0x42A230A0UL))) +#define bM4_INTC_SEL75_INTSEL0 (*((volatile unsigned int*)(0x42A23100UL))) +#define bM4_INTC_SEL75_INTSEL1 (*((volatile unsigned int*)(0x42A23104UL))) +#define bM4_INTC_SEL75_INTSEL2 (*((volatile unsigned int*)(0x42A23108UL))) +#define bM4_INTC_SEL75_INTSEL3 (*((volatile unsigned int*)(0x42A2310CUL))) +#define bM4_INTC_SEL75_INTSEL4 (*((volatile unsigned int*)(0x42A23110UL))) +#define bM4_INTC_SEL75_INTSEL5 (*((volatile unsigned int*)(0x42A23114UL))) +#define bM4_INTC_SEL75_INTSEL6 (*((volatile unsigned int*)(0x42A23118UL))) +#define bM4_INTC_SEL75_INTSEL7 (*((volatile unsigned int*)(0x42A2311CUL))) +#define bM4_INTC_SEL75_INTSEL8 (*((volatile unsigned int*)(0x42A23120UL))) +#define bM4_INTC_SEL76_INTSEL0 (*((volatile unsigned int*)(0x42A23180UL))) +#define bM4_INTC_SEL76_INTSEL1 (*((volatile unsigned int*)(0x42A23184UL))) +#define bM4_INTC_SEL76_INTSEL2 (*((volatile unsigned int*)(0x42A23188UL))) +#define bM4_INTC_SEL76_INTSEL3 (*((volatile unsigned int*)(0x42A2318CUL))) +#define bM4_INTC_SEL76_INTSEL4 (*((volatile unsigned int*)(0x42A23190UL))) +#define bM4_INTC_SEL76_INTSEL5 (*((volatile unsigned int*)(0x42A23194UL))) +#define bM4_INTC_SEL76_INTSEL6 (*((volatile unsigned int*)(0x42A23198UL))) +#define bM4_INTC_SEL76_INTSEL7 (*((volatile unsigned int*)(0x42A2319CUL))) +#define bM4_INTC_SEL76_INTSEL8 (*((volatile unsigned int*)(0x42A231A0UL))) +#define bM4_INTC_SEL77_INTSEL0 (*((volatile unsigned int*)(0x42A23200UL))) +#define bM4_INTC_SEL77_INTSEL1 (*((volatile unsigned int*)(0x42A23204UL))) +#define bM4_INTC_SEL77_INTSEL2 (*((volatile unsigned int*)(0x42A23208UL))) +#define bM4_INTC_SEL77_INTSEL3 (*((volatile unsigned int*)(0x42A2320CUL))) +#define bM4_INTC_SEL77_INTSEL4 (*((volatile unsigned int*)(0x42A23210UL))) +#define bM4_INTC_SEL77_INTSEL5 (*((volatile unsigned int*)(0x42A23214UL))) +#define bM4_INTC_SEL77_INTSEL6 (*((volatile unsigned int*)(0x42A23218UL))) +#define bM4_INTC_SEL77_INTSEL7 (*((volatile unsigned int*)(0x42A2321CUL))) +#define bM4_INTC_SEL77_INTSEL8 (*((volatile unsigned int*)(0x42A23220UL))) +#define bM4_INTC_SEL78_INTSEL0 (*((volatile unsigned int*)(0x42A23280UL))) +#define bM4_INTC_SEL78_INTSEL1 (*((volatile unsigned int*)(0x42A23284UL))) +#define bM4_INTC_SEL78_INTSEL2 (*((volatile unsigned int*)(0x42A23288UL))) +#define bM4_INTC_SEL78_INTSEL3 (*((volatile unsigned int*)(0x42A2328CUL))) +#define bM4_INTC_SEL78_INTSEL4 (*((volatile unsigned int*)(0x42A23290UL))) +#define bM4_INTC_SEL78_INTSEL5 (*((volatile unsigned int*)(0x42A23294UL))) +#define bM4_INTC_SEL78_INTSEL6 (*((volatile unsigned int*)(0x42A23298UL))) +#define bM4_INTC_SEL78_INTSEL7 (*((volatile unsigned int*)(0x42A2329CUL))) +#define bM4_INTC_SEL78_INTSEL8 (*((volatile unsigned int*)(0x42A232A0UL))) +#define bM4_INTC_SEL79_INTSEL0 (*((volatile unsigned int*)(0x42A23300UL))) +#define bM4_INTC_SEL79_INTSEL1 (*((volatile unsigned int*)(0x42A23304UL))) +#define bM4_INTC_SEL79_INTSEL2 (*((volatile unsigned int*)(0x42A23308UL))) +#define bM4_INTC_SEL79_INTSEL3 (*((volatile unsigned int*)(0x42A2330CUL))) +#define bM4_INTC_SEL79_INTSEL4 (*((volatile unsigned int*)(0x42A23310UL))) +#define bM4_INTC_SEL79_INTSEL5 (*((volatile unsigned int*)(0x42A23314UL))) +#define bM4_INTC_SEL79_INTSEL6 (*((volatile unsigned int*)(0x42A23318UL))) +#define bM4_INTC_SEL79_INTSEL7 (*((volatile unsigned int*)(0x42A2331CUL))) +#define bM4_INTC_SEL79_INTSEL8 (*((volatile unsigned int*)(0x42A23320UL))) +#define bM4_INTC_SEL80_INTSEL0 (*((volatile unsigned int*)(0x42A23380UL))) +#define bM4_INTC_SEL80_INTSEL1 (*((volatile unsigned int*)(0x42A23384UL))) +#define bM4_INTC_SEL80_INTSEL2 (*((volatile unsigned int*)(0x42A23388UL))) +#define bM4_INTC_SEL80_INTSEL3 (*((volatile unsigned int*)(0x42A2338CUL))) +#define bM4_INTC_SEL80_INTSEL4 (*((volatile unsigned int*)(0x42A23390UL))) +#define bM4_INTC_SEL80_INTSEL5 (*((volatile unsigned int*)(0x42A23394UL))) +#define bM4_INTC_SEL80_INTSEL6 (*((volatile unsigned int*)(0x42A23398UL))) +#define bM4_INTC_SEL80_INTSEL7 (*((volatile unsigned int*)(0x42A2339CUL))) +#define bM4_INTC_SEL80_INTSEL8 (*((volatile unsigned int*)(0x42A233A0UL))) +#define bM4_INTC_SEL81_INTSEL0 (*((volatile unsigned int*)(0x42A23400UL))) +#define bM4_INTC_SEL81_INTSEL1 (*((volatile unsigned int*)(0x42A23404UL))) +#define bM4_INTC_SEL81_INTSEL2 (*((volatile unsigned int*)(0x42A23408UL))) +#define bM4_INTC_SEL81_INTSEL3 (*((volatile unsigned int*)(0x42A2340CUL))) +#define bM4_INTC_SEL81_INTSEL4 (*((volatile unsigned int*)(0x42A23410UL))) +#define bM4_INTC_SEL81_INTSEL5 (*((volatile unsigned int*)(0x42A23414UL))) +#define bM4_INTC_SEL81_INTSEL6 (*((volatile unsigned int*)(0x42A23418UL))) +#define bM4_INTC_SEL81_INTSEL7 (*((volatile unsigned int*)(0x42A2341CUL))) +#define bM4_INTC_SEL81_INTSEL8 (*((volatile unsigned int*)(0x42A23420UL))) +#define bM4_INTC_SEL82_INTSEL0 (*((volatile unsigned int*)(0x42A23480UL))) +#define bM4_INTC_SEL82_INTSEL1 (*((volatile unsigned int*)(0x42A23484UL))) +#define bM4_INTC_SEL82_INTSEL2 (*((volatile unsigned int*)(0x42A23488UL))) +#define bM4_INTC_SEL82_INTSEL3 (*((volatile unsigned int*)(0x42A2348CUL))) +#define bM4_INTC_SEL82_INTSEL4 (*((volatile unsigned int*)(0x42A23490UL))) +#define bM4_INTC_SEL82_INTSEL5 (*((volatile unsigned int*)(0x42A23494UL))) +#define bM4_INTC_SEL82_INTSEL6 (*((volatile unsigned int*)(0x42A23498UL))) +#define bM4_INTC_SEL82_INTSEL7 (*((volatile unsigned int*)(0x42A2349CUL))) +#define bM4_INTC_SEL82_INTSEL8 (*((volatile unsigned int*)(0x42A234A0UL))) +#define bM4_INTC_SEL83_INTSEL0 (*((volatile unsigned int*)(0x42A23500UL))) +#define bM4_INTC_SEL83_INTSEL1 (*((volatile unsigned int*)(0x42A23504UL))) +#define bM4_INTC_SEL83_INTSEL2 (*((volatile unsigned int*)(0x42A23508UL))) +#define bM4_INTC_SEL83_INTSEL3 (*((volatile unsigned int*)(0x42A2350CUL))) +#define bM4_INTC_SEL83_INTSEL4 (*((volatile unsigned int*)(0x42A23510UL))) +#define bM4_INTC_SEL83_INTSEL5 (*((volatile unsigned int*)(0x42A23514UL))) +#define bM4_INTC_SEL83_INTSEL6 (*((volatile unsigned int*)(0x42A23518UL))) +#define bM4_INTC_SEL83_INTSEL7 (*((volatile unsigned int*)(0x42A2351CUL))) +#define bM4_INTC_SEL83_INTSEL8 (*((volatile unsigned int*)(0x42A23520UL))) +#define bM4_INTC_SEL84_INTSEL0 (*((volatile unsigned int*)(0x42A23580UL))) +#define bM4_INTC_SEL84_INTSEL1 (*((volatile unsigned int*)(0x42A23584UL))) +#define bM4_INTC_SEL84_INTSEL2 (*((volatile unsigned int*)(0x42A23588UL))) +#define bM4_INTC_SEL84_INTSEL3 (*((volatile unsigned int*)(0x42A2358CUL))) +#define bM4_INTC_SEL84_INTSEL4 (*((volatile unsigned int*)(0x42A23590UL))) +#define bM4_INTC_SEL84_INTSEL5 (*((volatile unsigned int*)(0x42A23594UL))) +#define bM4_INTC_SEL84_INTSEL6 (*((volatile unsigned int*)(0x42A23598UL))) +#define bM4_INTC_SEL84_INTSEL7 (*((volatile unsigned int*)(0x42A2359CUL))) +#define bM4_INTC_SEL84_INTSEL8 (*((volatile unsigned int*)(0x42A235A0UL))) +#define bM4_INTC_SEL85_INTSEL0 (*((volatile unsigned int*)(0x42A23600UL))) +#define bM4_INTC_SEL85_INTSEL1 (*((volatile unsigned int*)(0x42A23604UL))) +#define bM4_INTC_SEL85_INTSEL2 (*((volatile unsigned int*)(0x42A23608UL))) +#define bM4_INTC_SEL85_INTSEL3 (*((volatile unsigned int*)(0x42A2360CUL))) +#define bM4_INTC_SEL85_INTSEL4 (*((volatile unsigned int*)(0x42A23610UL))) +#define bM4_INTC_SEL85_INTSEL5 (*((volatile unsigned int*)(0x42A23614UL))) +#define bM4_INTC_SEL85_INTSEL6 (*((volatile unsigned int*)(0x42A23618UL))) +#define bM4_INTC_SEL85_INTSEL7 (*((volatile unsigned int*)(0x42A2361CUL))) +#define bM4_INTC_SEL85_INTSEL8 (*((volatile unsigned int*)(0x42A23620UL))) +#define bM4_INTC_SEL86_INTSEL0 (*((volatile unsigned int*)(0x42A23680UL))) +#define bM4_INTC_SEL86_INTSEL1 (*((volatile unsigned int*)(0x42A23684UL))) +#define bM4_INTC_SEL86_INTSEL2 (*((volatile unsigned int*)(0x42A23688UL))) +#define bM4_INTC_SEL86_INTSEL3 (*((volatile unsigned int*)(0x42A2368CUL))) +#define bM4_INTC_SEL86_INTSEL4 (*((volatile unsigned int*)(0x42A23690UL))) +#define bM4_INTC_SEL86_INTSEL5 (*((volatile unsigned int*)(0x42A23694UL))) +#define bM4_INTC_SEL86_INTSEL6 (*((volatile unsigned int*)(0x42A23698UL))) +#define bM4_INTC_SEL86_INTSEL7 (*((volatile unsigned int*)(0x42A2369CUL))) +#define bM4_INTC_SEL86_INTSEL8 (*((volatile unsigned int*)(0x42A236A0UL))) +#define bM4_INTC_SEL87_INTSEL0 (*((volatile unsigned int*)(0x42A23700UL))) +#define bM4_INTC_SEL87_INTSEL1 (*((volatile unsigned int*)(0x42A23704UL))) +#define bM4_INTC_SEL87_INTSEL2 (*((volatile unsigned int*)(0x42A23708UL))) +#define bM4_INTC_SEL87_INTSEL3 (*((volatile unsigned int*)(0x42A2370CUL))) +#define bM4_INTC_SEL87_INTSEL4 (*((volatile unsigned int*)(0x42A23710UL))) +#define bM4_INTC_SEL87_INTSEL5 (*((volatile unsigned int*)(0x42A23714UL))) +#define bM4_INTC_SEL87_INTSEL6 (*((volatile unsigned int*)(0x42A23718UL))) +#define bM4_INTC_SEL87_INTSEL7 (*((volatile unsigned int*)(0x42A2371CUL))) +#define bM4_INTC_SEL87_INTSEL8 (*((volatile unsigned int*)(0x42A23720UL))) +#define bM4_INTC_SEL88_INTSEL0 (*((volatile unsigned int*)(0x42A23780UL))) +#define bM4_INTC_SEL88_INTSEL1 (*((volatile unsigned int*)(0x42A23784UL))) +#define bM4_INTC_SEL88_INTSEL2 (*((volatile unsigned int*)(0x42A23788UL))) +#define bM4_INTC_SEL88_INTSEL3 (*((volatile unsigned int*)(0x42A2378CUL))) +#define bM4_INTC_SEL88_INTSEL4 (*((volatile unsigned int*)(0x42A23790UL))) +#define bM4_INTC_SEL88_INTSEL5 (*((volatile unsigned int*)(0x42A23794UL))) +#define bM4_INTC_SEL88_INTSEL6 (*((volatile unsigned int*)(0x42A23798UL))) +#define bM4_INTC_SEL88_INTSEL7 (*((volatile unsigned int*)(0x42A2379CUL))) +#define bM4_INTC_SEL88_INTSEL8 (*((volatile unsigned int*)(0x42A237A0UL))) +#define bM4_INTC_SEL89_INTSEL0 (*((volatile unsigned int*)(0x42A23800UL))) +#define bM4_INTC_SEL89_INTSEL1 (*((volatile unsigned int*)(0x42A23804UL))) +#define bM4_INTC_SEL89_INTSEL2 (*((volatile unsigned int*)(0x42A23808UL))) +#define bM4_INTC_SEL89_INTSEL3 (*((volatile unsigned int*)(0x42A2380CUL))) +#define bM4_INTC_SEL89_INTSEL4 (*((volatile unsigned int*)(0x42A23810UL))) +#define bM4_INTC_SEL89_INTSEL5 (*((volatile unsigned int*)(0x42A23814UL))) +#define bM4_INTC_SEL89_INTSEL6 (*((volatile unsigned int*)(0x42A23818UL))) +#define bM4_INTC_SEL89_INTSEL7 (*((volatile unsigned int*)(0x42A2381CUL))) +#define bM4_INTC_SEL89_INTSEL8 (*((volatile unsigned int*)(0x42A23820UL))) +#define bM4_INTC_SEL90_INTSEL0 (*((volatile unsigned int*)(0x42A23880UL))) +#define bM4_INTC_SEL90_INTSEL1 (*((volatile unsigned int*)(0x42A23884UL))) +#define bM4_INTC_SEL90_INTSEL2 (*((volatile unsigned int*)(0x42A23888UL))) +#define bM4_INTC_SEL90_INTSEL3 (*((volatile unsigned int*)(0x42A2388CUL))) +#define bM4_INTC_SEL90_INTSEL4 (*((volatile unsigned int*)(0x42A23890UL))) +#define bM4_INTC_SEL90_INTSEL5 (*((volatile unsigned int*)(0x42A23894UL))) +#define bM4_INTC_SEL90_INTSEL6 (*((volatile unsigned int*)(0x42A23898UL))) +#define bM4_INTC_SEL90_INTSEL7 (*((volatile unsigned int*)(0x42A2389CUL))) +#define bM4_INTC_SEL90_INTSEL8 (*((volatile unsigned int*)(0x42A238A0UL))) +#define bM4_INTC_SEL91_INTSEL0 (*((volatile unsigned int*)(0x42A23900UL))) +#define bM4_INTC_SEL91_INTSEL1 (*((volatile unsigned int*)(0x42A23904UL))) +#define bM4_INTC_SEL91_INTSEL2 (*((volatile unsigned int*)(0x42A23908UL))) +#define bM4_INTC_SEL91_INTSEL3 (*((volatile unsigned int*)(0x42A2390CUL))) +#define bM4_INTC_SEL91_INTSEL4 (*((volatile unsigned int*)(0x42A23910UL))) +#define bM4_INTC_SEL91_INTSEL5 (*((volatile unsigned int*)(0x42A23914UL))) +#define bM4_INTC_SEL91_INTSEL6 (*((volatile unsigned int*)(0x42A23918UL))) +#define bM4_INTC_SEL91_INTSEL7 (*((volatile unsigned int*)(0x42A2391CUL))) +#define bM4_INTC_SEL91_INTSEL8 (*((volatile unsigned int*)(0x42A23920UL))) +#define bM4_INTC_SEL92_INTSEL0 (*((volatile unsigned int*)(0x42A23980UL))) +#define bM4_INTC_SEL92_INTSEL1 (*((volatile unsigned int*)(0x42A23984UL))) +#define bM4_INTC_SEL92_INTSEL2 (*((volatile unsigned int*)(0x42A23988UL))) +#define bM4_INTC_SEL92_INTSEL3 (*((volatile unsigned int*)(0x42A2398CUL))) +#define bM4_INTC_SEL92_INTSEL4 (*((volatile unsigned int*)(0x42A23990UL))) +#define bM4_INTC_SEL92_INTSEL5 (*((volatile unsigned int*)(0x42A23994UL))) +#define bM4_INTC_SEL92_INTSEL6 (*((volatile unsigned int*)(0x42A23998UL))) +#define bM4_INTC_SEL92_INTSEL7 (*((volatile unsigned int*)(0x42A2399CUL))) +#define bM4_INTC_SEL92_INTSEL8 (*((volatile unsigned int*)(0x42A239A0UL))) +#define bM4_INTC_SEL93_INTSEL0 (*((volatile unsigned int*)(0x42A23A00UL))) +#define bM4_INTC_SEL93_INTSEL1 (*((volatile unsigned int*)(0x42A23A04UL))) +#define bM4_INTC_SEL93_INTSEL2 (*((volatile unsigned int*)(0x42A23A08UL))) +#define bM4_INTC_SEL93_INTSEL3 (*((volatile unsigned int*)(0x42A23A0CUL))) +#define bM4_INTC_SEL93_INTSEL4 (*((volatile unsigned int*)(0x42A23A10UL))) +#define bM4_INTC_SEL93_INTSEL5 (*((volatile unsigned int*)(0x42A23A14UL))) +#define bM4_INTC_SEL93_INTSEL6 (*((volatile unsigned int*)(0x42A23A18UL))) +#define bM4_INTC_SEL93_INTSEL7 (*((volatile unsigned int*)(0x42A23A1CUL))) +#define bM4_INTC_SEL93_INTSEL8 (*((volatile unsigned int*)(0x42A23A20UL))) +#define bM4_INTC_SEL94_INTSEL0 (*((volatile unsigned int*)(0x42A23A80UL))) +#define bM4_INTC_SEL94_INTSEL1 (*((volatile unsigned int*)(0x42A23A84UL))) +#define bM4_INTC_SEL94_INTSEL2 (*((volatile unsigned int*)(0x42A23A88UL))) +#define bM4_INTC_SEL94_INTSEL3 (*((volatile unsigned int*)(0x42A23A8CUL))) +#define bM4_INTC_SEL94_INTSEL4 (*((volatile unsigned int*)(0x42A23A90UL))) +#define bM4_INTC_SEL94_INTSEL5 (*((volatile unsigned int*)(0x42A23A94UL))) +#define bM4_INTC_SEL94_INTSEL6 (*((volatile unsigned int*)(0x42A23A98UL))) +#define bM4_INTC_SEL94_INTSEL7 (*((volatile unsigned int*)(0x42A23A9CUL))) +#define bM4_INTC_SEL94_INTSEL8 (*((volatile unsigned int*)(0x42A23AA0UL))) +#define bM4_INTC_SEL95_INTSEL0 (*((volatile unsigned int*)(0x42A23B00UL))) +#define bM4_INTC_SEL95_INTSEL1 (*((volatile unsigned int*)(0x42A23B04UL))) +#define bM4_INTC_SEL95_INTSEL2 (*((volatile unsigned int*)(0x42A23B08UL))) +#define bM4_INTC_SEL95_INTSEL3 (*((volatile unsigned int*)(0x42A23B0CUL))) +#define bM4_INTC_SEL95_INTSEL4 (*((volatile unsigned int*)(0x42A23B10UL))) +#define bM4_INTC_SEL95_INTSEL5 (*((volatile unsigned int*)(0x42A23B14UL))) +#define bM4_INTC_SEL95_INTSEL6 (*((volatile unsigned int*)(0x42A23B18UL))) +#define bM4_INTC_SEL95_INTSEL7 (*((volatile unsigned int*)(0x42A23B1CUL))) +#define bM4_INTC_SEL95_INTSEL8 (*((volatile unsigned int*)(0x42A23B20UL))) +#define bM4_INTC_SEL96_INTSEL0 (*((volatile unsigned int*)(0x42A23B80UL))) +#define bM4_INTC_SEL96_INTSEL1 (*((volatile unsigned int*)(0x42A23B84UL))) +#define bM4_INTC_SEL96_INTSEL2 (*((volatile unsigned int*)(0x42A23B88UL))) +#define bM4_INTC_SEL96_INTSEL3 (*((volatile unsigned int*)(0x42A23B8CUL))) +#define bM4_INTC_SEL96_INTSEL4 (*((volatile unsigned int*)(0x42A23B90UL))) +#define bM4_INTC_SEL96_INTSEL5 (*((volatile unsigned int*)(0x42A23B94UL))) +#define bM4_INTC_SEL96_INTSEL6 (*((volatile unsigned int*)(0x42A23B98UL))) +#define bM4_INTC_SEL96_INTSEL7 (*((volatile unsigned int*)(0x42A23B9CUL))) +#define bM4_INTC_SEL96_INTSEL8 (*((volatile unsigned int*)(0x42A23BA0UL))) +#define bM4_INTC_SEL97_INTSEL0 (*((volatile unsigned int*)(0x42A23C00UL))) +#define bM4_INTC_SEL97_INTSEL1 (*((volatile unsigned int*)(0x42A23C04UL))) +#define bM4_INTC_SEL97_INTSEL2 (*((volatile unsigned int*)(0x42A23C08UL))) +#define bM4_INTC_SEL97_INTSEL3 (*((volatile unsigned int*)(0x42A23C0CUL))) +#define bM4_INTC_SEL97_INTSEL4 (*((volatile unsigned int*)(0x42A23C10UL))) +#define bM4_INTC_SEL97_INTSEL5 (*((volatile unsigned int*)(0x42A23C14UL))) +#define bM4_INTC_SEL97_INTSEL6 (*((volatile unsigned int*)(0x42A23C18UL))) +#define bM4_INTC_SEL97_INTSEL7 (*((volatile unsigned int*)(0x42A23C1CUL))) +#define bM4_INTC_SEL97_INTSEL8 (*((volatile unsigned int*)(0x42A23C20UL))) +#define bM4_INTC_SEL98_INTSEL0 (*((volatile unsigned int*)(0x42A23C80UL))) +#define bM4_INTC_SEL98_INTSEL1 (*((volatile unsigned int*)(0x42A23C84UL))) +#define bM4_INTC_SEL98_INTSEL2 (*((volatile unsigned int*)(0x42A23C88UL))) +#define bM4_INTC_SEL98_INTSEL3 (*((volatile unsigned int*)(0x42A23C8CUL))) +#define bM4_INTC_SEL98_INTSEL4 (*((volatile unsigned int*)(0x42A23C90UL))) +#define bM4_INTC_SEL98_INTSEL5 (*((volatile unsigned int*)(0x42A23C94UL))) +#define bM4_INTC_SEL98_INTSEL6 (*((volatile unsigned int*)(0x42A23C98UL))) +#define bM4_INTC_SEL98_INTSEL7 (*((volatile unsigned int*)(0x42A23C9CUL))) +#define bM4_INTC_SEL98_INTSEL8 (*((volatile unsigned int*)(0x42A23CA0UL))) +#define bM4_INTC_SEL99_INTSEL0 (*((volatile unsigned int*)(0x42A23D00UL))) +#define bM4_INTC_SEL99_INTSEL1 (*((volatile unsigned int*)(0x42A23D04UL))) +#define bM4_INTC_SEL99_INTSEL2 (*((volatile unsigned int*)(0x42A23D08UL))) +#define bM4_INTC_SEL99_INTSEL3 (*((volatile unsigned int*)(0x42A23D0CUL))) +#define bM4_INTC_SEL99_INTSEL4 (*((volatile unsigned int*)(0x42A23D10UL))) +#define bM4_INTC_SEL99_INTSEL5 (*((volatile unsigned int*)(0x42A23D14UL))) +#define bM4_INTC_SEL99_INTSEL6 (*((volatile unsigned int*)(0x42A23D18UL))) +#define bM4_INTC_SEL99_INTSEL7 (*((volatile unsigned int*)(0x42A23D1CUL))) +#define bM4_INTC_SEL99_INTSEL8 (*((volatile unsigned int*)(0x42A23D20UL))) +#define bM4_INTC_SEL100_INTSEL0 (*((volatile unsigned int*)(0x42A23D80UL))) +#define bM4_INTC_SEL100_INTSEL1 (*((volatile unsigned int*)(0x42A23D84UL))) +#define bM4_INTC_SEL100_INTSEL2 (*((volatile unsigned int*)(0x42A23D88UL))) +#define bM4_INTC_SEL100_INTSEL3 (*((volatile unsigned int*)(0x42A23D8CUL))) +#define bM4_INTC_SEL100_INTSEL4 (*((volatile unsigned int*)(0x42A23D90UL))) +#define bM4_INTC_SEL100_INTSEL5 (*((volatile unsigned int*)(0x42A23D94UL))) +#define bM4_INTC_SEL100_INTSEL6 (*((volatile unsigned int*)(0x42A23D98UL))) +#define bM4_INTC_SEL100_INTSEL7 (*((volatile unsigned int*)(0x42A23D9CUL))) +#define bM4_INTC_SEL100_INTSEL8 (*((volatile unsigned int*)(0x42A23DA0UL))) +#define bM4_INTC_SEL101_INTSEL0 (*((volatile unsigned int*)(0x42A23E00UL))) +#define bM4_INTC_SEL101_INTSEL1 (*((volatile unsigned int*)(0x42A23E04UL))) +#define bM4_INTC_SEL101_INTSEL2 (*((volatile unsigned int*)(0x42A23E08UL))) +#define bM4_INTC_SEL101_INTSEL3 (*((volatile unsigned int*)(0x42A23E0CUL))) +#define bM4_INTC_SEL101_INTSEL4 (*((volatile unsigned int*)(0x42A23E10UL))) +#define bM4_INTC_SEL101_INTSEL5 (*((volatile unsigned int*)(0x42A23E14UL))) +#define bM4_INTC_SEL101_INTSEL6 (*((volatile unsigned int*)(0x42A23E18UL))) +#define bM4_INTC_SEL101_INTSEL7 (*((volatile unsigned int*)(0x42A23E1CUL))) +#define bM4_INTC_SEL101_INTSEL8 (*((volatile unsigned int*)(0x42A23E20UL))) +#define bM4_INTC_SEL102_INTSEL0 (*((volatile unsigned int*)(0x42A23E80UL))) +#define bM4_INTC_SEL102_INTSEL1 (*((volatile unsigned int*)(0x42A23E84UL))) +#define bM4_INTC_SEL102_INTSEL2 (*((volatile unsigned int*)(0x42A23E88UL))) +#define bM4_INTC_SEL102_INTSEL3 (*((volatile unsigned int*)(0x42A23E8CUL))) +#define bM4_INTC_SEL102_INTSEL4 (*((volatile unsigned int*)(0x42A23E90UL))) +#define bM4_INTC_SEL102_INTSEL5 (*((volatile unsigned int*)(0x42A23E94UL))) +#define bM4_INTC_SEL102_INTSEL6 (*((volatile unsigned int*)(0x42A23E98UL))) +#define bM4_INTC_SEL102_INTSEL7 (*((volatile unsigned int*)(0x42A23E9CUL))) +#define bM4_INTC_SEL102_INTSEL8 (*((volatile unsigned int*)(0x42A23EA0UL))) +#define bM4_INTC_SEL103_INTSEL0 (*((volatile unsigned int*)(0x42A23F00UL))) +#define bM4_INTC_SEL103_INTSEL1 (*((volatile unsigned int*)(0x42A23F04UL))) +#define bM4_INTC_SEL103_INTSEL2 (*((volatile unsigned int*)(0x42A23F08UL))) +#define bM4_INTC_SEL103_INTSEL3 (*((volatile unsigned int*)(0x42A23F0CUL))) +#define bM4_INTC_SEL103_INTSEL4 (*((volatile unsigned int*)(0x42A23F10UL))) +#define bM4_INTC_SEL103_INTSEL5 (*((volatile unsigned int*)(0x42A23F14UL))) +#define bM4_INTC_SEL103_INTSEL6 (*((volatile unsigned int*)(0x42A23F18UL))) +#define bM4_INTC_SEL103_INTSEL7 (*((volatile unsigned int*)(0x42A23F1CUL))) +#define bM4_INTC_SEL103_INTSEL8 (*((volatile unsigned int*)(0x42A23F20UL))) +#define bM4_INTC_SEL104_INTSEL0 (*((volatile unsigned int*)(0x42A23F80UL))) +#define bM4_INTC_SEL104_INTSEL1 (*((volatile unsigned int*)(0x42A23F84UL))) +#define bM4_INTC_SEL104_INTSEL2 (*((volatile unsigned int*)(0x42A23F88UL))) +#define bM4_INTC_SEL104_INTSEL3 (*((volatile unsigned int*)(0x42A23F8CUL))) +#define bM4_INTC_SEL104_INTSEL4 (*((volatile unsigned int*)(0x42A23F90UL))) +#define bM4_INTC_SEL104_INTSEL5 (*((volatile unsigned int*)(0x42A23F94UL))) +#define bM4_INTC_SEL104_INTSEL6 (*((volatile unsigned int*)(0x42A23F98UL))) +#define bM4_INTC_SEL104_INTSEL7 (*((volatile unsigned int*)(0x42A23F9CUL))) +#define bM4_INTC_SEL104_INTSEL8 (*((volatile unsigned int*)(0x42A23FA0UL))) +#define bM4_INTC_SEL105_INTSEL0 (*((volatile unsigned int*)(0x42A24000UL))) +#define bM4_INTC_SEL105_INTSEL1 (*((volatile unsigned int*)(0x42A24004UL))) +#define bM4_INTC_SEL105_INTSEL2 (*((volatile unsigned int*)(0x42A24008UL))) +#define bM4_INTC_SEL105_INTSEL3 (*((volatile unsigned int*)(0x42A2400CUL))) +#define bM4_INTC_SEL105_INTSEL4 (*((volatile unsigned int*)(0x42A24010UL))) +#define bM4_INTC_SEL105_INTSEL5 (*((volatile unsigned int*)(0x42A24014UL))) +#define bM4_INTC_SEL105_INTSEL6 (*((volatile unsigned int*)(0x42A24018UL))) +#define bM4_INTC_SEL105_INTSEL7 (*((volatile unsigned int*)(0x42A2401CUL))) +#define bM4_INTC_SEL105_INTSEL8 (*((volatile unsigned int*)(0x42A24020UL))) +#define bM4_INTC_SEL106_INTSEL0 (*((volatile unsigned int*)(0x42A24080UL))) +#define bM4_INTC_SEL106_INTSEL1 (*((volatile unsigned int*)(0x42A24084UL))) +#define bM4_INTC_SEL106_INTSEL2 (*((volatile unsigned int*)(0x42A24088UL))) +#define bM4_INTC_SEL106_INTSEL3 (*((volatile unsigned int*)(0x42A2408CUL))) +#define bM4_INTC_SEL106_INTSEL4 (*((volatile unsigned int*)(0x42A24090UL))) +#define bM4_INTC_SEL106_INTSEL5 (*((volatile unsigned int*)(0x42A24094UL))) +#define bM4_INTC_SEL106_INTSEL6 (*((volatile unsigned int*)(0x42A24098UL))) +#define bM4_INTC_SEL106_INTSEL7 (*((volatile unsigned int*)(0x42A2409CUL))) +#define bM4_INTC_SEL106_INTSEL8 (*((volatile unsigned int*)(0x42A240A0UL))) +#define bM4_INTC_SEL107_INTSEL0 (*((volatile unsigned int*)(0x42A24100UL))) +#define bM4_INTC_SEL107_INTSEL1 (*((volatile unsigned int*)(0x42A24104UL))) +#define bM4_INTC_SEL107_INTSEL2 (*((volatile unsigned int*)(0x42A24108UL))) +#define bM4_INTC_SEL107_INTSEL3 (*((volatile unsigned int*)(0x42A2410CUL))) +#define bM4_INTC_SEL107_INTSEL4 (*((volatile unsigned int*)(0x42A24110UL))) +#define bM4_INTC_SEL107_INTSEL5 (*((volatile unsigned int*)(0x42A24114UL))) +#define bM4_INTC_SEL107_INTSEL6 (*((volatile unsigned int*)(0x42A24118UL))) +#define bM4_INTC_SEL107_INTSEL7 (*((volatile unsigned int*)(0x42A2411CUL))) +#define bM4_INTC_SEL107_INTSEL8 (*((volatile unsigned int*)(0x42A24120UL))) +#define bM4_INTC_SEL108_INTSEL0 (*((volatile unsigned int*)(0x42A24180UL))) +#define bM4_INTC_SEL108_INTSEL1 (*((volatile unsigned int*)(0x42A24184UL))) +#define bM4_INTC_SEL108_INTSEL2 (*((volatile unsigned int*)(0x42A24188UL))) +#define bM4_INTC_SEL108_INTSEL3 (*((volatile unsigned int*)(0x42A2418CUL))) +#define bM4_INTC_SEL108_INTSEL4 (*((volatile unsigned int*)(0x42A24190UL))) +#define bM4_INTC_SEL108_INTSEL5 (*((volatile unsigned int*)(0x42A24194UL))) +#define bM4_INTC_SEL108_INTSEL6 (*((volatile unsigned int*)(0x42A24198UL))) +#define bM4_INTC_SEL108_INTSEL7 (*((volatile unsigned int*)(0x42A2419CUL))) +#define bM4_INTC_SEL108_INTSEL8 (*((volatile unsigned int*)(0x42A241A0UL))) +#define bM4_INTC_SEL109_INTSEL0 (*((volatile unsigned int*)(0x42A24200UL))) +#define bM4_INTC_SEL109_INTSEL1 (*((volatile unsigned int*)(0x42A24204UL))) +#define bM4_INTC_SEL109_INTSEL2 (*((volatile unsigned int*)(0x42A24208UL))) +#define bM4_INTC_SEL109_INTSEL3 (*((volatile unsigned int*)(0x42A2420CUL))) +#define bM4_INTC_SEL109_INTSEL4 (*((volatile unsigned int*)(0x42A24210UL))) +#define bM4_INTC_SEL109_INTSEL5 (*((volatile unsigned int*)(0x42A24214UL))) +#define bM4_INTC_SEL109_INTSEL6 (*((volatile unsigned int*)(0x42A24218UL))) +#define bM4_INTC_SEL109_INTSEL7 (*((volatile unsigned int*)(0x42A2421CUL))) +#define bM4_INTC_SEL109_INTSEL8 (*((volatile unsigned int*)(0x42A24220UL))) +#define bM4_INTC_SEL110_INTSEL0 (*((volatile unsigned int*)(0x42A24280UL))) +#define bM4_INTC_SEL110_INTSEL1 (*((volatile unsigned int*)(0x42A24284UL))) +#define bM4_INTC_SEL110_INTSEL2 (*((volatile unsigned int*)(0x42A24288UL))) +#define bM4_INTC_SEL110_INTSEL3 (*((volatile unsigned int*)(0x42A2428CUL))) +#define bM4_INTC_SEL110_INTSEL4 (*((volatile unsigned int*)(0x42A24290UL))) +#define bM4_INTC_SEL110_INTSEL5 (*((volatile unsigned int*)(0x42A24294UL))) +#define bM4_INTC_SEL110_INTSEL6 (*((volatile unsigned int*)(0x42A24298UL))) +#define bM4_INTC_SEL110_INTSEL7 (*((volatile unsigned int*)(0x42A2429CUL))) +#define bM4_INTC_SEL110_INTSEL8 (*((volatile unsigned int*)(0x42A242A0UL))) +#define bM4_INTC_SEL111_INTSEL0 (*((volatile unsigned int*)(0x42A24300UL))) +#define bM4_INTC_SEL111_INTSEL1 (*((volatile unsigned int*)(0x42A24304UL))) +#define bM4_INTC_SEL111_INTSEL2 (*((volatile unsigned int*)(0x42A24308UL))) +#define bM4_INTC_SEL111_INTSEL3 (*((volatile unsigned int*)(0x42A2430CUL))) +#define bM4_INTC_SEL111_INTSEL4 (*((volatile unsigned int*)(0x42A24310UL))) +#define bM4_INTC_SEL111_INTSEL5 (*((volatile unsigned int*)(0x42A24314UL))) +#define bM4_INTC_SEL111_INTSEL6 (*((volatile unsigned int*)(0x42A24318UL))) +#define bM4_INTC_SEL111_INTSEL7 (*((volatile unsigned int*)(0x42A2431CUL))) +#define bM4_INTC_SEL111_INTSEL8 (*((volatile unsigned int*)(0x42A24320UL))) +#define bM4_INTC_SEL112_INTSEL0 (*((volatile unsigned int*)(0x42A24380UL))) +#define bM4_INTC_SEL112_INTSEL1 (*((volatile unsigned int*)(0x42A24384UL))) +#define bM4_INTC_SEL112_INTSEL2 (*((volatile unsigned int*)(0x42A24388UL))) +#define bM4_INTC_SEL112_INTSEL3 (*((volatile unsigned int*)(0x42A2438CUL))) +#define bM4_INTC_SEL112_INTSEL4 (*((volatile unsigned int*)(0x42A24390UL))) +#define bM4_INTC_SEL112_INTSEL5 (*((volatile unsigned int*)(0x42A24394UL))) +#define bM4_INTC_SEL112_INTSEL6 (*((volatile unsigned int*)(0x42A24398UL))) +#define bM4_INTC_SEL112_INTSEL7 (*((volatile unsigned int*)(0x42A2439CUL))) +#define bM4_INTC_SEL112_INTSEL8 (*((volatile unsigned int*)(0x42A243A0UL))) +#define bM4_INTC_SEL113_INTSEL0 (*((volatile unsigned int*)(0x42A24400UL))) +#define bM4_INTC_SEL113_INTSEL1 (*((volatile unsigned int*)(0x42A24404UL))) +#define bM4_INTC_SEL113_INTSEL2 (*((volatile unsigned int*)(0x42A24408UL))) +#define bM4_INTC_SEL113_INTSEL3 (*((volatile unsigned int*)(0x42A2440CUL))) +#define bM4_INTC_SEL113_INTSEL4 (*((volatile unsigned int*)(0x42A24410UL))) +#define bM4_INTC_SEL113_INTSEL5 (*((volatile unsigned int*)(0x42A24414UL))) +#define bM4_INTC_SEL113_INTSEL6 (*((volatile unsigned int*)(0x42A24418UL))) +#define bM4_INTC_SEL113_INTSEL7 (*((volatile unsigned int*)(0x42A2441CUL))) +#define bM4_INTC_SEL113_INTSEL8 (*((volatile unsigned int*)(0x42A24420UL))) +#define bM4_INTC_SEL114_INTSEL0 (*((volatile unsigned int*)(0x42A24480UL))) +#define bM4_INTC_SEL114_INTSEL1 (*((volatile unsigned int*)(0x42A24484UL))) +#define bM4_INTC_SEL114_INTSEL2 (*((volatile unsigned int*)(0x42A24488UL))) +#define bM4_INTC_SEL114_INTSEL3 (*((volatile unsigned int*)(0x42A2448CUL))) +#define bM4_INTC_SEL114_INTSEL4 (*((volatile unsigned int*)(0x42A24490UL))) +#define bM4_INTC_SEL114_INTSEL5 (*((volatile unsigned int*)(0x42A24494UL))) +#define bM4_INTC_SEL114_INTSEL6 (*((volatile unsigned int*)(0x42A24498UL))) +#define bM4_INTC_SEL114_INTSEL7 (*((volatile unsigned int*)(0x42A2449CUL))) +#define bM4_INTC_SEL114_INTSEL8 (*((volatile unsigned int*)(0x42A244A0UL))) +#define bM4_INTC_SEL115_INTSEL0 (*((volatile unsigned int*)(0x42A24500UL))) +#define bM4_INTC_SEL115_INTSEL1 (*((volatile unsigned int*)(0x42A24504UL))) +#define bM4_INTC_SEL115_INTSEL2 (*((volatile unsigned int*)(0x42A24508UL))) +#define bM4_INTC_SEL115_INTSEL3 (*((volatile unsigned int*)(0x42A2450CUL))) +#define bM4_INTC_SEL115_INTSEL4 (*((volatile unsigned int*)(0x42A24510UL))) +#define bM4_INTC_SEL115_INTSEL5 (*((volatile unsigned int*)(0x42A24514UL))) +#define bM4_INTC_SEL115_INTSEL6 (*((volatile unsigned int*)(0x42A24518UL))) +#define bM4_INTC_SEL115_INTSEL7 (*((volatile unsigned int*)(0x42A2451CUL))) +#define bM4_INTC_SEL115_INTSEL8 (*((volatile unsigned int*)(0x42A24520UL))) +#define bM4_INTC_SEL116_INTSEL0 (*((volatile unsigned int*)(0x42A24580UL))) +#define bM4_INTC_SEL116_INTSEL1 (*((volatile unsigned int*)(0x42A24584UL))) +#define bM4_INTC_SEL116_INTSEL2 (*((volatile unsigned int*)(0x42A24588UL))) +#define bM4_INTC_SEL116_INTSEL3 (*((volatile unsigned int*)(0x42A2458CUL))) +#define bM4_INTC_SEL116_INTSEL4 (*((volatile unsigned int*)(0x42A24590UL))) +#define bM4_INTC_SEL116_INTSEL5 (*((volatile unsigned int*)(0x42A24594UL))) +#define bM4_INTC_SEL116_INTSEL6 (*((volatile unsigned int*)(0x42A24598UL))) +#define bM4_INTC_SEL116_INTSEL7 (*((volatile unsigned int*)(0x42A2459CUL))) +#define bM4_INTC_SEL116_INTSEL8 (*((volatile unsigned int*)(0x42A245A0UL))) +#define bM4_INTC_SEL117_INTSEL0 (*((volatile unsigned int*)(0x42A24600UL))) +#define bM4_INTC_SEL117_INTSEL1 (*((volatile unsigned int*)(0x42A24604UL))) +#define bM4_INTC_SEL117_INTSEL2 (*((volatile unsigned int*)(0x42A24608UL))) +#define bM4_INTC_SEL117_INTSEL3 (*((volatile unsigned int*)(0x42A2460CUL))) +#define bM4_INTC_SEL117_INTSEL4 (*((volatile unsigned int*)(0x42A24610UL))) +#define bM4_INTC_SEL117_INTSEL5 (*((volatile unsigned int*)(0x42A24614UL))) +#define bM4_INTC_SEL117_INTSEL6 (*((volatile unsigned int*)(0x42A24618UL))) +#define bM4_INTC_SEL117_INTSEL7 (*((volatile unsigned int*)(0x42A2461CUL))) +#define bM4_INTC_SEL117_INTSEL8 (*((volatile unsigned int*)(0x42A24620UL))) +#define bM4_INTC_SEL118_INTSEL0 (*((volatile unsigned int*)(0x42A24680UL))) +#define bM4_INTC_SEL118_INTSEL1 (*((volatile unsigned int*)(0x42A24684UL))) +#define bM4_INTC_SEL118_INTSEL2 (*((volatile unsigned int*)(0x42A24688UL))) +#define bM4_INTC_SEL118_INTSEL3 (*((volatile unsigned int*)(0x42A2468CUL))) +#define bM4_INTC_SEL118_INTSEL4 (*((volatile unsigned int*)(0x42A24690UL))) +#define bM4_INTC_SEL118_INTSEL5 (*((volatile unsigned int*)(0x42A24694UL))) +#define bM4_INTC_SEL118_INTSEL6 (*((volatile unsigned int*)(0x42A24698UL))) +#define bM4_INTC_SEL118_INTSEL7 (*((volatile unsigned int*)(0x42A2469CUL))) +#define bM4_INTC_SEL118_INTSEL8 (*((volatile unsigned int*)(0x42A246A0UL))) +#define bM4_INTC_SEL119_INTSEL0 (*((volatile unsigned int*)(0x42A24700UL))) +#define bM4_INTC_SEL119_INTSEL1 (*((volatile unsigned int*)(0x42A24704UL))) +#define bM4_INTC_SEL119_INTSEL2 (*((volatile unsigned int*)(0x42A24708UL))) +#define bM4_INTC_SEL119_INTSEL3 (*((volatile unsigned int*)(0x42A2470CUL))) +#define bM4_INTC_SEL119_INTSEL4 (*((volatile unsigned int*)(0x42A24710UL))) +#define bM4_INTC_SEL119_INTSEL5 (*((volatile unsigned int*)(0x42A24714UL))) +#define bM4_INTC_SEL119_INTSEL6 (*((volatile unsigned int*)(0x42A24718UL))) +#define bM4_INTC_SEL119_INTSEL7 (*((volatile unsigned int*)(0x42A2471CUL))) +#define bM4_INTC_SEL119_INTSEL8 (*((volatile unsigned int*)(0x42A24720UL))) +#define bM4_INTC_SEL120_INTSEL0 (*((volatile unsigned int*)(0x42A24780UL))) +#define bM4_INTC_SEL120_INTSEL1 (*((volatile unsigned int*)(0x42A24784UL))) +#define bM4_INTC_SEL120_INTSEL2 (*((volatile unsigned int*)(0x42A24788UL))) +#define bM4_INTC_SEL120_INTSEL3 (*((volatile unsigned int*)(0x42A2478CUL))) +#define bM4_INTC_SEL120_INTSEL4 (*((volatile unsigned int*)(0x42A24790UL))) +#define bM4_INTC_SEL120_INTSEL5 (*((volatile unsigned int*)(0x42A24794UL))) +#define bM4_INTC_SEL120_INTSEL6 (*((volatile unsigned int*)(0x42A24798UL))) +#define bM4_INTC_SEL120_INTSEL7 (*((volatile unsigned int*)(0x42A2479CUL))) +#define bM4_INTC_SEL120_INTSEL8 (*((volatile unsigned int*)(0x42A247A0UL))) +#define bM4_INTC_SEL121_INTSEL0 (*((volatile unsigned int*)(0x42A24800UL))) +#define bM4_INTC_SEL121_INTSEL1 (*((volatile unsigned int*)(0x42A24804UL))) +#define bM4_INTC_SEL121_INTSEL2 (*((volatile unsigned int*)(0x42A24808UL))) +#define bM4_INTC_SEL121_INTSEL3 (*((volatile unsigned int*)(0x42A2480CUL))) +#define bM4_INTC_SEL121_INTSEL4 (*((volatile unsigned int*)(0x42A24810UL))) +#define bM4_INTC_SEL121_INTSEL5 (*((volatile unsigned int*)(0x42A24814UL))) +#define bM4_INTC_SEL121_INTSEL6 (*((volatile unsigned int*)(0x42A24818UL))) +#define bM4_INTC_SEL121_INTSEL7 (*((volatile unsigned int*)(0x42A2481CUL))) +#define bM4_INTC_SEL121_INTSEL8 (*((volatile unsigned int*)(0x42A24820UL))) +#define bM4_INTC_SEL122_INTSEL0 (*((volatile unsigned int*)(0x42A24880UL))) +#define bM4_INTC_SEL122_INTSEL1 (*((volatile unsigned int*)(0x42A24884UL))) +#define bM4_INTC_SEL122_INTSEL2 (*((volatile unsigned int*)(0x42A24888UL))) +#define bM4_INTC_SEL122_INTSEL3 (*((volatile unsigned int*)(0x42A2488CUL))) +#define bM4_INTC_SEL122_INTSEL4 (*((volatile unsigned int*)(0x42A24890UL))) +#define bM4_INTC_SEL122_INTSEL5 (*((volatile unsigned int*)(0x42A24894UL))) +#define bM4_INTC_SEL122_INTSEL6 (*((volatile unsigned int*)(0x42A24898UL))) +#define bM4_INTC_SEL122_INTSEL7 (*((volatile unsigned int*)(0x42A2489CUL))) +#define bM4_INTC_SEL122_INTSEL8 (*((volatile unsigned int*)(0x42A248A0UL))) +#define bM4_INTC_SEL123_INTSEL0 (*((volatile unsigned int*)(0x42A24900UL))) +#define bM4_INTC_SEL123_INTSEL1 (*((volatile unsigned int*)(0x42A24904UL))) +#define bM4_INTC_SEL123_INTSEL2 (*((volatile unsigned int*)(0x42A24908UL))) +#define bM4_INTC_SEL123_INTSEL3 (*((volatile unsigned int*)(0x42A2490CUL))) +#define bM4_INTC_SEL123_INTSEL4 (*((volatile unsigned int*)(0x42A24910UL))) +#define bM4_INTC_SEL123_INTSEL5 (*((volatile unsigned int*)(0x42A24914UL))) +#define bM4_INTC_SEL123_INTSEL6 (*((volatile unsigned int*)(0x42A24918UL))) +#define bM4_INTC_SEL123_INTSEL7 (*((volatile unsigned int*)(0x42A2491CUL))) +#define bM4_INTC_SEL123_INTSEL8 (*((volatile unsigned int*)(0x42A24920UL))) +#define bM4_INTC_SEL124_INTSEL0 (*((volatile unsigned int*)(0x42A24980UL))) +#define bM4_INTC_SEL124_INTSEL1 (*((volatile unsigned int*)(0x42A24984UL))) +#define bM4_INTC_SEL124_INTSEL2 (*((volatile unsigned int*)(0x42A24988UL))) +#define bM4_INTC_SEL124_INTSEL3 (*((volatile unsigned int*)(0x42A2498CUL))) +#define bM4_INTC_SEL124_INTSEL4 (*((volatile unsigned int*)(0x42A24990UL))) +#define bM4_INTC_SEL124_INTSEL5 (*((volatile unsigned int*)(0x42A24994UL))) +#define bM4_INTC_SEL124_INTSEL6 (*((volatile unsigned int*)(0x42A24998UL))) +#define bM4_INTC_SEL124_INTSEL7 (*((volatile unsigned int*)(0x42A2499CUL))) +#define bM4_INTC_SEL124_INTSEL8 (*((volatile unsigned int*)(0x42A249A0UL))) +#define bM4_INTC_SEL125_INTSEL0 (*((volatile unsigned int*)(0x42A24A00UL))) +#define bM4_INTC_SEL125_INTSEL1 (*((volatile unsigned int*)(0x42A24A04UL))) +#define bM4_INTC_SEL125_INTSEL2 (*((volatile unsigned int*)(0x42A24A08UL))) +#define bM4_INTC_SEL125_INTSEL3 (*((volatile unsigned int*)(0x42A24A0CUL))) +#define bM4_INTC_SEL125_INTSEL4 (*((volatile unsigned int*)(0x42A24A10UL))) +#define bM4_INTC_SEL125_INTSEL5 (*((volatile unsigned int*)(0x42A24A14UL))) +#define bM4_INTC_SEL125_INTSEL6 (*((volatile unsigned int*)(0x42A24A18UL))) +#define bM4_INTC_SEL125_INTSEL7 (*((volatile unsigned int*)(0x42A24A1CUL))) +#define bM4_INTC_SEL125_INTSEL8 (*((volatile unsigned int*)(0x42A24A20UL))) +#define bM4_INTC_SEL126_INTSEL0 (*((volatile unsigned int*)(0x42A24A80UL))) +#define bM4_INTC_SEL126_INTSEL1 (*((volatile unsigned int*)(0x42A24A84UL))) +#define bM4_INTC_SEL126_INTSEL2 (*((volatile unsigned int*)(0x42A24A88UL))) +#define bM4_INTC_SEL126_INTSEL3 (*((volatile unsigned int*)(0x42A24A8CUL))) +#define bM4_INTC_SEL126_INTSEL4 (*((volatile unsigned int*)(0x42A24A90UL))) +#define bM4_INTC_SEL126_INTSEL5 (*((volatile unsigned int*)(0x42A24A94UL))) +#define bM4_INTC_SEL126_INTSEL6 (*((volatile unsigned int*)(0x42A24A98UL))) +#define bM4_INTC_SEL126_INTSEL7 (*((volatile unsigned int*)(0x42A24A9CUL))) +#define bM4_INTC_SEL126_INTSEL8 (*((volatile unsigned int*)(0x42A24AA0UL))) +#define bM4_INTC_SEL127_INTSEL0 (*((volatile unsigned int*)(0x42A24B00UL))) +#define bM4_INTC_SEL127_INTSEL1 (*((volatile unsigned int*)(0x42A24B04UL))) +#define bM4_INTC_SEL127_INTSEL2 (*((volatile unsigned int*)(0x42A24B08UL))) +#define bM4_INTC_SEL127_INTSEL3 (*((volatile unsigned int*)(0x42A24B0CUL))) +#define bM4_INTC_SEL127_INTSEL4 (*((volatile unsigned int*)(0x42A24B10UL))) +#define bM4_INTC_SEL127_INTSEL5 (*((volatile unsigned int*)(0x42A24B14UL))) +#define bM4_INTC_SEL127_INTSEL6 (*((volatile unsigned int*)(0x42A24B18UL))) +#define bM4_INTC_SEL127_INTSEL7 (*((volatile unsigned int*)(0x42A24B1CUL))) +#define bM4_INTC_SEL127_INTSEL8 (*((volatile unsigned int*)(0x42A24B20UL))) +#define bM4_INTC_VSSEL128_VSEL0 (*((volatile unsigned int*)(0x42A24B80UL))) +#define bM4_INTC_VSSEL128_VSEL1 (*((volatile unsigned int*)(0x42A24B84UL))) +#define bM4_INTC_VSSEL128_VSEL2 (*((volatile unsigned int*)(0x42A24B88UL))) +#define bM4_INTC_VSSEL128_VSEL3 (*((volatile unsigned int*)(0x42A24B8CUL))) +#define bM4_INTC_VSSEL128_VSEL4 (*((volatile unsigned int*)(0x42A24B90UL))) +#define bM4_INTC_VSSEL128_VSEL5 (*((volatile unsigned int*)(0x42A24B94UL))) +#define bM4_INTC_VSSEL128_VSEL6 (*((volatile unsigned int*)(0x42A24B98UL))) +#define bM4_INTC_VSSEL128_VSEL7 (*((volatile unsigned int*)(0x42A24B9CUL))) +#define bM4_INTC_VSSEL128_VSEL8 (*((volatile unsigned int*)(0x42A24BA0UL))) +#define bM4_INTC_VSSEL128_VSEL9 (*((volatile unsigned int*)(0x42A24BA4UL))) +#define bM4_INTC_VSSEL128_VSEL10 (*((volatile unsigned int*)(0x42A24BA8UL))) +#define bM4_INTC_VSSEL128_VSEL11 (*((volatile unsigned int*)(0x42A24BACUL))) +#define bM4_INTC_VSSEL128_VSEL12 (*((volatile unsigned int*)(0x42A24BB0UL))) +#define bM4_INTC_VSSEL128_VSEL13 (*((volatile unsigned int*)(0x42A24BB4UL))) +#define bM4_INTC_VSSEL128_VSEL14 (*((volatile unsigned int*)(0x42A24BB8UL))) +#define bM4_INTC_VSSEL128_VSEL15 (*((volatile unsigned int*)(0x42A24BBCUL))) +#define bM4_INTC_VSSEL128_VSEL16 (*((volatile unsigned int*)(0x42A24BC0UL))) +#define bM4_INTC_VSSEL128_VSEL17 (*((volatile unsigned int*)(0x42A24BC4UL))) +#define bM4_INTC_VSSEL128_VSEL18 (*((volatile unsigned int*)(0x42A24BC8UL))) +#define bM4_INTC_VSSEL128_VSEL19 (*((volatile unsigned int*)(0x42A24BCCUL))) +#define bM4_INTC_VSSEL128_VSEL20 (*((volatile unsigned int*)(0x42A24BD0UL))) +#define bM4_INTC_VSSEL128_VSEL21 (*((volatile unsigned int*)(0x42A24BD4UL))) +#define bM4_INTC_VSSEL128_VSEL22 (*((volatile unsigned int*)(0x42A24BD8UL))) +#define bM4_INTC_VSSEL128_VSEL23 (*((volatile unsigned int*)(0x42A24BDCUL))) +#define bM4_INTC_VSSEL128_VSEL24 (*((volatile unsigned int*)(0x42A24BE0UL))) +#define bM4_INTC_VSSEL128_VSEL25 (*((volatile unsigned int*)(0x42A24BE4UL))) +#define bM4_INTC_VSSEL128_VSEL26 (*((volatile unsigned int*)(0x42A24BE8UL))) +#define bM4_INTC_VSSEL128_VSEL27 (*((volatile unsigned int*)(0x42A24BECUL))) +#define bM4_INTC_VSSEL128_VSEL28 (*((volatile unsigned int*)(0x42A24BF0UL))) +#define bM4_INTC_VSSEL128_VSEL29 (*((volatile unsigned int*)(0x42A24BF4UL))) +#define bM4_INTC_VSSEL128_VSEL30 (*((volatile unsigned int*)(0x42A24BF8UL))) +#define bM4_INTC_VSSEL128_VSEL31 (*((volatile unsigned int*)(0x42A24BFCUL))) +#define bM4_INTC_VSSEL129_VSEL0 (*((volatile unsigned int*)(0x42A24C00UL))) +#define bM4_INTC_VSSEL129_VSEL1 (*((volatile unsigned int*)(0x42A24C04UL))) +#define bM4_INTC_VSSEL129_VSEL2 (*((volatile unsigned int*)(0x42A24C08UL))) +#define bM4_INTC_VSSEL129_VSEL3 (*((volatile unsigned int*)(0x42A24C0CUL))) +#define bM4_INTC_VSSEL129_VSEL4 (*((volatile unsigned int*)(0x42A24C10UL))) +#define bM4_INTC_VSSEL129_VSEL5 (*((volatile unsigned int*)(0x42A24C14UL))) +#define bM4_INTC_VSSEL129_VSEL6 (*((volatile unsigned int*)(0x42A24C18UL))) +#define bM4_INTC_VSSEL129_VSEL7 (*((volatile unsigned int*)(0x42A24C1CUL))) +#define bM4_INTC_VSSEL129_VSEL8 (*((volatile unsigned int*)(0x42A24C20UL))) +#define bM4_INTC_VSSEL129_VSEL9 (*((volatile unsigned int*)(0x42A24C24UL))) +#define bM4_INTC_VSSEL129_VSEL10 (*((volatile unsigned int*)(0x42A24C28UL))) +#define bM4_INTC_VSSEL129_VSEL11 (*((volatile unsigned int*)(0x42A24C2CUL))) +#define bM4_INTC_VSSEL129_VSEL12 (*((volatile unsigned int*)(0x42A24C30UL))) +#define bM4_INTC_VSSEL129_VSEL13 (*((volatile unsigned int*)(0x42A24C34UL))) +#define bM4_INTC_VSSEL129_VSEL14 (*((volatile unsigned int*)(0x42A24C38UL))) +#define bM4_INTC_VSSEL129_VSEL15 (*((volatile unsigned int*)(0x42A24C3CUL))) +#define bM4_INTC_VSSEL129_VSEL16 (*((volatile unsigned int*)(0x42A24C40UL))) +#define bM4_INTC_VSSEL129_VSEL17 (*((volatile unsigned int*)(0x42A24C44UL))) +#define bM4_INTC_VSSEL129_VSEL18 (*((volatile unsigned int*)(0x42A24C48UL))) +#define bM4_INTC_VSSEL129_VSEL19 (*((volatile unsigned int*)(0x42A24C4CUL))) +#define bM4_INTC_VSSEL129_VSEL20 (*((volatile unsigned int*)(0x42A24C50UL))) +#define bM4_INTC_VSSEL129_VSEL21 (*((volatile unsigned int*)(0x42A24C54UL))) +#define bM4_INTC_VSSEL129_VSEL22 (*((volatile unsigned int*)(0x42A24C58UL))) +#define bM4_INTC_VSSEL129_VSEL23 (*((volatile unsigned int*)(0x42A24C5CUL))) +#define bM4_INTC_VSSEL129_VSEL24 (*((volatile unsigned int*)(0x42A24C60UL))) +#define bM4_INTC_VSSEL129_VSEL25 (*((volatile unsigned int*)(0x42A24C64UL))) +#define bM4_INTC_VSSEL129_VSEL26 (*((volatile unsigned int*)(0x42A24C68UL))) +#define bM4_INTC_VSSEL129_VSEL27 (*((volatile unsigned int*)(0x42A24C6CUL))) +#define bM4_INTC_VSSEL129_VSEL28 (*((volatile unsigned int*)(0x42A24C70UL))) +#define bM4_INTC_VSSEL129_VSEL29 (*((volatile unsigned int*)(0x42A24C74UL))) +#define bM4_INTC_VSSEL129_VSEL30 (*((volatile unsigned int*)(0x42A24C78UL))) +#define bM4_INTC_VSSEL129_VSEL31 (*((volatile unsigned int*)(0x42A24C7CUL))) +#define bM4_INTC_VSSEL130_VSEL0 (*((volatile unsigned int*)(0x42A24C80UL))) +#define bM4_INTC_VSSEL130_VSEL1 (*((volatile unsigned int*)(0x42A24C84UL))) +#define bM4_INTC_VSSEL130_VSEL2 (*((volatile unsigned int*)(0x42A24C88UL))) +#define bM4_INTC_VSSEL130_VSEL3 (*((volatile unsigned int*)(0x42A24C8CUL))) +#define bM4_INTC_VSSEL130_VSEL4 (*((volatile unsigned int*)(0x42A24C90UL))) +#define bM4_INTC_VSSEL130_VSEL5 (*((volatile unsigned int*)(0x42A24C94UL))) +#define bM4_INTC_VSSEL130_VSEL6 (*((volatile unsigned int*)(0x42A24C98UL))) +#define bM4_INTC_VSSEL130_VSEL7 (*((volatile unsigned int*)(0x42A24C9CUL))) +#define bM4_INTC_VSSEL130_VSEL8 (*((volatile unsigned int*)(0x42A24CA0UL))) +#define bM4_INTC_VSSEL130_VSEL9 (*((volatile unsigned int*)(0x42A24CA4UL))) +#define bM4_INTC_VSSEL130_VSEL10 (*((volatile unsigned int*)(0x42A24CA8UL))) +#define bM4_INTC_VSSEL130_VSEL11 (*((volatile unsigned int*)(0x42A24CACUL))) +#define bM4_INTC_VSSEL130_VSEL12 (*((volatile unsigned int*)(0x42A24CB0UL))) +#define bM4_INTC_VSSEL130_VSEL13 (*((volatile unsigned int*)(0x42A24CB4UL))) +#define bM4_INTC_VSSEL130_VSEL14 (*((volatile unsigned int*)(0x42A24CB8UL))) +#define bM4_INTC_VSSEL130_VSEL15 (*((volatile unsigned int*)(0x42A24CBCUL))) +#define bM4_INTC_VSSEL130_VSEL16 (*((volatile unsigned int*)(0x42A24CC0UL))) +#define bM4_INTC_VSSEL130_VSEL17 (*((volatile unsigned int*)(0x42A24CC4UL))) +#define bM4_INTC_VSSEL130_VSEL18 (*((volatile unsigned int*)(0x42A24CC8UL))) +#define bM4_INTC_VSSEL130_VSEL19 (*((volatile unsigned int*)(0x42A24CCCUL))) +#define bM4_INTC_VSSEL130_VSEL20 (*((volatile unsigned int*)(0x42A24CD0UL))) +#define bM4_INTC_VSSEL130_VSEL21 (*((volatile unsigned int*)(0x42A24CD4UL))) +#define bM4_INTC_VSSEL130_VSEL22 (*((volatile unsigned int*)(0x42A24CD8UL))) +#define bM4_INTC_VSSEL130_VSEL23 (*((volatile unsigned int*)(0x42A24CDCUL))) +#define bM4_INTC_VSSEL130_VSEL24 (*((volatile unsigned int*)(0x42A24CE0UL))) +#define bM4_INTC_VSSEL130_VSEL25 (*((volatile unsigned int*)(0x42A24CE4UL))) +#define bM4_INTC_VSSEL130_VSEL26 (*((volatile unsigned int*)(0x42A24CE8UL))) +#define bM4_INTC_VSSEL130_VSEL27 (*((volatile unsigned int*)(0x42A24CECUL))) +#define bM4_INTC_VSSEL130_VSEL28 (*((volatile unsigned int*)(0x42A24CF0UL))) +#define bM4_INTC_VSSEL130_VSEL29 (*((volatile unsigned int*)(0x42A24CF4UL))) +#define bM4_INTC_VSSEL130_VSEL30 (*((volatile unsigned int*)(0x42A24CF8UL))) +#define bM4_INTC_VSSEL130_VSEL31 (*((volatile unsigned int*)(0x42A24CFCUL))) +#define bM4_INTC_VSSEL131_VSEL0 (*((volatile unsigned int*)(0x42A24D00UL))) +#define bM4_INTC_VSSEL131_VSEL1 (*((volatile unsigned int*)(0x42A24D04UL))) +#define bM4_INTC_VSSEL131_VSEL2 (*((volatile unsigned int*)(0x42A24D08UL))) +#define bM4_INTC_VSSEL131_VSEL3 (*((volatile unsigned int*)(0x42A24D0CUL))) +#define bM4_INTC_VSSEL131_VSEL4 (*((volatile unsigned int*)(0x42A24D10UL))) +#define bM4_INTC_VSSEL131_VSEL5 (*((volatile unsigned int*)(0x42A24D14UL))) +#define bM4_INTC_VSSEL131_VSEL6 (*((volatile unsigned int*)(0x42A24D18UL))) +#define bM4_INTC_VSSEL131_VSEL7 (*((volatile unsigned int*)(0x42A24D1CUL))) +#define bM4_INTC_VSSEL131_VSEL8 (*((volatile unsigned int*)(0x42A24D20UL))) +#define bM4_INTC_VSSEL131_VSEL9 (*((volatile unsigned int*)(0x42A24D24UL))) +#define bM4_INTC_VSSEL131_VSEL10 (*((volatile unsigned int*)(0x42A24D28UL))) +#define bM4_INTC_VSSEL131_VSEL11 (*((volatile unsigned int*)(0x42A24D2CUL))) +#define bM4_INTC_VSSEL131_VSEL12 (*((volatile unsigned int*)(0x42A24D30UL))) +#define bM4_INTC_VSSEL131_VSEL13 (*((volatile unsigned int*)(0x42A24D34UL))) +#define bM4_INTC_VSSEL131_VSEL14 (*((volatile unsigned int*)(0x42A24D38UL))) +#define bM4_INTC_VSSEL131_VSEL15 (*((volatile unsigned int*)(0x42A24D3CUL))) +#define bM4_INTC_VSSEL131_VSEL16 (*((volatile unsigned int*)(0x42A24D40UL))) +#define bM4_INTC_VSSEL131_VSEL17 (*((volatile unsigned int*)(0x42A24D44UL))) +#define bM4_INTC_VSSEL131_VSEL18 (*((volatile unsigned int*)(0x42A24D48UL))) +#define bM4_INTC_VSSEL131_VSEL19 (*((volatile unsigned int*)(0x42A24D4CUL))) +#define bM4_INTC_VSSEL131_VSEL20 (*((volatile unsigned int*)(0x42A24D50UL))) +#define bM4_INTC_VSSEL131_VSEL21 (*((volatile unsigned int*)(0x42A24D54UL))) +#define bM4_INTC_VSSEL131_VSEL22 (*((volatile unsigned int*)(0x42A24D58UL))) +#define bM4_INTC_VSSEL131_VSEL23 (*((volatile unsigned int*)(0x42A24D5CUL))) +#define bM4_INTC_VSSEL131_VSEL24 (*((volatile unsigned int*)(0x42A24D60UL))) +#define bM4_INTC_VSSEL131_VSEL25 (*((volatile unsigned int*)(0x42A24D64UL))) +#define bM4_INTC_VSSEL131_VSEL26 (*((volatile unsigned int*)(0x42A24D68UL))) +#define bM4_INTC_VSSEL131_VSEL27 (*((volatile unsigned int*)(0x42A24D6CUL))) +#define bM4_INTC_VSSEL131_VSEL28 (*((volatile unsigned int*)(0x42A24D70UL))) +#define bM4_INTC_VSSEL131_VSEL29 (*((volatile unsigned int*)(0x42A24D74UL))) +#define bM4_INTC_VSSEL131_VSEL30 (*((volatile unsigned int*)(0x42A24D78UL))) +#define bM4_INTC_VSSEL131_VSEL31 (*((volatile unsigned int*)(0x42A24D7CUL))) +#define bM4_INTC_VSSEL132_VSEL0 (*((volatile unsigned int*)(0x42A24D80UL))) +#define bM4_INTC_VSSEL132_VSEL1 (*((volatile unsigned int*)(0x42A24D84UL))) +#define bM4_INTC_VSSEL132_VSEL2 (*((volatile unsigned int*)(0x42A24D88UL))) +#define bM4_INTC_VSSEL132_VSEL3 (*((volatile unsigned int*)(0x42A24D8CUL))) +#define bM4_INTC_VSSEL132_VSEL4 (*((volatile unsigned int*)(0x42A24D90UL))) +#define bM4_INTC_VSSEL132_VSEL5 (*((volatile unsigned int*)(0x42A24D94UL))) +#define bM4_INTC_VSSEL132_VSEL6 (*((volatile unsigned int*)(0x42A24D98UL))) +#define bM4_INTC_VSSEL132_VSEL7 (*((volatile unsigned int*)(0x42A24D9CUL))) +#define bM4_INTC_VSSEL132_VSEL8 (*((volatile unsigned int*)(0x42A24DA0UL))) +#define bM4_INTC_VSSEL132_VSEL9 (*((volatile unsigned int*)(0x42A24DA4UL))) +#define bM4_INTC_VSSEL132_VSEL10 (*((volatile unsigned int*)(0x42A24DA8UL))) +#define bM4_INTC_VSSEL132_VSEL11 (*((volatile unsigned int*)(0x42A24DACUL))) +#define bM4_INTC_VSSEL132_VSEL12 (*((volatile unsigned int*)(0x42A24DB0UL))) +#define bM4_INTC_VSSEL132_VSEL13 (*((volatile unsigned int*)(0x42A24DB4UL))) +#define bM4_INTC_VSSEL132_VSEL14 (*((volatile unsigned int*)(0x42A24DB8UL))) +#define bM4_INTC_VSSEL132_VSEL15 (*((volatile unsigned int*)(0x42A24DBCUL))) +#define bM4_INTC_VSSEL132_VSEL16 (*((volatile unsigned int*)(0x42A24DC0UL))) +#define bM4_INTC_VSSEL132_VSEL17 (*((volatile unsigned int*)(0x42A24DC4UL))) +#define bM4_INTC_VSSEL132_VSEL18 (*((volatile unsigned int*)(0x42A24DC8UL))) +#define bM4_INTC_VSSEL132_VSEL19 (*((volatile unsigned int*)(0x42A24DCCUL))) +#define bM4_INTC_VSSEL132_VSEL20 (*((volatile unsigned int*)(0x42A24DD0UL))) +#define bM4_INTC_VSSEL132_VSEL21 (*((volatile unsigned int*)(0x42A24DD4UL))) +#define bM4_INTC_VSSEL132_VSEL22 (*((volatile unsigned int*)(0x42A24DD8UL))) +#define bM4_INTC_VSSEL132_VSEL23 (*((volatile unsigned int*)(0x42A24DDCUL))) +#define bM4_INTC_VSSEL132_VSEL24 (*((volatile unsigned int*)(0x42A24DE0UL))) +#define bM4_INTC_VSSEL132_VSEL25 (*((volatile unsigned int*)(0x42A24DE4UL))) +#define bM4_INTC_VSSEL132_VSEL26 (*((volatile unsigned int*)(0x42A24DE8UL))) +#define bM4_INTC_VSSEL132_VSEL27 (*((volatile unsigned int*)(0x42A24DECUL))) +#define bM4_INTC_VSSEL132_VSEL28 (*((volatile unsigned int*)(0x42A24DF0UL))) +#define bM4_INTC_VSSEL132_VSEL29 (*((volatile unsigned int*)(0x42A24DF4UL))) +#define bM4_INTC_VSSEL132_VSEL30 (*((volatile unsigned int*)(0x42A24DF8UL))) +#define bM4_INTC_VSSEL132_VSEL31 (*((volatile unsigned int*)(0x42A24DFCUL))) +#define bM4_INTC_VSSEL133_VSEL0 (*((volatile unsigned int*)(0x42A24E00UL))) +#define bM4_INTC_VSSEL133_VSEL1 (*((volatile unsigned int*)(0x42A24E04UL))) +#define bM4_INTC_VSSEL133_VSEL2 (*((volatile unsigned int*)(0x42A24E08UL))) +#define bM4_INTC_VSSEL133_VSEL3 (*((volatile unsigned int*)(0x42A24E0CUL))) +#define bM4_INTC_VSSEL133_VSEL4 (*((volatile unsigned int*)(0x42A24E10UL))) +#define bM4_INTC_VSSEL133_VSEL5 (*((volatile unsigned int*)(0x42A24E14UL))) +#define bM4_INTC_VSSEL133_VSEL6 (*((volatile unsigned int*)(0x42A24E18UL))) +#define bM4_INTC_VSSEL133_VSEL7 (*((volatile unsigned int*)(0x42A24E1CUL))) +#define bM4_INTC_VSSEL133_VSEL8 (*((volatile unsigned int*)(0x42A24E20UL))) +#define bM4_INTC_VSSEL133_VSEL9 (*((volatile unsigned int*)(0x42A24E24UL))) +#define bM4_INTC_VSSEL133_VSEL10 (*((volatile unsigned int*)(0x42A24E28UL))) +#define bM4_INTC_VSSEL133_VSEL11 (*((volatile unsigned int*)(0x42A24E2CUL))) +#define bM4_INTC_VSSEL133_VSEL12 (*((volatile unsigned int*)(0x42A24E30UL))) +#define bM4_INTC_VSSEL133_VSEL13 (*((volatile unsigned int*)(0x42A24E34UL))) +#define bM4_INTC_VSSEL133_VSEL14 (*((volatile unsigned int*)(0x42A24E38UL))) +#define bM4_INTC_VSSEL133_VSEL15 (*((volatile unsigned int*)(0x42A24E3CUL))) +#define bM4_INTC_VSSEL133_VSEL16 (*((volatile unsigned int*)(0x42A24E40UL))) +#define bM4_INTC_VSSEL133_VSEL17 (*((volatile unsigned int*)(0x42A24E44UL))) +#define bM4_INTC_VSSEL133_VSEL18 (*((volatile unsigned int*)(0x42A24E48UL))) +#define bM4_INTC_VSSEL133_VSEL19 (*((volatile unsigned int*)(0x42A24E4CUL))) +#define bM4_INTC_VSSEL133_VSEL20 (*((volatile unsigned int*)(0x42A24E50UL))) +#define bM4_INTC_VSSEL133_VSEL21 (*((volatile unsigned int*)(0x42A24E54UL))) +#define bM4_INTC_VSSEL133_VSEL22 (*((volatile unsigned int*)(0x42A24E58UL))) +#define bM4_INTC_VSSEL133_VSEL23 (*((volatile unsigned int*)(0x42A24E5CUL))) +#define bM4_INTC_VSSEL133_VSEL24 (*((volatile unsigned int*)(0x42A24E60UL))) +#define bM4_INTC_VSSEL133_VSEL25 (*((volatile unsigned int*)(0x42A24E64UL))) +#define bM4_INTC_VSSEL133_VSEL26 (*((volatile unsigned int*)(0x42A24E68UL))) +#define bM4_INTC_VSSEL133_VSEL27 (*((volatile unsigned int*)(0x42A24E6CUL))) +#define bM4_INTC_VSSEL133_VSEL28 (*((volatile unsigned int*)(0x42A24E70UL))) +#define bM4_INTC_VSSEL133_VSEL29 (*((volatile unsigned int*)(0x42A24E74UL))) +#define bM4_INTC_VSSEL133_VSEL30 (*((volatile unsigned int*)(0x42A24E78UL))) +#define bM4_INTC_VSSEL133_VSEL31 (*((volatile unsigned int*)(0x42A24E7CUL))) +#define bM4_INTC_VSSEL134_VSEL0 (*((volatile unsigned int*)(0x42A24E80UL))) +#define bM4_INTC_VSSEL134_VSEL1 (*((volatile unsigned int*)(0x42A24E84UL))) +#define bM4_INTC_VSSEL134_VSEL2 (*((volatile unsigned int*)(0x42A24E88UL))) +#define bM4_INTC_VSSEL134_VSEL3 (*((volatile unsigned int*)(0x42A24E8CUL))) +#define bM4_INTC_VSSEL134_VSEL4 (*((volatile unsigned int*)(0x42A24E90UL))) +#define bM4_INTC_VSSEL134_VSEL5 (*((volatile unsigned int*)(0x42A24E94UL))) +#define bM4_INTC_VSSEL134_VSEL6 (*((volatile unsigned int*)(0x42A24E98UL))) +#define bM4_INTC_VSSEL134_VSEL7 (*((volatile unsigned int*)(0x42A24E9CUL))) +#define bM4_INTC_VSSEL134_VSEL8 (*((volatile unsigned int*)(0x42A24EA0UL))) +#define bM4_INTC_VSSEL134_VSEL9 (*((volatile unsigned int*)(0x42A24EA4UL))) +#define bM4_INTC_VSSEL134_VSEL10 (*((volatile unsigned int*)(0x42A24EA8UL))) +#define bM4_INTC_VSSEL134_VSEL11 (*((volatile unsigned int*)(0x42A24EACUL))) +#define bM4_INTC_VSSEL134_VSEL12 (*((volatile unsigned int*)(0x42A24EB0UL))) +#define bM4_INTC_VSSEL134_VSEL13 (*((volatile unsigned int*)(0x42A24EB4UL))) +#define bM4_INTC_VSSEL134_VSEL14 (*((volatile unsigned int*)(0x42A24EB8UL))) +#define bM4_INTC_VSSEL134_VSEL15 (*((volatile unsigned int*)(0x42A24EBCUL))) +#define bM4_INTC_VSSEL134_VSEL16 (*((volatile unsigned int*)(0x42A24EC0UL))) +#define bM4_INTC_VSSEL134_VSEL17 (*((volatile unsigned int*)(0x42A24EC4UL))) +#define bM4_INTC_VSSEL134_VSEL18 (*((volatile unsigned int*)(0x42A24EC8UL))) +#define bM4_INTC_VSSEL134_VSEL19 (*((volatile unsigned int*)(0x42A24ECCUL))) +#define bM4_INTC_VSSEL134_VSEL20 (*((volatile unsigned int*)(0x42A24ED0UL))) +#define bM4_INTC_VSSEL134_VSEL21 (*((volatile unsigned int*)(0x42A24ED4UL))) +#define bM4_INTC_VSSEL134_VSEL22 (*((volatile unsigned int*)(0x42A24ED8UL))) +#define bM4_INTC_VSSEL134_VSEL23 (*((volatile unsigned int*)(0x42A24EDCUL))) +#define bM4_INTC_VSSEL134_VSEL24 (*((volatile unsigned int*)(0x42A24EE0UL))) +#define bM4_INTC_VSSEL134_VSEL25 (*((volatile unsigned int*)(0x42A24EE4UL))) +#define bM4_INTC_VSSEL134_VSEL26 (*((volatile unsigned int*)(0x42A24EE8UL))) +#define bM4_INTC_VSSEL134_VSEL27 (*((volatile unsigned int*)(0x42A24EECUL))) +#define bM4_INTC_VSSEL134_VSEL28 (*((volatile unsigned int*)(0x42A24EF0UL))) +#define bM4_INTC_VSSEL134_VSEL29 (*((volatile unsigned int*)(0x42A24EF4UL))) +#define bM4_INTC_VSSEL134_VSEL30 (*((volatile unsigned int*)(0x42A24EF8UL))) +#define bM4_INTC_VSSEL134_VSEL31 (*((volatile unsigned int*)(0x42A24EFCUL))) +#define bM4_INTC_VSSEL135_VSEL0 (*((volatile unsigned int*)(0x42A24F00UL))) +#define bM4_INTC_VSSEL135_VSEL1 (*((volatile unsigned int*)(0x42A24F04UL))) +#define bM4_INTC_VSSEL135_VSEL2 (*((volatile unsigned int*)(0x42A24F08UL))) +#define bM4_INTC_VSSEL135_VSEL3 (*((volatile unsigned int*)(0x42A24F0CUL))) +#define bM4_INTC_VSSEL135_VSEL4 (*((volatile unsigned int*)(0x42A24F10UL))) +#define bM4_INTC_VSSEL135_VSEL5 (*((volatile unsigned int*)(0x42A24F14UL))) +#define bM4_INTC_VSSEL135_VSEL6 (*((volatile unsigned int*)(0x42A24F18UL))) +#define bM4_INTC_VSSEL135_VSEL7 (*((volatile unsigned int*)(0x42A24F1CUL))) +#define bM4_INTC_VSSEL135_VSEL8 (*((volatile unsigned int*)(0x42A24F20UL))) +#define bM4_INTC_VSSEL135_VSEL9 (*((volatile unsigned int*)(0x42A24F24UL))) +#define bM4_INTC_VSSEL135_VSEL10 (*((volatile unsigned int*)(0x42A24F28UL))) +#define bM4_INTC_VSSEL135_VSEL11 (*((volatile unsigned int*)(0x42A24F2CUL))) +#define bM4_INTC_VSSEL135_VSEL12 (*((volatile unsigned int*)(0x42A24F30UL))) +#define bM4_INTC_VSSEL135_VSEL13 (*((volatile unsigned int*)(0x42A24F34UL))) +#define bM4_INTC_VSSEL135_VSEL14 (*((volatile unsigned int*)(0x42A24F38UL))) +#define bM4_INTC_VSSEL135_VSEL15 (*((volatile unsigned int*)(0x42A24F3CUL))) +#define bM4_INTC_VSSEL135_VSEL16 (*((volatile unsigned int*)(0x42A24F40UL))) +#define bM4_INTC_VSSEL135_VSEL17 (*((volatile unsigned int*)(0x42A24F44UL))) +#define bM4_INTC_VSSEL135_VSEL18 (*((volatile unsigned int*)(0x42A24F48UL))) +#define bM4_INTC_VSSEL135_VSEL19 (*((volatile unsigned int*)(0x42A24F4CUL))) +#define bM4_INTC_VSSEL135_VSEL20 (*((volatile unsigned int*)(0x42A24F50UL))) +#define bM4_INTC_VSSEL135_VSEL21 (*((volatile unsigned int*)(0x42A24F54UL))) +#define bM4_INTC_VSSEL135_VSEL22 (*((volatile unsigned int*)(0x42A24F58UL))) +#define bM4_INTC_VSSEL135_VSEL23 (*((volatile unsigned int*)(0x42A24F5CUL))) +#define bM4_INTC_VSSEL135_VSEL24 (*((volatile unsigned int*)(0x42A24F60UL))) +#define bM4_INTC_VSSEL135_VSEL25 (*((volatile unsigned int*)(0x42A24F64UL))) +#define bM4_INTC_VSSEL135_VSEL26 (*((volatile unsigned int*)(0x42A24F68UL))) +#define bM4_INTC_VSSEL135_VSEL27 (*((volatile unsigned int*)(0x42A24F6CUL))) +#define bM4_INTC_VSSEL135_VSEL28 (*((volatile unsigned int*)(0x42A24F70UL))) +#define bM4_INTC_VSSEL135_VSEL29 (*((volatile unsigned int*)(0x42A24F74UL))) +#define bM4_INTC_VSSEL135_VSEL30 (*((volatile unsigned int*)(0x42A24F78UL))) +#define bM4_INTC_VSSEL135_VSEL31 (*((volatile unsigned int*)(0x42A24F7CUL))) +#define bM4_INTC_VSSEL136_VSEL0 (*((volatile unsigned int*)(0x42A24F80UL))) +#define bM4_INTC_VSSEL136_VSEL1 (*((volatile unsigned int*)(0x42A24F84UL))) +#define bM4_INTC_VSSEL136_VSEL2 (*((volatile unsigned int*)(0x42A24F88UL))) +#define bM4_INTC_VSSEL136_VSEL3 (*((volatile unsigned int*)(0x42A24F8CUL))) +#define bM4_INTC_VSSEL136_VSEL4 (*((volatile unsigned int*)(0x42A24F90UL))) +#define bM4_INTC_VSSEL136_VSEL5 (*((volatile unsigned int*)(0x42A24F94UL))) +#define bM4_INTC_VSSEL136_VSEL6 (*((volatile unsigned int*)(0x42A24F98UL))) +#define bM4_INTC_VSSEL136_VSEL7 (*((volatile unsigned int*)(0x42A24F9CUL))) +#define bM4_INTC_VSSEL136_VSEL8 (*((volatile unsigned int*)(0x42A24FA0UL))) +#define bM4_INTC_VSSEL136_VSEL9 (*((volatile unsigned int*)(0x42A24FA4UL))) +#define bM4_INTC_VSSEL136_VSEL10 (*((volatile unsigned int*)(0x42A24FA8UL))) +#define bM4_INTC_VSSEL136_VSEL11 (*((volatile unsigned int*)(0x42A24FACUL))) +#define bM4_INTC_VSSEL136_VSEL12 (*((volatile unsigned int*)(0x42A24FB0UL))) +#define bM4_INTC_VSSEL136_VSEL13 (*((volatile unsigned int*)(0x42A24FB4UL))) +#define bM4_INTC_VSSEL136_VSEL14 (*((volatile unsigned int*)(0x42A24FB8UL))) +#define bM4_INTC_VSSEL136_VSEL15 (*((volatile unsigned int*)(0x42A24FBCUL))) +#define bM4_INTC_VSSEL136_VSEL16 (*((volatile unsigned int*)(0x42A24FC0UL))) +#define bM4_INTC_VSSEL136_VSEL17 (*((volatile unsigned int*)(0x42A24FC4UL))) +#define bM4_INTC_VSSEL136_VSEL18 (*((volatile unsigned int*)(0x42A24FC8UL))) +#define bM4_INTC_VSSEL136_VSEL19 (*((volatile unsigned int*)(0x42A24FCCUL))) +#define bM4_INTC_VSSEL136_VSEL20 (*((volatile unsigned int*)(0x42A24FD0UL))) +#define bM4_INTC_VSSEL136_VSEL21 (*((volatile unsigned int*)(0x42A24FD4UL))) +#define bM4_INTC_VSSEL136_VSEL22 (*((volatile unsigned int*)(0x42A24FD8UL))) +#define bM4_INTC_VSSEL136_VSEL23 (*((volatile unsigned int*)(0x42A24FDCUL))) +#define bM4_INTC_VSSEL136_VSEL24 (*((volatile unsigned int*)(0x42A24FE0UL))) +#define bM4_INTC_VSSEL136_VSEL25 (*((volatile unsigned int*)(0x42A24FE4UL))) +#define bM4_INTC_VSSEL136_VSEL26 (*((volatile unsigned int*)(0x42A24FE8UL))) +#define bM4_INTC_VSSEL136_VSEL27 (*((volatile unsigned int*)(0x42A24FECUL))) +#define bM4_INTC_VSSEL136_VSEL28 (*((volatile unsigned int*)(0x42A24FF0UL))) +#define bM4_INTC_VSSEL136_VSEL29 (*((volatile unsigned int*)(0x42A24FF4UL))) +#define bM4_INTC_VSSEL136_VSEL30 (*((volatile unsigned int*)(0x42A24FF8UL))) +#define bM4_INTC_VSSEL136_VSEL31 (*((volatile unsigned int*)(0x42A24FFCUL))) +#define bM4_INTC_VSSEL137_VSEL0 (*((volatile unsigned int*)(0x42A25000UL))) +#define bM4_INTC_VSSEL137_VSEL1 (*((volatile unsigned int*)(0x42A25004UL))) +#define bM4_INTC_VSSEL137_VSEL2 (*((volatile unsigned int*)(0x42A25008UL))) +#define bM4_INTC_VSSEL137_VSEL3 (*((volatile unsigned int*)(0x42A2500CUL))) +#define bM4_INTC_VSSEL137_VSEL4 (*((volatile unsigned int*)(0x42A25010UL))) +#define bM4_INTC_VSSEL137_VSEL5 (*((volatile unsigned int*)(0x42A25014UL))) +#define bM4_INTC_VSSEL137_VSEL6 (*((volatile unsigned int*)(0x42A25018UL))) +#define bM4_INTC_VSSEL137_VSEL7 (*((volatile unsigned int*)(0x42A2501CUL))) +#define bM4_INTC_VSSEL137_VSEL8 (*((volatile unsigned int*)(0x42A25020UL))) +#define bM4_INTC_VSSEL137_VSEL9 (*((volatile unsigned int*)(0x42A25024UL))) +#define bM4_INTC_VSSEL137_VSEL10 (*((volatile unsigned int*)(0x42A25028UL))) +#define bM4_INTC_VSSEL137_VSEL11 (*((volatile unsigned int*)(0x42A2502CUL))) +#define bM4_INTC_VSSEL137_VSEL12 (*((volatile unsigned int*)(0x42A25030UL))) +#define bM4_INTC_VSSEL137_VSEL13 (*((volatile unsigned int*)(0x42A25034UL))) +#define bM4_INTC_VSSEL137_VSEL14 (*((volatile unsigned int*)(0x42A25038UL))) +#define bM4_INTC_VSSEL137_VSEL15 (*((volatile unsigned int*)(0x42A2503CUL))) +#define bM4_INTC_VSSEL137_VSEL16 (*((volatile unsigned int*)(0x42A25040UL))) +#define bM4_INTC_VSSEL137_VSEL17 (*((volatile unsigned int*)(0x42A25044UL))) +#define bM4_INTC_VSSEL137_VSEL18 (*((volatile unsigned int*)(0x42A25048UL))) +#define bM4_INTC_VSSEL137_VSEL19 (*((volatile unsigned int*)(0x42A2504CUL))) +#define bM4_INTC_VSSEL137_VSEL20 (*((volatile unsigned int*)(0x42A25050UL))) +#define bM4_INTC_VSSEL137_VSEL21 (*((volatile unsigned int*)(0x42A25054UL))) +#define bM4_INTC_VSSEL137_VSEL22 (*((volatile unsigned int*)(0x42A25058UL))) +#define bM4_INTC_VSSEL137_VSEL23 (*((volatile unsigned int*)(0x42A2505CUL))) +#define bM4_INTC_VSSEL137_VSEL24 (*((volatile unsigned int*)(0x42A25060UL))) +#define bM4_INTC_VSSEL137_VSEL25 (*((volatile unsigned int*)(0x42A25064UL))) +#define bM4_INTC_VSSEL137_VSEL26 (*((volatile unsigned int*)(0x42A25068UL))) +#define bM4_INTC_VSSEL137_VSEL27 (*((volatile unsigned int*)(0x42A2506CUL))) +#define bM4_INTC_VSSEL137_VSEL28 (*((volatile unsigned int*)(0x42A25070UL))) +#define bM4_INTC_VSSEL137_VSEL29 (*((volatile unsigned int*)(0x42A25074UL))) +#define bM4_INTC_VSSEL137_VSEL30 (*((volatile unsigned int*)(0x42A25078UL))) +#define bM4_INTC_VSSEL137_VSEL31 (*((volatile unsigned int*)(0x42A2507CUL))) +#define bM4_INTC_VSSEL138_VSEL0 (*((volatile unsigned int*)(0x42A25080UL))) +#define bM4_INTC_VSSEL138_VSEL1 (*((volatile unsigned int*)(0x42A25084UL))) +#define bM4_INTC_VSSEL138_VSEL2 (*((volatile unsigned int*)(0x42A25088UL))) +#define bM4_INTC_VSSEL138_VSEL3 (*((volatile unsigned int*)(0x42A2508CUL))) +#define bM4_INTC_VSSEL138_VSEL4 (*((volatile unsigned int*)(0x42A25090UL))) +#define bM4_INTC_VSSEL138_VSEL5 (*((volatile unsigned int*)(0x42A25094UL))) +#define bM4_INTC_VSSEL138_VSEL6 (*((volatile unsigned int*)(0x42A25098UL))) +#define bM4_INTC_VSSEL138_VSEL7 (*((volatile unsigned int*)(0x42A2509CUL))) +#define bM4_INTC_VSSEL138_VSEL8 (*((volatile unsigned int*)(0x42A250A0UL))) +#define bM4_INTC_VSSEL138_VSEL9 (*((volatile unsigned int*)(0x42A250A4UL))) +#define bM4_INTC_VSSEL138_VSEL10 (*((volatile unsigned int*)(0x42A250A8UL))) +#define bM4_INTC_VSSEL138_VSEL11 (*((volatile unsigned int*)(0x42A250ACUL))) +#define bM4_INTC_VSSEL138_VSEL12 (*((volatile unsigned int*)(0x42A250B0UL))) +#define bM4_INTC_VSSEL138_VSEL13 (*((volatile unsigned int*)(0x42A250B4UL))) +#define bM4_INTC_VSSEL138_VSEL14 (*((volatile unsigned int*)(0x42A250B8UL))) +#define bM4_INTC_VSSEL138_VSEL15 (*((volatile unsigned int*)(0x42A250BCUL))) +#define bM4_INTC_VSSEL138_VSEL16 (*((volatile unsigned int*)(0x42A250C0UL))) +#define bM4_INTC_VSSEL138_VSEL17 (*((volatile unsigned int*)(0x42A250C4UL))) +#define bM4_INTC_VSSEL138_VSEL18 (*((volatile unsigned int*)(0x42A250C8UL))) +#define bM4_INTC_VSSEL138_VSEL19 (*((volatile unsigned int*)(0x42A250CCUL))) +#define bM4_INTC_VSSEL138_VSEL20 (*((volatile unsigned int*)(0x42A250D0UL))) +#define bM4_INTC_VSSEL138_VSEL21 (*((volatile unsigned int*)(0x42A250D4UL))) +#define bM4_INTC_VSSEL138_VSEL22 (*((volatile unsigned int*)(0x42A250D8UL))) +#define bM4_INTC_VSSEL138_VSEL23 (*((volatile unsigned int*)(0x42A250DCUL))) +#define bM4_INTC_VSSEL138_VSEL24 (*((volatile unsigned int*)(0x42A250E0UL))) +#define bM4_INTC_VSSEL138_VSEL25 (*((volatile unsigned int*)(0x42A250E4UL))) +#define bM4_INTC_VSSEL138_VSEL26 (*((volatile unsigned int*)(0x42A250E8UL))) +#define bM4_INTC_VSSEL138_VSEL27 (*((volatile unsigned int*)(0x42A250ECUL))) +#define bM4_INTC_VSSEL138_VSEL28 (*((volatile unsigned int*)(0x42A250F0UL))) +#define bM4_INTC_VSSEL138_VSEL29 (*((volatile unsigned int*)(0x42A250F4UL))) +#define bM4_INTC_VSSEL138_VSEL30 (*((volatile unsigned int*)(0x42A250F8UL))) +#define bM4_INTC_VSSEL138_VSEL31 (*((volatile unsigned int*)(0x42A250FCUL))) +#define bM4_INTC_VSSEL139_VSEL0 (*((volatile unsigned int*)(0x42A25100UL))) +#define bM4_INTC_VSSEL139_VSEL1 (*((volatile unsigned int*)(0x42A25104UL))) +#define bM4_INTC_VSSEL139_VSEL2 (*((volatile unsigned int*)(0x42A25108UL))) +#define bM4_INTC_VSSEL139_VSEL3 (*((volatile unsigned int*)(0x42A2510CUL))) +#define bM4_INTC_VSSEL139_VSEL4 (*((volatile unsigned int*)(0x42A25110UL))) +#define bM4_INTC_VSSEL139_VSEL5 (*((volatile unsigned int*)(0x42A25114UL))) +#define bM4_INTC_VSSEL139_VSEL6 (*((volatile unsigned int*)(0x42A25118UL))) +#define bM4_INTC_VSSEL139_VSEL7 (*((volatile unsigned int*)(0x42A2511CUL))) +#define bM4_INTC_VSSEL139_VSEL8 (*((volatile unsigned int*)(0x42A25120UL))) +#define bM4_INTC_VSSEL139_VSEL9 (*((volatile unsigned int*)(0x42A25124UL))) +#define bM4_INTC_VSSEL139_VSEL10 (*((volatile unsigned int*)(0x42A25128UL))) +#define bM4_INTC_VSSEL139_VSEL11 (*((volatile unsigned int*)(0x42A2512CUL))) +#define bM4_INTC_VSSEL139_VSEL12 (*((volatile unsigned int*)(0x42A25130UL))) +#define bM4_INTC_VSSEL139_VSEL13 (*((volatile unsigned int*)(0x42A25134UL))) +#define bM4_INTC_VSSEL139_VSEL14 (*((volatile unsigned int*)(0x42A25138UL))) +#define bM4_INTC_VSSEL139_VSEL15 (*((volatile unsigned int*)(0x42A2513CUL))) +#define bM4_INTC_VSSEL139_VSEL16 (*((volatile unsigned int*)(0x42A25140UL))) +#define bM4_INTC_VSSEL139_VSEL17 (*((volatile unsigned int*)(0x42A25144UL))) +#define bM4_INTC_VSSEL139_VSEL18 (*((volatile unsigned int*)(0x42A25148UL))) +#define bM4_INTC_VSSEL139_VSEL19 (*((volatile unsigned int*)(0x42A2514CUL))) +#define bM4_INTC_VSSEL139_VSEL20 (*((volatile unsigned int*)(0x42A25150UL))) +#define bM4_INTC_VSSEL139_VSEL21 (*((volatile unsigned int*)(0x42A25154UL))) +#define bM4_INTC_VSSEL139_VSEL22 (*((volatile unsigned int*)(0x42A25158UL))) +#define bM4_INTC_VSSEL139_VSEL23 (*((volatile unsigned int*)(0x42A2515CUL))) +#define bM4_INTC_VSSEL139_VSEL24 (*((volatile unsigned int*)(0x42A25160UL))) +#define bM4_INTC_VSSEL139_VSEL25 (*((volatile unsigned int*)(0x42A25164UL))) +#define bM4_INTC_VSSEL139_VSEL26 (*((volatile unsigned int*)(0x42A25168UL))) +#define bM4_INTC_VSSEL139_VSEL27 (*((volatile unsigned int*)(0x42A2516CUL))) +#define bM4_INTC_VSSEL139_VSEL28 (*((volatile unsigned int*)(0x42A25170UL))) +#define bM4_INTC_VSSEL139_VSEL29 (*((volatile unsigned int*)(0x42A25174UL))) +#define bM4_INTC_VSSEL139_VSEL30 (*((volatile unsigned int*)(0x42A25178UL))) +#define bM4_INTC_VSSEL139_VSEL31 (*((volatile unsigned int*)(0x42A2517CUL))) +#define bM4_INTC_VSSEL140_VSEL0 (*((volatile unsigned int*)(0x42A25180UL))) +#define bM4_INTC_VSSEL140_VSEL1 (*((volatile unsigned int*)(0x42A25184UL))) +#define bM4_INTC_VSSEL140_VSEL2 (*((volatile unsigned int*)(0x42A25188UL))) +#define bM4_INTC_VSSEL140_VSEL3 (*((volatile unsigned int*)(0x42A2518CUL))) +#define bM4_INTC_VSSEL140_VSEL4 (*((volatile unsigned int*)(0x42A25190UL))) +#define bM4_INTC_VSSEL140_VSEL5 (*((volatile unsigned int*)(0x42A25194UL))) +#define bM4_INTC_VSSEL140_VSEL6 (*((volatile unsigned int*)(0x42A25198UL))) +#define bM4_INTC_VSSEL140_VSEL7 (*((volatile unsigned int*)(0x42A2519CUL))) +#define bM4_INTC_VSSEL140_VSEL8 (*((volatile unsigned int*)(0x42A251A0UL))) +#define bM4_INTC_VSSEL140_VSEL9 (*((volatile unsigned int*)(0x42A251A4UL))) +#define bM4_INTC_VSSEL140_VSEL10 (*((volatile unsigned int*)(0x42A251A8UL))) +#define bM4_INTC_VSSEL140_VSEL11 (*((volatile unsigned int*)(0x42A251ACUL))) +#define bM4_INTC_VSSEL140_VSEL12 (*((volatile unsigned int*)(0x42A251B0UL))) +#define bM4_INTC_VSSEL140_VSEL13 (*((volatile unsigned int*)(0x42A251B4UL))) +#define bM4_INTC_VSSEL140_VSEL14 (*((volatile unsigned int*)(0x42A251B8UL))) +#define bM4_INTC_VSSEL140_VSEL15 (*((volatile unsigned int*)(0x42A251BCUL))) +#define bM4_INTC_VSSEL140_VSEL16 (*((volatile unsigned int*)(0x42A251C0UL))) +#define bM4_INTC_VSSEL140_VSEL17 (*((volatile unsigned int*)(0x42A251C4UL))) +#define bM4_INTC_VSSEL140_VSEL18 (*((volatile unsigned int*)(0x42A251C8UL))) +#define bM4_INTC_VSSEL140_VSEL19 (*((volatile unsigned int*)(0x42A251CCUL))) +#define bM4_INTC_VSSEL140_VSEL20 (*((volatile unsigned int*)(0x42A251D0UL))) +#define bM4_INTC_VSSEL140_VSEL21 (*((volatile unsigned int*)(0x42A251D4UL))) +#define bM4_INTC_VSSEL140_VSEL22 (*((volatile unsigned int*)(0x42A251D8UL))) +#define bM4_INTC_VSSEL140_VSEL23 (*((volatile unsigned int*)(0x42A251DCUL))) +#define bM4_INTC_VSSEL140_VSEL24 (*((volatile unsigned int*)(0x42A251E0UL))) +#define bM4_INTC_VSSEL140_VSEL25 (*((volatile unsigned int*)(0x42A251E4UL))) +#define bM4_INTC_VSSEL140_VSEL26 (*((volatile unsigned int*)(0x42A251E8UL))) +#define bM4_INTC_VSSEL140_VSEL27 (*((volatile unsigned int*)(0x42A251ECUL))) +#define bM4_INTC_VSSEL140_VSEL28 (*((volatile unsigned int*)(0x42A251F0UL))) +#define bM4_INTC_VSSEL140_VSEL29 (*((volatile unsigned int*)(0x42A251F4UL))) +#define bM4_INTC_VSSEL140_VSEL30 (*((volatile unsigned int*)(0x42A251F8UL))) +#define bM4_INTC_VSSEL140_VSEL31 (*((volatile unsigned int*)(0x42A251FCUL))) +#define bM4_INTC_VSSEL141_VSEL0 (*((volatile unsigned int*)(0x42A25200UL))) +#define bM4_INTC_VSSEL141_VSEL1 (*((volatile unsigned int*)(0x42A25204UL))) +#define bM4_INTC_VSSEL141_VSEL2 (*((volatile unsigned int*)(0x42A25208UL))) +#define bM4_INTC_VSSEL141_VSEL3 (*((volatile unsigned int*)(0x42A2520CUL))) +#define bM4_INTC_VSSEL141_VSEL4 (*((volatile unsigned int*)(0x42A25210UL))) +#define bM4_INTC_VSSEL141_VSEL5 (*((volatile unsigned int*)(0x42A25214UL))) +#define bM4_INTC_VSSEL141_VSEL6 (*((volatile unsigned int*)(0x42A25218UL))) +#define bM4_INTC_VSSEL141_VSEL7 (*((volatile unsigned int*)(0x42A2521CUL))) +#define bM4_INTC_VSSEL141_VSEL8 (*((volatile unsigned int*)(0x42A25220UL))) +#define bM4_INTC_VSSEL141_VSEL9 (*((volatile unsigned int*)(0x42A25224UL))) +#define bM4_INTC_VSSEL141_VSEL10 (*((volatile unsigned int*)(0x42A25228UL))) +#define bM4_INTC_VSSEL141_VSEL11 (*((volatile unsigned int*)(0x42A2522CUL))) +#define bM4_INTC_VSSEL141_VSEL12 (*((volatile unsigned int*)(0x42A25230UL))) +#define bM4_INTC_VSSEL141_VSEL13 (*((volatile unsigned int*)(0x42A25234UL))) +#define bM4_INTC_VSSEL141_VSEL14 (*((volatile unsigned int*)(0x42A25238UL))) +#define bM4_INTC_VSSEL141_VSEL15 (*((volatile unsigned int*)(0x42A2523CUL))) +#define bM4_INTC_VSSEL141_VSEL16 (*((volatile unsigned int*)(0x42A25240UL))) +#define bM4_INTC_VSSEL141_VSEL17 (*((volatile unsigned int*)(0x42A25244UL))) +#define bM4_INTC_VSSEL141_VSEL18 (*((volatile unsigned int*)(0x42A25248UL))) +#define bM4_INTC_VSSEL141_VSEL19 (*((volatile unsigned int*)(0x42A2524CUL))) +#define bM4_INTC_VSSEL141_VSEL20 (*((volatile unsigned int*)(0x42A25250UL))) +#define bM4_INTC_VSSEL141_VSEL21 (*((volatile unsigned int*)(0x42A25254UL))) +#define bM4_INTC_VSSEL141_VSEL22 (*((volatile unsigned int*)(0x42A25258UL))) +#define bM4_INTC_VSSEL141_VSEL23 (*((volatile unsigned int*)(0x42A2525CUL))) +#define bM4_INTC_VSSEL141_VSEL24 (*((volatile unsigned int*)(0x42A25260UL))) +#define bM4_INTC_VSSEL141_VSEL25 (*((volatile unsigned int*)(0x42A25264UL))) +#define bM4_INTC_VSSEL141_VSEL26 (*((volatile unsigned int*)(0x42A25268UL))) +#define bM4_INTC_VSSEL141_VSEL27 (*((volatile unsigned int*)(0x42A2526CUL))) +#define bM4_INTC_VSSEL141_VSEL28 (*((volatile unsigned int*)(0x42A25270UL))) +#define bM4_INTC_VSSEL141_VSEL29 (*((volatile unsigned int*)(0x42A25274UL))) +#define bM4_INTC_VSSEL141_VSEL30 (*((volatile unsigned int*)(0x42A25278UL))) +#define bM4_INTC_VSSEL141_VSEL31 (*((volatile unsigned int*)(0x42A2527CUL))) +#define bM4_INTC_VSSEL142_VSEL0 (*((volatile unsigned int*)(0x42A25280UL))) +#define bM4_INTC_VSSEL142_VSEL1 (*((volatile unsigned int*)(0x42A25284UL))) +#define bM4_INTC_VSSEL142_VSEL2 (*((volatile unsigned int*)(0x42A25288UL))) +#define bM4_INTC_VSSEL142_VSEL3 (*((volatile unsigned int*)(0x42A2528CUL))) +#define bM4_INTC_VSSEL142_VSEL4 (*((volatile unsigned int*)(0x42A25290UL))) +#define bM4_INTC_VSSEL142_VSEL5 (*((volatile unsigned int*)(0x42A25294UL))) +#define bM4_INTC_VSSEL142_VSEL6 (*((volatile unsigned int*)(0x42A25298UL))) +#define bM4_INTC_VSSEL142_VSEL7 (*((volatile unsigned int*)(0x42A2529CUL))) +#define bM4_INTC_VSSEL142_VSEL8 (*((volatile unsigned int*)(0x42A252A0UL))) +#define bM4_INTC_VSSEL142_VSEL9 (*((volatile unsigned int*)(0x42A252A4UL))) +#define bM4_INTC_VSSEL142_VSEL10 (*((volatile unsigned int*)(0x42A252A8UL))) +#define bM4_INTC_VSSEL142_VSEL11 (*((volatile unsigned int*)(0x42A252ACUL))) +#define bM4_INTC_VSSEL142_VSEL12 (*((volatile unsigned int*)(0x42A252B0UL))) +#define bM4_INTC_VSSEL142_VSEL13 (*((volatile unsigned int*)(0x42A252B4UL))) +#define bM4_INTC_VSSEL142_VSEL14 (*((volatile unsigned int*)(0x42A252B8UL))) +#define bM4_INTC_VSSEL142_VSEL15 (*((volatile unsigned int*)(0x42A252BCUL))) +#define bM4_INTC_VSSEL142_VSEL16 (*((volatile unsigned int*)(0x42A252C0UL))) +#define bM4_INTC_VSSEL142_VSEL17 (*((volatile unsigned int*)(0x42A252C4UL))) +#define bM4_INTC_VSSEL142_VSEL18 (*((volatile unsigned int*)(0x42A252C8UL))) +#define bM4_INTC_VSSEL142_VSEL19 (*((volatile unsigned int*)(0x42A252CCUL))) +#define bM4_INTC_VSSEL142_VSEL20 (*((volatile unsigned int*)(0x42A252D0UL))) +#define bM4_INTC_VSSEL142_VSEL21 (*((volatile unsigned int*)(0x42A252D4UL))) +#define bM4_INTC_VSSEL142_VSEL22 (*((volatile unsigned int*)(0x42A252D8UL))) +#define bM4_INTC_VSSEL142_VSEL23 (*((volatile unsigned int*)(0x42A252DCUL))) +#define bM4_INTC_VSSEL142_VSEL24 (*((volatile unsigned int*)(0x42A252E0UL))) +#define bM4_INTC_VSSEL142_VSEL25 (*((volatile unsigned int*)(0x42A252E4UL))) +#define bM4_INTC_VSSEL142_VSEL26 (*((volatile unsigned int*)(0x42A252E8UL))) +#define bM4_INTC_VSSEL142_VSEL27 (*((volatile unsigned int*)(0x42A252ECUL))) +#define bM4_INTC_VSSEL142_VSEL28 (*((volatile unsigned int*)(0x42A252F0UL))) +#define bM4_INTC_VSSEL142_VSEL29 (*((volatile unsigned int*)(0x42A252F4UL))) +#define bM4_INTC_VSSEL142_VSEL30 (*((volatile unsigned int*)(0x42A252F8UL))) +#define bM4_INTC_VSSEL142_VSEL31 (*((volatile unsigned int*)(0x42A252FCUL))) +#define bM4_INTC_VSSEL143_VSEL0 (*((volatile unsigned int*)(0x42A25300UL))) +#define bM4_INTC_VSSEL143_VSEL1 (*((volatile unsigned int*)(0x42A25304UL))) +#define bM4_INTC_VSSEL143_VSEL2 (*((volatile unsigned int*)(0x42A25308UL))) +#define bM4_INTC_VSSEL143_VSEL3 (*((volatile unsigned int*)(0x42A2530CUL))) +#define bM4_INTC_VSSEL143_VSEL4 (*((volatile unsigned int*)(0x42A25310UL))) +#define bM4_INTC_VSSEL143_VSEL5 (*((volatile unsigned int*)(0x42A25314UL))) +#define bM4_INTC_VSSEL143_VSEL6 (*((volatile unsigned int*)(0x42A25318UL))) +#define bM4_INTC_VSSEL143_VSEL7 (*((volatile unsigned int*)(0x42A2531CUL))) +#define bM4_INTC_VSSEL143_VSEL8 (*((volatile unsigned int*)(0x42A25320UL))) +#define bM4_INTC_VSSEL143_VSEL9 (*((volatile unsigned int*)(0x42A25324UL))) +#define bM4_INTC_VSSEL143_VSEL10 (*((volatile unsigned int*)(0x42A25328UL))) +#define bM4_INTC_VSSEL143_VSEL11 (*((volatile unsigned int*)(0x42A2532CUL))) +#define bM4_INTC_VSSEL143_VSEL12 (*((volatile unsigned int*)(0x42A25330UL))) +#define bM4_INTC_VSSEL143_VSEL13 (*((volatile unsigned int*)(0x42A25334UL))) +#define bM4_INTC_VSSEL143_VSEL14 (*((volatile unsigned int*)(0x42A25338UL))) +#define bM4_INTC_VSSEL143_VSEL15 (*((volatile unsigned int*)(0x42A2533CUL))) +#define bM4_INTC_VSSEL143_VSEL16 (*((volatile unsigned int*)(0x42A25340UL))) +#define bM4_INTC_VSSEL143_VSEL17 (*((volatile unsigned int*)(0x42A25344UL))) +#define bM4_INTC_VSSEL143_VSEL18 (*((volatile unsigned int*)(0x42A25348UL))) +#define bM4_INTC_VSSEL143_VSEL19 (*((volatile unsigned int*)(0x42A2534CUL))) +#define bM4_INTC_VSSEL143_VSEL20 (*((volatile unsigned int*)(0x42A25350UL))) +#define bM4_INTC_VSSEL143_VSEL21 (*((volatile unsigned int*)(0x42A25354UL))) +#define bM4_INTC_VSSEL143_VSEL22 (*((volatile unsigned int*)(0x42A25358UL))) +#define bM4_INTC_VSSEL143_VSEL23 (*((volatile unsigned int*)(0x42A2535CUL))) +#define bM4_INTC_VSSEL143_VSEL24 (*((volatile unsigned int*)(0x42A25360UL))) +#define bM4_INTC_VSSEL143_VSEL25 (*((volatile unsigned int*)(0x42A25364UL))) +#define bM4_INTC_VSSEL143_VSEL26 (*((volatile unsigned int*)(0x42A25368UL))) +#define bM4_INTC_VSSEL143_VSEL27 (*((volatile unsigned int*)(0x42A2536CUL))) +#define bM4_INTC_VSSEL143_VSEL28 (*((volatile unsigned int*)(0x42A25370UL))) +#define bM4_INTC_VSSEL143_VSEL29 (*((volatile unsigned int*)(0x42A25374UL))) +#define bM4_INTC_VSSEL143_VSEL30 (*((volatile unsigned int*)(0x42A25378UL))) +#define bM4_INTC_VSSEL143_VSEL31 (*((volatile unsigned int*)(0x42A2537CUL))) +#define bM4_INTC_SWIER_SWIE0 (*((volatile unsigned int*)(0x42A25380UL))) +#define bM4_INTC_SWIER_SWIE1 (*((volatile unsigned int*)(0x42A25384UL))) +#define bM4_INTC_SWIER_SWIE2 (*((volatile unsigned int*)(0x42A25388UL))) +#define bM4_INTC_SWIER_SWIE3 (*((volatile unsigned int*)(0x42A2538CUL))) +#define bM4_INTC_SWIER_SWIE4 (*((volatile unsigned int*)(0x42A25390UL))) +#define bM4_INTC_SWIER_SWIE5 (*((volatile unsigned int*)(0x42A25394UL))) +#define bM4_INTC_SWIER_SWIE6 (*((volatile unsigned int*)(0x42A25398UL))) +#define bM4_INTC_SWIER_SWIE7 (*((volatile unsigned int*)(0x42A2539CUL))) +#define bM4_INTC_SWIER_SWIE8 (*((volatile unsigned int*)(0x42A253A0UL))) +#define bM4_INTC_SWIER_SWIE9 (*((volatile unsigned int*)(0x42A253A4UL))) +#define bM4_INTC_SWIER_SWIE10 (*((volatile unsigned int*)(0x42A253A8UL))) +#define bM4_INTC_SWIER_SWIE11 (*((volatile unsigned int*)(0x42A253ACUL))) +#define bM4_INTC_SWIER_SWIE12 (*((volatile unsigned int*)(0x42A253B0UL))) +#define bM4_INTC_SWIER_SWIE13 (*((volatile unsigned int*)(0x42A253B4UL))) +#define bM4_INTC_SWIER_SWIE14 (*((volatile unsigned int*)(0x42A253B8UL))) +#define bM4_INTC_SWIER_SWIE15 (*((volatile unsigned int*)(0x42A253BCUL))) +#define bM4_INTC_SWIER_SWIE16 (*((volatile unsigned int*)(0x42A253C0UL))) +#define bM4_INTC_SWIER_SWIE17 (*((volatile unsigned int*)(0x42A253C4UL))) +#define bM4_INTC_SWIER_SWIE18 (*((volatile unsigned int*)(0x42A253C8UL))) +#define bM4_INTC_SWIER_SWIE19 (*((volatile unsigned int*)(0x42A253CCUL))) +#define bM4_INTC_SWIER_SWIE20 (*((volatile unsigned int*)(0x42A253D0UL))) +#define bM4_INTC_SWIER_SWIE21 (*((volatile unsigned int*)(0x42A253D4UL))) +#define bM4_INTC_SWIER_SWIE22 (*((volatile unsigned int*)(0x42A253D8UL))) +#define bM4_INTC_SWIER_SWIE23 (*((volatile unsigned int*)(0x42A253DCUL))) +#define bM4_INTC_SWIER_SWIE24 (*((volatile unsigned int*)(0x42A253E0UL))) +#define bM4_INTC_SWIER_SWIE25 (*((volatile unsigned int*)(0x42A253E4UL))) +#define bM4_INTC_SWIER_SWIE26 (*((volatile unsigned int*)(0x42A253E8UL))) +#define bM4_INTC_SWIER_SWIE27 (*((volatile unsigned int*)(0x42A253ECUL))) +#define bM4_INTC_SWIER_SWIE28 (*((volatile unsigned int*)(0x42A253F0UL))) +#define bM4_INTC_SWIER_SWIE29 (*((volatile unsigned int*)(0x42A253F4UL))) +#define bM4_INTC_SWIER_SWIE30 (*((volatile unsigned int*)(0x42A253F8UL))) +#define bM4_INTC_SWIER_SWIE31 (*((volatile unsigned int*)(0x42A253FCUL))) +#define bM4_INTC_EVTER_EVTE0 (*((volatile unsigned int*)(0x42A25400UL))) +#define bM4_INTC_EVTER_EVTE1 (*((volatile unsigned int*)(0x42A25404UL))) +#define bM4_INTC_EVTER_EVTE2 (*((volatile unsigned int*)(0x42A25408UL))) +#define bM4_INTC_EVTER_EVTE3 (*((volatile unsigned int*)(0x42A2540CUL))) +#define bM4_INTC_EVTER_EVTE4 (*((volatile unsigned int*)(0x42A25410UL))) +#define bM4_INTC_EVTER_EVTE5 (*((volatile unsigned int*)(0x42A25414UL))) +#define bM4_INTC_EVTER_EVTE6 (*((volatile unsigned int*)(0x42A25418UL))) +#define bM4_INTC_EVTER_EVTE7 (*((volatile unsigned int*)(0x42A2541CUL))) +#define bM4_INTC_EVTER_EVTE8 (*((volatile unsigned int*)(0x42A25420UL))) +#define bM4_INTC_EVTER_EVTE9 (*((volatile unsigned int*)(0x42A25424UL))) +#define bM4_INTC_EVTER_EVTE10 (*((volatile unsigned int*)(0x42A25428UL))) +#define bM4_INTC_EVTER_EVTE11 (*((volatile unsigned int*)(0x42A2542CUL))) +#define bM4_INTC_EVTER_EVTE12 (*((volatile unsigned int*)(0x42A25430UL))) +#define bM4_INTC_EVTER_EVTE13 (*((volatile unsigned int*)(0x42A25434UL))) +#define bM4_INTC_EVTER_EVTE14 (*((volatile unsigned int*)(0x42A25438UL))) +#define bM4_INTC_EVTER_EVTE15 (*((volatile unsigned int*)(0x42A2543CUL))) +#define bM4_INTC_EVTER_EVTE16 (*((volatile unsigned int*)(0x42A25440UL))) +#define bM4_INTC_EVTER_EVTE17 (*((volatile unsigned int*)(0x42A25444UL))) +#define bM4_INTC_EVTER_EVTE18 (*((volatile unsigned int*)(0x42A25448UL))) +#define bM4_INTC_EVTER_EVTE19 (*((volatile unsigned int*)(0x42A2544CUL))) +#define bM4_INTC_EVTER_EVTE20 (*((volatile unsigned int*)(0x42A25450UL))) +#define bM4_INTC_EVTER_EVTE21 (*((volatile unsigned int*)(0x42A25454UL))) +#define bM4_INTC_EVTER_EVTE22 (*((volatile unsigned int*)(0x42A25458UL))) +#define bM4_INTC_EVTER_EVTE23 (*((volatile unsigned int*)(0x42A2545CUL))) +#define bM4_INTC_EVTER_EVTE24 (*((volatile unsigned int*)(0x42A25460UL))) +#define bM4_INTC_EVTER_EVTE25 (*((volatile unsigned int*)(0x42A25464UL))) +#define bM4_INTC_EVTER_EVTE26 (*((volatile unsigned int*)(0x42A25468UL))) +#define bM4_INTC_EVTER_EVTE27 (*((volatile unsigned int*)(0x42A2546CUL))) +#define bM4_INTC_EVTER_EVTE28 (*((volatile unsigned int*)(0x42A25470UL))) +#define bM4_INTC_EVTER_EVTE29 (*((volatile unsigned int*)(0x42A25474UL))) +#define bM4_INTC_EVTER_EVTE30 (*((volatile unsigned int*)(0x42A25478UL))) +#define bM4_INTC_EVTER_EVTE31 (*((volatile unsigned int*)(0x42A2547CUL))) +#define bM4_INTC_IER_IER0 (*((volatile unsigned int*)(0x42A25480UL))) +#define bM4_INTC_IER_IER1 (*((volatile unsigned int*)(0x42A25484UL))) +#define bM4_INTC_IER_IER2 (*((volatile unsigned int*)(0x42A25488UL))) +#define bM4_INTC_IER_IER3 (*((volatile unsigned int*)(0x42A2548CUL))) +#define bM4_INTC_IER_IER4 (*((volatile unsigned int*)(0x42A25490UL))) +#define bM4_INTC_IER_IER5 (*((volatile unsigned int*)(0x42A25494UL))) +#define bM4_INTC_IER_IER6 (*((volatile unsigned int*)(0x42A25498UL))) +#define bM4_INTC_IER_IER7 (*((volatile unsigned int*)(0x42A2549CUL))) +#define bM4_INTC_IER_IER8 (*((volatile unsigned int*)(0x42A254A0UL))) +#define bM4_INTC_IER_IER9 (*((volatile unsigned int*)(0x42A254A4UL))) +#define bM4_INTC_IER_IER10 (*((volatile unsigned int*)(0x42A254A8UL))) +#define bM4_INTC_IER_IER11 (*((volatile unsigned int*)(0x42A254ACUL))) +#define bM4_INTC_IER_IER12 (*((volatile unsigned int*)(0x42A254B0UL))) +#define bM4_INTC_IER_IER13 (*((volatile unsigned int*)(0x42A254B4UL))) +#define bM4_INTC_IER_IER14 (*((volatile unsigned int*)(0x42A254B8UL))) +#define bM4_INTC_IER_IER15 (*((volatile unsigned int*)(0x42A254BCUL))) +#define bM4_INTC_IER_IER16 (*((volatile unsigned int*)(0x42A254C0UL))) +#define bM4_INTC_IER_IER17 (*((volatile unsigned int*)(0x42A254C4UL))) +#define bM4_INTC_IER_IER18 (*((volatile unsigned int*)(0x42A254C8UL))) +#define bM4_INTC_IER_IER19 (*((volatile unsigned int*)(0x42A254CCUL))) +#define bM4_INTC_IER_IER20 (*((volatile unsigned int*)(0x42A254D0UL))) +#define bM4_INTC_IER_IER21 (*((volatile unsigned int*)(0x42A254D4UL))) +#define bM4_INTC_IER_IER22 (*((volatile unsigned int*)(0x42A254D8UL))) +#define bM4_INTC_IER_IER23 (*((volatile unsigned int*)(0x42A254DCUL))) +#define bM4_INTC_IER_IER24 (*((volatile unsigned int*)(0x42A254E0UL))) +#define bM4_INTC_IER_IER25 (*((volatile unsigned int*)(0x42A254E4UL))) +#define bM4_INTC_IER_IER26 (*((volatile unsigned int*)(0x42A254E8UL))) +#define bM4_INTC_IER_IER27 (*((volatile unsigned int*)(0x42A254ECUL))) +#define bM4_INTC_IER_IER28 (*((volatile unsigned int*)(0x42A254F0UL))) +#define bM4_INTC_IER_IER29 (*((volatile unsigned int*)(0x42A254F4UL))) +#define bM4_INTC_IER_IER30 (*((volatile unsigned int*)(0x42A254F8UL))) +#define bM4_INTC_IER_IER31 (*((volatile unsigned int*)(0x42A254FCUL))) +#define bM4_KEYSCAN_SCR_KEYINSEL0 (*((volatile unsigned int*)(0x42A18000UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL1 (*((volatile unsigned int*)(0x42A18004UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL2 (*((volatile unsigned int*)(0x42A18008UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL3 (*((volatile unsigned int*)(0x42A1800CUL))) +#define bM4_KEYSCAN_SCR_KEYINSEL4 (*((volatile unsigned int*)(0x42A18010UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL5 (*((volatile unsigned int*)(0x42A18014UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL6 (*((volatile unsigned int*)(0x42A18018UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL7 (*((volatile unsigned int*)(0x42A1801CUL))) +#define bM4_KEYSCAN_SCR_KEYINSEL8 (*((volatile unsigned int*)(0x42A18020UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL9 (*((volatile unsigned int*)(0x42A18024UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL10 (*((volatile unsigned int*)(0x42A18028UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL11 (*((volatile unsigned int*)(0x42A1802CUL))) +#define bM4_KEYSCAN_SCR_KEYINSEL12 (*((volatile unsigned int*)(0x42A18030UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL13 (*((volatile unsigned int*)(0x42A18034UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL14 (*((volatile unsigned int*)(0x42A18038UL))) +#define bM4_KEYSCAN_SCR_KEYINSEL15 (*((volatile unsigned int*)(0x42A1803CUL))) +#define bM4_KEYSCAN_SCR_KEYOUTSEL0 (*((volatile unsigned int*)(0x42A18040UL))) +#define bM4_KEYSCAN_SCR_KEYOUTSEL1 (*((volatile unsigned int*)(0x42A18044UL))) +#define bM4_KEYSCAN_SCR_KEYOUTSEL2 (*((volatile unsigned int*)(0x42A18048UL))) +#define bM4_KEYSCAN_SCR_CKSEL0 (*((volatile unsigned int*)(0x42A18050UL))) +#define bM4_KEYSCAN_SCR_CKSEL1 (*((volatile unsigned int*)(0x42A18054UL))) +#define bM4_KEYSCAN_SCR_T_LLEVEL0 (*((volatile unsigned int*)(0x42A18060UL))) +#define bM4_KEYSCAN_SCR_T_LLEVEL1 (*((volatile unsigned int*)(0x42A18064UL))) +#define bM4_KEYSCAN_SCR_T_LLEVEL2 (*((volatile unsigned int*)(0x42A18068UL))) +#define bM4_KEYSCAN_SCR_T_LLEVEL3 (*((volatile unsigned int*)(0x42A1806CUL))) +#define bM4_KEYSCAN_SCR_T_LLEVEL4 (*((volatile unsigned int*)(0x42A18070UL))) +#define bM4_KEYSCAN_SCR_T_HIZ0 (*((volatile unsigned int*)(0x42A18074UL))) +#define bM4_KEYSCAN_SCR_T_HIZ1 (*((volatile unsigned int*)(0x42A18078UL))) +#define bM4_KEYSCAN_SCR_T_HIZ2 (*((volatile unsigned int*)(0x42A1807CUL))) +#define bM4_KEYSCAN_SER_SEN (*((volatile unsigned int*)(0x42A18080UL))) +#define bM4_KEYSCAN_SSR_INDEX0 (*((volatile unsigned int*)(0x42A18100UL))) +#define bM4_KEYSCAN_SSR_INDEX1 (*((volatile unsigned int*)(0x42A18104UL))) +#define bM4_KEYSCAN_SSR_INDEX2 (*((volatile unsigned int*)(0x42A18108UL))) +#define bM4_MPU_RGD0_MPURG0SIZE0 (*((volatile unsigned int*)(0x42A00000UL))) +#define bM4_MPU_RGD0_MPURG0SIZE1 (*((volatile unsigned int*)(0x42A00004UL))) +#define bM4_MPU_RGD0_MPURG0SIZE2 (*((volatile unsigned int*)(0x42A00008UL))) +#define bM4_MPU_RGD0_MPURG0SIZE3 (*((volatile unsigned int*)(0x42A0000CUL))) +#define bM4_MPU_RGD0_MPURG0SIZE4 (*((volatile unsigned int*)(0x42A00010UL))) +#define bM4_MPU_RGD0_MPURG0ADDR0 (*((volatile unsigned int*)(0x42A00014UL))) +#define bM4_MPU_RGD0_MPURG0ADDR1 (*((volatile unsigned int*)(0x42A00018UL))) +#define bM4_MPU_RGD0_MPURG0ADDR2 (*((volatile unsigned int*)(0x42A0001CUL))) +#define bM4_MPU_RGD0_MPURG0ADDR3 (*((volatile unsigned int*)(0x42A00020UL))) +#define bM4_MPU_RGD0_MPURG0ADDR4 (*((volatile unsigned int*)(0x42A00024UL))) +#define bM4_MPU_RGD0_MPURG0ADDR5 (*((volatile unsigned int*)(0x42A00028UL))) +#define bM4_MPU_RGD0_MPURG0ADDR6 (*((volatile unsigned int*)(0x42A0002CUL))) +#define bM4_MPU_RGD0_MPURG0ADDR7 (*((volatile unsigned int*)(0x42A00030UL))) +#define bM4_MPU_RGD0_MPURG0ADDR8 (*((volatile unsigned int*)(0x42A00034UL))) +#define bM4_MPU_RGD0_MPURG0ADDR9 (*((volatile unsigned int*)(0x42A00038UL))) +#define bM4_MPU_RGD0_MPURG0ADDR10 (*((volatile unsigned int*)(0x42A0003CUL))) +#define bM4_MPU_RGD0_MPURG0ADDR11 (*((volatile unsigned int*)(0x42A00040UL))) +#define bM4_MPU_RGD0_MPURG0ADDR12 (*((volatile unsigned int*)(0x42A00044UL))) +#define bM4_MPU_RGD0_MPURG0ADDR13 (*((volatile unsigned int*)(0x42A00048UL))) +#define bM4_MPU_RGD0_MPURG0ADDR14 (*((volatile unsigned int*)(0x42A0004CUL))) +#define bM4_MPU_RGD0_MPURG0ADDR15 (*((volatile unsigned int*)(0x42A00050UL))) +#define bM4_MPU_RGD0_MPURG0ADDR16 (*((volatile unsigned int*)(0x42A00054UL))) +#define bM4_MPU_RGD0_MPURG0ADDR17 (*((volatile unsigned int*)(0x42A00058UL))) +#define bM4_MPU_RGD0_MPURG0ADDR18 (*((volatile unsigned int*)(0x42A0005CUL))) +#define bM4_MPU_RGD0_MPURG0ADDR19 (*((volatile unsigned int*)(0x42A00060UL))) +#define bM4_MPU_RGD0_MPURG0ADDR20 (*((volatile unsigned int*)(0x42A00064UL))) +#define bM4_MPU_RGD0_MPURG0ADDR21 (*((volatile unsigned int*)(0x42A00068UL))) +#define bM4_MPU_RGD0_MPURG0ADDR22 (*((volatile unsigned int*)(0x42A0006CUL))) +#define bM4_MPU_RGD0_MPURG0ADDR23 (*((volatile unsigned int*)(0x42A00070UL))) +#define bM4_MPU_RGD0_MPURG0ADDR24 (*((volatile unsigned int*)(0x42A00074UL))) +#define bM4_MPU_RGD0_MPURG0ADDR25 (*((volatile unsigned int*)(0x42A00078UL))) +#define bM4_MPU_RGD0_MPURG0ADDR26 (*((volatile unsigned int*)(0x42A0007CUL))) +#define bM4_MPU_RGD1_MPURG1SIZE0 (*((volatile unsigned int*)(0x42A00080UL))) +#define bM4_MPU_RGD1_MPURG1SIZE1 (*((volatile unsigned int*)(0x42A00084UL))) +#define bM4_MPU_RGD1_MPURG1SIZE2 (*((volatile unsigned int*)(0x42A00088UL))) +#define bM4_MPU_RGD1_MPURG1SIZE3 (*((volatile unsigned int*)(0x42A0008CUL))) +#define bM4_MPU_RGD1_MPURG1SIZE4 (*((volatile unsigned int*)(0x42A00090UL))) +#define bM4_MPU_RGD1_MPURG1ADDR0 (*((volatile unsigned int*)(0x42A00094UL))) +#define bM4_MPU_RGD1_MPURG1ADDR1 (*((volatile unsigned int*)(0x42A00098UL))) +#define bM4_MPU_RGD1_MPURG1ADDR2 (*((volatile unsigned int*)(0x42A0009CUL))) +#define bM4_MPU_RGD1_MPURG1ADDR3 (*((volatile unsigned int*)(0x42A000A0UL))) +#define bM4_MPU_RGD1_MPURG1ADDR4 (*((volatile unsigned int*)(0x42A000A4UL))) +#define bM4_MPU_RGD1_MPURG1ADDR5 (*((volatile unsigned int*)(0x42A000A8UL))) +#define bM4_MPU_RGD1_MPURG1ADDR6 (*((volatile unsigned int*)(0x42A000ACUL))) +#define bM4_MPU_RGD1_MPURG1ADDR7 (*((volatile unsigned int*)(0x42A000B0UL))) +#define bM4_MPU_RGD1_MPURG1ADDR8 (*((volatile unsigned int*)(0x42A000B4UL))) +#define bM4_MPU_RGD1_MPURG1ADDR9 (*((volatile unsigned int*)(0x42A000B8UL))) +#define bM4_MPU_RGD1_MPURG1ADDR10 (*((volatile unsigned int*)(0x42A000BCUL))) +#define bM4_MPU_RGD1_MPURG1ADDR11 (*((volatile unsigned int*)(0x42A000C0UL))) +#define bM4_MPU_RGD1_MPURG1ADDR12 (*((volatile unsigned int*)(0x42A000C4UL))) +#define bM4_MPU_RGD1_MPURG1ADDR13 (*((volatile unsigned int*)(0x42A000C8UL))) +#define bM4_MPU_RGD1_MPURG1ADDR14 (*((volatile unsigned int*)(0x42A000CCUL))) +#define bM4_MPU_RGD1_MPURG1ADDR15 (*((volatile unsigned int*)(0x42A000D0UL))) +#define bM4_MPU_RGD1_MPURG1ADDR16 (*((volatile unsigned int*)(0x42A000D4UL))) +#define bM4_MPU_RGD1_MPURG1ADDR17 (*((volatile unsigned int*)(0x42A000D8UL))) +#define bM4_MPU_RGD1_MPURG1ADDR18 (*((volatile unsigned int*)(0x42A000DCUL))) +#define bM4_MPU_RGD1_MPURG1ADDR19 (*((volatile unsigned int*)(0x42A000E0UL))) +#define bM4_MPU_RGD1_MPURG1ADDR20 (*((volatile unsigned int*)(0x42A000E4UL))) +#define bM4_MPU_RGD1_MPURG1ADDR21 (*((volatile unsigned int*)(0x42A000E8UL))) +#define bM4_MPU_RGD1_MPURG1ADDR22 (*((volatile unsigned int*)(0x42A000ECUL))) +#define bM4_MPU_RGD1_MPURG1ADDR23 (*((volatile unsigned int*)(0x42A000F0UL))) +#define bM4_MPU_RGD1_MPURG1ADDR24 (*((volatile unsigned int*)(0x42A000F4UL))) +#define bM4_MPU_RGD1_MPURG1ADDR25 (*((volatile unsigned int*)(0x42A000F8UL))) +#define bM4_MPU_RGD1_MPURG1ADDR26 (*((volatile unsigned int*)(0x42A000FCUL))) +#define bM4_MPU_RGD2_MPURG2SIZE0 (*((volatile unsigned int*)(0x42A00100UL))) +#define bM4_MPU_RGD2_MPURG2SIZE1 (*((volatile unsigned int*)(0x42A00104UL))) +#define bM4_MPU_RGD2_MPURG2SIZE2 (*((volatile unsigned int*)(0x42A00108UL))) +#define bM4_MPU_RGD2_MPURG2SIZE3 (*((volatile unsigned int*)(0x42A0010CUL))) +#define bM4_MPU_RGD2_MPURG2SIZE4 (*((volatile unsigned int*)(0x42A00110UL))) +#define bM4_MPU_RGD2_MPURG2ADDR0 (*((volatile unsigned int*)(0x42A00114UL))) +#define bM4_MPU_RGD2_MPURG2ADDR1 (*((volatile unsigned int*)(0x42A00118UL))) +#define bM4_MPU_RGD2_MPURG2ADDR2 (*((volatile unsigned int*)(0x42A0011CUL))) +#define bM4_MPU_RGD2_MPURG2ADDR3 (*((volatile unsigned int*)(0x42A00120UL))) +#define bM4_MPU_RGD2_MPURG2ADDR4 (*((volatile unsigned int*)(0x42A00124UL))) +#define bM4_MPU_RGD2_MPURG2ADDR5 (*((volatile unsigned int*)(0x42A00128UL))) +#define bM4_MPU_RGD2_MPURG2ADDR6 (*((volatile unsigned int*)(0x42A0012CUL))) +#define bM4_MPU_RGD2_MPURG2ADDR7 (*((volatile unsigned int*)(0x42A00130UL))) +#define bM4_MPU_RGD2_MPURG2ADDR8 (*((volatile unsigned int*)(0x42A00134UL))) +#define bM4_MPU_RGD2_MPURG2ADDR9 (*((volatile unsigned int*)(0x42A00138UL))) +#define bM4_MPU_RGD2_MPURG2ADDR10 (*((volatile unsigned int*)(0x42A0013CUL))) +#define bM4_MPU_RGD2_MPURG2ADDR11 (*((volatile unsigned int*)(0x42A00140UL))) +#define bM4_MPU_RGD2_MPURG2ADDR12 (*((volatile unsigned int*)(0x42A00144UL))) +#define bM4_MPU_RGD2_MPURG2ADDR13 (*((volatile unsigned int*)(0x42A00148UL))) +#define bM4_MPU_RGD2_MPURG2ADDR14 (*((volatile unsigned int*)(0x42A0014CUL))) +#define bM4_MPU_RGD2_MPURG2ADDR15 (*((volatile unsigned int*)(0x42A00150UL))) +#define bM4_MPU_RGD2_MPURG2ADDR16 (*((volatile unsigned int*)(0x42A00154UL))) +#define bM4_MPU_RGD2_MPURG2ADDR17 (*((volatile unsigned int*)(0x42A00158UL))) +#define bM4_MPU_RGD2_MPURG2ADDR18 (*((volatile unsigned int*)(0x42A0015CUL))) +#define bM4_MPU_RGD2_MPURG2ADDR19 (*((volatile unsigned int*)(0x42A00160UL))) +#define bM4_MPU_RGD2_MPURG2ADDR20 (*((volatile unsigned int*)(0x42A00164UL))) +#define bM4_MPU_RGD2_MPURG2ADDR21 (*((volatile unsigned int*)(0x42A00168UL))) +#define bM4_MPU_RGD2_MPURG2ADDR22 (*((volatile unsigned int*)(0x42A0016CUL))) +#define bM4_MPU_RGD2_MPURG2ADDR23 (*((volatile unsigned int*)(0x42A00170UL))) +#define bM4_MPU_RGD2_MPURG2ADDR24 (*((volatile unsigned int*)(0x42A00174UL))) +#define bM4_MPU_RGD2_MPURG2ADDR25 (*((volatile unsigned int*)(0x42A00178UL))) +#define bM4_MPU_RGD2_MPURG2ADDR26 (*((volatile unsigned int*)(0x42A0017CUL))) +#define bM4_MPU_RGD3_MPURG3SIZE0 (*((volatile unsigned int*)(0x42A00180UL))) +#define bM4_MPU_RGD3_MPURG3SIZE1 (*((volatile unsigned int*)(0x42A00184UL))) +#define bM4_MPU_RGD3_MPURG3SIZE2 (*((volatile unsigned int*)(0x42A00188UL))) +#define bM4_MPU_RGD3_MPURG3SIZE3 (*((volatile unsigned int*)(0x42A0018CUL))) +#define bM4_MPU_RGD3_MPURG3SIZE4 (*((volatile unsigned int*)(0x42A00190UL))) +#define bM4_MPU_RGD3_MPURG3ADDR0 (*((volatile unsigned int*)(0x42A00194UL))) +#define bM4_MPU_RGD3_MPURG3ADDR1 (*((volatile unsigned int*)(0x42A00198UL))) +#define bM4_MPU_RGD3_MPURG3ADDR2 (*((volatile unsigned int*)(0x42A0019CUL))) +#define bM4_MPU_RGD3_MPURG3ADDR3 (*((volatile unsigned int*)(0x42A001A0UL))) +#define bM4_MPU_RGD3_MPURG3ADDR4 (*((volatile unsigned int*)(0x42A001A4UL))) +#define bM4_MPU_RGD3_MPURG3ADDR5 (*((volatile unsigned int*)(0x42A001A8UL))) +#define bM4_MPU_RGD3_MPURG3ADDR6 (*((volatile unsigned int*)(0x42A001ACUL))) +#define bM4_MPU_RGD3_MPURG3ADDR7 (*((volatile unsigned int*)(0x42A001B0UL))) +#define bM4_MPU_RGD3_MPURG3ADDR8 (*((volatile unsigned int*)(0x42A001B4UL))) +#define bM4_MPU_RGD3_MPURG3ADDR9 (*((volatile unsigned int*)(0x42A001B8UL))) +#define bM4_MPU_RGD3_MPURG3ADDR10 (*((volatile unsigned int*)(0x42A001BCUL))) +#define bM4_MPU_RGD3_MPURG3ADDR11 (*((volatile unsigned int*)(0x42A001C0UL))) +#define bM4_MPU_RGD3_MPURG3ADDR12 (*((volatile unsigned int*)(0x42A001C4UL))) +#define bM4_MPU_RGD3_MPURG3ADDR13 (*((volatile unsigned int*)(0x42A001C8UL))) +#define bM4_MPU_RGD3_MPURG3ADDR14 (*((volatile unsigned int*)(0x42A001CCUL))) +#define bM4_MPU_RGD3_MPURG3ADDR15 (*((volatile unsigned int*)(0x42A001D0UL))) +#define bM4_MPU_RGD3_MPURG3ADDR16 (*((volatile unsigned int*)(0x42A001D4UL))) +#define bM4_MPU_RGD3_MPURG3ADDR17 (*((volatile unsigned int*)(0x42A001D8UL))) +#define bM4_MPU_RGD3_MPURG3ADDR18 (*((volatile unsigned int*)(0x42A001DCUL))) +#define bM4_MPU_RGD3_MPURG3ADDR19 (*((volatile unsigned int*)(0x42A001E0UL))) +#define bM4_MPU_RGD3_MPURG3ADDR20 (*((volatile unsigned int*)(0x42A001E4UL))) +#define bM4_MPU_RGD3_MPURG3ADDR21 (*((volatile unsigned int*)(0x42A001E8UL))) +#define bM4_MPU_RGD3_MPURG3ADDR22 (*((volatile unsigned int*)(0x42A001ECUL))) +#define bM4_MPU_RGD3_MPURG3ADDR23 (*((volatile unsigned int*)(0x42A001F0UL))) +#define bM4_MPU_RGD3_MPURG3ADDR24 (*((volatile unsigned int*)(0x42A001F4UL))) +#define bM4_MPU_RGD3_MPURG3ADDR25 (*((volatile unsigned int*)(0x42A001F8UL))) +#define bM4_MPU_RGD3_MPURG3ADDR26 (*((volatile unsigned int*)(0x42A001FCUL))) +#define bM4_MPU_RGD4_MPURG4SIZE0 (*((volatile unsigned int*)(0x42A00200UL))) +#define bM4_MPU_RGD4_MPURG4SIZE1 (*((volatile unsigned int*)(0x42A00204UL))) +#define bM4_MPU_RGD4_MPURG4SIZE2 (*((volatile unsigned int*)(0x42A00208UL))) +#define bM4_MPU_RGD4_MPURG4SIZE3 (*((volatile unsigned int*)(0x42A0020CUL))) +#define bM4_MPU_RGD4_MPURG4SIZE4 (*((volatile unsigned int*)(0x42A00210UL))) +#define bM4_MPU_RGD4_MPURG4ADDR0 (*((volatile unsigned int*)(0x42A00214UL))) +#define bM4_MPU_RGD4_MPURG4ADDR1 (*((volatile unsigned int*)(0x42A00218UL))) +#define bM4_MPU_RGD4_MPURG4ADDR2 (*((volatile unsigned int*)(0x42A0021CUL))) +#define bM4_MPU_RGD4_MPURG4ADDR3 (*((volatile unsigned int*)(0x42A00220UL))) +#define bM4_MPU_RGD4_MPURG4ADDR4 (*((volatile unsigned int*)(0x42A00224UL))) +#define bM4_MPU_RGD4_MPURG4ADDR5 (*((volatile unsigned int*)(0x42A00228UL))) +#define bM4_MPU_RGD4_MPURG4ADDR6 (*((volatile unsigned int*)(0x42A0022CUL))) +#define bM4_MPU_RGD4_MPURG4ADDR7 (*((volatile unsigned int*)(0x42A00230UL))) +#define bM4_MPU_RGD4_MPURG4ADDR8 (*((volatile unsigned int*)(0x42A00234UL))) +#define bM4_MPU_RGD4_MPURG4ADDR9 (*((volatile unsigned int*)(0x42A00238UL))) +#define bM4_MPU_RGD4_MPURG4ADDR10 (*((volatile unsigned int*)(0x42A0023CUL))) +#define bM4_MPU_RGD4_MPURG4ADDR11 (*((volatile unsigned int*)(0x42A00240UL))) +#define bM4_MPU_RGD4_MPURG4ADDR12 (*((volatile unsigned int*)(0x42A00244UL))) +#define bM4_MPU_RGD4_MPURG4ADDR13 (*((volatile unsigned int*)(0x42A00248UL))) +#define bM4_MPU_RGD4_MPURG4ADDR14 (*((volatile unsigned int*)(0x42A0024CUL))) +#define bM4_MPU_RGD4_MPURG4ADDR15 (*((volatile unsigned int*)(0x42A00250UL))) +#define bM4_MPU_RGD4_MPURG4ADDR16 (*((volatile unsigned int*)(0x42A00254UL))) +#define bM4_MPU_RGD4_MPURG4ADDR17 (*((volatile unsigned int*)(0x42A00258UL))) +#define bM4_MPU_RGD4_MPURG4ADDR18 (*((volatile unsigned int*)(0x42A0025CUL))) +#define bM4_MPU_RGD4_MPURG4ADDR19 (*((volatile unsigned int*)(0x42A00260UL))) +#define bM4_MPU_RGD4_MPURG4ADDR20 (*((volatile unsigned int*)(0x42A00264UL))) +#define bM4_MPU_RGD4_MPURG4ADDR21 (*((volatile unsigned int*)(0x42A00268UL))) +#define bM4_MPU_RGD4_MPURG4ADDR22 (*((volatile unsigned int*)(0x42A0026CUL))) +#define bM4_MPU_RGD4_MPURG4ADDR23 (*((volatile unsigned int*)(0x42A00270UL))) +#define bM4_MPU_RGD4_MPURG4ADDR24 (*((volatile unsigned int*)(0x42A00274UL))) +#define bM4_MPU_RGD4_MPURG4ADDR25 (*((volatile unsigned int*)(0x42A00278UL))) +#define bM4_MPU_RGD4_MPURG4ADDR26 (*((volatile unsigned int*)(0x42A0027CUL))) +#define bM4_MPU_RGD5_MPURG5SIZE0 (*((volatile unsigned int*)(0x42A00280UL))) +#define bM4_MPU_RGD5_MPURG5SIZE1 (*((volatile unsigned int*)(0x42A00284UL))) +#define bM4_MPU_RGD5_MPURG5SIZE2 (*((volatile unsigned int*)(0x42A00288UL))) +#define bM4_MPU_RGD5_MPURG5SIZE3 (*((volatile unsigned int*)(0x42A0028CUL))) +#define bM4_MPU_RGD5_MPURG5SIZE4 (*((volatile unsigned int*)(0x42A00290UL))) +#define bM4_MPU_RGD5_MPURG5ADDR0 (*((volatile unsigned int*)(0x42A00294UL))) +#define bM4_MPU_RGD5_MPURG5ADDR1 (*((volatile unsigned int*)(0x42A00298UL))) +#define bM4_MPU_RGD5_MPURG5ADDR2 (*((volatile unsigned int*)(0x42A0029CUL))) +#define bM4_MPU_RGD5_MPURG5ADDR3 (*((volatile unsigned int*)(0x42A002A0UL))) +#define bM4_MPU_RGD5_MPURG5ADDR4 (*((volatile unsigned int*)(0x42A002A4UL))) +#define bM4_MPU_RGD5_MPURG5ADDR5 (*((volatile unsigned int*)(0x42A002A8UL))) +#define bM4_MPU_RGD5_MPURG5ADDR6 (*((volatile unsigned int*)(0x42A002ACUL))) +#define bM4_MPU_RGD5_MPURG5ADDR7 (*((volatile unsigned int*)(0x42A002B0UL))) +#define bM4_MPU_RGD5_MPURG5ADDR8 (*((volatile unsigned int*)(0x42A002B4UL))) +#define bM4_MPU_RGD5_MPURG5ADDR9 (*((volatile unsigned int*)(0x42A002B8UL))) +#define bM4_MPU_RGD5_MPURG5ADDR10 (*((volatile unsigned int*)(0x42A002BCUL))) +#define bM4_MPU_RGD5_MPURG5ADDR11 (*((volatile unsigned int*)(0x42A002C0UL))) +#define bM4_MPU_RGD5_MPURG5ADDR12 (*((volatile unsigned int*)(0x42A002C4UL))) +#define bM4_MPU_RGD5_MPURG5ADDR13 (*((volatile unsigned int*)(0x42A002C8UL))) +#define bM4_MPU_RGD5_MPURG5ADDR14 (*((volatile unsigned int*)(0x42A002CCUL))) +#define bM4_MPU_RGD5_MPURG5ADDR15 (*((volatile unsigned int*)(0x42A002D0UL))) +#define bM4_MPU_RGD5_MPURG5ADDR16 (*((volatile unsigned int*)(0x42A002D4UL))) +#define bM4_MPU_RGD5_MPURG5ADDR17 (*((volatile unsigned int*)(0x42A002D8UL))) +#define bM4_MPU_RGD5_MPURG5ADDR18 (*((volatile unsigned int*)(0x42A002DCUL))) +#define bM4_MPU_RGD5_MPURG5ADDR19 (*((volatile unsigned int*)(0x42A002E0UL))) +#define bM4_MPU_RGD5_MPURG5ADDR20 (*((volatile unsigned int*)(0x42A002E4UL))) +#define bM4_MPU_RGD5_MPURG5ADDR21 (*((volatile unsigned int*)(0x42A002E8UL))) +#define bM4_MPU_RGD5_MPURG5ADDR22 (*((volatile unsigned int*)(0x42A002ECUL))) +#define bM4_MPU_RGD5_MPURG5ADDR23 (*((volatile unsigned int*)(0x42A002F0UL))) +#define bM4_MPU_RGD5_MPURG5ADDR24 (*((volatile unsigned int*)(0x42A002F4UL))) +#define bM4_MPU_RGD5_MPURG5ADDR25 (*((volatile unsigned int*)(0x42A002F8UL))) +#define bM4_MPU_RGD5_MPURG5ADDR26 (*((volatile unsigned int*)(0x42A002FCUL))) +#define bM4_MPU_RGD6_MPURG6SIZE0 (*((volatile unsigned int*)(0x42A00300UL))) +#define bM4_MPU_RGD6_MPURG6SIZE1 (*((volatile unsigned int*)(0x42A00304UL))) +#define bM4_MPU_RGD6_MPURG6SIZE2 (*((volatile unsigned int*)(0x42A00308UL))) +#define bM4_MPU_RGD6_MPURG6SIZE3 (*((volatile unsigned int*)(0x42A0030CUL))) +#define bM4_MPU_RGD6_MPURG6SIZE4 (*((volatile unsigned int*)(0x42A00310UL))) +#define bM4_MPU_RGD6_MPURG6ADDR0 (*((volatile unsigned int*)(0x42A00314UL))) +#define bM4_MPU_RGD6_MPURG6ADDR1 (*((volatile unsigned int*)(0x42A00318UL))) +#define bM4_MPU_RGD6_MPURG6ADDR2 (*((volatile unsigned int*)(0x42A0031CUL))) +#define bM4_MPU_RGD6_MPURG6ADDR3 (*((volatile unsigned int*)(0x42A00320UL))) +#define bM4_MPU_RGD6_MPURG6ADDR4 (*((volatile unsigned int*)(0x42A00324UL))) +#define bM4_MPU_RGD6_MPURG6ADDR5 (*((volatile unsigned int*)(0x42A00328UL))) +#define bM4_MPU_RGD6_MPURG6ADDR6 (*((volatile unsigned int*)(0x42A0032CUL))) +#define bM4_MPU_RGD6_MPURG6ADDR7 (*((volatile unsigned int*)(0x42A00330UL))) +#define bM4_MPU_RGD6_MPURG6ADDR8 (*((volatile unsigned int*)(0x42A00334UL))) +#define bM4_MPU_RGD6_MPURG6ADDR9 (*((volatile unsigned int*)(0x42A00338UL))) +#define bM4_MPU_RGD6_MPURG6ADDR10 (*((volatile unsigned int*)(0x42A0033CUL))) +#define bM4_MPU_RGD6_MPURG6ADDR11 (*((volatile unsigned int*)(0x42A00340UL))) +#define bM4_MPU_RGD6_MPURG6ADDR12 (*((volatile unsigned int*)(0x42A00344UL))) +#define bM4_MPU_RGD6_MPURG6ADDR13 (*((volatile unsigned int*)(0x42A00348UL))) +#define bM4_MPU_RGD6_MPURG6ADDR14 (*((volatile unsigned int*)(0x42A0034CUL))) +#define bM4_MPU_RGD6_MPURG6ADDR15 (*((volatile unsigned int*)(0x42A00350UL))) +#define bM4_MPU_RGD6_MPURG6ADDR16 (*((volatile unsigned int*)(0x42A00354UL))) +#define bM4_MPU_RGD6_MPURG6ADDR17 (*((volatile unsigned int*)(0x42A00358UL))) +#define bM4_MPU_RGD6_MPURG6ADDR18 (*((volatile unsigned int*)(0x42A0035CUL))) +#define bM4_MPU_RGD6_MPURG6ADDR19 (*((volatile unsigned int*)(0x42A00360UL))) +#define bM4_MPU_RGD6_MPURG6ADDR20 (*((volatile unsigned int*)(0x42A00364UL))) +#define bM4_MPU_RGD6_MPURG6ADDR21 (*((volatile unsigned int*)(0x42A00368UL))) +#define bM4_MPU_RGD6_MPURG6ADDR22 (*((volatile unsigned int*)(0x42A0036CUL))) +#define bM4_MPU_RGD6_MPURG6ADDR23 (*((volatile unsigned int*)(0x42A00370UL))) +#define bM4_MPU_RGD6_MPURG6ADDR24 (*((volatile unsigned int*)(0x42A00374UL))) +#define bM4_MPU_RGD6_MPURG6ADDR25 (*((volatile unsigned int*)(0x42A00378UL))) +#define bM4_MPU_RGD6_MPURG6ADDR26 (*((volatile unsigned int*)(0x42A0037CUL))) +#define bM4_MPU_RGD7_MPURG7SIZE0 (*((volatile unsigned int*)(0x42A00380UL))) +#define bM4_MPU_RGD7_MPURG7SIZE1 (*((volatile unsigned int*)(0x42A00384UL))) +#define bM4_MPU_RGD7_MPURG7SIZE2 (*((volatile unsigned int*)(0x42A00388UL))) +#define bM4_MPU_RGD7_MPURG7SIZE3 (*((volatile unsigned int*)(0x42A0038CUL))) +#define bM4_MPU_RGD7_MPURG7SIZE4 (*((volatile unsigned int*)(0x42A00390UL))) +#define bM4_MPU_RGD7_MPURG7ADDR0 (*((volatile unsigned int*)(0x42A00394UL))) +#define bM4_MPU_RGD7_MPURG7ADDR1 (*((volatile unsigned int*)(0x42A00398UL))) +#define bM4_MPU_RGD7_MPURG7ADDR2 (*((volatile unsigned int*)(0x42A0039CUL))) +#define bM4_MPU_RGD7_MPURG7ADDR3 (*((volatile unsigned int*)(0x42A003A0UL))) +#define bM4_MPU_RGD7_MPURG7ADDR4 (*((volatile unsigned int*)(0x42A003A4UL))) +#define bM4_MPU_RGD7_MPURG7ADDR5 (*((volatile unsigned int*)(0x42A003A8UL))) +#define bM4_MPU_RGD7_MPURG7ADDR6 (*((volatile unsigned int*)(0x42A003ACUL))) +#define bM4_MPU_RGD7_MPURG7ADDR7 (*((volatile unsigned int*)(0x42A003B0UL))) +#define bM4_MPU_RGD7_MPURG7ADDR8 (*((volatile unsigned int*)(0x42A003B4UL))) +#define bM4_MPU_RGD7_MPURG7ADDR9 (*((volatile unsigned int*)(0x42A003B8UL))) +#define bM4_MPU_RGD7_MPURG7ADDR10 (*((volatile unsigned int*)(0x42A003BCUL))) +#define bM4_MPU_RGD7_MPURG7ADDR11 (*((volatile unsigned int*)(0x42A003C0UL))) +#define bM4_MPU_RGD7_MPURG7ADDR12 (*((volatile unsigned int*)(0x42A003C4UL))) +#define bM4_MPU_RGD7_MPURG7ADDR13 (*((volatile unsigned int*)(0x42A003C8UL))) +#define bM4_MPU_RGD7_MPURG7ADDR14 (*((volatile unsigned int*)(0x42A003CCUL))) +#define bM4_MPU_RGD7_MPURG7ADDR15 (*((volatile unsigned int*)(0x42A003D0UL))) +#define bM4_MPU_RGD7_MPURG7ADDR16 (*((volatile unsigned int*)(0x42A003D4UL))) +#define bM4_MPU_RGD7_MPURG7ADDR17 (*((volatile unsigned int*)(0x42A003D8UL))) +#define bM4_MPU_RGD7_MPURG7ADDR18 (*((volatile unsigned int*)(0x42A003DCUL))) +#define bM4_MPU_RGD7_MPURG7ADDR19 (*((volatile unsigned int*)(0x42A003E0UL))) +#define bM4_MPU_RGD7_MPURG7ADDR20 (*((volatile unsigned int*)(0x42A003E4UL))) +#define bM4_MPU_RGD7_MPURG7ADDR21 (*((volatile unsigned int*)(0x42A003E8UL))) +#define bM4_MPU_RGD7_MPURG7ADDR22 (*((volatile unsigned int*)(0x42A003ECUL))) +#define bM4_MPU_RGD7_MPURG7ADDR23 (*((volatile unsigned int*)(0x42A003F0UL))) +#define bM4_MPU_RGD7_MPURG7ADDR24 (*((volatile unsigned int*)(0x42A003F4UL))) +#define bM4_MPU_RGD7_MPURG7ADDR25 (*((volatile unsigned int*)(0x42A003F8UL))) +#define bM4_MPU_RGD7_MPURG7ADDR26 (*((volatile unsigned int*)(0x42A003FCUL))) +#define bM4_MPU_RGD8_MPURG8SIZE0 (*((volatile unsigned int*)(0x42A00400UL))) +#define bM4_MPU_RGD8_MPURG8SIZE1 (*((volatile unsigned int*)(0x42A00404UL))) +#define bM4_MPU_RGD8_MPURG8SIZE2 (*((volatile unsigned int*)(0x42A00408UL))) +#define bM4_MPU_RGD8_MPURG8SIZE3 (*((volatile unsigned int*)(0x42A0040CUL))) +#define bM4_MPU_RGD8_MPURG8SIZE4 (*((volatile unsigned int*)(0x42A00410UL))) +#define bM4_MPU_RGD8_MPURG8ADDR0 (*((volatile unsigned int*)(0x42A00414UL))) +#define bM4_MPU_RGD8_MPURG8ADDR1 (*((volatile unsigned int*)(0x42A00418UL))) +#define bM4_MPU_RGD8_MPURG8ADDR2 (*((volatile unsigned int*)(0x42A0041CUL))) +#define bM4_MPU_RGD8_MPURG8ADDR3 (*((volatile unsigned int*)(0x42A00420UL))) +#define bM4_MPU_RGD8_MPURG8ADDR4 (*((volatile unsigned int*)(0x42A00424UL))) +#define bM4_MPU_RGD8_MPURG8ADDR5 (*((volatile unsigned int*)(0x42A00428UL))) +#define bM4_MPU_RGD8_MPURG8ADDR6 (*((volatile unsigned int*)(0x42A0042CUL))) +#define bM4_MPU_RGD8_MPURG8ADDR7 (*((volatile unsigned int*)(0x42A00430UL))) +#define bM4_MPU_RGD8_MPURG8ADDR8 (*((volatile unsigned int*)(0x42A00434UL))) +#define bM4_MPU_RGD8_MPURG8ADDR9 (*((volatile unsigned int*)(0x42A00438UL))) +#define bM4_MPU_RGD8_MPURG8ADDR10 (*((volatile unsigned int*)(0x42A0043CUL))) +#define bM4_MPU_RGD8_MPURG8ADDR11 (*((volatile unsigned int*)(0x42A00440UL))) +#define bM4_MPU_RGD8_MPURG8ADDR12 (*((volatile unsigned int*)(0x42A00444UL))) +#define bM4_MPU_RGD8_MPURG8ADDR13 (*((volatile unsigned int*)(0x42A00448UL))) +#define bM4_MPU_RGD8_MPURG8ADDR14 (*((volatile unsigned int*)(0x42A0044CUL))) +#define bM4_MPU_RGD8_MPURG8ADDR15 (*((volatile unsigned int*)(0x42A00450UL))) +#define bM4_MPU_RGD8_MPURG8ADDR16 (*((volatile unsigned int*)(0x42A00454UL))) +#define bM4_MPU_RGD8_MPURG8ADDR17 (*((volatile unsigned int*)(0x42A00458UL))) +#define bM4_MPU_RGD8_MPURG8ADDR18 (*((volatile unsigned int*)(0x42A0045CUL))) +#define bM4_MPU_RGD8_MPURG8ADDR19 (*((volatile unsigned int*)(0x42A00460UL))) +#define bM4_MPU_RGD8_MPURG8ADDR20 (*((volatile unsigned int*)(0x42A00464UL))) +#define bM4_MPU_RGD8_MPURG8ADDR21 (*((volatile unsigned int*)(0x42A00468UL))) +#define bM4_MPU_RGD8_MPURG8ADDR22 (*((volatile unsigned int*)(0x42A0046CUL))) +#define bM4_MPU_RGD8_MPURG8ADDR23 (*((volatile unsigned int*)(0x42A00470UL))) +#define bM4_MPU_RGD8_MPURG8ADDR24 (*((volatile unsigned int*)(0x42A00474UL))) +#define bM4_MPU_RGD8_MPURG8ADDR25 (*((volatile unsigned int*)(0x42A00478UL))) +#define bM4_MPU_RGD8_MPURG8ADDR26 (*((volatile unsigned int*)(0x42A0047CUL))) +#define bM4_MPU_RGD9_MPURG9SIZE0 (*((volatile unsigned int*)(0x42A00480UL))) +#define bM4_MPU_RGD9_MPURG9SIZE1 (*((volatile unsigned int*)(0x42A00484UL))) +#define bM4_MPU_RGD9_MPURG9SIZE2 (*((volatile unsigned int*)(0x42A00488UL))) +#define bM4_MPU_RGD9_MPURG9SIZE3 (*((volatile unsigned int*)(0x42A0048CUL))) +#define bM4_MPU_RGD9_MPURG9SIZE4 (*((volatile unsigned int*)(0x42A00490UL))) +#define bM4_MPU_RGD9_MPURG9ADDR0 (*((volatile unsigned int*)(0x42A00494UL))) +#define bM4_MPU_RGD9_MPURG9ADDR1 (*((volatile unsigned int*)(0x42A00498UL))) +#define bM4_MPU_RGD9_MPURG9ADDR2 (*((volatile unsigned int*)(0x42A0049CUL))) +#define bM4_MPU_RGD9_MPURG9ADDR3 (*((volatile unsigned int*)(0x42A004A0UL))) +#define bM4_MPU_RGD9_MPURG9ADDR4 (*((volatile unsigned int*)(0x42A004A4UL))) +#define bM4_MPU_RGD9_MPURG9ADDR5 (*((volatile unsigned int*)(0x42A004A8UL))) +#define bM4_MPU_RGD9_MPURG9ADDR6 (*((volatile unsigned int*)(0x42A004ACUL))) +#define bM4_MPU_RGD9_MPURG9ADDR7 (*((volatile unsigned int*)(0x42A004B0UL))) +#define bM4_MPU_RGD9_MPURG9ADDR8 (*((volatile unsigned int*)(0x42A004B4UL))) +#define bM4_MPU_RGD9_MPURG9ADDR9 (*((volatile unsigned int*)(0x42A004B8UL))) +#define bM4_MPU_RGD9_MPURG9ADDR10 (*((volatile unsigned int*)(0x42A004BCUL))) +#define bM4_MPU_RGD9_MPURG9ADDR11 (*((volatile unsigned int*)(0x42A004C0UL))) +#define bM4_MPU_RGD9_MPURG9ADDR12 (*((volatile unsigned int*)(0x42A004C4UL))) +#define bM4_MPU_RGD9_MPURG9ADDR13 (*((volatile unsigned int*)(0x42A004C8UL))) +#define bM4_MPU_RGD9_MPURG9ADDR14 (*((volatile unsigned int*)(0x42A004CCUL))) +#define bM4_MPU_RGD9_MPURG9ADDR15 (*((volatile unsigned int*)(0x42A004D0UL))) +#define bM4_MPU_RGD9_MPURG9ADDR16 (*((volatile unsigned int*)(0x42A004D4UL))) +#define bM4_MPU_RGD9_MPURG9ADDR17 (*((volatile unsigned int*)(0x42A004D8UL))) +#define bM4_MPU_RGD9_MPURG9ADDR18 (*((volatile unsigned int*)(0x42A004DCUL))) +#define bM4_MPU_RGD9_MPURG9ADDR19 (*((volatile unsigned int*)(0x42A004E0UL))) +#define bM4_MPU_RGD9_MPURG9ADDR20 (*((volatile unsigned int*)(0x42A004E4UL))) +#define bM4_MPU_RGD9_MPURG9ADDR21 (*((volatile unsigned int*)(0x42A004E8UL))) +#define bM4_MPU_RGD9_MPURG9ADDR22 (*((volatile unsigned int*)(0x42A004ECUL))) +#define bM4_MPU_RGD9_MPURG9ADDR23 (*((volatile unsigned int*)(0x42A004F0UL))) +#define bM4_MPU_RGD9_MPURG9ADDR24 (*((volatile unsigned int*)(0x42A004F4UL))) +#define bM4_MPU_RGD9_MPURG9ADDR25 (*((volatile unsigned int*)(0x42A004F8UL))) +#define bM4_MPU_RGD9_MPURG9ADDR26 (*((volatile unsigned int*)(0x42A004FCUL))) +#define bM4_MPU_RGD10_MPURG10SIZE0 (*((volatile unsigned int*)(0x42A00500UL))) +#define bM4_MPU_RGD10_MPURG10SIZE1 (*((volatile unsigned int*)(0x42A00504UL))) +#define bM4_MPU_RGD10_MPURG10SIZE2 (*((volatile unsigned int*)(0x42A00508UL))) +#define bM4_MPU_RGD10_MPURG10SIZE3 (*((volatile unsigned int*)(0x42A0050CUL))) +#define bM4_MPU_RGD10_MPURG10SIZE4 (*((volatile unsigned int*)(0x42A00510UL))) +#define bM4_MPU_RGD10_MPURG10ADDR0 (*((volatile unsigned int*)(0x42A00514UL))) +#define bM4_MPU_RGD10_MPURG10ADDR1 (*((volatile unsigned int*)(0x42A00518UL))) +#define bM4_MPU_RGD10_MPURG10ADDR2 (*((volatile unsigned int*)(0x42A0051CUL))) +#define bM4_MPU_RGD10_MPURG10ADDR3 (*((volatile unsigned int*)(0x42A00520UL))) +#define bM4_MPU_RGD10_MPURG10ADDR4 (*((volatile unsigned int*)(0x42A00524UL))) +#define bM4_MPU_RGD10_MPURG10ADDR5 (*((volatile unsigned int*)(0x42A00528UL))) +#define bM4_MPU_RGD10_MPURG10ADDR6 (*((volatile unsigned int*)(0x42A0052CUL))) +#define bM4_MPU_RGD10_MPURG10ADDR7 (*((volatile unsigned int*)(0x42A00530UL))) +#define bM4_MPU_RGD10_MPURG10ADDR8 (*((volatile unsigned int*)(0x42A00534UL))) +#define bM4_MPU_RGD10_MPURG10ADDR9 (*((volatile unsigned int*)(0x42A00538UL))) +#define bM4_MPU_RGD10_MPURG10ADDR10 (*((volatile unsigned int*)(0x42A0053CUL))) +#define bM4_MPU_RGD10_MPURG10ADDR11 (*((volatile unsigned int*)(0x42A00540UL))) +#define bM4_MPU_RGD10_MPURG10ADDR12 (*((volatile unsigned int*)(0x42A00544UL))) +#define bM4_MPU_RGD10_MPURG10ADDR13 (*((volatile unsigned int*)(0x42A00548UL))) +#define bM4_MPU_RGD10_MPURG10ADDR14 (*((volatile unsigned int*)(0x42A0054CUL))) +#define bM4_MPU_RGD10_MPURG10ADDR15 (*((volatile unsigned int*)(0x42A00550UL))) +#define bM4_MPU_RGD10_MPURG10ADDR16 (*((volatile unsigned int*)(0x42A00554UL))) +#define bM4_MPU_RGD10_MPURG10ADDR17 (*((volatile unsigned int*)(0x42A00558UL))) +#define bM4_MPU_RGD10_MPURG10ADDR18 (*((volatile unsigned int*)(0x42A0055CUL))) +#define bM4_MPU_RGD10_MPURG10ADDR19 (*((volatile unsigned int*)(0x42A00560UL))) +#define bM4_MPU_RGD10_MPURG10ADDR20 (*((volatile unsigned int*)(0x42A00564UL))) +#define bM4_MPU_RGD10_MPURG10ADDR21 (*((volatile unsigned int*)(0x42A00568UL))) +#define bM4_MPU_RGD10_MPURG10ADDR22 (*((volatile unsigned int*)(0x42A0056CUL))) +#define bM4_MPU_RGD10_MPURG10ADDR23 (*((volatile unsigned int*)(0x42A00570UL))) +#define bM4_MPU_RGD10_MPURG10ADDR24 (*((volatile unsigned int*)(0x42A00574UL))) +#define bM4_MPU_RGD10_MPURG10ADDR25 (*((volatile unsigned int*)(0x42A00578UL))) +#define bM4_MPU_RGD10_MPURG10ADDR26 (*((volatile unsigned int*)(0x42A0057CUL))) +#define bM4_MPU_RGD11_MPURG11SIZE0 (*((volatile unsigned int*)(0x42A00580UL))) +#define bM4_MPU_RGD11_MPURG11SIZE1 (*((volatile unsigned int*)(0x42A00584UL))) +#define bM4_MPU_RGD11_MPURG11SIZE2 (*((volatile unsigned int*)(0x42A00588UL))) +#define bM4_MPU_RGD11_MPURG11SIZE3 (*((volatile unsigned int*)(0x42A0058CUL))) +#define bM4_MPU_RGD11_MPURG11SIZE4 (*((volatile unsigned int*)(0x42A00590UL))) +#define bM4_MPU_RGD11_MPURG11ADDR0 (*((volatile unsigned int*)(0x42A00594UL))) +#define bM4_MPU_RGD11_MPURG11ADDR1 (*((volatile unsigned int*)(0x42A00598UL))) +#define bM4_MPU_RGD11_MPURG11ADDR2 (*((volatile unsigned int*)(0x42A0059CUL))) +#define bM4_MPU_RGD11_MPURG11ADDR3 (*((volatile unsigned int*)(0x42A005A0UL))) +#define bM4_MPU_RGD11_MPURG11ADDR4 (*((volatile unsigned int*)(0x42A005A4UL))) +#define bM4_MPU_RGD11_MPURG11ADDR5 (*((volatile unsigned int*)(0x42A005A8UL))) +#define bM4_MPU_RGD11_MPURG11ADDR6 (*((volatile unsigned int*)(0x42A005ACUL))) +#define bM4_MPU_RGD11_MPURG11ADDR7 (*((volatile unsigned int*)(0x42A005B0UL))) +#define bM4_MPU_RGD11_MPURG11ADDR8 (*((volatile unsigned int*)(0x42A005B4UL))) +#define bM4_MPU_RGD11_MPURG11ADDR9 (*((volatile unsigned int*)(0x42A005B8UL))) +#define bM4_MPU_RGD11_MPURG11ADDR10 (*((volatile unsigned int*)(0x42A005BCUL))) +#define bM4_MPU_RGD11_MPURG11ADDR11 (*((volatile unsigned int*)(0x42A005C0UL))) +#define bM4_MPU_RGD11_MPURG11ADDR12 (*((volatile unsigned int*)(0x42A005C4UL))) +#define bM4_MPU_RGD11_MPURG11ADDR13 (*((volatile unsigned int*)(0x42A005C8UL))) +#define bM4_MPU_RGD11_MPURG11ADDR14 (*((volatile unsigned int*)(0x42A005CCUL))) +#define bM4_MPU_RGD11_MPURG11ADDR15 (*((volatile unsigned int*)(0x42A005D0UL))) +#define bM4_MPU_RGD11_MPURG11ADDR16 (*((volatile unsigned int*)(0x42A005D4UL))) +#define bM4_MPU_RGD11_MPURG11ADDR17 (*((volatile unsigned int*)(0x42A005D8UL))) +#define bM4_MPU_RGD11_MPURG11ADDR18 (*((volatile unsigned int*)(0x42A005DCUL))) +#define bM4_MPU_RGD11_MPURG11ADDR19 (*((volatile unsigned int*)(0x42A005E0UL))) +#define bM4_MPU_RGD11_MPURG11ADDR20 (*((volatile unsigned int*)(0x42A005E4UL))) +#define bM4_MPU_RGD11_MPURG11ADDR21 (*((volatile unsigned int*)(0x42A005E8UL))) +#define bM4_MPU_RGD11_MPURG11ADDR22 (*((volatile unsigned int*)(0x42A005ECUL))) +#define bM4_MPU_RGD11_MPURG11ADDR23 (*((volatile unsigned int*)(0x42A005F0UL))) +#define bM4_MPU_RGD11_MPURG11ADDR24 (*((volatile unsigned int*)(0x42A005F4UL))) +#define bM4_MPU_RGD11_MPURG11ADDR25 (*((volatile unsigned int*)(0x42A005F8UL))) +#define bM4_MPU_RGD11_MPURG11ADDR26 (*((volatile unsigned int*)(0x42A005FCUL))) +#define bM4_MPU_RGD12_MPURG12SIZE0 (*((volatile unsigned int*)(0x42A00600UL))) +#define bM4_MPU_RGD12_MPURG12SIZE1 (*((volatile unsigned int*)(0x42A00604UL))) +#define bM4_MPU_RGD12_MPURG12SIZE2 (*((volatile unsigned int*)(0x42A00608UL))) +#define bM4_MPU_RGD12_MPURG12SIZE3 (*((volatile unsigned int*)(0x42A0060CUL))) +#define bM4_MPU_RGD12_MPURG12SIZE4 (*((volatile unsigned int*)(0x42A00610UL))) +#define bM4_MPU_RGD12_MPURG12ADDR0 (*((volatile unsigned int*)(0x42A00614UL))) +#define bM4_MPU_RGD12_MPURG12ADDR1 (*((volatile unsigned int*)(0x42A00618UL))) +#define bM4_MPU_RGD12_MPURG12ADDR2 (*((volatile unsigned int*)(0x42A0061CUL))) +#define bM4_MPU_RGD12_MPURG12ADDR3 (*((volatile unsigned int*)(0x42A00620UL))) +#define bM4_MPU_RGD12_MPURG12ADDR4 (*((volatile unsigned int*)(0x42A00624UL))) +#define bM4_MPU_RGD12_MPURG12ADDR5 (*((volatile unsigned int*)(0x42A00628UL))) +#define bM4_MPU_RGD12_MPURG12ADDR6 (*((volatile unsigned int*)(0x42A0062CUL))) +#define bM4_MPU_RGD12_MPURG12ADDR7 (*((volatile unsigned int*)(0x42A00630UL))) +#define bM4_MPU_RGD12_MPURG12ADDR8 (*((volatile unsigned int*)(0x42A00634UL))) +#define bM4_MPU_RGD12_MPURG12ADDR9 (*((volatile unsigned int*)(0x42A00638UL))) +#define bM4_MPU_RGD12_MPURG12ADDR10 (*((volatile unsigned int*)(0x42A0063CUL))) +#define bM4_MPU_RGD12_MPURG12ADDR11 (*((volatile unsigned int*)(0x42A00640UL))) +#define bM4_MPU_RGD12_MPURG12ADDR12 (*((volatile unsigned int*)(0x42A00644UL))) +#define bM4_MPU_RGD12_MPURG12ADDR13 (*((volatile unsigned int*)(0x42A00648UL))) +#define bM4_MPU_RGD12_MPURG12ADDR14 (*((volatile unsigned int*)(0x42A0064CUL))) +#define bM4_MPU_RGD12_MPURG12ADDR15 (*((volatile unsigned int*)(0x42A00650UL))) +#define bM4_MPU_RGD12_MPURG12ADDR16 (*((volatile unsigned int*)(0x42A00654UL))) +#define bM4_MPU_RGD12_MPURG12ADDR17 (*((volatile unsigned int*)(0x42A00658UL))) +#define bM4_MPU_RGD12_MPURG12ADDR18 (*((volatile unsigned int*)(0x42A0065CUL))) +#define bM4_MPU_RGD12_MPURG12ADDR19 (*((volatile unsigned int*)(0x42A00660UL))) +#define bM4_MPU_RGD12_MPURG12ADDR20 (*((volatile unsigned int*)(0x42A00664UL))) +#define bM4_MPU_RGD12_MPURG12ADDR21 (*((volatile unsigned int*)(0x42A00668UL))) +#define bM4_MPU_RGD12_MPURG12ADDR22 (*((volatile unsigned int*)(0x42A0066CUL))) +#define bM4_MPU_RGD12_MPURG12ADDR23 (*((volatile unsigned int*)(0x42A00670UL))) +#define bM4_MPU_RGD12_MPURG12ADDR24 (*((volatile unsigned int*)(0x42A00674UL))) +#define bM4_MPU_RGD12_MPURG12ADDR25 (*((volatile unsigned int*)(0x42A00678UL))) +#define bM4_MPU_RGD12_MPURG12ADDR26 (*((volatile unsigned int*)(0x42A0067CUL))) +#define bM4_MPU_RGD13_MPURG13SIZE0 (*((volatile unsigned int*)(0x42A00680UL))) +#define bM4_MPU_RGD13_MPURG13SIZE1 (*((volatile unsigned int*)(0x42A00684UL))) +#define bM4_MPU_RGD13_MPURG13SIZE2 (*((volatile unsigned int*)(0x42A00688UL))) +#define bM4_MPU_RGD13_MPURG13SIZE3 (*((volatile unsigned int*)(0x42A0068CUL))) +#define bM4_MPU_RGD13_MPURG13SIZE4 (*((volatile unsigned int*)(0x42A00690UL))) +#define bM4_MPU_RGD13_MPURG13ADDR0 (*((volatile unsigned int*)(0x42A00694UL))) +#define bM4_MPU_RGD13_MPURG13ADDR1 (*((volatile unsigned int*)(0x42A00698UL))) +#define bM4_MPU_RGD13_MPURG13ADDR2 (*((volatile unsigned int*)(0x42A0069CUL))) +#define bM4_MPU_RGD13_MPURG13ADDR3 (*((volatile unsigned int*)(0x42A006A0UL))) +#define bM4_MPU_RGD13_MPURG13ADDR4 (*((volatile unsigned int*)(0x42A006A4UL))) +#define bM4_MPU_RGD13_MPURG13ADDR5 (*((volatile unsigned int*)(0x42A006A8UL))) +#define bM4_MPU_RGD13_MPURG13ADDR6 (*((volatile unsigned int*)(0x42A006ACUL))) +#define bM4_MPU_RGD13_MPURG13ADDR7 (*((volatile unsigned int*)(0x42A006B0UL))) +#define bM4_MPU_RGD13_MPURG13ADDR8 (*((volatile unsigned int*)(0x42A006B4UL))) +#define bM4_MPU_RGD13_MPURG13ADDR9 (*((volatile unsigned int*)(0x42A006B8UL))) +#define bM4_MPU_RGD13_MPURG13ADDR10 (*((volatile unsigned int*)(0x42A006BCUL))) +#define bM4_MPU_RGD13_MPURG13ADDR11 (*((volatile unsigned int*)(0x42A006C0UL))) +#define bM4_MPU_RGD13_MPURG13ADDR12 (*((volatile unsigned int*)(0x42A006C4UL))) +#define bM4_MPU_RGD13_MPURG13ADDR13 (*((volatile unsigned int*)(0x42A006C8UL))) +#define bM4_MPU_RGD13_MPURG13ADDR14 (*((volatile unsigned int*)(0x42A006CCUL))) +#define bM4_MPU_RGD13_MPURG13ADDR15 (*((volatile unsigned int*)(0x42A006D0UL))) +#define bM4_MPU_RGD13_MPURG13ADDR16 (*((volatile unsigned int*)(0x42A006D4UL))) +#define bM4_MPU_RGD13_MPURG13ADDR17 (*((volatile unsigned int*)(0x42A006D8UL))) +#define bM4_MPU_RGD13_MPURG13ADDR18 (*((volatile unsigned int*)(0x42A006DCUL))) +#define bM4_MPU_RGD13_MPURG13ADDR19 (*((volatile unsigned int*)(0x42A006E0UL))) +#define bM4_MPU_RGD13_MPURG13ADDR20 (*((volatile unsigned int*)(0x42A006E4UL))) +#define bM4_MPU_RGD13_MPURG13ADDR21 (*((volatile unsigned int*)(0x42A006E8UL))) +#define bM4_MPU_RGD13_MPURG13ADDR22 (*((volatile unsigned int*)(0x42A006ECUL))) +#define bM4_MPU_RGD13_MPURG13ADDR23 (*((volatile unsigned int*)(0x42A006F0UL))) +#define bM4_MPU_RGD13_MPURG13ADDR24 (*((volatile unsigned int*)(0x42A006F4UL))) +#define bM4_MPU_RGD13_MPURG13ADDR25 (*((volatile unsigned int*)(0x42A006F8UL))) +#define bM4_MPU_RGD13_MPURG13ADDR26 (*((volatile unsigned int*)(0x42A006FCUL))) +#define bM4_MPU_RGD14_MPURG14SIZE0 (*((volatile unsigned int*)(0x42A00700UL))) +#define bM4_MPU_RGD14_MPURG14SIZE1 (*((volatile unsigned int*)(0x42A00704UL))) +#define bM4_MPU_RGD14_MPURG14SIZE2 (*((volatile unsigned int*)(0x42A00708UL))) +#define bM4_MPU_RGD14_MPURG14SIZE3 (*((volatile unsigned int*)(0x42A0070CUL))) +#define bM4_MPU_RGD14_MPURG14SIZE4 (*((volatile unsigned int*)(0x42A00710UL))) +#define bM4_MPU_RGD14_MPURG14ADDR0 (*((volatile unsigned int*)(0x42A00714UL))) +#define bM4_MPU_RGD14_MPURG14ADDR1 (*((volatile unsigned int*)(0x42A00718UL))) +#define bM4_MPU_RGD14_MPURG14ADDR2 (*((volatile unsigned int*)(0x42A0071CUL))) +#define bM4_MPU_RGD14_MPURG14ADDR3 (*((volatile unsigned int*)(0x42A00720UL))) +#define bM4_MPU_RGD14_MPURG14ADDR4 (*((volatile unsigned int*)(0x42A00724UL))) +#define bM4_MPU_RGD14_MPURG14ADDR5 (*((volatile unsigned int*)(0x42A00728UL))) +#define bM4_MPU_RGD14_MPURG14ADDR6 (*((volatile unsigned int*)(0x42A0072CUL))) +#define bM4_MPU_RGD14_MPURG14ADDR7 (*((volatile unsigned int*)(0x42A00730UL))) +#define bM4_MPU_RGD14_MPURG14ADDR8 (*((volatile unsigned int*)(0x42A00734UL))) +#define bM4_MPU_RGD14_MPURG14ADDR9 (*((volatile unsigned int*)(0x42A00738UL))) +#define bM4_MPU_RGD14_MPURG14ADDR10 (*((volatile unsigned int*)(0x42A0073CUL))) +#define bM4_MPU_RGD14_MPURG14ADDR11 (*((volatile unsigned int*)(0x42A00740UL))) +#define bM4_MPU_RGD14_MPURG14ADDR12 (*((volatile unsigned int*)(0x42A00744UL))) +#define bM4_MPU_RGD14_MPURG14ADDR13 (*((volatile unsigned int*)(0x42A00748UL))) +#define bM4_MPU_RGD14_MPURG14ADDR14 (*((volatile unsigned int*)(0x42A0074CUL))) +#define bM4_MPU_RGD14_MPURG14ADDR15 (*((volatile unsigned int*)(0x42A00750UL))) +#define bM4_MPU_RGD14_MPURG14ADDR16 (*((volatile unsigned int*)(0x42A00754UL))) +#define bM4_MPU_RGD14_MPURG14ADDR17 (*((volatile unsigned int*)(0x42A00758UL))) +#define bM4_MPU_RGD14_MPURG14ADDR18 (*((volatile unsigned int*)(0x42A0075CUL))) +#define bM4_MPU_RGD14_MPURG14ADDR19 (*((volatile unsigned int*)(0x42A00760UL))) +#define bM4_MPU_RGD14_MPURG14ADDR20 (*((volatile unsigned int*)(0x42A00764UL))) +#define bM4_MPU_RGD14_MPURG14ADDR21 (*((volatile unsigned int*)(0x42A00768UL))) +#define bM4_MPU_RGD14_MPURG14ADDR22 (*((volatile unsigned int*)(0x42A0076CUL))) +#define bM4_MPU_RGD14_MPURG14ADDR23 (*((volatile unsigned int*)(0x42A00770UL))) +#define bM4_MPU_RGD14_MPURG14ADDR24 (*((volatile unsigned int*)(0x42A00774UL))) +#define bM4_MPU_RGD14_MPURG14ADDR25 (*((volatile unsigned int*)(0x42A00778UL))) +#define bM4_MPU_RGD14_MPURG14ADDR26 (*((volatile unsigned int*)(0x42A0077CUL))) +#define bM4_MPU_RGD15_MPURG15SIZE0 (*((volatile unsigned int*)(0x42A00780UL))) +#define bM4_MPU_RGD15_MPURG15SIZE1 (*((volatile unsigned int*)(0x42A00784UL))) +#define bM4_MPU_RGD15_MPURG15SIZE2 (*((volatile unsigned int*)(0x42A00788UL))) +#define bM4_MPU_RGD15_MPURG15SIZE3 (*((volatile unsigned int*)(0x42A0078CUL))) +#define bM4_MPU_RGD15_MPURG15SIZE4 (*((volatile unsigned int*)(0x42A00790UL))) +#define bM4_MPU_RGD15_MPURG15ADDR0 (*((volatile unsigned int*)(0x42A00794UL))) +#define bM4_MPU_RGD15_MPURG15ADDR1 (*((volatile unsigned int*)(0x42A00798UL))) +#define bM4_MPU_RGD15_MPURG15ADDR2 (*((volatile unsigned int*)(0x42A0079CUL))) +#define bM4_MPU_RGD15_MPURG15ADDR3 (*((volatile unsigned int*)(0x42A007A0UL))) +#define bM4_MPU_RGD15_MPURG15ADDR4 (*((volatile unsigned int*)(0x42A007A4UL))) +#define bM4_MPU_RGD15_MPURG15ADDR5 (*((volatile unsigned int*)(0x42A007A8UL))) +#define bM4_MPU_RGD15_MPURG15ADDR6 (*((volatile unsigned int*)(0x42A007ACUL))) +#define bM4_MPU_RGD15_MPURG15ADDR7 (*((volatile unsigned int*)(0x42A007B0UL))) +#define bM4_MPU_RGD15_MPURG15ADDR8 (*((volatile unsigned int*)(0x42A007B4UL))) +#define bM4_MPU_RGD15_MPURG15ADDR9 (*((volatile unsigned int*)(0x42A007B8UL))) +#define bM4_MPU_RGD15_MPURG15ADDR10 (*((volatile unsigned int*)(0x42A007BCUL))) +#define bM4_MPU_RGD15_MPURG15ADDR11 (*((volatile unsigned int*)(0x42A007C0UL))) +#define bM4_MPU_RGD15_MPURG15ADDR12 (*((volatile unsigned int*)(0x42A007C4UL))) +#define bM4_MPU_RGD15_MPURG15ADDR13 (*((volatile unsigned int*)(0x42A007C8UL))) +#define bM4_MPU_RGD15_MPURG15ADDR14 (*((volatile unsigned int*)(0x42A007CCUL))) +#define bM4_MPU_RGD15_MPURG15ADDR15 (*((volatile unsigned int*)(0x42A007D0UL))) +#define bM4_MPU_RGD15_MPURG15ADDR16 (*((volatile unsigned int*)(0x42A007D4UL))) +#define bM4_MPU_RGD15_MPURG15ADDR17 (*((volatile unsigned int*)(0x42A007D8UL))) +#define bM4_MPU_RGD15_MPURG15ADDR18 (*((volatile unsigned int*)(0x42A007DCUL))) +#define bM4_MPU_RGD15_MPURG15ADDR19 (*((volatile unsigned int*)(0x42A007E0UL))) +#define bM4_MPU_RGD15_MPURG15ADDR20 (*((volatile unsigned int*)(0x42A007E4UL))) +#define bM4_MPU_RGD15_MPURG15ADDR21 (*((volatile unsigned int*)(0x42A007E8UL))) +#define bM4_MPU_RGD15_MPURG15ADDR22 (*((volatile unsigned int*)(0x42A007ECUL))) +#define bM4_MPU_RGD15_MPURG15ADDR23 (*((volatile unsigned int*)(0x42A007F0UL))) +#define bM4_MPU_RGD15_MPURG15ADDR24 (*((volatile unsigned int*)(0x42A007F4UL))) +#define bM4_MPU_RGD15_MPURG15ADDR25 (*((volatile unsigned int*)(0x42A007F8UL))) +#define bM4_MPU_RGD15_MPURG15ADDR26 (*((volatile unsigned int*)(0x42A007FCUL))) +#define bM4_MPU_RGCR0_S2RG0RP (*((volatile unsigned int*)(0x42A00800UL))) +#define bM4_MPU_RGCR0_S2RG0WP (*((volatile unsigned int*)(0x42A00804UL))) +#define bM4_MPU_RGCR0_S2RG0E (*((volatile unsigned int*)(0x42A0081CUL))) +#define bM4_MPU_RGCR0_S1RG0RP (*((volatile unsigned int*)(0x42A00820UL))) +#define bM4_MPU_RGCR0_S1RG0WP (*((volatile unsigned int*)(0x42A00824UL))) +#define bM4_MPU_RGCR0_S1RG0E (*((volatile unsigned int*)(0x42A0083CUL))) +#define bM4_MPU_RGCR0_FRG0RP (*((volatile unsigned int*)(0x42A00840UL))) +#define bM4_MPU_RGCR0_FRG0WP (*((volatile unsigned int*)(0x42A00844UL))) +#define bM4_MPU_RGCR0_FRG0E (*((volatile unsigned int*)(0x42A0085CUL))) +#define bM4_MPU_RGCR1_S2RG1RP (*((volatile unsigned int*)(0x42A00880UL))) +#define bM4_MPU_RGCR1_S2RG1WP (*((volatile unsigned int*)(0x42A00884UL))) +#define bM4_MPU_RGCR1_S2RG1E (*((volatile unsigned int*)(0x42A0089CUL))) +#define bM4_MPU_RGCR1_S1RG1RP (*((volatile unsigned int*)(0x42A008A0UL))) +#define bM4_MPU_RGCR1_S1RG1WP (*((volatile unsigned int*)(0x42A008A4UL))) +#define bM4_MPU_RGCR1_S1RG1E (*((volatile unsigned int*)(0x42A008BCUL))) +#define bM4_MPU_RGCR1_FRG1RP (*((volatile unsigned int*)(0x42A008C0UL))) +#define bM4_MPU_RGCR1_FRG1WP (*((volatile unsigned int*)(0x42A008C4UL))) +#define bM4_MPU_RGCR1_FRG1E (*((volatile unsigned int*)(0x42A008DCUL))) +#define bM4_MPU_RGCR2_S2RG2RP (*((volatile unsigned int*)(0x42A00900UL))) +#define bM4_MPU_RGCR2_S2RG2WP (*((volatile unsigned int*)(0x42A00904UL))) +#define bM4_MPU_RGCR2_S2RG2E (*((volatile unsigned int*)(0x42A0091CUL))) +#define bM4_MPU_RGCR2_S1RG2RP (*((volatile unsigned int*)(0x42A00920UL))) +#define bM4_MPU_RGCR2_S1RG2WP (*((volatile unsigned int*)(0x42A00924UL))) +#define bM4_MPU_RGCR2_S1RG2E (*((volatile unsigned int*)(0x42A0093CUL))) +#define bM4_MPU_RGCR2_FRG2RP (*((volatile unsigned int*)(0x42A00940UL))) +#define bM4_MPU_RGCR2_FRG2WP (*((volatile unsigned int*)(0x42A00944UL))) +#define bM4_MPU_RGCR2_FRG2E (*((volatile unsigned int*)(0x42A0095CUL))) +#define bM4_MPU_RGCR3_S2RG3RP (*((volatile unsigned int*)(0x42A00980UL))) +#define bM4_MPU_RGCR3_S2RG3WP (*((volatile unsigned int*)(0x42A00984UL))) +#define bM4_MPU_RGCR3_S2RG3E (*((volatile unsigned int*)(0x42A0099CUL))) +#define bM4_MPU_RGCR3_S1RG3RP (*((volatile unsigned int*)(0x42A009A0UL))) +#define bM4_MPU_RGCR3_S1RG3WP (*((volatile unsigned int*)(0x42A009A4UL))) +#define bM4_MPU_RGCR3_S1RG3E (*((volatile unsigned int*)(0x42A009BCUL))) +#define bM4_MPU_RGCR3_FRG3RP (*((volatile unsigned int*)(0x42A009C0UL))) +#define bM4_MPU_RGCR3_FRG3WP (*((volatile unsigned int*)(0x42A009C4UL))) +#define bM4_MPU_RGCR3_FRG3E (*((volatile unsigned int*)(0x42A009DCUL))) +#define bM4_MPU_RGCR4_S2RG4RP (*((volatile unsigned int*)(0x42A00A00UL))) +#define bM4_MPU_RGCR4_S2RG4WP (*((volatile unsigned int*)(0x42A00A04UL))) +#define bM4_MPU_RGCR4_S2RG4E (*((volatile unsigned int*)(0x42A00A1CUL))) +#define bM4_MPU_RGCR4_S1RG4RP (*((volatile unsigned int*)(0x42A00A20UL))) +#define bM4_MPU_RGCR4_S1RG4WP (*((volatile unsigned int*)(0x42A00A24UL))) +#define bM4_MPU_RGCR4_S1RG4E (*((volatile unsigned int*)(0x42A00A3CUL))) +#define bM4_MPU_RGCR4_FRG4RP (*((volatile unsigned int*)(0x42A00A40UL))) +#define bM4_MPU_RGCR4_FRG4WP (*((volatile unsigned int*)(0x42A00A44UL))) +#define bM4_MPU_RGCR4_FRG4E (*((volatile unsigned int*)(0x42A00A5CUL))) +#define bM4_MPU_RGCR5_S2RG5RP (*((volatile unsigned int*)(0x42A00A80UL))) +#define bM4_MPU_RGCR5_S2RG5WP (*((volatile unsigned int*)(0x42A00A84UL))) +#define bM4_MPU_RGCR5_S2RG5E (*((volatile unsigned int*)(0x42A00A9CUL))) +#define bM4_MPU_RGCR5_S1RG5RP (*((volatile unsigned int*)(0x42A00AA0UL))) +#define bM4_MPU_RGCR5_S1RG5WP (*((volatile unsigned int*)(0x42A00AA4UL))) +#define bM4_MPU_RGCR5_S1RG5E (*((volatile unsigned int*)(0x42A00ABCUL))) +#define bM4_MPU_RGCR5_FRG5RP (*((volatile unsigned int*)(0x42A00AC0UL))) +#define bM4_MPU_RGCR5_FRG5WP (*((volatile unsigned int*)(0x42A00AC4UL))) +#define bM4_MPU_RGCR5_FRG5E (*((volatile unsigned int*)(0x42A00ADCUL))) +#define bM4_MPU_RGCR6_S2RG6RP (*((volatile unsigned int*)(0x42A00B00UL))) +#define bM4_MPU_RGCR6_S2RG6WP (*((volatile unsigned int*)(0x42A00B04UL))) +#define bM4_MPU_RGCR6_S2RG6E (*((volatile unsigned int*)(0x42A00B1CUL))) +#define bM4_MPU_RGCR6_S1RG6RP (*((volatile unsigned int*)(0x42A00B20UL))) +#define bM4_MPU_RGCR6_S1RG6WP (*((volatile unsigned int*)(0x42A00B24UL))) +#define bM4_MPU_RGCR6_S1RG6E (*((volatile unsigned int*)(0x42A00B3CUL))) +#define bM4_MPU_RGCR6_FRG6RP (*((volatile unsigned int*)(0x42A00B40UL))) +#define bM4_MPU_RGCR6_FRG6WP (*((volatile unsigned int*)(0x42A00B44UL))) +#define bM4_MPU_RGCR6_FRG6E (*((volatile unsigned int*)(0x42A00B5CUL))) +#define bM4_MPU_RGCR7_S2RG7RP (*((volatile unsigned int*)(0x42A00B80UL))) +#define bM4_MPU_RGCR7_S2RG7WP (*((volatile unsigned int*)(0x42A00B84UL))) +#define bM4_MPU_RGCR7_S2RG7E (*((volatile unsigned int*)(0x42A00B9CUL))) +#define bM4_MPU_RGCR7_S1RG7RP (*((volatile unsigned int*)(0x42A00BA0UL))) +#define bM4_MPU_RGCR7_S1RG7WP (*((volatile unsigned int*)(0x42A00BA4UL))) +#define bM4_MPU_RGCR7_S1RG7E (*((volatile unsigned int*)(0x42A00BBCUL))) +#define bM4_MPU_RGCR7_FRG7RP (*((volatile unsigned int*)(0x42A00BC0UL))) +#define bM4_MPU_RGCR7_FRG7WP (*((volatile unsigned int*)(0x42A00BC4UL))) +#define bM4_MPU_RGCR7_FRG7E (*((volatile unsigned int*)(0x42A00BDCUL))) +#define bM4_MPU_RGCR8_S2RG8RP (*((volatile unsigned int*)(0x42A00C00UL))) +#define bM4_MPU_RGCR8_S2RG8WP (*((volatile unsigned int*)(0x42A00C04UL))) +#define bM4_MPU_RGCR8_S2RG8E (*((volatile unsigned int*)(0x42A00C1CUL))) +#define bM4_MPU_RGCR8_S1RG8RP (*((volatile unsigned int*)(0x42A00C20UL))) +#define bM4_MPU_RGCR8_S1RG8WP (*((volatile unsigned int*)(0x42A00C24UL))) +#define bM4_MPU_RGCR8_S1RG8E (*((volatile unsigned int*)(0x42A00C3CUL))) +#define bM4_MPU_RGCR9_S2RG9RP (*((volatile unsigned int*)(0x42A00C80UL))) +#define bM4_MPU_RGCR9_S2RG9WP (*((volatile unsigned int*)(0x42A00C84UL))) +#define bM4_MPU_RGCR9_S2RG9E (*((volatile unsigned int*)(0x42A00C9CUL))) +#define bM4_MPU_RGCR9_S1RG9RP (*((volatile unsigned int*)(0x42A00CA0UL))) +#define bM4_MPU_RGCR9_S1RG9WP (*((volatile unsigned int*)(0x42A00CA4UL))) +#define bM4_MPU_RGCR9_S1RG9E (*((volatile unsigned int*)(0x42A00CBCUL))) +#define bM4_MPU_RGCR10_S2RG10RP (*((volatile unsigned int*)(0x42A00D00UL))) +#define bM4_MPU_RGCR10_S2RG10WP (*((volatile unsigned int*)(0x42A00D04UL))) +#define bM4_MPU_RGCR10_S2RG10E (*((volatile unsigned int*)(0x42A00D1CUL))) +#define bM4_MPU_RGCR10_S1RG10RP (*((volatile unsigned int*)(0x42A00D20UL))) +#define bM4_MPU_RGCR10_S1RG10WP (*((volatile unsigned int*)(0x42A00D24UL))) +#define bM4_MPU_RGCR10_S1RG10E (*((volatile unsigned int*)(0x42A00D3CUL))) +#define bM4_MPU_RGCR11_S2RG11RP (*((volatile unsigned int*)(0x42A00D80UL))) +#define bM4_MPU_RGCR11_S2RG11WP (*((volatile unsigned int*)(0x42A00D84UL))) +#define bM4_MPU_RGCR11_S2RG11E (*((volatile unsigned int*)(0x42A00D9CUL))) +#define bM4_MPU_RGCR11_S1RG11RP (*((volatile unsigned int*)(0x42A00DA0UL))) +#define bM4_MPU_RGCR11_S1RG11WP (*((volatile unsigned int*)(0x42A00DA4UL))) +#define bM4_MPU_RGCR11_S1RG11E (*((volatile unsigned int*)(0x42A00DBCUL))) +#define bM4_MPU_RGCR12_S2RG12RP (*((volatile unsigned int*)(0x42A00E00UL))) +#define bM4_MPU_RGCR12_S2RG12WP (*((volatile unsigned int*)(0x42A00E04UL))) +#define bM4_MPU_RGCR12_S2RG12E (*((volatile unsigned int*)(0x42A00E1CUL))) +#define bM4_MPU_RGCR12_S1RG12RP (*((volatile unsigned int*)(0x42A00E20UL))) +#define bM4_MPU_RGCR12_S1RG12WP (*((volatile unsigned int*)(0x42A00E24UL))) +#define bM4_MPU_RGCR12_S1RG12E (*((volatile unsigned int*)(0x42A00E3CUL))) +#define bM4_MPU_RGCR13_S2RG13RP (*((volatile unsigned int*)(0x42A00E80UL))) +#define bM4_MPU_RGCR13_S2RG13WP (*((volatile unsigned int*)(0x42A00E84UL))) +#define bM4_MPU_RGCR13_S2RG13E (*((volatile unsigned int*)(0x42A00E9CUL))) +#define bM4_MPU_RGCR13_S1RG13RP (*((volatile unsigned int*)(0x42A00EA0UL))) +#define bM4_MPU_RGCR13_S1RG13WP (*((volatile unsigned int*)(0x42A00EA4UL))) +#define bM4_MPU_RGCR13_S1RG13E (*((volatile unsigned int*)(0x42A00EBCUL))) +#define bM4_MPU_RGCR14_S2RG14RP (*((volatile unsigned int*)(0x42A00F00UL))) +#define bM4_MPU_RGCR14_S2RG14WP (*((volatile unsigned int*)(0x42A00F04UL))) +#define bM4_MPU_RGCR14_S2RG14E (*((volatile unsigned int*)(0x42A00F1CUL))) +#define bM4_MPU_RGCR14_S1RG14RP (*((volatile unsigned int*)(0x42A00F20UL))) +#define bM4_MPU_RGCR14_S1RG14WP (*((volatile unsigned int*)(0x42A00F24UL))) +#define bM4_MPU_RGCR14_S1RG14E (*((volatile unsigned int*)(0x42A00F3CUL))) +#define bM4_MPU_RGCR15_S2RG15RP (*((volatile unsigned int*)(0x42A00F80UL))) +#define bM4_MPU_RGCR15_S2RG15WP (*((volatile unsigned int*)(0x42A00F84UL))) +#define bM4_MPU_RGCR15_S2RG15E (*((volatile unsigned int*)(0x42A00F9CUL))) +#define bM4_MPU_RGCR15_S1RG15RP (*((volatile unsigned int*)(0x42A00FA0UL))) +#define bM4_MPU_RGCR15_S1RG15WP (*((volatile unsigned int*)(0x42A00FA4UL))) +#define bM4_MPU_RGCR15_S1RG15E (*((volatile unsigned int*)(0x42A00FBCUL))) +#define bM4_MPU_CR_SMPU2BRP (*((volatile unsigned int*)(0x42A01000UL))) +#define bM4_MPU_CR_SMPU2BWP (*((volatile unsigned int*)(0x42A01004UL))) +#define bM4_MPU_CR_SMPU2ACT0 (*((volatile unsigned int*)(0x42A01008UL))) +#define bM4_MPU_CR_SMPU2ACT1 (*((volatile unsigned int*)(0x42A0100CUL))) +#define bM4_MPU_CR_SMPU2E (*((volatile unsigned int*)(0x42A0101CUL))) +#define bM4_MPU_CR_SMPU1BRP (*((volatile unsigned int*)(0x42A01020UL))) +#define bM4_MPU_CR_SMPU1BWP (*((volatile unsigned int*)(0x42A01024UL))) +#define bM4_MPU_CR_SMPU1ACT0 (*((volatile unsigned int*)(0x42A01028UL))) +#define bM4_MPU_CR_SMPU1ACT1 (*((volatile unsigned int*)(0x42A0102CUL))) +#define bM4_MPU_CR_SMPU1E (*((volatile unsigned int*)(0x42A0103CUL))) +#define bM4_MPU_CR_FMPUBRP (*((volatile unsigned int*)(0x42A01040UL))) +#define bM4_MPU_CR_FMPUBWP (*((volatile unsigned int*)(0x42A01044UL))) +#define bM4_MPU_CR_FMPUACT0 (*((volatile unsigned int*)(0x42A01048UL))) +#define bM4_MPU_CR_FMPUACT1 (*((volatile unsigned int*)(0x42A0104CUL))) +#define bM4_MPU_CR_FMPUE (*((volatile unsigned int*)(0x42A0105CUL))) +#define bM4_MPU_SR_SMPU2EAF (*((volatile unsigned int*)(0x42A01080UL))) +#define bM4_MPU_SR_SMPU1EAF (*((volatile unsigned int*)(0x42A010A0UL))) +#define bM4_MPU_SR_FMPUEAF (*((volatile unsigned int*)(0x42A010C0UL))) +#define bM4_MPU_ECLR_SMPU2ECLR (*((volatile unsigned int*)(0x42A01100UL))) +#define bM4_MPU_ECLR_SMPU1ECLR (*((volatile unsigned int*)(0x42A01120UL))) +#define bM4_MPU_ECLR_FMPUECLR (*((volatile unsigned int*)(0x42A01140UL))) +#define bM4_MPU_WP_MPUWE (*((volatile unsigned int*)(0x42A01180UL))) +#define bM4_MPU_WP_WKEY0 (*((volatile unsigned int*)(0x42A01184UL))) +#define bM4_MPU_WP_WKEY1 (*((volatile unsigned int*)(0x42A01188UL))) +#define bM4_MPU_WP_WKEY2 (*((volatile unsigned int*)(0x42A0118CUL))) +#define bM4_MPU_WP_WKEY3 (*((volatile unsigned int*)(0x42A01190UL))) +#define bM4_MPU_WP_WKEY4 (*((volatile unsigned int*)(0x42A01194UL))) +#define bM4_MPU_WP_WKEY5 (*((volatile unsigned int*)(0x42A01198UL))) +#define bM4_MPU_WP_WKEY6 (*((volatile unsigned int*)(0x42A0119CUL))) +#define bM4_MPU_WP_WKEY7 (*((volatile unsigned int*)(0x42A011A0UL))) +#define bM4_MPU_WP_WKEY8 (*((volatile unsigned int*)(0x42A011A4UL))) +#define bM4_MPU_WP_WKEY9 (*((volatile unsigned int*)(0x42A011A8UL))) +#define bM4_MPU_WP_WKEY10 (*((volatile unsigned int*)(0x42A011ACUL))) +#define bM4_MPU_WP_WKEY11 (*((volatile unsigned int*)(0x42A011B0UL))) +#define bM4_MPU_WP_WKEY12 (*((volatile unsigned int*)(0x42A011B4UL))) +#define bM4_MPU_WP_WKEY13 (*((volatile unsigned int*)(0x42A011B8UL))) +#define bM4_MPU_WP_WKEY14 (*((volatile unsigned int*)(0x42A011BCUL))) +#define bM4_MSTP_FCG0_SRAMH (*((volatile unsigned int*)(0x42900000UL))) +#define bM4_MSTP_FCG0_SRAM12 (*((volatile unsigned int*)(0x42900010UL))) +#define bM4_MSTP_FCG0_SRAM3 (*((volatile unsigned int*)(0x42900020UL))) +#define bM4_MSTP_FCG0_SRAMRET (*((volatile unsigned int*)(0x42900028UL))) +#define bM4_MSTP_FCG0_DMA1 (*((volatile unsigned int*)(0x42900038UL))) +#define bM4_MSTP_FCG0_DMA2 (*((volatile unsigned int*)(0x4290003CUL))) +#define bM4_MSTP_FCG0_FCM (*((volatile unsigned int*)(0x42900040UL))) +#define bM4_MSTP_FCG0_AOS (*((volatile unsigned int*)(0x42900044UL))) +#define bM4_MSTP_FCG0_AES (*((volatile unsigned int*)(0x42900050UL))) +#define bM4_MSTP_FCG0_HASH (*((volatile unsigned int*)(0x42900054UL))) +#define bM4_MSTP_FCG0_TRNG (*((volatile unsigned int*)(0x42900058UL))) +#define bM4_MSTP_FCG0_CRC (*((volatile unsigned int*)(0x4290005CUL))) +#define bM4_MSTP_FCG0_DCU1 (*((volatile unsigned int*)(0x42900060UL))) +#define bM4_MSTP_FCG0_DCU2 (*((volatile unsigned int*)(0x42900064UL))) +#define bM4_MSTP_FCG0_DCU3 (*((volatile unsigned int*)(0x42900068UL))) +#define bM4_MSTP_FCG0_DCU4 (*((volatile unsigned int*)(0x4290006CUL))) +#define bM4_MSTP_FCG0_KEY (*((volatile unsigned int*)(0x4290007CUL))) +#define bM4_MSTP_FCG1_CAN (*((volatile unsigned int*)(0x42900080UL))) +#define bM4_MSTP_FCG1_QSPI (*((volatile unsigned int*)(0x4290008CUL))) +#define bM4_MSTP_FCG1_IIC1 (*((volatile unsigned int*)(0x42900090UL))) +#define bM4_MSTP_FCG1_IIC2 (*((volatile unsigned int*)(0x42900094UL))) +#define bM4_MSTP_FCG1_IIC3 (*((volatile unsigned int*)(0x42900098UL))) +#define bM4_MSTP_FCG1_USBFS (*((volatile unsigned int*)(0x429000A0UL))) +#define bM4_MSTP_FCG1_SDIOC1 (*((volatile unsigned int*)(0x429000A8UL))) +#define bM4_MSTP_FCG1_SDIOC2 (*((volatile unsigned int*)(0x429000ACUL))) +#define bM4_MSTP_FCG1_I2S1 (*((volatile unsigned int*)(0x429000B0UL))) +#define bM4_MSTP_FCG1_I2S2 (*((volatile unsigned int*)(0x429000B4UL))) +#define bM4_MSTP_FCG1_I2S3 (*((volatile unsigned int*)(0x429000B8UL))) +#define bM4_MSTP_FCG1_I2S4 (*((volatile unsigned int*)(0x429000BCUL))) +#define bM4_MSTP_FCG1_SPI1 (*((volatile unsigned int*)(0x429000C0UL))) +#define bM4_MSTP_FCG1_SPI2 (*((volatile unsigned int*)(0x429000C4UL))) +#define bM4_MSTP_FCG1_SPI3 (*((volatile unsigned int*)(0x429000C8UL))) +#define bM4_MSTP_FCG1_SPI4 (*((volatile unsigned int*)(0x429000CCUL))) +#define bM4_MSTP_FCG1_USART1 (*((volatile unsigned int*)(0x429000E0UL))) +#define bM4_MSTP_FCG1_USART2 (*((volatile unsigned int*)(0x429000E4UL))) +#define bM4_MSTP_FCG1_USART3 (*((volatile unsigned int*)(0x429000E8UL))) +#define bM4_MSTP_FCG1_USART4 (*((volatile unsigned int*)(0x429000ECUL))) +#define bM4_MSTP_FCG2_TIMER0_1 (*((volatile unsigned int*)(0x42900100UL))) +#define bM4_MSTP_FCG2_TIMER0_2 (*((volatile unsigned int*)(0x42900104UL))) +#define bM4_MSTP_FCG2_TIMERA_1 (*((volatile unsigned int*)(0x42900108UL))) +#define bM4_MSTP_FCG2_TIMERA_2 (*((volatile unsigned int*)(0x4290010CUL))) +#define bM4_MSTP_FCG2_TIMERA_3 (*((volatile unsigned int*)(0x42900110UL))) +#define bM4_MSTP_FCG2_TIMERA_4 (*((volatile unsigned int*)(0x42900114UL))) +#define bM4_MSTP_FCG2_TIMERA_5 (*((volatile unsigned int*)(0x42900118UL))) +#define bM4_MSTP_FCG2_TIMERA_6 (*((volatile unsigned int*)(0x4290011CUL))) +#define bM4_MSTP_FCG2_TIMER4_1 (*((volatile unsigned int*)(0x42900120UL))) +#define bM4_MSTP_FCG2_TIMER4_2 (*((volatile unsigned int*)(0x42900124UL))) +#define bM4_MSTP_FCG2_TIMER4_3 (*((volatile unsigned int*)(0x42900128UL))) +#define bM4_MSTP_FCG2_EMB (*((volatile unsigned int*)(0x4290013CUL))) +#define bM4_MSTP_FCG2_TIMER6_1 (*((volatile unsigned int*)(0x42900140UL))) +#define bM4_MSTP_FCG2_TIMER6_2 (*((volatile unsigned int*)(0x42900144UL))) +#define bM4_MSTP_FCG2_TIMER6_3 (*((volatile unsigned int*)(0x42900148UL))) +#define bM4_MSTP_FCG3_ADC1 (*((volatile unsigned int*)(0x42900180UL))) +#define bM4_MSTP_FCG3_ADC2 (*((volatile unsigned int*)(0x42900184UL))) +#define bM4_MSTP_FCG3_CMP (*((volatile unsigned int*)(0x429001A0UL))) +#define bM4_MSTP_FCG3_OTS (*((volatile unsigned int*)(0x429001B0UL))) +#define bM4_MSTP_FCG0PC_PRT0 (*((volatile unsigned int*)(0x42900200UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE0 (*((volatile unsigned int*)(0x42900240UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE1 (*((volatile unsigned int*)(0x42900244UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE2 (*((volatile unsigned int*)(0x42900248UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE3 (*((volatile unsigned int*)(0x4290024CUL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE4 (*((volatile unsigned int*)(0x42900250UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE5 (*((volatile unsigned int*)(0x42900254UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE6 (*((volatile unsigned int*)(0x42900258UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE7 (*((volatile unsigned int*)(0x4290025CUL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE8 (*((volatile unsigned int*)(0x42900260UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE9 (*((volatile unsigned int*)(0x42900264UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE10 (*((volatile unsigned int*)(0x42900268UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE11 (*((volatile unsigned int*)(0x4290026CUL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE12 (*((volatile unsigned int*)(0x42900270UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE13 (*((volatile unsigned int*)(0x42900274UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE14 (*((volatile unsigned int*)(0x42900278UL))) +#define bM4_MSTP_FCG0PC_FCG0PCWE15 (*((volatile unsigned int*)(0x4290027CUL))) +#define bM4_OTS_CTL_OTSST (*((volatile unsigned int*)(0x42948000UL))) +#define bM4_OTS_CTL_OTSCK (*((volatile unsigned int*)(0x42948004UL))) +#define bM4_OTS_CTL_OTSIE (*((volatile unsigned int*)(0x42948008UL))) +#define bM4_OTS_CTL_TSSTP (*((volatile unsigned int*)(0x4294800CUL))) +#define bM4_OTS_LPR_TSOFS0 (*((volatile unsigned int*)(0x42948100UL))) +#define bM4_OTS_LPR_TSOFS1 (*((volatile unsigned int*)(0x42948104UL))) +#define bM4_OTS_LPR_TSOFS2 (*((volatile unsigned int*)(0x42948108UL))) +#define bM4_OTS_LPR_TSOFS3 (*((volatile unsigned int*)(0x4294810CUL))) +#define bM4_OTS_LPR_TSOFS4 (*((volatile unsigned int*)(0x42948110UL))) +#define bM4_OTS_LPR_TSOFS5 (*((volatile unsigned int*)(0x42948114UL))) +#define bM4_OTS_LPR_TSOFS6 (*((volatile unsigned int*)(0x42948118UL))) +#define bM4_OTS_LPR_TSOFS7 (*((volatile unsigned int*)(0x4294811CUL))) +#define bM4_OTS_LPR_TSSLP0 (*((volatile unsigned int*)(0x42948120UL))) +#define bM4_OTS_LPR_TSSLP1 (*((volatile unsigned int*)(0x42948124UL))) +#define bM4_OTS_LPR_TSSLP2 (*((volatile unsigned int*)(0x42948128UL))) +#define bM4_OTS_LPR_TSSLP3 (*((volatile unsigned int*)(0x4294812CUL))) +#define bM4_OTS_LPR_TSSLP4 (*((volatile unsigned int*)(0x42948130UL))) +#define bM4_OTS_LPR_TSSLP5 (*((volatile unsigned int*)(0x42948134UL))) +#define bM4_OTS_LPR_TSSLP6 (*((volatile unsigned int*)(0x42948138UL))) +#define bM4_OTS_LPR_TSSLP7 (*((volatile unsigned int*)(0x4294813CUL))) +#define bM4_OTS_LPR_TSSLP8 (*((volatile unsigned int*)(0x42948140UL))) +#define bM4_OTS_LPR_TSSLP9 (*((volatile unsigned int*)(0x42948144UL))) +#define bM4_OTS_LPR_TSSLP10 (*((volatile unsigned int*)(0x42948148UL))) +#define bM4_OTS_LPR_TSSLP11 (*((volatile unsigned int*)(0x4294814CUL))) +#define bM4_OTS_LPR_TSSLP12 (*((volatile unsigned int*)(0x42948150UL))) +#define bM4_OTS_LPR_TSSLP13 (*((volatile unsigned int*)(0x42948154UL))) +#define bM4_OTS_LPR_TSSLP14 (*((volatile unsigned int*)(0x42948158UL))) +#define bM4_OTS_LPR_TSSLP15 (*((volatile unsigned int*)(0x4294815CUL))) +#define bM4_OTS_LPR_TSSLP16 (*((volatile unsigned int*)(0x42948160UL))) +#define bM4_OTS_LPR_TSSLP17 (*((volatile unsigned int*)(0x42948164UL))) +#define bM4_OTS_LPR_TSSLP18 (*((volatile unsigned int*)(0x42948168UL))) +#define bM4_OTS_LPR_TSSLP19 (*((volatile unsigned int*)(0x4294816CUL))) +#define bM4_OTS_LPR_TSSLP20 (*((volatile unsigned int*)(0x42948170UL))) +#define bM4_OTS_LPR_TSSLP21 (*((volatile unsigned int*)(0x42948174UL))) +#define bM4_OTS_LPR_TSSLP22 (*((volatile unsigned int*)(0x42948178UL))) +#define bM4_OTS_LPR_TSSLP23 (*((volatile unsigned int*)(0x4294817CUL))) +#define bM4_PERIC_USBFS_SYCTLREG_DFB (*((volatile unsigned int*)(0x42AA8000UL))) +#define bM4_PERIC_USBFS_SYCTLREG_SOFEN (*((volatile unsigned int*)(0x42AA8004UL))) +#define bM4_PERIC_SDIOC_SYCTLREG_SELMMC1 (*((volatile unsigned int*)(0x42AA8084UL))) +#define bM4_PERIC_SDIOC_SYCTLREG_SELMMC2 (*((volatile unsigned int*)(0x42AA808CUL))) +#define bM4_PORT_PIDRA_PIN00 (*((volatile unsigned int*)(0x42A70000UL))) +#define bM4_PORT_PIDRA_PIN01 (*((volatile unsigned int*)(0x42A70004UL))) +#define bM4_PORT_PIDRA_PIN02 (*((volatile unsigned int*)(0x42A70008UL))) +#define bM4_PORT_PIDRA_PIN03 (*((volatile unsigned int*)(0x42A7000CUL))) +#define bM4_PORT_PIDRA_PIN04 (*((volatile unsigned int*)(0x42A70010UL))) +#define bM4_PORT_PIDRA_PIN05 (*((volatile unsigned int*)(0x42A70014UL))) +#define bM4_PORT_PIDRA_PIN06 (*((volatile unsigned int*)(0x42A70018UL))) +#define bM4_PORT_PIDRA_PIN07 (*((volatile unsigned int*)(0x42A7001CUL))) +#define bM4_PORT_PIDRA_PIN08 (*((volatile unsigned int*)(0x42A70020UL))) +#define bM4_PORT_PIDRA_PIN09 (*((volatile unsigned int*)(0x42A70024UL))) +#define bM4_PORT_PIDRA_PIN10 (*((volatile unsigned int*)(0x42A70028UL))) +#define bM4_PORT_PIDRA_PIN11 (*((volatile unsigned int*)(0x42A7002CUL))) +#define bM4_PORT_PIDRA_PIN12 (*((volatile unsigned int*)(0x42A70030UL))) +#define bM4_PORT_PIDRA_PIN13 (*((volatile unsigned int*)(0x42A70034UL))) +#define bM4_PORT_PIDRA_PIN14 (*((volatile unsigned int*)(0x42A70038UL))) +#define bM4_PORT_PIDRA_PIN15 (*((volatile unsigned int*)(0x42A7003CUL))) +#define bM4_PORT_PODRA_POUT00 (*((volatile unsigned int*)(0x42A70080UL))) +#define bM4_PORT_PODRA_POUT01 (*((volatile unsigned int*)(0x42A70084UL))) +#define bM4_PORT_PODRA_POUT02 (*((volatile unsigned int*)(0x42A70088UL))) +#define bM4_PORT_PODRA_POUT03 (*((volatile unsigned int*)(0x42A7008CUL))) +#define bM4_PORT_PODRA_POUT04 (*((volatile unsigned int*)(0x42A70090UL))) +#define bM4_PORT_PODRA_POUT05 (*((volatile unsigned int*)(0x42A70094UL))) +#define bM4_PORT_PODRA_POUT06 (*((volatile unsigned int*)(0x42A70098UL))) +#define bM4_PORT_PODRA_POUT07 (*((volatile unsigned int*)(0x42A7009CUL))) +#define bM4_PORT_PODRA_POUT08 (*((volatile unsigned int*)(0x42A700A0UL))) +#define bM4_PORT_PODRA_POUT09 (*((volatile unsigned int*)(0x42A700A4UL))) +#define bM4_PORT_PODRA_POUT10 (*((volatile unsigned int*)(0x42A700A8UL))) +#define bM4_PORT_PODRA_POUT11 (*((volatile unsigned int*)(0x42A700ACUL))) +#define bM4_PORT_PODRA_POUT12 (*((volatile unsigned int*)(0x42A700B0UL))) +#define bM4_PORT_PODRA_POUT13 (*((volatile unsigned int*)(0x42A700B4UL))) +#define bM4_PORT_PODRA_POUT14 (*((volatile unsigned int*)(0x42A700B8UL))) +#define bM4_PORT_PODRA_POUT15 (*((volatile unsigned int*)(0x42A700BCUL))) +#define bM4_PORT_POERA_POUTE00 (*((volatile unsigned int*)(0x42A700C0UL))) +#define bM4_PORT_POERA_POUTE01 (*((volatile unsigned int*)(0x42A700C4UL))) +#define bM4_PORT_POERA_POUTE02 (*((volatile unsigned int*)(0x42A700C8UL))) +#define bM4_PORT_POERA_POUTE03 (*((volatile unsigned int*)(0x42A700CCUL))) +#define bM4_PORT_POERA_POUTE04 (*((volatile unsigned int*)(0x42A700D0UL))) +#define bM4_PORT_POERA_POUTE05 (*((volatile unsigned int*)(0x42A700D4UL))) +#define bM4_PORT_POERA_POUTE06 (*((volatile unsigned int*)(0x42A700D8UL))) +#define bM4_PORT_POERA_POUTE07 (*((volatile unsigned int*)(0x42A700DCUL))) +#define bM4_PORT_POERA_POUTE08 (*((volatile unsigned int*)(0x42A700E0UL))) +#define bM4_PORT_POERA_POUTE09 (*((volatile unsigned int*)(0x42A700E4UL))) +#define bM4_PORT_POERA_POUTE10 (*((volatile unsigned int*)(0x42A700E8UL))) +#define bM4_PORT_POERA_POUTE11 (*((volatile unsigned int*)(0x42A700ECUL))) +#define bM4_PORT_POERA_POUTE12 (*((volatile unsigned int*)(0x42A700F0UL))) +#define bM4_PORT_POERA_POUTE13 (*((volatile unsigned int*)(0x42A700F4UL))) +#define bM4_PORT_POERA_POUTE14 (*((volatile unsigned int*)(0x42A700F8UL))) +#define bM4_PORT_POERA_POUTE15 (*((volatile unsigned int*)(0x42A700FCUL))) +#define bM4_PORT_POSRA_POS00 (*((volatile unsigned int*)(0x42A70100UL))) +#define bM4_PORT_POSRA_POS01 (*((volatile unsigned int*)(0x42A70104UL))) +#define bM4_PORT_POSRA_POS02 (*((volatile unsigned int*)(0x42A70108UL))) +#define bM4_PORT_POSRA_POS03 (*((volatile unsigned int*)(0x42A7010CUL))) +#define bM4_PORT_POSRA_POS04 (*((volatile unsigned int*)(0x42A70110UL))) +#define bM4_PORT_POSRA_POS05 (*((volatile unsigned int*)(0x42A70114UL))) +#define bM4_PORT_POSRA_POS06 (*((volatile unsigned int*)(0x42A70118UL))) +#define bM4_PORT_POSRA_POS07 (*((volatile unsigned int*)(0x42A7011CUL))) +#define bM4_PORT_POSRA_POS08 (*((volatile unsigned int*)(0x42A70120UL))) +#define bM4_PORT_POSRA_POS09 (*((volatile unsigned int*)(0x42A70124UL))) +#define bM4_PORT_POSRA_POS10 (*((volatile unsigned int*)(0x42A70128UL))) +#define bM4_PORT_POSRA_POS11 (*((volatile unsigned int*)(0x42A7012CUL))) +#define bM4_PORT_POSRA_POS12 (*((volatile unsigned int*)(0x42A70130UL))) +#define bM4_PORT_POSRA_POS13 (*((volatile unsigned int*)(0x42A70134UL))) +#define bM4_PORT_POSRA_POS14 (*((volatile unsigned int*)(0x42A70138UL))) +#define bM4_PORT_POSRA_POS15 (*((volatile unsigned int*)(0x42A7013CUL))) +#define bM4_PORT_PORRA_POR00 (*((volatile unsigned int*)(0x42A70140UL))) +#define bM4_PORT_PORRA_POR01 (*((volatile unsigned int*)(0x42A70144UL))) +#define bM4_PORT_PORRA_POR02 (*((volatile unsigned int*)(0x42A70148UL))) +#define bM4_PORT_PORRA_POR03 (*((volatile unsigned int*)(0x42A7014CUL))) +#define bM4_PORT_PORRA_POR04 (*((volatile unsigned int*)(0x42A70150UL))) +#define bM4_PORT_PORRA_POR05 (*((volatile unsigned int*)(0x42A70154UL))) +#define bM4_PORT_PORRA_POR06 (*((volatile unsigned int*)(0x42A70158UL))) +#define bM4_PORT_PORRA_POR07 (*((volatile unsigned int*)(0x42A7015CUL))) +#define bM4_PORT_PORRA_POR08 (*((volatile unsigned int*)(0x42A70160UL))) +#define bM4_PORT_PORRA_POR09 (*((volatile unsigned int*)(0x42A70164UL))) +#define bM4_PORT_PORRA_POR10 (*((volatile unsigned int*)(0x42A70168UL))) +#define bM4_PORT_PORRA_POR11 (*((volatile unsigned int*)(0x42A7016CUL))) +#define bM4_PORT_PORRA_POR12 (*((volatile unsigned int*)(0x42A70170UL))) +#define bM4_PORT_PORRA_POR13 (*((volatile unsigned int*)(0x42A70174UL))) +#define bM4_PORT_PORRA_POR14 (*((volatile unsigned int*)(0x42A70178UL))) +#define bM4_PORT_PORRA_POR15 (*((volatile unsigned int*)(0x42A7017CUL))) +#define bM4_PORT_POTRA_POT00 (*((volatile unsigned int*)(0x42A70180UL))) +#define bM4_PORT_POTRA_POT01 (*((volatile unsigned int*)(0x42A70184UL))) +#define bM4_PORT_POTRA_POT02 (*((volatile unsigned int*)(0x42A70188UL))) +#define bM4_PORT_POTRA_POT03 (*((volatile unsigned int*)(0x42A7018CUL))) +#define bM4_PORT_POTRA_POT04 (*((volatile unsigned int*)(0x42A70190UL))) +#define bM4_PORT_POTRA_POT05 (*((volatile unsigned int*)(0x42A70194UL))) +#define bM4_PORT_POTRA_POT06 (*((volatile unsigned int*)(0x42A70198UL))) +#define bM4_PORT_POTRA_POT07 (*((volatile unsigned int*)(0x42A7019CUL))) +#define bM4_PORT_POTRA_POT08 (*((volatile unsigned int*)(0x42A701A0UL))) +#define bM4_PORT_POTRA_POT09 (*((volatile unsigned int*)(0x42A701A4UL))) +#define bM4_PORT_POTRA_POT10 (*((volatile unsigned int*)(0x42A701A8UL))) +#define bM4_PORT_POTRA_POT11 (*((volatile unsigned int*)(0x42A701ACUL))) +#define bM4_PORT_POTRA_POT12 (*((volatile unsigned int*)(0x42A701B0UL))) +#define bM4_PORT_POTRA_POT13 (*((volatile unsigned int*)(0x42A701B4UL))) +#define bM4_PORT_POTRA_POT14 (*((volatile unsigned int*)(0x42A701B8UL))) +#define bM4_PORT_POTRA_POT15 (*((volatile unsigned int*)(0x42A701BCUL))) +#define bM4_PORT_PIDRB_PIN00 (*((volatile unsigned int*)(0x42A70200UL))) +#define bM4_PORT_PIDRB_PIN01 (*((volatile unsigned int*)(0x42A70204UL))) +#define bM4_PORT_PIDRB_PIN02 (*((volatile unsigned int*)(0x42A70208UL))) +#define bM4_PORT_PIDRB_PIN03 (*((volatile unsigned int*)(0x42A7020CUL))) +#define bM4_PORT_PIDRB_PIN04 (*((volatile unsigned int*)(0x42A70210UL))) +#define bM4_PORT_PIDRB_PIN05 (*((volatile unsigned int*)(0x42A70214UL))) +#define bM4_PORT_PIDRB_PIN06 (*((volatile unsigned int*)(0x42A70218UL))) +#define bM4_PORT_PIDRB_PIN07 (*((volatile unsigned int*)(0x42A7021CUL))) +#define bM4_PORT_PIDRB_PIN08 (*((volatile unsigned int*)(0x42A70220UL))) +#define bM4_PORT_PIDRB_PIN09 (*((volatile unsigned int*)(0x42A70224UL))) +#define bM4_PORT_PIDRB_PIN10 (*((volatile unsigned int*)(0x42A70228UL))) +#define bM4_PORT_PIDRB_PIN11 (*((volatile unsigned int*)(0x42A7022CUL))) +#define bM4_PORT_PIDRB_PIN12 (*((volatile unsigned int*)(0x42A70230UL))) +#define bM4_PORT_PIDRB_PIN13 (*((volatile unsigned int*)(0x42A70234UL))) +#define bM4_PORT_PIDRB_PIN14 (*((volatile unsigned int*)(0x42A70238UL))) +#define bM4_PORT_PIDRB_PIN15 (*((volatile unsigned int*)(0x42A7023CUL))) +#define bM4_PORT_PODRB_POUT00 (*((volatile unsigned int*)(0x42A70280UL))) +#define bM4_PORT_PODRB_POUT01 (*((volatile unsigned int*)(0x42A70284UL))) +#define bM4_PORT_PODRB_POUT02 (*((volatile unsigned int*)(0x42A70288UL))) +#define bM4_PORT_PODRB_POUT03 (*((volatile unsigned int*)(0x42A7028CUL))) +#define bM4_PORT_PODRB_POUT04 (*((volatile unsigned int*)(0x42A70290UL))) +#define bM4_PORT_PODRB_POUT05 (*((volatile unsigned int*)(0x42A70294UL))) +#define bM4_PORT_PODRB_POUT06 (*((volatile unsigned int*)(0x42A70298UL))) +#define bM4_PORT_PODRB_POUT07 (*((volatile unsigned int*)(0x42A7029CUL))) +#define bM4_PORT_PODRB_POUT08 (*((volatile unsigned int*)(0x42A702A0UL))) +#define bM4_PORT_PODRB_POUT09 (*((volatile unsigned int*)(0x42A702A4UL))) +#define bM4_PORT_PODRB_POUT10 (*((volatile unsigned int*)(0x42A702A8UL))) +#define bM4_PORT_PODRB_POUT11 (*((volatile unsigned int*)(0x42A702ACUL))) +#define bM4_PORT_PODRB_POUT12 (*((volatile unsigned int*)(0x42A702B0UL))) +#define bM4_PORT_PODRB_POUT13 (*((volatile unsigned int*)(0x42A702B4UL))) +#define bM4_PORT_PODRB_POUT14 (*((volatile unsigned int*)(0x42A702B8UL))) +#define bM4_PORT_PODRB_POUT15 (*((volatile unsigned int*)(0x42A702BCUL))) +#define bM4_PORT_POERB_POUTE00 (*((volatile unsigned int*)(0x42A702C0UL))) +#define bM4_PORT_POERB_POUTE01 (*((volatile unsigned int*)(0x42A702C4UL))) +#define bM4_PORT_POERB_POUTE02 (*((volatile unsigned int*)(0x42A702C8UL))) +#define bM4_PORT_POERB_POUTE03 (*((volatile unsigned int*)(0x42A702CCUL))) +#define bM4_PORT_POERB_POUTE04 (*((volatile unsigned int*)(0x42A702D0UL))) +#define bM4_PORT_POERB_POUTE05 (*((volatile unsigned int*)(0x42A702D4UL))) +#define bM4_PORT_POERB_POUTE06 (*((volatile unsigned int*)(0x42A702D8UL))) +#define bM4_PORT_POERB_POUTE07 (*((volatile unsigned int*)(0x42A702DCUL))) +#define bM4_PORT_POERB_POUTE08 (*((volatile unsigned int*)(0x42A702E0UL))) +#define bM4_PORT_POERB_POUTE09 (*((volatile unsigned int*)(0x42A702E4UL))) +#define bM4_PORT_POERB_POUTE10 (*((volatile unsigned int*)(0x42A702E8UL))) +#define bM4_PORT_POERB_POUTE11 (*((volatile unsigned int*)(0x42A702ECUL))) +#define bM4_PORT_POERB_POUTE12 (*((volatile unsigned int*)(0x42A702F0UL))) +#define bM4_PORT_POERB_POUTE13 (*((volatile unsigned int*)(0x42A702F4UL))) +#define bM4_PORT_POERB_POUTE14 (*((volatile unsigned int*)(0x42A702F8UL))) +#define bM4_PORT_POERB_POUTE15 (*((volatile unsigned int*)(0x42A702FCUL))) +#define bM4_PORT_POSRB_POS00 (*((volatile unsigned int*)(0x42A70300UL))) +#define bM4_PORT_POSRB_POS01 (*((volatile unsigned int*)(0x42A70304UL))) +#define bM4_PORT_POSRB_POS02 (*((volatile unsigned int*)(0x42A70308UL))) +#define bM4_PORT_POSRB_POS03 (*((volatile unsigned int*)(0x42A7030CUL))) +#define bM4_PORT_POSRB_POS04 (*((volatile unsigned int*)(0x42A70310UL))) +#define bM4_PORT_POSRB_POS05 (*((volatile unsigned int*)(0x42A70314UL))) +#define bM4_PORT_POSRB_POS06 (*((volatile unsigned int*)(0x42A70318UL))) +#define bM4_PORT_POSRB_POS07 (*((volatile unsigned int*)(0x42A7031CUL))) +#define bM4_PORT_POSRB_POS08 (*((volatile unsigned int*)(0x42A70320UL))) +#define bM4_PORT_POSRB_POS09 (*((volatile unsigned int*)(0x42A70324UL))) +#define bM4_PORT_POSRB_POS10 (*((volatile unsigned int*)(0x42A70328UL))) +#define bM4_PORT_POSRB_POS11 (*((volatile unsigned int*)(0x42A7032CUL))) +#define bM4_PORT_POSRB_POS12 (*((volatile unsigned int*)(0x42A70330UL))) +#define bM4_PORT_POSRB_POS13 (*((volatile unsigned int*)(0x42A70334UL))) +#define bM4_PORT_POSRB_POS14 (*((volatile unsigned int*)(0x42A70338UL))) +#define bM4_PORT_POSRB_POS15 (*((volatile unsigned int*)(0x42A7033CUL))) +#define bM4_PORT_PORRB_POR00 (*((volatile unsigned int*)(0x42A70340UL))) +#define bM4_PORT_PORRB_POR01 (*((volatile unsigned int*)(0x42A70344UL))) +#define bM4_PORT_PORRB_POR02 (*((volatile unsigned int*)(0x42A70348UL))) +#define bM4_PORT_PORRB_POR03 (*((volatile unsigned int*)(0x42A7034CUL))) +#define bM4_PORT_PORRB_POR04 (*((volatile unsigned int*)(0x42A70350UL))) +#define bM4_PORT_PORRB_POR05 (*((volatile unsigned int*)(0x42A70354UL))) +#define bM4_PORT_PORRB_POR06 (*((volatile unsigned int*)(0x42A70358UL))) +#define bM4_PORT_PORRB_POR07 (*((volatile unsigned int*)(0x42A7035CUL))) +#define bM4_PORT_PORRB_POR08 (*((volatile unsigned int*)(0x42A70360UL))) +#define bM4_PORT_PORRB_POR09 (*((volatile unsigned int*)(0x42A70364UL))) +#define bM4_PORT_PORRB_POR10 (*((volatile unsigned int*)(0x42A70368UL))) +#define bM4_PORT_PORRB_POR11 (*((volatile unsigned int*)(0x42A7036CUL))) +#define bM4_PORT_PORRB_POR12 (*((volatile unsigned int*)(0x42A70370UL))) +#define bM4_PORT_PORRB_POR13 (*((volatile unsigned int*)(0x42A70374UL))) +#define bM4_PORT_PORRB_POR14 (*((volatile unsigned int*)(0x42A70378UL))) +#define bM4_PORT_PORRB_POR15 (*((volatile unsigned int*)(0x42A7037CUL))) +#define bM4_PORT_POTRB_POT00 (*((volatile unsigned int*)(0x42A70380UL))) +#define bM4_PORT_POTRB_POT01 (*((volatile unsigned int*)(0x42A70384UL))) +#define bM4_PORT_POTRB_POT02 (*((volatile unsigned int*)(0x42A70388UL))) +#define bM4_PORT_POTRB_POT03 (*((volatile unsigned int*)(0x42A7038CUL))) +#define bM4_PORT_POTRB_POT04 (*((volatile unsigned int*)(0x42A70390UL))) +#define bM4_PORT_POTRB_POT05 (*((volatile unsigned int*)(0x42A70394UL))) +#define bM4_PORT_POTRB_POT06 (*((volatile unsigned int*)(0x42A70398UL))) +#define bM4_PORT_POTRB_POT07 (*((volatile unsigned int*)(0x42A7039CUL))) +#define bM4_PORT_POTRB_POT08 (*((volatile unsigned int*)(0x42A703A0UL))) +#define bM4_PORT_POTRB_POT09 (*((volatile unsigned int*)(0x42A703A4UL))) +#define bM4_PORT_POTRB_POT10 (*((volatile unsigned int*)(0x42A703A8UL))) +#define bM4_PORT_POTRB_POT11 (*((volatile unsigned int*)(0x42A703ACUL))) +#define bM4_PORT_POTRB_POT12 (*((volatile unsigned int*)(0x42A703B0UL))) +#define bM4_PORT_POTRB_POT13 (*((volatile unsigned int*)(0x42A703B4UL))) +#define bM4_PORT_POTRB_POT14 (*((volatile unsigned int*)(0x42A703B8UL))) +#define bM4_PORT_POTRB_POT15 (*((volatile unsigned int*)(0x42A703BCUL))) +#define bM4_PORT_PIDRC_PIN00 (*((volatile unsigned int*)(0x42A70400UL))) +#define bM4_PORT_PIDRC_PIN01 (*((volatile unsigned int*)(0x42A70404UL))) +#define bM4_PORT_PIDRC_PIN02 (*((volatile unsigned int*)(0x42A70408UL))) +#define bM4_PORT_PIDRC_PIN03 (*((volatile unsigned int*)(0x42A7040CUL))) +#define bM4_PORT_PIDRC_PIN04 (*((volatile unsigned int*)(0x42A70410UL))) +#define bM4_PORT_PIDRC_PIN05 (*((volatile unsigned int*)(0x42A70414UL))) +#define bM4_PORT_PIDRC_PIN06 (*((volatile unsigned int*)(0x42A70418UL))) +#define bM4_PORT_PIDRC_PIN07 (*((volatile unsigned int*)(0x42A7041CUL))) +#define bM4_PORT_PIDRC_PIN08 (*((volatile unsigned int*)(0x42A70420UL))) +#define bM4_PORT_PIDRC_PIN09 (*((volatile unsigned int*)(0x42A70424UL))) +#define bM4_PORT_PIDRC_PIN10 (*((volatile unsigned int*)(0x42A70428UL))) +#define bM4_PORT_PIDRC_PIN11 (*((volatile unsigned int*)(0x42A7042CUL))) +#define bM4_PORT_PIDRC_PIN12 (*((volatile unsigned int*)(0x42A70430UL))) +#define bM4_PORT_PIDRC_PIN13 (*((volatile unsigned int*)(0x42A70434UL))) +#define bM4_PORT_PIDRC_PIN14 (*((volatile unsigned int*)(0x42A70438UL))) +#define bM4_PORT_PIDRC_PIN15 (*((volatile unsigned int*)(0x42A7043CUL))) +#define bM4_PORT_PODRC_POUT00 (*((volatile unsigned int*)(0x42A70480UL))) +#define bM4_PORT_PODRC_POUT01 (*((volatile unsigned int*)(0x42A70484UL))) +#define bM4_PORT_PODRC_POUT02 (*((volatile unsigned int*)(0x42A70488UL))) +#define bM4_PORT_PODRC_POUT03 (*((volatile unsigned int*)(0x42A7048CUL))) +#define bM4_PORT_PODRC_POUT04 (*((volatile unsigned int*)(0x42A70490UL))) +#define bM4_PORT_PODRC_POUT05 (*((volatile unsigned int*)(0x42A70494UL))) +#define bM4_PORT_PODRC_POUT06 (*((volatile unsigned int*)(0x42A70498UL))) +#define bM4_PORT_PODRC_POUT07 (*((volatile unsigned int*)(0x42A7049CUL))) +#define bM4_PORT_PODRC_POUT08 (*((volatile unsigned int*)(0x42A704A0UL))) +#define bM4_PORT_PODRC_POUT09 (*((volatile unsigned int*)(0x42A704A4UL))) +#define bM4_PORT_PODRC_POUT10 (*((volatile unsigned int*)(0x42A704A8UL))) +#define bM4_PORT_PODRC_POUT11 (*((volatile unsigned int*)(0x42A704ACUL))) +#define bM4_PORT_PODRC_POUT12 (*((volatile unsigned int*)(0x42A704B0UL))) +#define bM4_PORT_PODRC_POUT13 (*((volatile unsigned int*)(0x42A704B4UL))) +#define bM4_PORT_PODRC_POUT14 (*((volatile unsigned int*)(0x42A704B8UL))) +#define bM4_PORT_PODRC_POUT15 (*((volatile unsigned int*)(0x42A704BCUL))) +#define bM4_PORT_POERC_POUTE00 (*((volatile unsigned int*)(0x42A704C0UL))) +#define bM4_PORT_POERC_POUTE01 (*((volatile unsigned int*)(0x42A704C4UL))) +#define bM4_PORT_POERC_POUTE02 (*((volatile unsigned int*)(0x42A704C8UL))) +#define bM4_PORT_POERC_POUTE03 (*((volatile unsigned int*)(0x42A704CCUL))) +#define bM4_PORT_POERC_POUTE04 (*((volatile unsigned int*)(0x42A704D0UL))) +#define bM4_PORT_POERC_POUTE05 (*((volatile unsigned int*)(0x42A704D4UL))) +#define bM4_PORT_POERC_POUTE06 (*((volatile unsigned int*)(0x42A704D8UL))) +#define bM4_PORT_POERC_POUTE07 (*((volatile unsigned int*)(0x42A704DCUL))) +#define bM4_PORT_POERC_POUTE08 (*((volatile unsigned int*)(0x42A704E0UL))) +#define bM4_PORT_POERC_POUTE09 (*((volatile unsigned int*)(0x42A704E4UL))) +#define bM4_PORT_POERC_POUTE10 (*((volatile unsigned int*)(0x42A704E8UL))) +#define bM4_PORT_POERC_POUTE11 (*((volatile unsigned int*)(0x42A704ECUL))) +#define bM4_PORT_POERC_POUTE12 (*((volatile unsigned int*)(0x42A704F0UL))) +#define bM4_PORT_POERC_POUTE13 (*((volatile unsigned int*)(0x42A704F4UL))) +#define bM4_PORT_POERC_POUTE14 (*((volatile unsigned int*)(0x42A704F8UL))) +#define bM4_PORT_POERC_POUTE15 (*((volatile unsigned int*)(0x42A704FCUL))) +#define bM4_PORT_POSRC_POS00 (*((volatile unsigned int*)(0x42A70500UL))) +#define bM4_PORT_POSRC_POS01 (*((volatile unsigned int*)(0x42A70504UL))) +#define bM4_PORT_POSRC_POS02 (*((volatile unsigned int*)(0x42A70508UL))) +#define bM4_PORT_POSRC_POS03 (*((volatile unsigned int*)(0x42A7050CUL))) +#define bM4_PORT_POSRC_POS04 (*((volatile unsigned int*)(0x42A70510UL))) +#define bM4_PORT_POSRC_POS05 (*((volatile unsigned int*)(0x42A70514UL))) +#define bM4_PORT_POSRC_POS06 (*((volatile unsigned int*)(0x42A70518UL))) +#define bM4_PORT_POSRC_POS07 (*((volatile unsigned int*)(0x42A7051CUL))) +#define bM4_PORT_POSRC_POS08 (*((volatile unsigned int*)(0x42A70520UL))) +#define bM4_PORT_POSRC_POS09 (*((volatile unsigned int*)(0x42A70524UL))) +#define bM4_PORT_POSRC_POS10 (*((volatile unsigned int*)(0x42A70528UL))) +#define bM4_PORT_POSRC_POS11 (*((volatile unsigned int*)(0x42A7052CUL))) +#define bM4_PORT_POSRC_POS12 (*((volatile unsigned int*)(0x42A70530UL))) +#define bM4_PORT_POSRC_POS13 (*((volatile unsigned int*)(0x42A70534UL))) +#define bM4_PORT_POSRC_POS14 (*((volatile unsigned int*)(0x42A70538UL))) +#define bM4_PORT_POSRC_POS15 (*((volatile unsigned int*)(0x42A7053CUL))) +#define bM4_PORT_PORRC_POR00 (*((volatile unsigned int*)(0x42A70540UL))) +#define bM4_PORT_PORRC_POR01 (*((volatile unsigned int*)(0x42A70544UL))) +#define bM4_PORT_PORRC_POR02 (*((volatile unsigned int*)(0x42A70548UL))) +#define bM4_PORT_PORRC_POR03 (*((volatile unsigned int*)(0x42A7054CUL))) +#define bM4_PORT_PORRC_POR04 (*((volatile unsigned int*)(0x42A70550UL))) +#define bM4_PORT_PORRC_POR05 (*((volatile unsigned int*)(0x42A70554UL))) +#define bM4_PORT_PORRC_POR06 (*((volatile unsigned int*)(0x42A70558UL))) +#define bM4_PORT_PORRC_POR07 (*((volatile unsigned int*)(0x42A7055CUL))) +#define bM4_PORT_PORRC_POR08 (*((volatile unsigned int*)(0x42A70560UL))) +#define bM4_PORT_PORRC_POR09 (*((volatile unsigned int*)(0x42A70564UL))) +#define bM4_PORT_PORRC_POR10 (*((volatile unsigned int*)(0x42A70568UL))) +#define bM4_PORT_PORRC_POR11 (*((volatile unsigned int*)(0x42A7056CUL))) +#define bM4_PORT_PORRC_POR12 (*((volatile unsigned int*)(0x42A70570UL))) +#define bM4_PORT_PORRC_POR13 (*((volatile unsigned int*)(0x42A70574UL))) +#define bM4_PORT_PORRC_POR14 (*((volatile unsigned int*)(0x42A70578UL))) +#define bM4_PORT_PORRC_POR15 (*((volatile unsigned int*)(0x42A7057CUL))) +#define bM4_PORT_POTRC_POT00 (*((volatile unsigned int*)(0x42A70580UL))) +#define bM4_PORT_POTRC_POT01 (*((volatile unsigned int*)(0x42A70584UL))) +#define bM4_PORT_POTRC_POT02 (*((volatile unsigned int*)(0x42A70588UL))) +#define bM4_PORT_POTRC_POT03 (*((volatile unsigned int*)(0x42A7058CUL))) +#define bM4_PORT_POTRC_POT04 (*((volatile unsigned int*)(0x42A70590UL))) +#define bM4_PORT_POTRC_POT05 (*((volatile unsigned int*)(0x42A70594UL))) +#define bM4_PORT_POTRC_POT06 (*((volatile unsigned int*)(0x42A70598UL))) +#define bM4_PORT_POTRC_POT07 (*((volatile unsigned int*)(0x42A7059CUL))) +#define bM4_PORT_POTRC_POT08 (*((volatile unsigned int*)(0x42A705A0UL))) +#define bM4_PORT_POTRC_POT09 (*((volatile unsigned int*)(0x42A705A4UL))) +#define bM4_PORT_POTRC_POT10 (*((volatile unsigned int*)(0x42A705A8UL))) +#define bM4_PORT_POTRC_POT11 (*((volatile unsigned int*)(0x42A705ACUL))) +#define bM4_PORT_POTRC_POT12 (*((volatile unsigned int*)(0x42A705B0UL))) +#define bM4_PORT_POTRC_POT13 (*((volatile unsigned int*)(0x42A705B4UL))) +#define bM4_PORT_POTRC_POT14 (*((volatile unsigned int*)(0x42A705B8UL))) +#define bM4_PORT_POTRC_POT15 (*((volatile unsigned int*)(0x42A705BCUL))) +#define bM4_PORT_PIDRD_PIN00 (*((volatile unsigned int*)(0x42A70600UL))) +#define bM4_PORT_PIDRD_PIN01 (*((volatile unsigned int*)(0x42A70604UL))) +#define bM4_PORT_PIDRD_PIN02 (*((volatile unsigned int*)(0x42A70608UL))) +#define bM4_PORT_PIDRD_PIN03 (*((volatile unsigned int*)(0x42A7060CUL))) +#define bM4_PORT_PIDRD_PIN04 (*((volatile unsigned int*)(0x42A70610UL))) +#define bM4_PORT_PIDRD_PIN05 (*((volatile unsigned int*)(0x42A70614UL))) +#define bM4_PORT_PIDRD_PIN06 (*((volatile unsigned int*)(0x42A70618UL))) +#define bM4_PORT_PIDRD_PIN07 (*((volatile unsigned int*)(0x42A7061CUL))) +#define bM4_PORT_PIDRD_PIN08 (*((volatile unsigned int*)(0x42A70620UL))) +#define bM4_PORT_PIDRD_PIN09 (*((volatile unsigned int*)(0x42A70624UL))) +#define bM4_PORT_PIDRD_PIN10 (*((volatile unsigned int*)(0x42A70628UL))) +#define bM4_PORT_PIDRD_PIN11 (*((volatile unsigned int*)(0x42A7062CUL))) +#define bM4_PORT_PIDRD_PIN12 (*((volatile unsigned int*)(0x42A70630UL))) +#define bM4_PORT_PIDRD_PIN13 (*((volatile unsigned int*)(0x42A70634UL))) +#define bM4_PORT_PIDRD_PIN14 (*((volatile unsigned int*)(0x42A70638UL))) +#define bM4_PORT_PIDRD_PIN15 (*((volatile unsigned int*)(0x42A7063CUL))) +#define bM4_PORT_PODRD_POUT00 (*((volatile unsigned int*)(0x42A70680UL))) +#define bM4_PORT_PODRD_POUT01 (*((volatile unsigned int*)(0x42A70684UL))) +#define bM4_PORT_PODRD_POUT02 (*((volatile unsigned int*)(0x42A70688UL))) +#define bM4_PORT_PODRD_POUT03 (*((volatile unsigned int*)(0x42A7068CUL))) +#define bM4_PORT_PODRD_POUT04 (*((volatile unsigned int*)(0x42A70690UL))) +#define bM4_PORT_PODRD_POUT05 (*((volatile unsigned int*)(0x42A70694UL))) +#define bM4_PORT_PODRD_POUT06 (*((volatile unsigned int*)(0x42A70698UL))) +#define bM4_PORT_PODRD_POUT07 (*((volatile unsigned int*)(0x42A7069CUL))) +#define bM4_PORT_PODRD_POUT08 (*((volatile unsigned int*)(0x42A706A0UL))) +#define bM4_PORT_PODRD_POUT09 (*((volatile unsigned int*)(0x42A706A4UL))) +#define bM4_PORT_PODRD_POUT10 (*((volatile unsigned int*)(0x42A706A8UL))) +#define bM4_PORT_PODRD_POUT11 (*((volatile unsigned int*)(0x42A706ACUL))) +#define bM4_PORT_PODRD_POUT12 (*((volatile unsigned int*)(0x42A706B0UL))) +#define bM4_PORT_PODRD_POUT13 (*((volatile unsigned int*)(0x42A706B4UL))) +#define bM4_PORT_PODRD_POUT14 (*((volatile unsigned int*)(0x42A706B8UL))) +#define bM4_PORT_PODRD_POUT15 (*((volatile unsigned int*)(0x42A706BCUL))) +#define bM4_PORT_POERD_POUTE00 (*((volatile unsigned int*)(0x42A706C0UL))) +#define bM4_PORT_POERD_POUTE01 (*((volatile unsigned int*)(0x42A706C4UL))) +#define bM4_PORT_POERD_POUTE02 (*((volatile unsigned int*)(0x42A706C8UL))) +#define bM4_PORT_POERD_POUTE03 (*((volatile unsigned int*)(0x42A706CCUL))) +#define bM4_PORT_POERD_POUTE04 (*((volatile unsigned int*)(0x42A706D0UL))) +#define bM4_PORT_POERD_POUTE05 (*((volatile unsigned int*)(0x42A706D4UL))) +#define bM4_PORT_POERD_POUTE06 (*((volatile unsigned int*)(0x42A706D8UL))) +#define bM4_PORT_POERD_POUTE07 (*((volatile unsigned int*)(0x42A706DCUL))) +#define bM4_PORT_POERD_POUTE08 (*((volatile unsigned int*)(0x42A706E0UL))) +#define bM4_PORT_POERD_POUTE09 (*((volatile unsigned int*)(0x42A706E4UL))) +#define bM4_PORT_POERD_POUTE10 (*((volatile unsigned int*)(0x42A706E8UL))) +#define bM4_PORT_POERD_POUTE11 (*((volatile unsigned int*)(0x42A706ECUL))) +#define bM4_PORT_POERD_POUTE12 (*((volatile unsigned int*)(0x42A706F0UL))) +#define bM4_PORT_POERD_POUTE13 (*((volatile unsigned int*)(0x42A706F4UL))) +#define bM4_PORT_POERD_POUTE14 (*((volatile unsigned int*)(0x42A706F8UL))) +#define bM4_PORT_POERD_POUTE15 (*((volatile unsigned int*)(0x42A706FCUL))) +#define bM4_PORT_POSRD_POS00 (*((volatile unsigned int*)(0x42A70700UL))) +#define bM4_PORT_POSRD_POS01 (*((volatile unsigned int*)(0x42A70704UL))) +#define bM4_PORT_POSRD_POS02 (*((volatile unsigned int*)(0x42A70708UL))) +#define bM4_PORT_POSRD_POS03 (*((volatile unsigned int*)(0x42A7070CUL))) +#define bM4_PORT_POSRD_POS04 (*((volatile unsigned int*)(0x42A70710UL))) +#define bM4_PORT_POSRD_POS05 (*((volatile unsigned int*)(0x42A70714UL))) +#define bM4_PORT_POSRD_POS06 (*((volatile unsigned int*)(0x42A70718UL))) +#define bM4_PORT_POSRD_POS07 (*((volatile unsigned int*)(0x42A7071CUL))) +#define bM4_PORT_POSRD_POS08 (*((volatile unsigned int*)(0x42A70720UL))) +#define bM4_PORT_POSRD_POS09 (*((volatile unsigned int*)(0x42A70724UL))) +#define bM4_PORT_POSRD_POS10 (*((volatile unsigned int*)(0x42A70728UL))) +#define bM4_PORT_POSRD_POS11 (*((volatile unsigned int*)(0x42A7072CUL))) +#define bM4_PORT_POSRD_POS12 (*((volatile unsigned int*)(0x42A70730UL))) +#define bM4_PORT_POSRD_POS13 (*((volatile unsigned int*)(0x42A70734UL))) +#define bM4_PORT_POSRD_POS14 (*((volatile unsigned int*)(0x42A70738UL))) +#define bM4_PORT_POSRD_POS15 (*((volatile unsigned int*)(0x42A7073CUL))) +#define bM4_PORT_PORRD_POR00 (*((volatile unsigned int*)(0x42A70740UL))) +#define bM4_PORT_PORRD_POR01 (*((volatile unsigned int*)(0x42A70744UL))) +#define bM4_PORT_PORRD_POR02 (*((volatile unsigned int*)(0x42A70748UL))) +#define bM4_PORT_PORRD_POR03 (*((volatile unsigned int*)(0x42A7074CUL))) +#define bM4_PORT_PORRD_POR04 (*((volatile unsigned int*)(0x42A70750UL))) +#define bM4_PORT_PORRD_POR05 (*((volatile unsigned int*)(0x42A70754UL))) +#define bM4_PORT_PORRD_POR06 (*((volatile unsigned int*)(0x42A70758UL))) +#define bM4_PORT_PORRD_POR07 (*((volatile unsigned int*)(0x42A7075CUL))) +#define bM4_PORT_PORRD_POR08 (*((volatile unsigned int*)(0x42A70760UL))) +#define bM4_PORT_PORRD_POR09 (*((volatile unsigned int*)(0x42A70764UL))) +#define bM4_PORT_PORRD_POR10 (*((volatile unsigned int*)(0x42A70768UL))) +#define bM4_PORT_PORRD_POR11 (*((volatile unsigned int*)(0x42A7076CUL))) +#define bM4_PORT_PORRD_POR12 (*((volatile unsigned int*)(0x42A70770UL))) +#define bM4_PORT_PORRD_POR13 (*((volatile unsigned int*)(0x42A70774UL))) +#define bM4_PORT_PORRD_POR14 (*((volatile unsigned int*)(0x42A70778UL))) +#define bM4_PORT_PORRD_POR15 (*((volatile unsigned int*)(0x42A7077CUL))) +#define bM4_PORT_POTRD_POT00 (*((volatile unsigned int*)(0x42A70780UL))) +#define bM4_PORT_POTRD_POT01 (*((volatile unsigned int*)(0x42A70784UL))) +#define bM4_PORT_POTRD_POT02 (*((volatile unsigned int*)(0x42A70788UL))) +#define bM4_PORT_POTRD_POT03 (*((volatile unsigned int*)(0x42A7078CUL))) +#define bM4_PORT_POTRD_POT04 (*((volatile unsigned int*)(0x42A70790UL))) +#define bM4_PORT_POTRD_POT05 (*((volatile unsigned int*)(0x42A70794UL))) +#define bM4_PORT_POTRD_POT06 (*((volatile unsigned int*)(0x42A70798UL))) +#define bM4_PORT_POTRD_POT07 (*((volatile unsigned int*)(0x42A7079CUL))) +#define bM4_PORT_POTRD_POT08 (*((volatile unsigned int*)(0x42A707A0UL))) +#define bM4_PORT_POTRD_POT09 (*((volatile unsigned int*)(0x42A707A4UL))) +#define bM4_PORT_POTRD_POT10 (*((volatile unsigned int*)(0x42A707A8UL))) +#define bM4_PORT_POTRD_POT11 (*((volatile unsigned int*)(0x42A707ACUL))) +#define bM4_PORT_POTRD_POT12 (*((volatile unsigned int*)(0x42A707B0UL))) +#define bM4_PORT_POTRD_POT13 (*((volatile unsigned int*)(0x42A707B4UL))) +#define bM4_PORT_POTRD_POT14 (*((volatile unsigned int*)(0x42A707B8UL))) +#define bM4_PORT_POTRD_POT15 (*((volatile unsigned int*)(0x42A707BCUL))) +#define bM4_PORT_PIDRE_PIN00 (*((volatile unsigned int*)(0x42A70800UL))) +#define bM4_PORT_PIDRE_PIN01 (*((volatile unsigned int*)(0x42A70804UL))) +#define bM4_PORT_PIDRE_PIN02 (*((volatile unsigned int*)(0x42A70808UL))) +#define bM4_PORT_PIDRE_PIN03 (*((volatile unsigned int*)(0x42A7080CUL))) +#define bM4_PORT_PIDRE_PIN04 (*((volatile unsigned int*)(0x42A70810UL))) +#define bM4_PORT_PIDRE_PIN05 (*((volatile unsigned int*)(0x42A70814UL))) +#define bM4_PORT_PIDRE_PIN06 (*((volatile unsigned int*)(0x42A70818UL))) +#define bM4_PORT_PIDRE_PIN07 (*((volatile unsigned int*)(0x42A7081CUL))) +#define bM4_PORT_PIDRE_PIN08 (*((volatile unsigned int*)(0x42A70820UL))) +#define bM4_PORT_PIDRE_PIN09 (*((volatile unsigned int*)(0x42A70824UL))) +#define bM4_PORT_PIDRE_PIN10 (*((volatile unsigned int*)(0x42A70828UL))) +#define bM4_PORT_PIDRE_PIN11 (*((volatile unsigned int*)(0x42A7082CUL))) +#define bM4_PORT_PIDRE_PIN12 (*((volatile unsigned int*)(0x42A70830UL))) +#define bM4_PORT_PIDRE_PIN13 (*((volatile unsigned int*)(0x42A70834UL))) +#define bM4_PORT_PIDRE_PIN14 (*((volatile unsigned int*)(0x42A70838UL))) +#define bM4_PORT_PIDRE_PIN15 (*((volatile unsigned int*)(0x42A7083CUL))) +#define bM4_PORT_PODRE_POUT00 (*((volatile unsigned int*)(0x42A70880UL))) +#define bM4_PORT_PODRE_POUT01 (*((volatile unsigned int*)(0x42A70884UL))) +#define bM4_PORT_PODRE_POUT02 (*((volatile unsigned int*)(0x42A70888UL))) +#define bM4_PORT_PODRE_POUT03 (*((volatile unsigned int*)(0x42A7088CUL))) +#define bM4_PORT_PODRE_POUT04 (*((volatile unsigned int*)(0x42A70890UL))) +#define bM4_PORT_PODRE_POUT05 (*((volatile unsigned int*)(0x42A70894UL))) +#define bM4_PORT_PODRE_POUT06 (*((volatile unsigned int*)(0x42A70898UL))) +#define bM4_PORT_PODRE_POUT07 (*((volatile unsigned int*)(0x42A7089CUL))) +#define bM4_PORT_PODRE_POUT08 (*((volatile unsigned int*)(0x42A708A0UL))) +#define bM4_PORT_PODRE_POUT09 (*((volatile unsigned int*)(0x42A708A4UL))) +#define bM4_PORT_PODRE_POUT10 (*((volatile unsigned int*)(0x42A708A8UL))) +#define bM4_PORT_PODRE_POUT11 (*((volatile unsigned int*)(0x42A708ACUL))) +#define bM4_PORT_PODRE_POUT12 (*((volatile unsigned int*)(0x42A708B0UL))) +#define bM4_PORT_PODRE_POUT13 (*((volatile unsigned int*)(0x42A708B4UL))) +#define bM4_PORT_PODRE_POUT14 (*((volatile unsigned int*)(0x42A708B8UL))) +#define bM4_PORT_PODRE_POUT15 (*((volatile unsigned int*)(0x42A708BCUL))) +#define bM4_PORT_POERE_POUTE00 (*((volatile unsigned int*)(0x42A708C0UL))) +#define bM4_PORT_POERE_POUTE01 (*((volatile unsigned int*)(0x42A708C4UL))) +#define bM4_PORT_POERE_POUTE02 (*((volatile unsigned int*)(0x42A708C8UL))) +#define bM4_PORT_POERE_POUTE03 (*((volatile unsigned int*)(0x42A708CCUL))) +#define bM4_PORT_POERE_POUTE04 (*((volatile unsigned int*)(0x42A708D0UL))) +#define bM4_PORT_POERE_POUTE05 (*((volatile unsigned int*)(0x42A708D4UL))) +#define bM4_PORT_POERE_POUTE06 (*((volatile unsigned int*)(0x42A708D8UL))) +#define bM4_PORT_POERE_POUTE07 (*((volatile unsigned int*)(0x42A708DCUL))) +#define bM4_PORT_POERE_POUTE08 (*((volatile unsigned int*)(0x42A708E0UL))) +#define bM4_PORT_POERE_POUTE09 (*((volatile unsigned int*)(0x42A708E4UL))) +#define bM4_PORT_POERE_POUTE10 (*((volatile unsigned int*)(0x42A708E8UL))) +#define bM4_PORT_POERE_POUTE11 (*((volatile unsigned int*)(0x42A708ECUL))) +#define bM4_PORT_POERE_POUTE12 (*((volatile unsigned int*)(0x42A708F0UL))) +#define bM4_PORT_POERE_POUTE13 (*((volatile unsigned int*)(0x42A708F4UL))) +#define bM4_PORT_POERE_POUTE14 (*((volatile unsigned int*)(0x42A708F8UL))) +#define bM4_PORT_POERE_POUTE15 (*((volatile unsigned int*)(0x42A708FCUL))) +#define bM4_PORT_POSRE_POS00 (*((volatile unsigned int*)(0x42A70900UL))) +#define bM4_PORT_POSRE_POS01 (*((volatile unsigned int*)(0x42A70904UL))) +#define bM4_PORT_POSRE_POS02 (*((volatile unsigned int*)(0x42A70908UL))) +#define bM4_PORT_POSRE_POS03 (*((volatile unsigned int*)(0x42A7090CUL))) +#define bM4_PORT_POSRE_POS04 (*((volatile unsigned int*)(0x42A70910UL))) +#define bM4_PORT_POSRE_POS05 (*((volatile unsigned int*)(0x42A70914UL))) +#define bM4_PORT_POSRE_POS06 (*((volatile unsigned int*)(0x42A70918UL))) +#define bM4_PORT_POSRE_POS07 (*((volatile unsigned int*)(0x42A7091CUL))) +#define bM4_PORT_POSRE_POS08 (*((volatile unsigned int*)(0x42A70920UL))) +#define bM4_PORT_POSRE_POS09 (*((volatile unsigned int*)(0x42A70924UL))) +#define bM4_PORT_POSRE_POS10 (*((volatile unsigned int*)(0x42A70928UL))) +#define bM4_PORT_POSRE_POS11 (*((volatile unsigned int*)(0x42A7092CUL))) +#define bM4_PORT_POSRE_POS12 (*((volatile unsigned int*)(0x42A70930UL))) +#define bM4_PORT_POSRE_POS13 (*((volatile unsigned int*)(0x42A70934UL))) +#define bM4_PORT_POSRE_POS14 (*((volatile unsigned int*)(0x42A70938UL))) +#define bM4_PORT_POSRE_POS15 (*((volatile unsigned int*)(0x42A7093CUL))) +#define bM4_PORT_PORRE_POR00 (*((volatile unsigned int*)(0x42A70940UL))) +#define bM4_PORT_PORRE_POR01 (*((volatile unsigned int*)(0x42A70944UL))) +#define bM4_PORT_PORRE_POR02 (*((volatile unsigned int*)(0x42A70948UL))) +#define bM4_PORT_PORRE_POR03 (*((volatile unsigned int*)(0x42A7094CUL))) +#define bM4_PORT_PORRE_POR04 (*((volatile unsigned int*)(0x42A70950UL))) +#define bM4_PORT_PORRE_POR05 (*((volatile unsigned int*)(0x42A70954UL))) +#define bM4_PORT_PORRE_POR06 (*((volatile unsigned int*)(0x42A70958UL))) +#define bM4_PORT_PORRE_POR07 (*((volatile unsigned int*)(0x42A7095CUL))) +#define bM4_PORT_PORRE_POR08 (*((volatile unsigned int*)(0x42A70960UL))) +#define bM4_PORT_PORRE_POR09 (*((volatile unsigned int*)(0x42A70964UL))) +#define bM4_PORT_PORRE_POR10 (*((volatile unsigned int*)(0x42A70968UL))) +#define bM4_PORT_PORRE_POR11 (*((volatile unsigned int*)(0x42A7096CUL))) +#define bM4_PORT_PORRE_POR12 (*((volatile unsigned int*)(0x42A70970UL))) +#define bM4_PORT_PORRE_POR13 (*((volatile unsigned int*)(0x42A70974UL))) +#define bM4_PORT_PORRE_POR14 (*((volatile unsigned int*)(0x42A70978UL))) +#define bM4_PORT_PORRE_POR15 (*((volatile unsigned int*)(0x42A7097CUL))) +#define bM4_PORT_POTRE_POT00 (*((volatile unsigned int*)(0x42A70980UL))) +#define bM4_PORT_POTRE_POT01 (*((volatile unsigned int*)(0x42A70984UL))) +#define bM4_PORT_POTRE_POT02 (*((volatile unsigned int*)(0x42A70988UL))) +#define bM4_PORT_POTRE_POT03 (*((volatile unsigned int*)(0x42A7098CUL))) +#define bM4_PORT_POTRE_POT04 (*((volatile unsigned int*)(0x42A70990UL))) +#define bM4_PORT_POTRE_POT05 (*((volatile unsigned int*)(0x42A70994UL))) +#define bM4_PORT_POTRE_POT06 (*((volatile unsigned int*)(0x42A70998UL))) +#define bM4_PORT_POTRE_POT07 (*((volatile unsigned int*)(0x42A7099CUL))) +#define bM4_PORT_POTRE_POT08 (*((volatile unsigned int*)(0x42A709A0UL))) +#define bM4_PORT_POTRE_POT09 (*((volatile unsigned int*)(0x42A709A4UL))) +#define bM4_PORT_POTRE_POT10 (*((volatile unsigned int*)(0x42A709A8UL))) +#define bM4_PORT_POTRE_POT11 (*((volatile unsigned int*)(0x42A709ACUL))) +#define bM4_PORT_POTRE_POT12 (*((volatile unsigned int*)(0x42A709B0UL))) +#define bM4_PORT_POTRE_POT13 (*((volatile unsigned int*)(0x42A709B4UL))) +#define bM4_PORT_POTRE_POT14 (*((volatile unsigned int*)(0x42A709B8UL))) +#define bM4_PORT_POTRE_POT15 (*((volatile unsigned int*)(0x42A709BCUL))) +#define bM4_PORT_PIDRH_PIN00 (*((volatile unsigned int*)(0x42A70A00UL))) +#define bM4_PORT_PIDRH_PIN01 (*((volatile unsigned int*)(0x42A70A04UL))) +#define bM4_PORT_PIDRH_PIN02 (*((volatile unsigned int*)(0x42A70A08UL))) +#define bM4_PORT_PODRH_POUT00 (*((volatile unsigned int*)(0x42A70A80UL))) +#define bM4_PORT_PODRH_POUT01 (*((volatile unsigned int*)(0x42A70A84UL))) +#define bM4_PORT_PODRH_POUT02 (*((volatile unsigned int*)(0x42A70A88UL))) +#define bM4_PORT_POERH_POUTE00 (*((volatile unsigned int*)(0x42A70AC0UL))) +#define bM4_PORT_POERH_POUTE01 (*((volatile unsigned int*)(0x42A70AC4UL))) +#define bM4_PORT_POERH_POUTE02 (*((volatile unsigned int*)(0x42A70AC8UL))) +#define bM4_PORT_POSRH_POS00 (*((volatile unsigned int*)(0x42A70B00UL))) +#define bM4_PORT_POSRH_POS01 (*((volatile unsigned int*)(0x42A70B04UL))) +#define bM4_PORT_POSRH_POS02 (*((volatile unsigned int*)(0x42A70B08UL))) +#define bM4_PORT_PORRH_POR00 (*((volatile unsigned int*)(0x42A70B40UL))) +#define bM4_PORT_PORRH_POR01 (*((volatile unsigned int*)(0x42A70B44UL))) +#define bM4_PORT_PORRH_POR02 (*((volatile unsigned int*)(0x42A70B48UL))) +#define bM4_PORT_POTRH_POT00 (*((volatile unsigned int*)(0x42A70B80UL))) +#define bM4_PORT_POTRH_POT01 (*((volatile unsigned int*)(0x42A70B84UL))) +#define bM4_PORT_POTRH_POT02 (*((volatile unsigned int*)(0x42A70B88UL))) +#define bM4_PORT_PSPCR_SPFE0 (*((volatile unsigned int*)(0x42A77E80UL))) +#define bM4_PORT_PSPCR_SPFE1 (*((volatile unsigned int*)(0x42A77E84UL))) +#define bM4_PORT_PSPCR_SPFE2 (*((volatile unsigned int*)(0x42A77E88UL))) +#define bM4_PORT_PSPCR_SPFE3 (*((volatile unsigned int*)(0x42A77E8CUL))) +#define bM4_PORT_PSPCR_SPFE4 (*((volatile unsigned int*)(0x42A77E90UL))) +#define bM4_PORT_PCCR_BFSEL0 (*((volatile unsigned int*)(0x42A77F00UL))) +#define bM4_PORT_PCCR_BFSEL1 (*((volatile unsigned int*)(0x42A77F04UL))) +#define bM4_PORT_PCCR_BFSEL2 (*((volatile unsigned int*)(0x42A77F08UL))) +#define bM4_PORT_PCCR_BFSEL3 (*((volatile unsigned int*)(0x42A77F0CUL))) +#define bM4_PORT_PCCR_RDWT0 (*((volatile unsigned int*)(0x42A77F38UL))) +#define bM4_PORT_PCCR_RDWT1 (*((volatile unsigned int*)(0x42A77F3CUL))) +#define bM4_PORT_PINAER_PINAE0 (*((volatile unsigned int*)(0x42A77F40UL))) +#define bM4_PORT_PINAER_PINAE1 (*((volatile unsigned int*)(0x42A77F44UL))) +#define bM4_PORT_PINAER_PINAE2 (*((volatile unsigned int*)(0x42A77F48UL))) +#define bM4_PORT_PINAER_PINAE3 (*((volatile unsigned int*)(0x42A77F4CUL))) +#define bM4_PORT_PINAER_PINAE4 (*((volatile unsigned int*)(0x42A77F50UL))) +#define bM4_PORT_PINAER_PINAE5 (*((volatile unsigned int*)(0x42A77F54UL))) +#define bM4_PORT_PWPR_WE (*((volatile unsigned int*)(0x42A77F80UL))) +#define bM4_PORT_PWPR_WP0 (*((volatile unsigned int*)(0x42A77FA0UL))) +#define bM4_PORT_PWPR_WP1 (*((volatile unsigned int*)(0x42A77FA4UL))) +#define bM4_PORT_PWPR_WP2 (*((volatile unsigned int*)(0x42A77FA8UL))) +#define bM4_PORT_PWPR_WP3 (*((volatile unsigned int*)(0x42A77FACUL))) +#define bM4_PORT_PWPR_WP4 (*((volatile unsigned int*)(0x42A77FB0UL))) +#define bM4_PORT_PWPR_WP5 (*((volatile unsigned int*)(0x42A77FB4UL))) +#define bM4_PORT_PWPR_WP6 (*((volatile unsigned int*)(0x42A77FB8UL))) +#define bM4_PORT_PWPR_WP7 (*((volatile unsigned int*)(0x42A77FBCUL))) +#define bM4_PORT_PCRA0_POUT (*((volatile unsigned int*)(0x42A78000UL))) +#define bM4_PORT_PCRA0_POUTE (*((volatile unsigned int*)(0x42A78004UL))) +#define bM4_PORT_PCRA0_NOD (*((volatile unsigned int*)(0x42A78008UL))) +#define bM4_PORT_PCRA0_DRV0 (*((volatile unsigned int*)(0x42A78010UL))) +#define bM4_PORT_PCRA0_DRV1 (*((volatile unsigned int*)(0x42A78014UL))) +#define bM4_PORT_PCRA0_PUU (*((volatile unsigned int*)(0x42A78018UL))) +#define bM4_PORT_PCRA0_PIN (*((volatile unsigned int*)(0x42A78020UL))) +#define bM4_PORT_PCRA0_INVE (*((volatile unsigned int*)(0x42A78024UL))) +#define bM4_PORT_PCRA0_INTE (*((volatile unsigned int*)(0x42A78030UL))) +#define bM4_PORT_PCRA0_LTE (*((volatile unsigned int*)(0x42A78038UL))) +#define bM4_PORT_PCRA0_DDIS (*((volatile unsigned int*)(0x42A7803CUL))) +#define bM4_PORT_PFSRA0_FSEL0 (*((volatile unsigned int*)(0x42A78040UL))) +#define bM4_PORT_PFSRA0_FSEL1 (*((volatile unsigned int*)(0x42A78044UL))) +#define bM4_PORT_PFSRA0_FSEL2 (*((volatile unsigned int*)(0x42A78048UL))) +#define bM4_PORT_PFSRA0_FSEL3 (*((volatile unsigned int*)(0x42A7804CUL))) +#define bM4_PORT_PFSRA0_FSEL4 (*((volatile unsigned int*)(0x42A78050UL))) +#define bM4_PORT_PFSRA0_FSEL5 (*((volatile unsigned int*)(0x42A78054UL))) +#define bM4_PORT_PFSRA0_BFE (*((volatile unsigned int*)(0x42A78060UL))) +#define bM4_PORT_PCRA1_POUT (*((volatile unsigned int*)(0x42A78080UL))) +#define bM4_PORT_PCRA1_POUTE (*((volatile unsigned int*)(0x42A78084UL))) +#define bM4_PORT_PCRA1_NOD (*((volatile unsigned int*)(0x42A78088UL))) +#define bM4_PORT_PCRA1_DRV0 (*((volatile unsigned int*)(0x42A78090UL))) +#define bM4_PORT_PCRA1_DRV1 (*((volatile unsigned int*)(0x42A78094UL))) +#define bM4_PORT_PCRA1_PUU (*((volatile unsigned int*)(0x42A78098UL))) +#define bM4_PORT_PCRA1_PIN (*((volatile unsigned int*)(0x42A780A0UL))) +#define bM4_PORT_PCRA1_INVE (*((volatile unsigned int*)(0x42A780A4UL))) +#define bM4_PORT_PCRA1_INTE (*((volatile unsigned int*)(0x42A780B0UL))) +#define bM4_PORT_PCRA1_LTE (*((volatile unsigned int*)(0x42A780B8UL))) +#define bM4_PORT_PCRA1_DDIS (*((volatile unsigned int*)(0x42A780BCUL))) +#define bM4_PORT_PFSRA1_FSEL0 (*((volatile unsigned int*)(0x42A780C0UL))) +#define bM4_PORT_PFSRA1_FSEL1 (*((volatile unsigned int*)(0x42A780C4UL))) +#define bM4_PORT_PFSRA1_FSEL2 (*((volatile unsigned int*)(0x42A780C8UL))) +#define bM4_PORT_PFSRA1_FSEL3 (*((volatile unsigned int*)(0x42A780CCUL))) +#define bM4_PORT_PFSRA1_FSEL4 (*((volatile unsigned int*)(0x42A780D0UL))) +#define bM4_PORT_PFSRA1_FSEL5 (*((volatile unsigned int*)(0x42A780D4UL))) +#define bM4_PORT_PFSRA1_BFE (*((volatile unsigned int*)(0x42A780E0UL))) +#define bM4_PORT_PCRA2_POUT (*((volatile unsigned int*)(0x42A78100UL))) +#define bM4_PORT_PCRA2_POUTE (*((volatile unsigned int*)(0x42A78104UL))) +#define bM4_PORT_PCRA2_NOD (*((volatile unsigned int*)(0x42A78108UL))) +#define bM4_PORT_PCRA2_DRV0 (*((volatile unsigned int*)(0x42A78110UL))) +#define bM4_PORT_PCRA2_DRV1 (*((volatile unsigned int*)(0x42A78114UL))) +#define bM4_PORT_PCRA2_PUU (*((volatile unsigned int*)(0x42A78118UL))) +#define bM4_PORT_PCRA2_PIN (*((volatile unsigned int*)(0x42A78120UL))) +#define bM4_PORT_PCRA2_INVE (*((volatile unsigned int*)(0x42A78124UL))) +#define bM4_PORT_PCRA2_INTE (*((volatile unsigned int*)(0x42A78130UL))) +#define bM4_PORT_PCRA2_LTE (*((volatile unsigned int*)(0x42A78138UL))) +#define bM4_PORT_PCRA2_DDIS (*((volatile unsigned int*)(0x42A7813CUL))) +#define bM4_PORT_PFSRA2_FSEL0 (*((volatile unsigned int*)(0x42A78140UL))) +#define bM4_PORT_PFSRA2_FSEL1 (*((volatile unsigned int*)(0x42A78144UL))) +#define bM4_PORT_PFSRA2_FSEL2 (*((volatile unsigned int*)(0x42A78148UL))) +#define bM4_PORT_PFSRA2_FSEL3 (*((volatile unsigned int*)(0x42A7814CUL))) +#define bM4_PORT_PFSRA2_FSEL4 (*((volatile unsigned int*)(0x42A78150UL))) +#define bM4_PORT_PFSRA2_FSEL5 (*((volatile unsigned int*)(0x42A78154UL))) +#define bM4_PORT_PFSRA2_BFE (*((volatile unsigned int*)(0x42A78160UL))) +#define bM4_PORT_PCRA3_POUT (*((volatile unsigned int*)(0x42A78180UL))) +#define bM4_PORT_PCRA3_POUTE (*((volatile unsigned int*)(0x42A78184UL))) +#define bM4_PORT_PCRA3_NOD (*((volatile unsigned int*)(0x42A78188UL))) +#define bM4_PORT_PCRA3_DRV0 (*((volatile unsigned int*)(0x42A78190UL))) +#define bM4_PORT_PCRA3_DRV1 (*((volatile unsigned int*)(0x42A78194UL))) +#define bM4_PORT_PCRA3_PUU (*((volatile unsigned int*)(0x42A78198UL))) +#define bM4_PORT_PCRA3_PIN (*((volatile unsigned int*)(0x42A781A0UL))) +#define bM4_PORT_PCRA3_INVE (*((volatile unsigned int*)(0x42A781A4UL))) +#define bM4_PORT_PCRA3_INTE (*((volatile unsigned int*)(0x42A781B0UL))) +#define bM4_PORT_PCRA3_LTE (*((volatile unsigned int*)(0x42A781B8UL))) +#define bM4_PORT_PCRA3_DDIS (*((volatile unsigned int*)(0x42A781BCUL))) +#define bM4_PORT_PFSRA3_FSEL0 (*((volatile unsigned int*)(0x42A781C0UL))) +#define bM4_PORT_PFSRA3_FSEL1 (*((volatile unsigned int*)(0x42A781C4UL))) +#define bM4_PORT_PFSRA3_FSEL2 (*((volatile unsigned int*)(0x42A781C8UL))) +#define bM4_PORT_PFSRA3_FSEL3 (*((volatile unsigned int*)(0x42A781CCUL))) +#define bM4_PORT_PFSRA3_FSEL4 (*((volatile unsigned int*)(0x42A781D0UL))) +#define bM4_PORT_PFSRA3_FSEL5 (*((volatile unsigned int*)(0x42A781D4UL))) +#define bM4_PORT_PFSRA3_BFE (*((volatile unsigned int*)(0x42A781E0UL))) +#define bM4_PORT_PCRA4_POUT (*((volatile unsigned int*)(0x42A78200UL))) +#define bM4_PORT_PCRA4_POUTE (*((volatile unsigned int*)(0x42A78204UL))) +#define bM4_PORT_PCRA4_NOD (*((volatile unsigned int*)(0x42A78208UL))) +#define bM4_PORT_PCRA4_DRV0 (*((volatile unsigned int*)(0x42A78210UL))) +#define bM4_PORT_PCRA4_DRV1 (*((volatile unsigned int*)(0x42A78214UL))) +#define bM4_PORT_PCRA4_PUU (*((volatile unsigned int*)(0x42A78218UL))) +#define bM4_PORT_PCRA4_PIN (*((volatile unsigned int*)(0x42A78220UL))) +#define bM4_PORT_PCRA4_INVE (*((volatile unsigned int*)(0x42A78224UL))) +#define bM4_PORT_PCRA4_INTE (*((volatile unsigned int*)(0x42A78230UL))) +#define bM4_PORT_PCRA4_LTE (*((volatile unsigned int*)(0x42A78238UL))) +#define bM4_PORT_PCRA4_DDIS (*((volatile unsigned int*)(0x42A7823CUL))) +#define bM4_PORT_PFSRA4_FSEL0 (*((volatile unsigned int*)(0x42A78240UL))) +#define bM4_PORT_PFSRA4_FSEL1 (*((volatile unsigned int*)(0x42A78244UL))) +#define bM4_PORT_PFSRA4_FSEL2 (*((volatile unsigned int*)(0x42A78248UL))) +#define bM4_PORT_PFSRA4_FSEL3 (*((volatile unsigned int*)(0x42A7824CUL))) +#define bM4_PORT_PFSRA4_FSEL4 (*((volatile unsigned int*)(0x42A78250UL))) +#define bM4_PORT_PFSRA4_FSEL5 (*((volatile unsigned int*)(0x42A78254UL))) +#define bM4_PORT_PFSRA4_BFE (*((volatile unsigned int*)(0x42A78260UL))) +#define bM4_PORT_PCRA5_POUT (*((volatile unsigned int*)(0x42A78280UL))) +#define bM4_PORT_PCRA5_POUTE (*((volatile unsigned int*)(0x42A78284UL))) +#define bM4_PORT_PCRA5_NOD (*((volatile unsigned int*)(0x42A78288UL))) +#define bM4_PORT_PCRA5_DRV0 (*((volatile unsigned int*)(0x42A78290UL))) +#define bM4_PORT_PCRA5_DRV1 (*((volatile unsigned int*)(0x42A78294UL))) +#define bM4_PORT_PCRA5_PUU (*((volatile unsigned int*)(0x42A78298UL))) +#define bM4_PORT_PCRA5_PIN (*((volatile unsigned int*)(0x42A782A0UL))) +#define bM4_PORT_PCRA5_INVE (*((volatile unsigned int*)(0x42A782A4UL))) +#define bM4_PORT_PCRA5_INTE (*((volatile unsigned int*)(0x42A782B0UL))) +#define bM4_PORT_PCRA5_LTE (*((volatile unsigned int*)(0x42A782B8UL))) +#define bM4_PORT_PCRA5_DDIS (*((volatile unsigned int*)(0x42A782BCUL))) +#define bM4_PORT_PFSRA5_FSEL0 (*((volatile unsigned int*)(0x42A782C0UL))) +#define bM4_PORT_PFSRA5_FSEL1 (*((volatile unsigned int*)(0x42A782C4UL))) +#define bM4_PORT_PFSRA5_FSEL2 (*((volatile unsigned int*)(0x42A782C8UL))) +#define bM4_PORT_PFSRA5_FSEL3 (*((volatile unsigned int*)(0x42A782CCUL))) +#define bM4_PORT_PFSRA5_FSEL4 (*((volatile unsigned int*)(0x42A782D0UL))) +#define bM4_PORT_PFSRA5_FSEL5 (*((volatile unsigned int*)(0x42A782D4UL))) +#define bM4_PORT_PFSRA5_BFE (*((volatile unsigned int*)(0x42A782E0UL))) +#define bM4_PORT_PCRA6_POUT (*((volatile unsigned int*)(0x42A78300UL))) +#define bM4_PORT_PCRA6_POUTE (*((volatile unsigned int*)(0x42A78304UL))) +#define bM4_PORT_PCRA6_NOD (*((volatile unsigned int*)(0x42A78308UL))) +#define bM4_PORT_PCRA6_DRV0 (*((volatile unsigned int*)(0x42A78310UL))) +#define bM4_PORT_PCRA6_DRV1 (*((volatile unsigned int*)(0x42A78314UL))) +#define bM4_PORT_PCRA6_PUU (*((volatile unsigned int*)(0x42A78318UL))) +#define bM4_PORT_PCRA6_PIN (*((volatile unsigned int*)(0x42A78320UL))) +#define bM4_PORT_PCRA6_INVE (*((volatile unsigned int*)(0x42A78324UL))) +#define bM4_PORT_PCRA6_INTE (*((volatile unsigned int*)(0x42A78330UL))) +#define bM4_PORT_PCRA6_LTE (*((volatile unsigned int*)(0x42A78338UL))) +#define bM4_PORT_PCRA6_DDIS (*((volatile unsigned int*)(0x42A7833CUL))) +#define bM4_PORT_PFSRA6_FSEL0 (*((volatile unsigned int*)(0x42A78340UL))) +#define bM4_PORT_PFSRA6_FSEL1 (*((volatile unsigned int*)(0x42A78344UL))) +#define bM4_PORT_PFSRA6_FSEL2 (*((volatile unsigned int*)(0x42A78348UL))) +#define bM4_PORT_PFSRA6_FSEL3 (*((volatile unsigned int*)(0x42A7834CUL))) +#define bM4_PORT_PFSRA6_FSEL4 (*((volatile unsigned int*)(0x42A78350UL))) +#define bM4_PORT_PFSRA6_FSEL5 (*((volatile unsigned int*)(0x42A78354UL))) +#define bM4_PORT_PFSRA6_BFE (*((volatile unsigned int*)(0x42A78360UL))) +#define bM4_PORT_PCRA7_POUT (*((volatile unsigned int*)(0x42A78380UL))) +#define bM4_PORT_PCRA7_POUTE (*((volatile unsigned int*)(0x42A78384UL))) +#define bM4_PORT_PCRA7_NOD (*((volatile unsigned int*)(0x42A78388UL))) +#define bM4_PORT_PCRA7_DRV0 (*((volatile unsigned int*)(0x42A78390UL))) +#define bM4_PORT_PCRA7_DRV1 (*((volatile unsigned int*)(0x42A78394UL))) +#define bM4_PORT_PCRA7_PUU (*((volatile unsigned int*)(0x42A78398UL))) +#define bM4_PORT_PCRA7_PIN (*((volatile unsigned int*)(0x42A783A0UL))) +#define bM4_PORT_PCRA7_INVE (*((volatile unsigned int*)(0x42A783A4UL))) +#define bM4_PORT_PCRA7_INTE (*((volatile unsigned int*)(0x42A783B0UL))) +#define bM4_PORT_PCRA7_LTE (*((volatile unsigned int*)(0x42A783B8UL))) +#define bM4_PORT_PCRA7_DDIS (*((volatile unsigned int*)(0x42A783BCUL))) +#define bM4_PORT_PFSRA7_FSEL0 (*((volatile unsigned int*)(0x42A783C0UL))) +#define bM4_PORT_PFSRA7_FSEL1 (*((volatile unsigned int*)(0x42A783C4UL))) +#define bM4_PORT_PFSRA7_FSEL2 (*((volatile unsigned int*)(0x42A783C8UL))) +#define bM4_PORT_PFSRA7_FSEL3 (*((volatile unsigned int*)(0x42A783CCUL))) +#define bM4_PORT_PFSRA7_FSEL4 (*((volatile unsigned int*)(0x42A783D0UL))) +#define bM4_PORT_PFSRA7_FSEL5 (*((volatile unsigned int*)(0x42A783D4UL))) +#define bM4_PORT_PFSRA7_BFE (*((volatile unsigned int*)(0x42A783E0UL))) +#define bM4_PORT_PCRA8_POUT (*((volatile unsigned int*)(0x42A78400UL))) +#define bM4_PORT_PCRA8_POUTE (*((volatile unsigned int*)(0x42A78404UL))) +#define bM4_PORT_PCRA8_NOD (*((volatile unsigned int*)(0x42A78408UL))) +#define bM4_PORT_PCRA8_DRV0 (*((volatile unsigned int*)(0x42A78410UL))) +#define bM4_PORT_PCRA8_DRV1 (*((volatile unsigned int*)(0x42A78414UL))) +#define bM4_PORT_PCRA8_PUU (*((volatile unsigned int*)(0x42A78418UL))) +#define bM4_PORT_PCRA8_PIN (*((volatile unsigned int*)(0x42A78420UL))) +#define bM4_PORT_PCRA8_INVE (*((volatile unsigned int*)(0x42A78424UL))) +#define bM4_PORT_PCRA8_INTE (*((volatile unsigned int*)(0x42A78430UL))) +#define bM4_PORT_PCRA8_LTE (*((volatile unsigned int*)(0x42A78438UL))) +#define bM4_PORT_PCRA8_DDIS (*((volatile unsigned int*)(0x42A7843CUL))) +#define bM4_PORT_PFSRA8_FSEL0 (*((volatile unsigned int*)(0x42A78440UL))) +#define bM4_PORT_PFSRA8_FSEL1 (*((volatile unsigned int*)(0x42A78444UL))) +#define bM4_PORT_PFSRA8_FSEL2 (*((volatile unsigned int*)(0x42A78448UL))) +#define bM4_PORT_PFSRA8_FSEL3 (*((volatile unsigned int*)(0x42A7844CUL))) +#define bM4_PORT_PFSRA8_FSEL4 (*((volatile unsigned int*)(0x42A78450UL))) +#define bM4_PORT_PFSRA8_FSEL5 (*((volatile unsigned int*)(0x42A78454UL))) +#define bM4_PORT_PFSRA8_BFE (*((volatile unsigned int*)(0x42A78460UL))) +#define bM4_PORT_PCRA9_POUT (*((volatile unsigned int*)(0x42A78480UL))) +#define bM4_PORT_PCRA9_POUTE (*((volatile unsigned int*)(0x42A78484UL))) +#define bM4_PORT_PCRA9_NOD (*((volatile unsigned int*)(0x42A78488UL))) +#define bM4_PORT_PCRA9_DRV0 (*((volatile unsigned int*)(0x42A78490UL))) +#define bM4_PORT_PCRA9_DRV1 (*((volatile unsigned int*)(0x42A78494UL))) +#define bM4_PORT_PCRA9_PUU (*((volatile unsigned int*)(0x42A78498UL))) +#define bM4_PORT_PCRA9_PIN (*((volatile unsigned int*)(0x42A784A0UL))) +#define bM4_PORT_PCRA9_INVE (*((volatile unsigned int*)(0x42A784A4UL))) +#define bM4_PORT_PCRA9_INTE (*((volatile unsigned int*)(0x42A784B0UL))) +#define bM4_PORT_PCRA9_LTE (*((volatile unsigned int*)(0x42A784B8UL))) +#define bM4_PORT_PCRA9_DDIS (*((volatile unsigned int*)(0x42A784BCUL))) +#define bM4_PORT_PFSRA9_FSEL0 (*((volatile unsigned int*)(0x42A784C0UL))) +#define bM4_PORT_PFSRA9_FSEL1 (*((volatile unsigned int*)(0x42A784C4UL))) +#define bM4_PORT_PFSRA9_FSEL2 (*((volatile unsigned int*)(0x42A784C8UL))) +#define bM4_PORT_PFSRA9_FSEL3 (*((volatile unsigned int*)(0x42A784CCUL))) +#define bM4_PORT_PFSRA9_FSEL4 (*((volatile unsigned int*)(0x42A784D0UL))) +#define bM4_PORT_PFSRA9_FSEL5 (*((volatile unsigned int*)(0x42A784D4UL))) +#define bM4_PORT_PFSRA9_BFE (*((volatile unsigned int*)(0x42A784E0UL))) +#define bM4_PORT_PCRA10_POUT (*((volatile unsigned int*)(0x42A78500UL))) +#define bM4_PORT_PCRA10_POUTE (*((volatile unsigned int*)(0x42A78504UL))) +#define bM4_PORT_PCRA10_NOD (*((volatile unsigned int*)(0x42A78508UL))) +#define bM4_PORT_PCRA10_DRV0 (*((volatile unsigned int*)(0x42A78510UL))) +#define bM4_PORT_PCRA10_DRV1 (*((volatile unsigned int*)(0x42A78514UL))) +#define bM4_PORT_PCRA10_PUU (*((volatile unsigned int*)(0x42A78518UL))) +#define bM4_PORT_PCRA10_PIN (*((volatile unsigned int*)(0x42A78520UL))) +#define bM4_PORT_PCRA10_INVE (*((volatile unsigned int*)(0x42A78524UL))) +#define bM4_PORT_PCRA10_INTE (*((volatile unsigned int*)(0x42A78530UL))) +#define bM4_PORT_PCRA10_LTE (*((volatile unsigned int*)(0x42A78538UL))) +#define bM4_PORT_PCRA10_DDIS (*((volatile unsigned int*)(0x42A7853CUL))) +#define bM4_PORT_PFSRA10_FSEL0 (*((volatile unsigned int*)(0x42A78540UL))) +#define bM4_PORT_PFSRA10_FSEL1 (*((volatile unsigned int*)(0x42A78544UL))) +#define bM4_PORT_PFSRA10_FSEL2 (*((volatile unsigned int*)(0x42A78548UL))) +#define bM4_PORT_PFSRA10_FSEL3 (*((volatile unsigned int*)(0x42A7854CUL))) +#define bM4_PORT_PFSRA10_FSEL4 (*((volatile unsigned int*)(0x42A78550UL))) +#define bM4_PORT_PFSRA10_FSEL5 (*((volatile unsigned int*)(0x42A78554UL))) +#define bM4_PORT_PFSRA10_BFE (*((volatile unsigned int*)(0x42A78560UL))) +#define bM4_PORT_PCRA11_POUT (*((volatile unsigned int*)(0x42A78580UL))) +#define bM4_PORT_PCRA11_POUTE (*((volatile unsigned int*)(0x42A78584UL))) +#define bM4_PORT_PCRA11_NOD (*((volatile unsigned int*)(0x42A78588UL))) +#define bM4_PORT_PCRA11_DRV0 (*((volatile unsigned int*)(0x42A78590UL))) +#define bM4_PORT_PCRA11_DRV1 (*((volatile unsigned int*)(0x42A78594UL))) +#define bM4_PORT_PCRA11_PUU (*((volatile unsigned int*)(0x42A78598UL))) +#define bM4_PORT_PCRA11_PIN (*((volatile unsigned int*)(0x42A785A0UL))) +#define bM4_PORT_PCRA11_INVE (*((volatile unsigned int*)(0x42A785A4UL))) +#define bM4_PORT_PCRA11_INTE (*((volatile unsigned int*)(0x42A785B0UL))) +#define bM4_PORT_PCRA11_LTE (*((volatile unsigned int*)(0x42A785B8UL))) +#define bM4_PORT_PCRA11_DDIS (*((volatile unsigned int*)(0x42A785BCUL))) +#define bM4_PORT_PFSRA11_FSEL0 (*((volatile unsigned int*)(0x42A785C0UL))) +#define bM4_PORT_PFSRA11_FSEL1 (*((volatile unsigned int*)(0x42A785C4UL))) +#define bM4_PORT_PFSRA11_FSEL2 (*((volatile unsigned int*)(0x42A785C8UL))) +#define bM4_PORT_PFSRA11_FSEL3 (*((volatile unsigned int*)(0x42A785CCUL))) +#define bM4_PORT_PFSRA11_FSEL4 (*((volatile unsigned int*)(0x42A785D0UL))) +#define bM4_PORT_PFSRA11_FSEL5 (*((volatile unsigned int*)(0x42A785D4UL))) +#define bM4_PORT_PFSRA11_BFE (*((volatile unsigned int*)(0x42A785E0UL))) +#define bM4_PORT_PCRA12_POUT (*((volatile unsigned int*)(0x42A78600UL))) +#define bM4_PORT_PCRA12_POUTE (*((volatile unsigned int*)(0x42A78604UL))) +#define bM4_PORT_PCRA12_NOD (*((volatile unsigned int*)(0x42A78608UL))) +#define bM4_PORT_PCRA12_DRV0 (*((volatile unsigned int*)(0x42A78610UL))) +#define bM4_PORT_PCRA12_DRV1 (*((volatile unsigned int*)(0x42A78614UL))) +#define bM4_PORT_PCRA12_PUU (*((volatile unsigned int*)(0x42A78618UL))) +#define bM4_PORT_PCRA12_PIN (*((volatile unsigned int*)(0x42A78620UL))) +#define bM4_PORT_PCRA12_INVE (*((volatile unsigned int*)(0x42A78624UL))) +#define bM4_PORT_PCRA12_INTE (*((volatile unsigned int*)(0x42A78630UL))) +#define bM4_PORT_PCRA12_LTE (*((volatile unsigned int*)(0x42A78638UL))) +#define bM4_PORT_PCRA12_DDIS (*((volatile unsigned int*)(0x42A7863CUL))) +#define bM4_PORT_PFSRA12_FSEL0 (*((volatile unsigned int*)(0x42A78640UL))) +#define bM4_PORT_PFSRA12_FSEL1 (*((volatile unsigned int*)(0x42A78644UL))) +#define bM4_PORT_PFSRA12_FSEL2 (*((volatile unsigned int*)(0x42A78648UL))) +#define bM4_PORT_PFSRA12_FSEL3 (*((volatile unsigned int*)(0x42A7864CUL))) +#define bM4_PORT_PFSRA12_FSEL4 (*((volatile unsigned int*)(0x42A78650UL))) +#define bM4_PORT_PFSRA12_FSEL5 (*((volatile unsigned int*)(0x42A78654UL))) +#define bM4_PORT_PFSRA12_BFE (*((volatile unsigned int*)(0x42A78660UL))) +#define bM4_PORT_PCRA13_POUT (*((volatile unsigned int*)(0x42A78680UL))) +#define bM4_PORT_PCRA13_POUTE (*((volatile unsigned int*)(0x42A78684UL))) +#define bM4_PORT_PCRA13_NOD (*((volatile unsigned int*)(0x42A78688UL))) +#define bM4_PORT_PCRA13_DRV0 (*((volatile unsigned int*)(0x42A78690UL))) +#define bM4_PORT_PCRA13_DRV1 (*((volatile unsigned int*)(0x42A78694UL))) +#define bM4_PORT_PCRA13_PUU (*((volatile unsigned int*)(0x42A78698UL))) +#define bM4_PORT_PCRA13_PIN (*((volatile unsigned int*)(0x42A786A0UL))) +#define bM4_PORT_PCRA13_INVE (*((volatile unsigned int*)(0x42A786A4UL))) +#define bM4_PORT_PCRA13_INTE (*((volatile unsigned int*)(0x42A786B0UL))) +#define bM4_PORT_PCRA13_LTE (*((volatile unsigned int*)(0x42A786B8UL))) +#define bM4_PORT_PCRA13_DDIS (*((volatile unsigned int*)(0x42A786BCUL))) +#define bM4_PORT_PFSRA13_FSEL0 (*((volatile unsigned int*)(0x42A786C0UL))) +#define bM4_PORT_PFSRA13_FSEL1 (*((volatile unsigned int*)(0x42A786C4UL))) +#define bM4_PORT_PFSRA13_FSEL2 (*((volatile unsigned int*)(0x42A786C8UL))) +#define bM4_PORT_PFSRA13_FSEL3 (*((volatile unsigned int*)(0x42A786CCUL))) +#define bM4_PORT_PFSRA13_FSEL4 (*((volatile unsigned int*)(0x42A786D0UL))) +#define bM4_PORT_PFSRA13_FSEL5 (*((volatile unsigned int*)(0x42A786D4UL))) +#define bM4_PORT_PFSRA13_BFE (*((volatile unsigned int*)(0x42A786E0UL))) +#define bM4_PORT_PCRA14_POUT (*((volatile unsigned int*)(0x42A78700UL))) +#define bM4_PORT_PCRA14_POUTE (*((volatile unsigned int*)(0x42A78704UL))) +#define bM4_PORT_PCRA14_NOD (*((volatile unsigned int*)(0x42A78708UL))) +#define bM4_PORT_PCRA14_DRV0 (*((volatile unsigned int*)(0x42A78710UL))) +#define bM4_PORT_PCRA14_DRV1 (*((volatile unsigned int*)(0x42A78714UL))) +#define bM4_PORT_PCRA14_PUU (*((volatile unsigned int*)(0x42A78718UL))) +#define bM4_PORT_PCRA14_PIN (*((volatile unsigned int*)(0x42A78720UL))) +#define bM4_PORT_PCRA14_INVE (*((volatile unsigned int*)(0x42A78724UL))) +#define bM4_PORT_PCRA14_INTE (*((volatile unsigned int*)(0x42A78730UL))) +#define bM4_PORT_PCRA14_LTE (*((volatile unsigned int*)(0x42A78738UL))) +#define bM4_PORT_PCRA14_DDIS (*((volatile unsigned int*)(0x42A7873CUL))) +#define bM4_PORT_PFSRA14_FSEL0 (*((volatile unsigned int*)(0x42A78740UL))) +#define bM4_PORT_PFSRA14_FSEL1 (*((volatile unsigned int*)(0x42A78744UL))) +#define bM4_PORT_PFSRA14_FSEL2 (*((volatile unsigned int*)(0x42A78748UL))) +#define bM4_PORT_PFSRA14_FSEL3 (*((volatile unsigned int*)(0x42A7874CUL))) +#define bM4_PORT_PFSRA14_FSEL4 (*((volatile unsigned int*)(0x42A78750UL))) +#define bM4_PORT_PFSRA14_FSEL5 (*((volatile unsigned int*)(0x42A78754UL))) +#define bM4_PORT_PFSRA14_BFE (*((volatile unsigned int*)(0x42A78760UL))) +#define bM4_PORT_PCRA15_POUT (*((volatile unsigned int*)(0x42A78780UL))) +#define bM4_PORT_PCRA15_POUTE (*((volatile unsigned int*)(0x42A78784UL))) +#define bM4_PORT_PCRA15_NOD (*((volatile unsigned int*)(0x42A78788UL))) +#define bM4_PORT_PCRA15_DRV0 (*((volatile unsigned int*)(0x42A78790UL))) +#define bM4_PORT_PCRA15_DRV1 (*((volatile unsigned int*)(0x42A78794UL))) +#define bM4_PORT_PCRA15_PUU (*((volatile unsigned int*)(0x42A78798UL))) +#define bM4_PORT_PCRA15_PIN (*((volatile unsigned int*)(0x42A787A0UL))) +#define bM4_PORT_PCRA15_INVE (*((volatile unsigned int*)(0x42A787A4UL))) +#define bM4_PORT_PCRA15_INTE (*((volatile unsigned int*)(0x42A787B0UL))) +#define bM4_PORT_PCRA15_LTE (*((volatile unsigned int*)(0x42A787B8UL))) +#define bM4_PORT_PCRA15_DDIS (*((volatile unsigned int*)(0x42A787BCUL))) +#define bM4_PORT_PFSRA15_FSEL0 (*((volatile unsigned int*)(0x42A787C0UL))) +#define bM4_PORT_PFSRA15_FSEL1 (*((volatile unsigned int*)(0x42A787C4UL))) +#define bM4_PORT_PFSRA15_FSEL2 (*((volatile unsigned int*)(0x42A787C8UL))) +#define bM4_PORT_PFSRA15_FSEL3 (*((volatile unsigned int*)(0x42A787CCUL))) +#define bM4_PORT_PFSRA15_FSEL4 (*((volatile unsigned int*)(0x42A787D0UL))) +#define bM4_PORT_PFSRA15_FSEL5 (*((volatile unsigned int*)(0x42A787D4UL))) +#define bM4_PORT_PFSRA15_BFE (*((volatile unsigned int*)(0x42A787E0UL))) +#define bM4_PORT_PCRB0_POUT (*((volatile unsigned int*)(0x42A78800UL))) +#define bM4_PORT_PCRB0_POUTE (*((volatile unsigned int*)(0x42A78804UL))) +#define bM4_PORT_PCRB0_NOD (*((volatile unsigned int*)(0x42A78808UL))) +#define bM4_PORT_PCRB0_DRV0 (*((volatile unsigned int*)(0x42A78810UL))) +#define bM4_PORT_PCRB0_DRV1 (*((volatile unsigned int*)(0x42A78814UL))) +#define bM4_PORT_PCRB0_PUU (*((volatile unsigned int*)(0x42A78818UL))) +#define bM4_PORT_PCRB0_PIN (*((volatile unsigned int*)(0x42A78820UL))) +#define bM4_PORT_PCRB0_INVE (*((volatile unsigned int*)(0x42A78824UL))) +#define bM4_PORT_PCRB0_INTE (*((volatile unsigned int*)(0x42A78830UL))) +#define bM4_PORT_PCRB0_LTE (*((volatile unsigned int*)(0x42A78838UL))) +#define bM4_PORT_PCRB0_DDIS (*((volatile unsigned int*)(0x42A7883CUL))) +#define bM4_PORT_PFSRB0_FSEL0 (*((volatile unsigned int*)(0x42A78840UL))) +#define bM4_PORT_PFSRB0_FSEL1 (*((volatile unsigned int*)(0x42A78844UL))) +#define bM4_PORT_PFSRB0_FSEL2 (*((volatile unsigned int*)(0x42A78848UL))) +#define bM4_PORT_PFSRB0_FSEL3 (*((volatile unsigned int*)(0x42A7884CUL))) +#define bM4_PORT_PFSRB0_FSEL4 (*((volatile unsigned int*)(0x42A78850UL))) +#define bM4_PORT_PFSRB0_FSEL5 (*((volatile unsigned int*)(0x42A78854UL))) +#define bM4_PORT_PFSRB0_BFE (*((volatile unsigned int*)(0x42A78860UL))) +#define bM4_PORT_PCRB1_POUT (*((volatile unsigned int*)(0x42A78880UL))) +#define bM4_PORT_PCRB1_POUTE (*((volatile unsigned int*)(0x42A78884UL))) +#define bM4_PORT_PCRB1_NOD (*((volatile unsigned int*)(0x42A78888UL))) +#define bM4_PORT_PCRB1_DRV0 (*((volatile unsigned int*)(0x42A78890UL))) +#define bM4_PORT_PCRB1_DRV1 (*((volatile unsigned int*)(0x42A78894UL))) +#define bM4_PORT_PCRB1_PUU (*((volatile unsigned int*)(0x42A78898UL))) +#define bM4_PORT_PCRB1_PIN (*((volatile unsigned int*)(0x42A788A0UL))) +#define bM4_PORT_PCRB1_INVE (*((volatile unsigned int*)(0x42A788A4UL))) +#define bM4_PORT_PCRB1_INTE (*((volatile unsigned int*)(0x42A788B0UL))) +#define bM4_PORT_PCRB1_LTE (*((volatile unsigned int*)(0x42A788B8UL))) +#define bM4_PORT_PCRB1_DDIS (*((volatile unsigned int*)(0x42A788BCUL))) +#define bM4_PORT_PFSRB1_FSEL0 (*((volatile unsigned int*)(0x42A788C0UL))) +#define bM4_PORT_PFSRB1_FSEL1 (*((volatile unsigned int*)(0x42A788C4UL))) +#define bM4_PORT_PFSRB1_FSEL2 (*((volatile unsigned int*)(0x42A788C8UL))) +#define bM4_PORT_PFSRB1_FSEL3 (*((volatile unsigned int*)(0x42A788CCUL))) +#define bM4_PORT_PFSRB1_FSEL4 (*((volatile unsigned int*)(0x42A788D0UL))) +#define bM4_PORT_PFSRB1_FSEL5 (*((volatile unsigned int*)(0x42A788D4UL))) +#define bM4_PORT_PFSRB1_BFE (*((volatile unsigned int*)(0x42A788E0UL))) +#define bM4_PORT_PCRB2_POUT (*((volatile unsigned int*)(0x42A78900UL))) +#define bM4_PORT_PCRB2_POUTE (*((volatile unsigned int*)(0x42A78904UL))) +#define bM4_PORT_PCRB2_NOD (*((volatile unsigned int*)(0x42A78908UL))) +#define bM4_PORT_PCRB2_DRV0 (*((volatile unsigned int*)(0x42A78910UL))) +#define bM4_PORT_PCRB2_DRV1 (*((volatile unsigned int*)(0x42A78914UL))) +#define bM4_PORT_PCRB2_PUU (*((volatile unsigned int*)(0x42A78918UL))) +#define bM4_PORT_PCRB2_PIN (*((volatile unsigned int*)(0x42A78920UL))) +#define bM4_PORT_PCRB2_INVE (*((volatile unsigned int*)(0x42A78924UL))) +#define bM4_PORT_PCRB2_INTE (*((volatile unsigned int*)(0x42A78930UL))) +#define bM4_PORT_PCRB2_LTE (*((volatile unsigned int*)(0x42A78938UL))) +#define bM4_PORT_PCRB2_DDIS (*((volatile unsigned int*)(0x42A7893CUL))) +#define bM4_PORT_PFSRB2_FSEL0 (*((volatile unsigned int*)(0x42A78940UL))) +#define bM4_PORT_PFSRB2_FSEL1 (*((volatile unsigned int*)(0x42A78944UL))) +#define bM4_PORT_PFSRB2_FSEL2 (*((volatile unsigned int*)(0x42A78948UL))) +#define bM4_PORT_PFSRB2_FSEL3 (*((volatile unsigned int*)(0x42A7894CUL))) +#define bM4_PORT_PFSRB2_FSEL4 (*((volatile unsigned int*)(0x42A78950UL))) +#define bM4_PORT_PFSRB2_FSEL5 (*((volatile unsigned int*)(0x42A78954UL))) +#define bM4_PORT_PFSRB2_BFE (*((volatile unsigned int*)(0x42A78960UL))) +#define bM4_PORT_PCRB3_POUT (*((volatile unsigned int*)(0x42A78980UL))) +#define bM4_PORT_PCRB3_POUTE (*((volatile unsigned int*)(0x42A78984UL))) +#define bM4_PORT_PCRB3_NOD (*((volatile unsigned int*)(0x42A78988UL))) +#define bM4_PORT_PCRB3_DRV0 (*((volatile unsigned int*)(0x42A78990UL))) +#define bM4_PORT_PCRB3_DRV1 (*((volatile unsigned int*)(0x42A78994UL))) +#define bM4_PORT_PCRB3_PUU (*((volatile unsigned int*)(0x42A78998UL))) +#define bM4_PORT_PCRB3_PIN (*((volatile unsigned int*)(0x42A789A0UL))) +#define bM4_PORT_PCRB3_INVE (*((volatile unsigned int*)(0x42A789A4UL))) +#define bM4_PORT_PCRB3_INTE (*((volatile unsigned int*)(0x42A789B0UL))) +#define bM4_PORT_PCRB3_LTE (*((volatile unsigned int*)(0x42A789B8UL))) +#define bM4_PORT_PCRB3_DDIS (*((volatile unsigned int*)(0x42A789BCUL))) +#define bM4_PORT_PFSRB3_FSEL0 (*((volatile unsigned int*)(0x42A789C0UL))) +#define bM4_PORT_PFSRB3_FSEL1 (*((volatile unsigned int*)(0x42A789C4UL))) +#define bM4_PORT_PFSRB3_FSEL2 (*((volatile unsigned int*)(0x42A789C8UL))) +#define bM4_PORT_PFSRB3_FSEL3 (*((volatile unsigned int*)(0x42A789CCUL))) +#define bM4_PORT_PFSRB3_FSEL4 (*((volatile unsigned int*)(0x42A789D0UL))) +#define bM4_PORT_PFSRB3_FSEL5 (*((volatile unsigned int*)(0x42A789D4UL))) +#define bM4_PORT_PFSRB3_BFE (*((volatile unsigned int*)(0x42A789E0UL))) +#define bM4_PORT_PCRB4_POUT (*((volatile unsigned int*)(0x42A78A00UL))) +#define bM4_PORT_PCRB4_POUTE (*((volatile unsigned int*)(0x42A78A04UL))) +#define bM4_PORT_PCRB4_NOD (*((volatile unsigned int*)(0x42A78A08UL))) +#define bM4_PORT_PCRB4_DRV0 (*((volatile unsigned int*)(0x42A78A10UL))) +#define bM4_PORT_PCRB4_DRV1 (*((volatile unsigned int*)(0x42A78A14UL))) +#define bM4_PORT_PCRB4_PUU (*((volatile unsigned int*)(0x42A78A18UL))) +#define bM4_PORT_PCRB4_PIN (*((volatile unsigned int*)(0x42A78A20UL))) +#define bM4_PORT_PCRB4_INVE (*((volatile unsigned int*)(0x42A78A24UL))) +#define bM4_PORT_PCRB4_INTE (*((volatile unsigned int*)(0x42A78A30UL))) +#define bM4_PORT_PCRB4_LTE (*((volatile unsigned int*)(0x42A78A38UL))) +#define bM4_PORT_PCRB4_DDIS (*((volatile unsigned int*)(0x42A78A3CUL))) +#define bM4_PORT_PFSRB4_FSEL0 (*((volatile unsigned int*)(0x42A78A40UL))) +#define bM4_PORT_PFSRB4_FSEL1 (*((volatile unsigned int*)(0x42A78A44UL))) +#define bM4_PORT_PFSRB4_FSEL2 (*((volatile unsigned int*)(0x42A78A48UL))) +#define bM4_PORT_PFSRB4_FSEL3 (*((volatile unsigned int*)(0x42A78A4CUL))) +#define bM4_PORT_PFSRB4_FSEL4 (*((volatile unsigned int*)(0x42A78A50UL))) +#define bM4_PORT_PFSRB4_FSEL5 (*((volatile unsigned int*)(0x42A78A54UL))) +#define bM4_PORT_PFSRB4_BFE (*((volatile unsigned int*)(0x42A78A60UL))) +#define bM4_PORT_PCRB5_POUT (*((volatile unsigned int*)(0x42A78A80UL))) +#define bM4_PORT_PCRB5_POUTE (*((volatile unsigned int*)(0x42A78A84UL))) +#define bM4_PORT_PCRB5_NOD (*((volatile unsigned int*)(0x42A78A88UL))) +#define bM4_PORT_PCRB5_DRV0 (*((volatile unsigned int*)(0x42A78A90UL))) +#define bM4_PORT_PCRB5_DRV1 (*((volatile unsigned int*)(0x42A78A94UL))) +#define bM4_PORT_PCRB5_PUU (*((volatile unsigned int*)(0x42A78A98UL))) +#define bM4_PORT_PCRB5_PIN (*((volatile unsigned int*)(0x42A78AA0UL))) +#define bM4_PORT_PCRB5_INVE (*((volatile unsigned int*)(0x42A78AA4UL))) +#define bM4_PORT_PCRB5_INTE (*((volatile unsigned int*)(0x42A78AB0UL))) +#define bM4_PORT_PCRB5_LTE (*((volatile unsigned int*)(0x42A78AB8UL))) +#define bM4_PORT_PCRB5_DDIS (*((volatile unsigned int*)(0x42A78ABCUL))) +#define bM4_PORT_PFSRB5_FSEL0 (*((volatile unsigned int*)(0x42A78AC0UL))) +#define bM4_PORT_PFSRB5_FSEL1 (*((volatile unsigned int*)(0x42A78AC4UL))) +#define bM4_PORT_PFSRB5_FSEL2 (*((volatile unsigned int*)(0x42A78AC8UL))) +#define bM4_PORT_PFSRB5_FSEL3 (*((volatile unsigned int*)(0x42A78ACCUL))) +#define bM4_PORT_PFSRB5_FSEL4 (*((volatile unsigned int*)(0x42A78AD0UL))) +#define bM4_PORT_PFSRB5_FSEL5 (*((volatile unsigned int*)(0x42A78AD4UL))) +#define bM4_PORT_PFSRB5_BFE (*((volatile unsigned int*)(0x42A78AE0UL))) +#define bM4_PORT_PCRB6_POUT (*((volatile unsigned int*)(0x42A78B00UL))) +#define bM4_PORT_PCRB6_POUTE (*((volatile unsigned int*)(0x42A78B04UL))) +#define bM4_PORT_PCRB6_NOD (*((volatile unsigned int*)(0x42A78B08UL))) +#define bM4_PORT_PCRB6_DRV0 (*((volatile unsigned int*)(0x42A78B10UL))) +#define bM4_PORT_PCRB6_DRV1 (*((volatile unsigned int*)(0x42A78B14UL))) +#define bM4_PORT_PCRB6_PUU (*((volatile unsigned int*)(0x42A78B18UL))) +#define bM4_PORT_PCRB6_PIN (*((volatile unsigned int*)(0x42A78B20UL))) +#define bM4_PORT_PCRB6_INVE (*((volatile unsigned int*)(0x42A78B24UL))) +#define bM4_PORT_PCRB6_INTE (*((volatile unsigned int*)(0x42A78B30UL))) +#define bM4_PORT_PCRB6_LTE (*((volatile unsigned int*)(0x42A78B38UL))) +#define bM4_PORT_PCRB6_DDIS (*((volatile unsigned int*)(0x42A78B3CUL))) +#define bM4_PORT_PFSRB6_FSEL0 (*((volatile unsigned int*)(0x42A78B40UL))) +#define bM4_PORT_PFSRB6_FSEL1 (*((volatile unsigned int*)(0x42A78B44UL))) +#define bM4_PORT_PFSRB6_FSEL2 (*((volatile unsigned int*)(0x42A78B48UL))) +#define bM4_PORT_PFSRB6_FSEL3 (*((volatile unsigned int*)(0x42A78B4CUL))) +#define bM4_PORT_PFSRB6_FSEL4 (*((volatile unsigned int*)(0x42A78B50UL))) +#define bM4_PORT_PFSRB6_FSEL5 (*((volatile unsigned int*)(0x42A78B54UL))) +#define bM4_PORT_PFSRB6_BFE (*((volatile unsigned int*)(0x42A78B60UL))) +#define bM4_PORT_PCRB7_POUT (*((volatile unsigned int*)(0x42A78B80UL))) +#define bM4_PORT_PCRB7_POUTE (*((volatile unsigned int*)(0x42A78B84UL))) +#define bM4_PORT_PCRB7_NOD (*((volatile unsigned int*)(0x42A78B88UL))) +#define bM4_PORT_PCRB7_DRV0 (*((volatile unsigned int*)(0x42A78B90UL))) +#define bM4_PORT_PCRB7_DRV1 (*((volatile unsigned int*)(0x42A78B94UL))) +#define bM4_PORT_PCRB7_PUU (*((volatile unsigned int*)(0x42A78B98UL))) +#define bM4_PORT_PCRB7_PIN (*((volatile unsigned int*)(0x42A78BA0UL))) +#define bM4_PORT_PCRB7_INVE (*((volatile unsigned int*)(0x42A78BA4UL))) +#define bM4_PORT_PCRB7_INTE (*((volatile unsigned int*)(0x42A78BB0UL))) +#define bM4_PORT_PCRB7_LTE (*((volatile unsigned int*)(0x42A78BB8UL))) +#define bM4_PORT_PCRB7_DDIS (*((volatile unsigned int*)(0x42A78BBCUL))) +#define bM4_PORT_PFSRB7_FSEL0 (*((volatile unsigned int*)(0x42A78BC0UL))) +#define bM4_PORT_PFSRB7_FSEL1 (*((volatile unsigned int*)(0x42A78BC4UL))) +#define bM4_PORT_PFSRB7_FSEL2 (*((volatile unsigned int*)(0x42A78BC8UL))) +#define bM4_PORT_PFSRB7_FSEL3 (*((volatile unsigned int*)(0x42A78BCCUL))) +#define bM4_PORT_PFSRB7_FSEL4 (*((volatile unsigned int*)(0x42A78BD0UL))) +#define bM4_PORT_PFSRB7_FSEL5 (*((volatile unsigned int*)(0x42A78BD4UL))) +#define bM4_PORT_PFSRB7_BFE (*((volatile unsigned int*)(0x42A78BE0UL))) +#define bM4_PORT_PCRB8_POUT (*((volatile unsigned int*)(0x42A78C00UL))) +#define bM4_PORT_PCRB8_POUTE (*((volatile unsigned int*)(0x42A78C04UL))) +#define bM4_PORT_PCRB8_NOD (*((volatile unsigned int*)(0x42A78C08UL))) +#define bM4_PORT_PCRB8_DRV0 (*((volatile unsigned int*)(0x42A78C10UL))) +#define bM4_PORT_PCRB8_DRV1 (*((volatile unsigned int*)(0x42A78C14UL))) +#define bM4_PORT_PCRB8_PUU (*((volatile unsigned int*)(0x42A78C18UL))) +#define bM4_PORT_PCRB8_PIN (*((volatile unsigned int*)(0x42A78C20UL))) +#define bM4_PORT_PCRB8_INVE (*((volatile unsigned int*)(0x42A78C24UL))) +#define bM4_PORT_PCRB8_INTE (*((volatile unsigned int*)(0x42A78C30UL))) +#define bM4_PORT_PCRB8_LTE (*((volatile unsigned int*)(0x42A78C38UL))) +#define bM4_PORT_PCRB8_DDIS (*((volatile unsigned int*)(0x42A78C3CUL))) +#define bM4_PORT_PFSRB8_FSEL0 (*((volatile unsigned int*)(0x42A78C40UL))) +#define bM4_PORT_PFSRB8_FSEL1 (*((volatile unsigned int*)(0x42A78C44UL))) +#define bM4_PORT_PFSRB8_FSEL2 (*((volatile unsigned int*)(0x42A78C48UL))) +#define bM4_PORT_PFSRB8_FSEL3 (*((volatile unsigned int*)(0x42A78C4CUL))) +#define bM4_PORT_PFSRB8_FSEL4 (*((volatile unsigned int*)(0x42A78C50UL))) +#define bM4_PORT_PFSRB8_FSEL5 (*((volatile unsigned int*)(0x42A78C54UL))) +#define bM4_PORT_PFSRB8_BFE (*((volatile unsigned int*)(0x42A78C60UL))) +#define bM4_PORT_PCRB9_POUT (*((volatile unsigned int*)(0x42A78C80UL))) +#define bM4_PORT_PCRB9_POUTE (*((volatile unsigned int*)(0x42A78C84UL))) +#define bM4_PORT_PCRB9_NOD (*((volatile unsigned int*)(0x42A78C88UL))) +#define bM4_PORT_PCRB9_DRV0 (*((volatile unsigned int*)(0x42A78C90UL))) +#define bM4_PORT_PCRB9_DRV1 (*((volatile unsigned int*)(0x42A78C94UL))) +#define bM4_PORT_PCRB9_PUU (*((volatile unsigned int*)(0x42A78C98UL))) +#define bM4_PORT_PCRB9_PIN (*((volatile unsigned int*)(0x42A78CA0UL))) +#define bM4_PORT_PCRB9_INVE (*((volatile unsigned int*)(0x42A78CA4UL))) +#define bM4_PORT_PCRB9_INTE (*((volatile unsigned int*)(0x42A78CB0UL))) +#define bM4_PORT_PCRB9_LTE (*((volatile unsigned int*)(0x42A78CB8UL))) +#define bM4_PORT_PCRB9_DDIS (*((volatile unsigned int*)(0x42A78CBCUL))) +#define bM4_PORT_PFSRB9_FSEL0 (*((volatile unsigned int*)(0x42A78CC0UL))) +#define bM4_PORT_PFSRB9_FSEL1 (*((volatile unsigned int*)(0x42A78CC4UL))) +#define bM4_PORT_PFSRB9_FSEL2 (*((volatile unsigned int*)(0x42A78CC8UL))) +#define bM4_PORT_PFSRB9_FSEL3 (*((volatile unsigned int*)(0x42A78CCCUL))) +#define bM4_PORT_PFSRB9_FSEL4 (*((volatile unsigned int*)(0x42A78CD0UL))) +#define bM4_PORT_PFSRB9_FSEL5 (*((volatile unsigned int*)(0x42A78CD4UL))) +#define bM4_PORT_PFSRB9_BFE (*((volatile unsigned int*)(0x42A78CE0UL))) +#define bM4_PORT_PCRB10_POUT (*((volatile unsigned int*)(0x42A78D00UL))) +#define bM4_PORT_PCRB10_POUTE (*((volatile unsigned int*)(0x42A78D04UL))) +#define bM4_PORT_PCRB10_NOD (*((volatile unsigned int*)(0x42A78D08UL))) +#define bM4_PORT_PCRB10_DRV0 (*((volatile unsigned int*)(0x42A78D10UL))) +#define bM4_PORT_PCRB10_DRV1 (*((volatile unsigned int*)(0x42A78D14UL))) +#define bM4_PORT_PCRB10_PUU (*((volatile unsigned int*)(0x42A78D18UL))) +#define bM4_PORT_PCRB10_PIN (*((volatile unsigned int*)(0x42A78D20UL))) +#define bM4_PORT_PCRB10_INVE (*((volatile unsigned int*)(0x42A78D24UL))) +#define bM4_PORT_PCRB10_INTE (*((volatile unsigned int*)(0x42A78D30UL))) +#define bM4_PORT_PCRB10_LTE (*((volatile unsigned int*)(0x42A78D38UL))) +#define bM4_PORT_PCRB10_DDIS (*((volatile unsigned int*)(0x42A78D3CUL))) +#define bM4_PORT_PFSRB10_FSEL0 (*((volatile unsigned int*)(0x42A78D40UL))) +#define bM4_PORT_PFSRB10_FSEL1 (*((volatile unsigned int*)(0x42A78D44UL))) +#define bM4_PORT_PFSRB10_FSEL2 (*((volatile unsigned int*)(0x42A78D48UL))) +#define bM4_PORT_PFSRB10_FSEL3 (*((volatile unsigned int*)(0x42A78D4CUL))) +#define bM4_PORT_PFSRB10_FSEL4 (*((volatile unsigned int*)(0x42A78D50UL))) +#define bM4_PORT_PFSRB10_FSEL5 (*((volatile unsigned int*)(0x42A78D54UL))) +#define bM4_PORT_PFSRB10_BFE (*((volatile unsigned int*)(0x42A78D60UL))) +#define bM4_PORT_PCRB11_POUT (*((volatile unsigned int*)(0x42A78D80UL))) +#define bM4_PORT_PCRB11_POUTE (*((volatile unsigned int*)(0x42A78D84UL))) +#define bM4_PORT_PCRB11_NOD (*((volatile unsigned int*)(0x42A78D88UL))) +#define bM4_PORT_PCRB11_DRV0 (*((volatile unsigned int*)(0x42A78D90UL))) +#define bM4_PORT_PCRB11_DRV1 (*((volatile unsigned int*)(0x42A78D94UL))) +#define bM4_PORT_PCRB11_PUU (*((volatile unsigned int*)(0x42A78D98UL))) +#define bM4_PORT_PCRB11_PIN (*((volatile unsigned int*)(0x42A78DA0UL))) +#define bM4_PORT_PCRB11_INVE (*((volatile unsigned int*)(0x42A78DA4UL))) +#define bM4_PORT_PCRB11_INTE (*((volatile unsigned int*)(0x42A78DB0UL))) +#define bM4_PORT_PCRB11_LTE (*((volatile unsigned int*)(0x42A78DB8UL))) +#define bM4_PORT_PCRB11_DDIS (*((volatile unsigned int*)(0x42A78DBCUL))) +#define bM4_PORT_PFSRB11_FSEL0 (*((volatile unsigned int*)(0x42A78DC0UL))) +#define bM4_PORT_PFSRB11_FSEL1 (*((volatile unsigned int*)(0x42A78DC4UL))) +#define bM4_PORT_PFSRB11_FSEL2 (*((volatile unsigned int*)(0x42A78DC8UL))) +#define bM4_PORT_PFSRB11_FSEL3 (*((volatile unsigned int*)(0x42A78DCCUL))) +#define bM4_PORT_PFSRB11_FSEL4 (*((volatile unsigned int*)(0x42A78DD0UL))) +#define bM4_PORT_PFSRB11_FSEL5 (*((volatile unsigned int*)(0x42A78DD4UL))) +#define bM4_PORT_PFSRB11_BFE (*((volatile unsigned int*)(0x42A78DE0UL))) +#define bM4_PORT_PCRB12_POUT (*((volatile unsigned int*)(0x42A78E00UL))) +#define bM4_PORT_PCRB12_POUTE (*((volatile unsigned int*)(0x42A78E04UL))) +#define bM4_PORT_PCRB12_NOD (*((volatile unsigned int*)(0x42A78E08UL))) +#define bM4_PORT_PCRB12_DRV0 (*((volatile unsigned int*)(0x42A78E10UL))) +#define bM4_PORT_PCRB12_DRV1 (*((volatile unsigned int*)(0x42A78E14UL))) +#define bM4_PORT_PCRB12_PUU (*((volatile unsigned int*)(0x42A78E18UL))) +#define bM4_PORT_PCRB12_PIN (*((volatile unsigned int*)(0x42A78E20UL))) +#define bM4_PORT_PCRB12_INVE (*((volatile unsigned int*)(0x42A78E24UL))) +#define bM4_PORT_PCRB12_INTE (*((volatile unsigned int*)(0x42A78E30UL))) +#define bM4_PORT_PCRB12_LTE (*((volatile unsigned int*)(0x42A78E38UL))) +#define bM4_PORT_PCRB12_DDIS (*((volatile unsigned int*)(0x42A78E3CUL))) +#define bM4_PORT_PFSRB12_FSEL0 (*((volatile unsigned int*)(0x42A78E40UL))) +#define bM4_PORT_PFSRB12_FSEL1 (*((volatile unsigned int*)(0x42A78E44UL))) +#define bM4_PORT_PFSRB12_FSEL2 (*((volatile unsigned int*)(0x42A78E48UL))) +#define bM4_PORT_PFSRB12_FSEL3 (*((volatile unsigned int*)(0x42A78E4CUL))) +#define bM4_PORT_PFSRB12_FSEL4 (*((volatile unsigned int*)(0x42A78E50UL))) +#define bM4_PORT_PFSRB12_FSEL5 (*((volatile unsigned int*)(0x42A78E54UL))) +#define bM4_PORT_PFSRB12_BFE (*((volatile unsigned int*)(0x42A78E60UL))) +#define bM4_PORT_PCRB13_POUT (*((volatile unsigned int*)(0x42A78E80UL))) +#define bM4_PORT_PCRB13_POUTE (*((volatile unsigned int*)(0x42A78E84UL))) +#define bM4_PORT_PCRB13_NOD (*((volatile unsigned int*)(0x42A78E88UL))) +#define bM4_PORT_PCRB13_DRV0 (*((volatile unsigned int*)(0x42A78E90UL))) +#define bM4_PORT_PCRB13_DRV1 (*((volatile unsigned int*)(0x42A78E94UL))) +#define bM4_PORT_PCRB13_PUU (*((volatile unsigned int*)(0x42A78E98UL))) +#define bM4_PORT_PCRB13_PIN (*((volatile unsigned int*)(0x42A78EA0UL))) +#define bM4_PORT_PCRB13_INVE (*((volatile unsigned int*)(0x42A78EA4UL))) +#define bM4_PORT_PCRB13_INTE (*((volatile unsigned int*)(0x42A78EB0UL))) +#define bM4_PORT_PCRB13_LTE (*((volatile unsigned int*)(0x42A78EB8UL))) +#define bM4_PORT_PCRB13_DDIS (*((volatile unsigned int*)(0x42A78EBCUL))) +#define bM4_PORT_PFSRB13_FSEL0 (*((volatile unsigned int*)(0x42A78EC0UL))) +#define bM4_PORT_PFSRB13_FSEL1 (*((volatile unsigned int*)(0x42A78EC4UL))) +#define bM4_PORT_PFSRB13_FSEL2 (*((volatile unsigned int*)(0x42A78EC8UL))) +#define bM4_PORT_PFSRB13_FSEL3 (*((volatile unsigned int*)(0x42A78ECCUL))) +#define bM4_PORT_PFSRB13_FSEL4 (*((volatile unsigned int*)(0x42A78ED0UL))) +#define bM4_PORT_PFSRB13_FSEL5 (*((volatile unsigned int*)(0x42A78ED4UL))) +#define bM4_PORT_PFSRB13_BFE (*((volatile unsigned int*)(0x42A78EE0UL))) +#define bM4_PORT_PCRB14_POUT (*((volatile unsigned int*)(0x42A78F00UL))) +#define bM4_PORT_PCRB14_POUTE (*((volatile unsigned int*)(0x42A78F04UL))) +#define bM4_PORT_PCRB14_NOD (*((volatile unsigned int*)(0x42A78F08UL))) +#define bM4_PORT_PCRB14_DRV0 (*((volatile unsigned int*)(0x42A78F10UL))) +#define bM4_PORT_PCRB14_DRV1 (*((volatile unsigned int*)(0x42A78F14UL))) +#define bM4_PORT_PCRB14_PUU (*((volatile unsigned int*)(0x42A78F18UL))) +#define bM4_PORT_PCRB14_PIN (*((volatile unsigned int*)(0x42A78F20UL))) +#define bM4_PORT_PCRB14_INVE (*((volatile unsigned int*)(0x42A78F24UL))) +#define bM4_PORT_PCRB14_INTE (*((volatile unsigned int*)(0x42A78F30UL))) +#define bM4_PORT_PCRB14_LTE (*((volatile unsigned int*)(0x42A78F38UL))) +#define bM4_PORT_PCRB14_DDIS (*((volatile unsigned int*)(0x42A78F3CUL))) +#define bM4_PORT_PFSRB14_FSEL0 (*((volatile unsigned int*)(0x42A78F40UL))) +#define bM4_PORT_PFSRB14_FSEL1 (*((volatile unsigned int*)(0x42A78F44UL))) +#define bM4_PORT_PFSRB14_FSEL2 (*((volatile unsigned int*)(0x42A78F48UL))) +#define bM4_PORT_PFSRB14_FSEL3 (*((volatile unsigned int*)(0x42A78F4CUL))) +#define bM4_PORT_PFSRB14_FSEL4 (*((volatile unsigned int*)(0x42A78F50UL))) +#define bM4_PORT_PFSRB14_FSEL5 (*((volatile unsigned int*)(0x42A78F54UL))) +#define bM4_PORT_PFSRB14_BFE (*((volatile unsigned int*)(0x42A78F60UL))) +#define bM4_PORT_PCRB15_POUT (*((volatile unsigned int*)(0x42A78F80UL))) +#define bM4_PORT_PCRB15_POUTE (*((volatile unsigned int*)(0x42A78F84UL))) +#define bM4_PORT_PCRB15_NOD (*((volatile unsigned int*)(0x42A78F88UL))) +#define bM4_PORT_PCRB15_DRV0 (*((volatile unsigned int*)(0x42A78F90UL))) +#define bM4_PORT_PCRB15_DRV1 (*((volatile unsigned int*)(0x42A78F94UL))) +#define bM4_PORT_PCRB15_PUU (*((volatile unsigned int*)(0x42A78F98UL))) +#define bM4_PORT_PCRB15_PIN (*((volatile unsigned int*)(0x42A78FA0UL))) +#define bM4_PORT_PCRB15_INVE (*((volatile unsigned int*)(0x42A78FA4UL))) +#define bM4_PORT_PCRB15_INTE (*((volatile unsigned int*)(0x42A78FB0UL))) +#define bM4_PORT_PCRB15_LTE (*((volatile unsigned int*)(0x42A78FB8UL))) +#define bM4_PORT_PCRB15_DDIS (*((volatile unsigned int*)(0x42A78FBCUL))) +#define bM4_PORT_PFSRB15_FSEL0 (*((volatile unsigned int*)(0x42A78FC0UL))) +#define bM4_PORT_PFSRB15_FSEL1 (*((volatile unsigned int*)(0x42A78FC4UL))) +#define bM4_PORT_PFSRB15_FSEL2 (*((volatile unsigned int*)(0x42A78FC8UL))) +#define bM4_PORT_PFSRB15_FSEL3 (*((volatile unsigned int*)(0x42A78FCCUL))) +#define bM4_PORT_PFSRB15_FSEL4 (*((volatile unsigned int*)(0x42A78FD0UL))) +#define bM4_PORT_PFSRB15_FSEL5 (*((volatile unsigned int*)(0x42A78FD4UL))) +#define bM4_PORT_PFSRB15_BFE (*((volatile unsigned int*)(0x42A78FE0UL))) +#define bM4_PORT_PCRC0_POUT (*((volatile unsigned int*)(0x42A79000UL))) +#define bM4_PORT_PCRC0_POUTE (*((volatile unsigned int*)(0x42A79004UL))) +#define bM4_PORT_PCRC0_NOD (*((volatile unsigned int*)(0x42A79008UL))) +#define bM4_PORT_PCRC0_DRV0 (*((volatile unsigned int*)(0x42A79010UL))) +#define bM4_PORT_PCRC0_DRV1 (*((volatile unsigned int*)(0x42A79014UL))) +#define bM4_PORT_PCRC0_PUU (*((volatile unsigned int*)(0x42A79018UL))) +#define bM4_PORT_PCRC0_PIN (*((volatile unsigned int*)(0x42A79020UL))) +#define bM4_PORT_PCRC0_INVE (*((volatile unsigned int*)(0x42A79024UL))) +#define bM4_PORT_PCRC0_INTE (*((volatile unsigned int*)(0x42A79030UL))) +#define bM4_PORT_PCRC0_LTE (*((volatile unsigned int*)(0x42A79038UL))) +#define bM4_PORT_PCRC0_DDIS (*((volatile unsigned int*)(0x42A7903CUL))) +#define bM4_PORT_PFSRC0_FSEL0 (*((volatile unsigned int*)(0x42A79040UL))) +#define bM4_PORT_PFSRC0_FSEL1 (*((volatile unsigned int*)(0x42A79044UL))) +#define bM4_PORT_PFSRC0_FSEL2 (*((volatile unsigned int*)(0x42A79048UL))) +#define bM4_PORT_PFSRC0_FSEL3 (*((volatile unsigned int*)(0x42A7904CUL))) +#define bM4_PORT_PFSRC0_FSEL4 (*((volatile unsigned int*)(0x42A79050UL))) +#define bM4_PORT_PFSRC0_FSEL5 (*((volatile unsigned int*)(0x42A79054UL))) +#define bM4_PORT_PFSRC0_BFE (*((volatile unsigned int*)(0x42A79060UL))) +#define bM4_PORT_PCRC1_POUT (*((volatile unsigned int*)(0x42A79080UL))) +#define bM4_PORT_PCRC1_POUTE (*((volatile unsigned int*)(0x42A79084UL))) +#define bM4_PORT_PCRC1_NOD (*((volatile unsigned int*)(0x42A79088UL))) +#define bM4_PORT_PCRC1_DRV0 (*((volatile unsigned int*)(0x42A79090UL))) +#define bM4_PORT_PCRC1_DRV1 (*((volatile unsigned int*)(0x42A79094UL))) +#define bM4_PORT_PCRC1_PUU (*((volatile unsigned int*)(0x42A79098UL))) +#define bM4_PORT_PCRC1_PIN (*((volatile unsigned int*)(0x42A790A0UL))) +#define bM4_PORT_PCRC1_INVE (*((volatile unsigned int*)(0x42A790A4UL))) +#define bM4_PORT_PCRC1_INTE (*((volatile unsigned int*)(0x42A790B0UL))) +#define bM4_PORT_PCRC1_LTE (*((volatile unsigned int*)(0x42A790B8UL))) +#define bM4_PORT_PCRC1_DDIS (*((volatile unsigned int*)(0x42A790BCUL))) +#define bM4_PORT_PFSRC1_FSEL0 (*((volatile unsigned int*)(0x42A790C0UL))) +#define bM4_PORT_PFSRC1_FSEL1 (*((volatile unsigned int*)(0x42A790C4UL))) +#define bM4_PORT_PFSRC1_FSEL2 (*((volatile unsigned int*)(0x42A790C8UL))) +#define bM4_PORT_PFSRC1_FSEL3 (*((volatile unsigned int*)(0x42A790CCUL))) +#define bM4_PORT_PFSRC1_FSEL4 (*((volatile unsigned int*)(0x42A790D0UL))) +#define bM4_PORT_PFSRC1_FSEL5 (*((volatile unsigned int*)(0x42A790D4UL))) +#define bM4_PORT_PFSRC1_BFE (*((volatile unsigned int*)(0x42A790E0UL))) +#define bM4_PORT_PCRC2_POUT (*((volatile unsigned int*)(0x42A79100UL))) +#define bM4_PORT_PCRC2_POUTE (*((volatile unsigned int*)(0x42A79104UL))) +#define bM4_PORT_PCRC2_NOD (*((volatile unsigned int*)(0x42A79108UL))) +#define bM4_PORT_PCRC2_DRV0 (*((volatile unsigned int*)(0x42A79110UL))) +#define bM4_PORT_PCRC2_DRV1 (*((volatile unsigned int*)(0x42A79114UL))) +#define bM4_PORT_PCRC2_PUU (*((volatile unsigned int*)(0x42A79118UL))) +#define bM4_PORT_PCRC2_PIN (*((volatile unsigned int*)(0x42A79120UL))) +#define bM4_PORT_PCRC2_INVE (*((volatile unsigned int*)(0x42A79124UL))) +#define bM4_PORT_PCRC2_INTE (*((volatile unsigned int*)(0x42A79130UL))) +#define bM4_PORT_PCRC2_LTE (*((volatile unsigned int*)(0x42A79138UL))) +#define bM4_PORT_PCRC2_DDIS (*((volatile unsigned int*)(0x42A7913CUL))) +#define bM4_PORT_PFSRC2_FSEL0 (*((volatile unsigned int*)(0x42A79140UL))) +#define bM4_PORT_PFSRC2_FSEL1 (*((volatile unsigned int*)(0x42A79144UL))) +#define bM4_PORT_PFSRC2_FSEL2 (*((volatile unsigned int*)(0x42A79148UL))) +#define bM4_PORT_PFSRC2_FSEL3 (*((volatile unsigned int*)(0x42A7914CUL))) +#define bM4_PORT_PFSRC2_FSEL4 (*((volatile unsigned int*)(0x42A79150UL))) +#define bM4_PORT_PFSRC2_FSEL5 (*((volatile unsigned int*)(0x42A79154UL))) +#define bM4_PORT_PFSRC2_BFE (*((volatile unsigned int*)(0x42A79160UL))) +#define bM4_PORT_PCRC3_POUT (*((volatile unsigned int*)(0x42A79180UL))) +#define bM4_PORT_PCRC3_POUTE (*((volatile unsigned int*)(0x42A79184UL))) +#define bM4_PORT_PCRC3_NOD (*((volatile unsigned int*)(0x42A79188UL))) +#define bM4_PORT_PCRC3_DRV0 (*((volatile unsigned int*)(0x42A79190UL))) +#define bM4_PORT_PCRC3_DRV1 (*((volatile unsigned int*)(0x42A79194UL))) +#define bM4_PORT_PCRC3_PUU (*((volatile unsigned int*)(0x42A79198UL))) +#define bM4_PORT_PCRC3_PIN (*((volatile unsigned int*)(0x42A791A0UL))) +#define bM4_PORT_PCRC3_INVE (*((volatile unsigned int*)(0x42A791A4UL))) +#define bM4_PORT_PCRC3_INTE (*((volatile unsigned int*)(0x42A791B0UL))) +#define bM4_PORT_PCRC3_LTE (*((volatile unsigned int*)(0x42A791B8UL))) +#define bM4_PORT_PCRC3_DDIS (*((volatile unsigned int*)(0x42A791BCUL))) +#define bM4_PORT_PFSRC3_FSEL0 (*((volatile unsigned int*)(0x42A791C0UL))) +#define bM4_PORT_PFSRC3_FSEL1 (*((volatile unsigned int*)(0x42A791C4UL))) +#define bM4_PORT_PFSRC3_FSEL2 (*((volatile unsigned int*)(0x42A791C8UL))) +#define bM4_PORT_PFSRC3_FSEL3 (*((volatile unsigned int*)(0x42A791CCUL))) +#define bM4_PORT_PFSRC3_FSEL4 (*((volatile unsigned int*)(0x42A791D0UL))) +#define bM4_PORT_PFSRC3_FSEL5 (*((volatile unsigned int*)(0x42A791D4UL))) +#define bM4_PORT_PFSRC3_BFE (*((volatile unsigned int*)(0x42A791E0UL))) +#define bM4_PORT_PCRC4_POUT (*((volatile unsigned int*)(0x42A79200UL))) +#define bM4_PORT_PCRC4_POUTE (*((volatile unsigned int*)(0x42A79204UL))) +#define bM4_PORT_PCRC4_NOD (*((volatile unsigned int*)(0x42A79208UL))) +#define bM4_PORT_PCRC4_DRV0 (*((volatile unsigned int*)(0x42A79210UL))) +#define bM4_PORT_PCRC4_DRV1 (*((volatile unsigned int*)(0x42A79214UL))) +#define bM4_PORT_PCRC4_PUU (*((volatile unsigned int*)(0x42A79218UL))) +#define bM4_PORT_PCRC4_PIN (*((volatile unsigned int*)(0x42A79220UL))) +#define bM4_PORT_PCRC4_INVE (*((volatile unsigned int*)(0x42A79224UL))) +#define bM4_PORT_PCRC4_INTE (*((volatile unsigned int*)(0x42A79230UL))) +#define bM4_PORT_PCRC4_LTE (*((volatile unsigned int*)(0x42A79238UL))) +#define bM4_PORT_PCRC4_DDIS (*((volatile unsigned int*)(0x42A7923CUL))) +#define bM4_PORT_PFSRC4_FSEL0 (*((volatile unsigned int*)(0x42A79240UL))) +#define bM4_PORT_PFSRC4_FSEL1 (*((volatile unsigned int*)(0x42A79244UL))) +#define bM4_PORT_PFSRC4_FSEL2 (*((volatile unsigned int*)(0x42A79248UL))) +#define bM4_PORT_PFSRC4_FSEL3 (*((volatile unsigned int*)(0x42A7924CUL))) +#define bM4_PORT_PFSRC4_FSEL4 (*((volatile unsigned int*)(0x42A79250UL))) +#define bM4_PORT_PFSRC4_FSEL5 (*((volatile unsigned int*)(0x42A79254UL))) +#define bM4_PORT_PFSRC4_BFE (*((volatile unsigned int*)(0x42A79260UL))) +#define bM4_PORT_PCRC5_POUT (*((volatile unsigned int*)(0x42A79280UL))) +#define bM4_PORT_PCRC5_POUTE (*((volatile unsigned int*)(0x42A79284UL))) +#define bM4_PORT_PCRC5_NOD (*((volatile unsigned int*)(0x42A79288UL))) +#define bM4_PORT_PCRC5_DRV0 (*((volatile unsigned int*)(0x42A79290UL))) +#define bM4_PORT_PCRC5_DRV1 (*((volatile unsigned int*)(0x42A79294UL))) +#define bM4_PORT_PCRC5_PUU (*((volatile unsigned int*)(0x42A79298UL))) +#define bM4_PORT_PCRC5_PIN (*((volatile unsigned int*)(0x42A792A0UL))) +#define bM4_PORT_PCRC5_INVE (*((volatile unsigned int*)(0x42A792A4UL))) +#define bM4_PORT_PCRC5_INTE (*((volatile unsigned int*)(0x42A792B0UL))) +#define bM4_PORT_PCRC5_LTE (*((volatile unsigned int*)(0x42A792B8UL))) +#define bM4_PORT_PCRC5_DDIS (*((volatile unsigned int*)(0x42A792BCUL))) +#define bM4_PORT_PFSRC5_FSEL0 (*((volatile unsigned int*)(0x42A792C0UL))) +#define bM4_PORT_PFSRC5_FSEL1 (*((volatile unsigned int*)(0x42A792C4UL))) +#define bM4_PORT_PFSRC5_FSEL2 (*((volatile unsigned int*)(0x42A792C8UL))) +#define bM4_PORT_PFSRC5_FSEL3 (*((volatile unsigned int*)(0x42A792CCUL))) +#define bM4_PORT_PFSRC5_FSEL4 (*((volatile unsigned int*)(0x42A792D0UL))) +#define bM4_PORT_PFSRC5_FSEL5 (*((volatile unsigned int*)(0x42A792D4UL))) +#define bM4_PORT_PFSRC5_BFE (*((volatile unsigned int*)(0x42A792E0UL))) +#define bM4_PORT_PCRC6_POUT (*((volatile unsigned int*)(0x42A79300UL))) +#define bM4_PORT_PCRC6_POUTE (*((volatile unsigned int*)(0x42A79304UL))) +#define bM4_PORT_PCRC6_NOD (*((volatile unsigned int*)(0x42A79308UL))) +#define bM4_PORT_PCRC6_DRV0 (*((volatile unsigned int*)(0x42A79310UL))) +#define bM4_PORT_PCRC6_DRV1 (*((volatile unsigned int*)(0x42A79314UL))) +#define bM4_PORT_PCRC6_PUU (*((volatile unsigned int*)(0x42A79318UL))) +#define bM4_PORT_PCRC6_PIN (*((volatile unsigned int*)(0x42A79320UL))) +#define bM4_PORT_PCRC6_INVE (*((volatile unsigned int*)(0x42A79324UL))) +#define bM4_PORT_PCRC6_INTE (*((volatile unsigned int*)(0x42A79330UL))) +#define bM4_PORT_PCRC6_LTE (*((volatile unsigned int*)(0x42A79338UL))) +#define bM4_PORT_PCRC6_DDIS (*((volatile unsigned int*)(0x42A7933CUL))) +#define bM4_PORT_PFSRC6_FSEL0 (*((volatile unsigned int*)(0x42A79340UL))) +#define bM4_PORT_PFSRC6_FSEL1 (*((volatile unsigned int*)(0x42A79344UL))) +#define bM4_PORT_PFSRC6_FSEL2 (*((volatile unsigned int*)(0x42A79348UL))) +#define bM4_PORT_PFSRC6_FSEL3 (*((volatile unsigned int*)(0x42A7934CUL))) +#define bM4_PORT_PFSRC6_FSEL4 (*((volatile unsigned int*)(0x42A79350UL))) +#define bM4_PORT_PFSRC6_FSEL5 (*((volatile unsigned int*)(0x42A79354UL))) +#define bM4_PORT_PFSRC6_BFE (*((volatile unsigned int*)(0x42A79360UL))) +#define bM4_PORT_PCRC7_POUT (*((volatile unsigned int*)(0x42A79380UL))) +#define bM4_PORT_PCRC7_POUTE (*((volatile unsigned int*)(0x42A79384UL))) +#define bM4_PORT_PCRC7_NOD (*((volatile unsigned int*)(0x42A79388UL))) +#define bM4_PORT_PCRC7_DRV0 (*((volatile unsigned int*)(0x42A79390UL))) +#define bM4_PORT_PCRC7_DRV1 (*((volatile unsigned int*)(0x42A79394UL))) +#define bM4_PORT_PCRC7_PUU (*((volatile unsigned int*)(0x42A79398UL))) +#define bM4_PORT_PCRC7_PIN (*((volatile unsigned int*)(0x42A793A0UL))) +#define bM4_PORT_PCRC7_INVE (*((volatile unsigned int*)(0x42A793A4UL))) +#define bM4_PORT_PCRC7_INTE (*((volatile unsigned int*)(0x42A793B0UL))) +#define bM4_PORT_PCRC7_LTE (*((volatile unsigned int*)(0x42A793B8UL))) +#define bM4_PORT_PCRC7_DDIS (*((volatile unsigned int*)(0x42A793BCUL))) +#define bM4_PORT_PFSRC7_FSEL0 (*((volatile unsigned int*)(0x42A793C0UL))) +#define bM4_PORT_PFSRC7_FSEL1 (*((volatile unsigned int*)(0x42A793C4UL))) +#define bM4_PORT_PFSRC7_FSEL2 (*((volatile unsigned int*)(0x42A793C8UL))) +#define bM4_PORT_PFSRC7_FSEL3 (*((volatile unsigned int*)(0x42A793CCUL))) +#define bM4_PORT_PFSRC7_FSEL4 (*((volatile unsigned int*)(0x42A793D0UL))) +#define bM4_PORT_PFSRC7_FSEL5 (*((volatile unsigned int*)(0x42A793D4UL))) +#define bM4_PORT_PFSRC7_BFE (*((volatile unsigned int*)(0x42A793E0UL))) +#define bM4_PORT_PCRC8_POUT (*((volatile unsigned int*)(0x42A79400UL))) +#define bM4_PORT_PCRC8_POUTE (*((volatile unsigned int*)(0x42A79404UL))) +#define bM4_PORT_PCRC8_NOD (*((volatile unsigned int*)(0x42A79408UL))) +#define bM4_PORT_PCRC8_DRV0 (*((volatile unsigned int*)(0x42A79410UL))) +#define bM4_PORT_PCRC8_DRV1 (*((volatile unsigned int*)(0x42A79414UL))) +#define bM4_PORT_PCRC8_PUU (*((volatile unsigned int*)(0x42A79418UL))) +#define bM4_PORT_PCRC8_PIN (*((volatile unsigned int*)(0x42A79420UL))) +#define bM4_PORT_PCRC8_INVE (*((volatile unsigned int*)(0x42A79424UL))) +#define bM4_PORT_PCRC8_INTE (*((volatile unsigned int*)(0x42A79430UL))) +#define bM4_PORT_PCRC8_LTE (*((volatile unsigned int*)(0x42A79438UL))) +#define bM4_PORT_PCRC8_DDIS (*((volatile unsigned int*)(0x42A7943CUL))) +#define bM4_PORT_PFSRC8_FSEL0 (*((volatile unsigned int*)(0x42A79440UL))) +#define bM4_PORT_PFSRC8_FSEL1 (*((volatile unsigned int*)(0x42A79444UL))) +#define bM4_PORT_PFSRC8_FSEL2 (*((volatile unsigned int*)(0x42A79448UL))) +#define bM4_PORT_PFSRC8_FSEL3 (*((volatile unsigned int*)(0x42A7944CUL))) +#define bM4_PORT_PFSRC8_FSEL4 (*((volatile unsigned int*)(0x42A79450UL))) +#define bM4_PORT_PFSRC8_FSEL5 (*((volatile unsigned int*)(0x42A79454UL))) +#define bM4_PORT_PFSRC8_BFE (*((volatile unsigned int*)(0x42A79460UL))) +#define bM4_PORT_PCRC9_POUT (*((volatile unsigned int*)(0x42A79480UL))) +#define bM4_PORT_PCRC9_POUTE (*((volatile unsigned int*)(0x42A79484UL))) +#define bM4_PORT_PCRC9_NOD (*((volatile unsigned int*)(0x42A79488UL))) +#define bM4_PORT_PCRC9_DRV0 (*((volatile unsigned int*)(0x42A79490UL))) +#define bM4_PORT_PCRC9_DRV1 (*((volatile unsigned int*)(0x42A79494UL))) +#define bM4_PORT_PCRC9_PUU (*((volatile unsigned int*)(0x42A79498UL))) +#define bM4_PORT_PCRC9_PIN (*((volatile unsigned int*)(0x42A794A0UL))) +#define bM4_PORT_PCRC9_INVE (*((volatile unsigned int*)(0x42A794A4UL))) +#define bM4_PORT_PCRC9_INTE (*((volatile unsigned int*)(0x42A794B0UL))) +#define bM4_PORT_PCRC9_LTE (*((volatile unsigned int*)(0x42A794B8UL))) +#define bM4_PORT_PCRC9_DDIS (*((volatile unsigned int*)(0x42A794BCUL))) +#define bM4_PORT_PFSRC9_FSEL0 (*((volatile unsigned int*)(0x42A794C0UL))) +#define bM4_PORT_PFSRC9_FSEL1 (*((volatile unsigned int*)(0x42A794C4UL))) +#define bM4_PORT_PFSRC9_FSEL2 (*((volatile unsigned int*)(0x42A794C8UL))) +#define bM4_PORT_PFSRC9_FSEL3 (*((volatile unsigned int*)(0x42A794CCUL))) +#define bM4_PORT_PFSRC9_FSEL4 (*((volatile unsigned int*)(0x42A794D0UL))) +#define bM4_PORT_PFSRC9_FSEL5 (*((volatile unsigned int*)(0x42A794D4UL))) +#define bM4_PORT_PFSRC9_BFE (*((volatile unsigned int*)(0x42A794E0UL))) +#define bM4_PORT_PCRC10_POUT (*((volatile unsigned int*)(0x42A79500UL))) +#define bM4_PORT_PCRC10_POUTE (*((volatile unsigned int*)(0x42A79504UL))) +#define bM4_PORT_PCRC10_NOD (*((volatile unsigned int*)(0x42A79508UL))) +#define bM4_PORT_PCRC10_DRV0 (*((volatile unsigned int*)(0x42A79510UL))) +#define bM4_PORT_PCRC10_DRV1 (*((volatile unsigned int*)(0x42A79514UL))) +#define bM4_PORT_PCRC10_PUU (*((volatile unsigned int*)(0x42A79518UL))) +#define bM4_PORT_PCRC10_PIN (*((volatile unsigned int*)(0x42A79520UL))) +#define bM4_PORT_PCRC10_INVE (*((volatile unsigned int*)(0x42A79524UL))) +#define bM4_PORT_PCRC10_INTE (*((volatile unsigned int*)(0x42A79530UL))) +#define bM4_PORT_PCRC10_LTE (*((volatile unsigned int*)(0x42A79538UL))) +#define bM4_PORT_PCRC10_DDIS (*((volatile unsigned int*)(0x42A7953CUL))) +#define bM4_PORT_PFSRC10_FSEL0 (*((volatile unsigned int*)(0x42A79540UL))) +#define bM4_PORT_PFSRC10_FSEL1 (*((volatile unsigned int*)(0x42A79544UL))) +#define bM4_PORT_PFSRC10_FSEL2 (*((volatile unsigned int*)(0x42A79548UL))) +#define bM4_PORT_PFSRC10_FSEL3 (*((volatile unsigned int*)(0x42A7954CUL))) +#define bM4_PORT_PFSRC10_FSEL4 (*((volatile unsigned int*)(0x42A79550UL))) +#define bM4_PORT_PFSRC10_FSEL5 (*((volatile unsigned int*)(0x42A79554UL))) +#define bM4_PORT_PFSRC10_BFE (*((volatile unsigned int*)(0x42A79560UL))) +#define bM4_PORT_PCRC11_POUT (*((volatile unsigned int*)(0x42A79580UL))) +#define bM4_PORT_PCRC11_POUTE (*((volatile unsigned int*)(0x42A79584UL))) +#define bM4_PORT_PCRC11_NOD (*((volatile unsigned int*)(0x42A79588UL))) +#define bM4_PORT_PCRC11_DRV0 (*((volatile unsigned int*)(0x42A79590UL))) +#define bM4_PORT_PCRC11_DRV1 (*((volatile unsigned int*)(0x42A79594UL))) +#define bM4_PORT_PCRC11_PUU (*((volatile unsigned int*)(0x42A79598UL))) +#define bM4_PORT_PCRC11_PIN (*((volatile unsigned int*)(0x42A795A0UL))) +#define bM4_PORT_PCRC11_INVE (*((volatile unsigned int*)(0x42A795A4UL))) +#define bM4_PORT_PCRC11_INTE (*((volatile unsigned int*)(0x42A795B0UL))) +#define bM4_PORT_PCRC11_LTE (*((volatile unsigned int*)(0x42A795B8UL))) +#define bM4_PORT_PCRC11_DDIS (*((volatile unsigned int*)(0x42A795BCUL))) +#define bM4_PORT_PFSRC11_FSEL0 (*((volatile unsigned int*)(0x42A795C0UL))) +#define bM4_PORT_PFSRC11_FSEL1 (*((volatile unsigned int*)(0x42A795C4UL))) +#define bM4_PORT_PFSRC11_FSEL2 (*((volatile unsigned int*)(0x42A795C8UL))) +#define bM4_PORT_PFSRC11_FSEL3 (*((volatile unsigned int*)(0x42A795CCUL))) +#define bM4_PORT_PFSRC11_FSEL4 (*((volatile unsigned int*)(0x42A795D0UL))) +#define bM4_PORT_PFSRC11_FSEL5 (*((volatile unsigned int*)(0x42A795D4UL))) +#define bM4_PORT_PFSRC11_BFE (*((volatile unsigned int*)(0x42A795E0UL))) +#define bM4_PORT_PCRC12_POUT (*((volatile unsigned int*)(0x42A79600UL))) +#define bM4_PORT_PCRC12_POUTE (*((volatile unsigned int*)(0x42A79604UL))) +#define bM4_PORT_PCRC12_NOD (*((volatile unsigned int*)(0x42A79608UL))) +#define bM4_PORT_PCRC12_DRV0 (*((volatile unsigned int*)(0x42A79610UL))) +#define bM4_PORT_PCRC12_DRV1 (*((volatile unsigned int*)(0x42A79614UL))) +#define bM4_PORT_PCRC12_PUU (*((volatile unsigned int*)(0x42A79618UL))) +#define bM4_PORT_PCRC12_PIN (*((volatile unsigned int*)(0x42A79620UL))) +#define bM4_PORT_PCRC12_INVE (*((volatile unsigned int*)(0x42A79624UL))) +#define bM4_PORT_PCRC12_INTE (*((volatile unsigned int*)(0x42A79630UL))) +#define bM4_PORT_PCRC12_LTE (*((volatile unsigned int*)(0x42A79638UL))) +#define bM4_PORT_PCRC12_DDIS (*((volatile unsigned int*)(0x42A7963CUL))) +#define bM4_PORT_PFSRC12_FSEL0 (*((volatile unsigned int*)(0x42A79640UL))) +#define bM4_PORT_PFSRC12_FSEL1 (*((volatile unsigned int*)(0x42A79644UL))) +#define bM4_PORT_PFSRC12_FSEL2 (*((volatile unsigned int*)(0x42A79648UL))) +#define bM4_PORT_PFSRC12_FSEL3 (*((volatile unsigned int*)(0x42A7964CUL))) +#define bM4_PORT_PFSRC12_FSEL4 (*((volatile unsigned int*)(0x42A79650UL))) +#define bM4_PORT_PFSRC12_FSEL5 (*((volatile unsigned int*)(0x42A79654UL))) +#define bM4_PORT_PFSRC12_BFE (*((volatile unsigned int*)(0x42A79660UL))) +#define bM4_PORT_PCRC13_POUT (*((volatile unsigned int*)(0x42A79680UL))) +#define bM4_PORT_PCRC13_POUTE (*((volatile unsigned int*)(0x42A79684UL))) +#define bM4_PORT_PCRC13_NOD (*((volatile unsigned int*)(0x42A79688UL))) +#define bM4_PORT_PCRC13_DRV0 (*((volatile unsigned int*)(0x42A79690UL))) +#define bM4_PORT_PCRC13_DRV1 (*((volatile unsigned int*)(0x42A79694UL))) +#define bM4_PORT_PCRC13_PUU (*((volatile unsigned int*)(0x42A79698UL))) +#define bM4_PORT_PCRC13_PIN (*((volatile unsigned int*)(0x42A796A0UL))) +#define bM4_PORT_PCRC13_INVE (*((volatile unsigned int*)(0x42A796A4UL))) +#define bM4_PORT_PCRC13_INTE (*((volatile unsigned int*)(0x42A796B0UL))) +#define bM4_PORT_PCRC13_LTE (*((volatile unsigned int*)(0x42A796B8UL))) +#define bM4_PORT_PCRC13_DDIS (*((volatile unsigned int*)(0x42A796BCUL))) +#define bM4_PORT_PFSRC13_FSEL0 (*((volatile unsigned int*)(0x42A796C0UL))) +#define bM4_PORT_PFSRC13_FSEL1 (*((volatile unsigned int*)(0x42A796C4UL))) +#define bM4_PORT_PFSRC13_FSEL2 (*((volatile unsigned int*)(0x42A796C8UL))) +#define bM4_PORT_PFSRC13_FSEL3 (*((volatile unsigned int*)(0x42A796CCUL))) +#define bM4_PORT_PFSRC13_FSEL4 (*((volatile unsigned int*)(0x42A796D0UL))) +#define bM4_PORT_PFSRC13_FSEL5 (*((volatile unsigned int*)(0x42A796D4UL))) +#define bM4_PORT_PFSRC13_BFE (*((volatile unsigned int*)(0x42A796E0UL))) +#define bM4_PORT_PCRC14_POUT (*((volatile unsigned int*)(0x42A79700UL))) +#define bM4_PORT_PCRC14_POUTE (*((volatile unsigned int*)(0x42A79704UL))) +#define bM4_PORT_PCRC14_NOD (*((volatile unsigned int*)(0x42A79708UL))) +#define bM4_PORT_PCRC14_DRV0 (*((volatile unsigned int*)(0x42A79710UL))) +#define bM4_PORT_PCRC14_DRV1 (*((volatile unsigned int*)(0x42A79714UL))) +#define bM4_PORT_PCRC14_PUU (*((volatile unsigned int*)(0x42A79718UL))) +#define bM4_PORT_PCRC14_PIN (*((volatile unsigned int*)(0x42A79720UL))) +#define bM4_PORT_PCRC14_INVE (*((volatile unsigned int*)(0x42A79724UL))) +#define bM4_PORT_PCRC14_INTE (*((volatile unsigned int*)(0x42A79730UL))) +#define bM4_PORT_PCRC14_LTE (*((volatile unsigned int*)(0x42A79738UL))) +#define bM4_PORT_PCRC14_DDIS (*((volatile unsigned int*)(0x42A7973CUL))) +#define bM4_PORT_PFSRC14_FSEL0 (*((volatile unsigned int*)(0x42A79740UL))) +#define bM4_PORT_PFSRC14_FSEL1 (*((volatile unsigned int*)(0x42A79744UL))) +#define bM4_PORT_PFSRC14_FSEL2 (*((volatile unsigned int*)(0x42A79748UL))) +#define bM4_PORT_PFSRC14_FSEL3 (*((volatile unsigned int*)(0x42A7974CUL))) +#define bM4_PORT_PFSRC14_FSEL4 (*((volatile unsigned int*)(0x42A79750UL))) +#define bM4_PORT_PFSRC14_FSEL5 (*((volatile unsigned int*)(0x42A79754UL))) +#define bM4_PORT_PFSRC14_BFE (*((volatile unsigned int*)(0x42A79760UL))) +#define bM4_PORT_PCRC15_POUT (*((volatile unsigned int*)(0x42A79780UL))) +#define bM4_PORT_PCRC15_POUTE (*((volatile unsigned int*)(0x42A79784UL))) +#define bM4_PORT_PCRC15_NOD (*((volatile unsigned int*)(0x42A79788UL))) +#define bM4_PORT_PCRC15_DRV0 (*((volatile unsigned int*)(0x42A79790UL))) +#define bM4_PORT_PCRC15_DRV1 (*((volatile unsigned int*)(0x42A79794UL))) +#define bM4_PORT_PCRC15_PUU (*((volatile unsigned int*)(0x42A79798UL))) +#define bM4_PORT_PCRC15_PIN (*((volatile unsigned int*)(0x42A797A0UL))) +#define bM4_PORT_PCRC15_INVE (*((volatile unsigned int*)(0x42A797A4UL))) +#define bM4_PORT_PCRC15_INTE (*((volatile unsigned int*)(0x42A797B0UL))) +#define bM4_PORT_PCRC15_LTE (*((volatile unsigned int*)(0x42A797B8UL))) +#define bM4_PORT_PCRC15_DDIS (*((volatile unsigned int*)(0x42A797BCUL))) +#define bM4_PORT_PFSRC15_FSEL0 (*((volatile unsigned int*)(0x42A797C0UL))) +#define bM4_PORT_PFSRC15_FSEL1 (*((volatile unsigned int*)(0x42A797C4UL))) +#define bM4_PORT_PFSRC15_FSEL2 (*((volatile unsigned int*)(0x42A797C8UL))) +#define bM4_PORT_PFSRC15_FSEL3 (*((volatile unsigned int*)(0x42A797CCUL))) +#define bM4_PORT_PFSRC15_FSEL4 (*((volatile unsigned int*)(0x42A797D0UL))) +#define bM4_PORT_PFSRC15_FSEL5 (*((volatile unsigned int*)(0x42A797D4UL))) +#define bM4_PORT_PFSRC15_BFE (*((volatile unsigned int*)(0x42A797E0UL))) +#define bM4_PORT_PCRD0_POUT (*((volatile unsigned int*)(0x42A79800UL))) +#define bM4_PORT_PCRD0_POUTE (*((volatile unsigned int*)(0x42A79804UL))) +#define bM4_PORT_PCRD0_NOD (*((volatile unsigned int*)(0x42A79808UL))) +#define bM4_PORT_PCRD0_DRV0 (*((volatile unsigned int*)(0x42A79810UL))) +#define bM4_PORT_PCRD0_DRV1 (*((volatile unsigned int*)(0x42A79814UL))) +#define bM4_PORT_PCRD0_PUU (*((volatile unsigned int*)(0x42A79818UL))) +#define bM4_PORT_PCRD0_PIN (*((volatile unsigned int*)(0x42A79820UL))) +#define bM4_PORT_PCRD0_INVE (*((volatile unsigned int*)(0x42A79824UL))) +#define bM4_PORT_PCRD0_INTE (*((volatile unsigned int*)(0x42A79830UL))) +#define bM4_PORT_PCRD0_LTE (*((volatile unsigned int*)(0x42A79838UL))) +#define bM4_PORT_PCRD0_DDIS (*((volatile unsigned int*)(0x42A7983CUL))) +#define bM4_PORT_PFSRD0_FSEL0 (*((volatile unsigned int*)(0x42A79840UL))) +#define bM4_PORT_PFSRD0_FSEL1 (*((volatile unsigned int*)(0x42A79844UL))) +#define bM4_PORT_PFSRD0_FSEL2 (*((volatile unsigned int*)(0x42A79848UL))) +#define bM4_PORT_PFSRD0_FSEL3 (*((volatile unsigned int*)(0x42A7984CUL))) +#define bM4_PORT_PFSRD0_FSEL4 (*((volatile unsigned int*)(0x42A79850UL))) +#define bM4_PORT_PFSRD0_FSEL5 (*((volatile unsigned int*)(0x42A79854UL))) +#define bM4_PORT_PFSRD0_BFE (*((volatile unsigned int*)(0x42A79860UL))) +#define bM4_PORT_PCRD1_POUT (*((volatile unsigned int*)(0x42A79880UL))) +#define bM4_PORT_PCRD1_POUTE (*((volatile unsigned int*)(0x42A79884UL))) +#define bM4_PORT_PCRD1_NOD (*((volatile unsigned int*)(0x42A79888UL))) +#define bM4_PORT_PCRD1_DRV0 (*((volatile unsigned int*)(0x42A79890UL))) +#define bM4_PORT_PCRD1_DRV1 (*((volatile unsigned int*)(0x42A79894UL))) +#define bM4_PORT_PCRD1_PUU (*((volatile unsigned int*)(0x42A79898UL))) +#define bM4_PORT_PCRD1_PIN (*((volatile unsigned int*)(0x42A798A0UL))) +#define bM4_PORT_PCRD1_INVE (*((volatile unsigned int*)(0x42A798A4UL))) +#define bM4_PORT_PCRD1_INTE (*((volatile unsigned int*)(0x42A798B0UL))) +#define bM4_PORT_PCRD1_LTE (*((volatile unsigned int*)(0x42A798B8UL))) +#define bM4_PORT_PCRD1_DDIS (*((volatile unsigned int*)(0x42A798BCUL))) +#define bM4_PORT_PFSRD1_FSEL0 (*((volatile unsigned int*)(0x42A798C0UL))) +#define bM4_PORT_PFSRD1_FSEL1 (*((volatile unsigned int*)(0x42A798C4UL))) +#define bM4_PORT_PFSRD1_FSEL2 (*((volatile unsigned int*)(0x42A798C8UL))) +#define bM4_PORT_PFSRD1_FSEL3 (*((volatile unsigned int*)(0x42A798CCUL))) +#define bM4_PORT_PFSRD1_FSEL4 (*((volatile unsigned int*)(0x42A798D0UL))) +#define bM4_PORT_PFSRD1_FSEL5 (*((volatile unsigned int*)(0x42A798D4UL))) +#define bM4_PORT_PFSRD1_BFE (*((volatile unsigned int*)(0x42A798E0UL))) +#define bM4_PORT_PCRD2_POUT (*((volatile unsigned int*)(0x42A79900UL))) +#define bM4_PORT_PCRD2_POUTE (*((volatile unsigned int*)(0x42A79904UL))) +#define bM4_PORT_PCRD2_NOD (*((volatile unsigned int*)(0x42A79908UL))) +#define bM4_PORT_PCRD2_DRV0 (*((volatile unsigned int*)(0x42A79910UL))) +#define bM4_PORT_PCRD2_DRV1 (*((volatile unsigned int*)(0x42A79914UL))) +#define bM4_PORT_PCRD2_PUU (*((volatile unsigned int*)(0x42A79918UL))) +#define bM4_PORT_PCRD2_PIN (*((volatile unsigned int*)(0x42A79920UL))) +#define bM4_PORT_PCRD2_INVE (*((volatile unsigned int*)(0x42A79924UL))) +#define bM4_PORT_PCRD2_INTE (*((volatile unsigned int*)(0x42A79930UL))) +#define bM4_PORT_PCRD2_LTE (*((volatile unsigned int*)(0x42A79938UL))) +#define bM4_PORT_PCRD2_DDIS (*((volatile unsigned int*)(0x42A7993CUL))) +#define bM4_PORT_PFSRD2_FSEL0 (*((volatile unsigned int*)(0x42A79940UL))) +#define bM4_PORT_PFSRD2_FSEL1 (*((volatile unsigned int*)(0x42A79944UL))) +#define bM4_PORT_PFSRD2_FSEL2 (*((volatile unsigned int*)(0x42A79948UL))) +#define bM4_PORT_PFSRD2_FSEL3 (*((volatile unsigned int*)(0x42A7994CUL))) +#define bM4_PORT_PFSRD2_FSEL4 (*((volatile unsigned int*)(0x42A79950UL))) +#define bM4_PORT_PFSRD2_FSEL5 (*((volatile unsigned int*)(0x42A79954UL))) +#define bM4_PORT_PFSRD2_BFE (*((volatile unsigned int*)(0x42A79960UL))) +#define bM4_PORT_PCRD3_POUT (*((volatile unsigned int*)(0x42A79980UL))) +#define bM4_PORT_PCRD3_POUTE (*((volatile unsigned int*)(0x42A79984UL))) +#define bM4_PORT_PCRD3_NOD (*((volatile unsigned int*)(0x42A79988UL))) +#define bM4_PORT_PCRD3_DRV0 (*((volatile unsigned int*)(0x42A79990UL))) +#define bM4_PORT_PCRD3_DRV1 (*((volatile unsigned int*)(0x42A79994UL))) +#define bM4_PORT_PCRD3_PUU (*((volatile unsigned int*)(0x42A79998UL))) +#define bM4_PORT_PCRD3_PIN (*((volatile unsigned int*)(0x42A799A0UL))) +#define bM4_PORT_PCRD3_INVE (*((volatile unsigned int*)(0x42A799A4UL))) +#define bM4_PORT_PCRD3_INTE (*((volatile unsigned int*)(0x42A799B0UL))) +#define bM4_PORT_PCRD3_LTE (*((volatile unsigned int*)(0x42A799B8UL))) +#define bM4_PORT_PCRD3_DDIS (*((volatile unsigned int*)(0x42A799BCUL))) +#define bM4_PORT_PFSRD3_FSEL0 (*((volatile unsigned int*)(0x42A799C0UL))) +#define bM4_PORT_PFSRD3_FSEL1 (*((volatile unsigned int*)(0x42A799C4UL))) +#define bM4_PORT_PFSRD3_FSEL2 (*((volatile unsigned int*)(0x42A799C8UL))) +#define bM4_PORT_PFSRD3_FSEL3 (*((volatile unsigned int*)(0x42A799CCUL))) +#define bM4_PORT_PFSRD3_FSEL4 (*((volatile unsigned int*)(0x42A799D0UL))) +#define bM4_PORT_PFSRD3_FSEL5 (*((volatile unsigned int*)(0x42A799D4UL))) +#define bM4_PORT_PFSRD3_BFE (*((volatile unsigned int*)(0x42A799E0UL))) +#define bM4_PORT_PCRD4_POUT (*((volatile unsigned int*)(0x42A79A00UL))) +#define bM4_PORT_PCRD4_POUTE (*((volatile unsigned int*)(0x42A79A04UL))) +#define bM4_PORT_PCRD4_NOD (*((volatile unsigned int*)(0x42A79A08UL))) +#define bM4_PORT_PCRD4_DRV0 (*((volatile unsigned int*)(0x42A79A10UL))) +#define bM4_PORT_PCRD4_DRV1 (*((volatile unsigned int*)(0x42A79A14UL))) +#define bM4_PORT_PCRD4_PUU (*((volatile unsigned int*)(0x42A79A18UL))) +#define bM4_PORT_PCRD4_PIN (*((volatile unsigned int*)(0x42A79A20UL))) +#define bM4_PORT_PCRD4_INVE (*((volatile unsigned int*)(0x42A79A24UL))) +#define bM4_PORT_PCRD4_INTE (*((volatile unsigned int*)(0x42A79A30UL))) +#define bM4_PORT_PCRD4_LTE (*((volatile unsigned int*)(0x42A79A38UL))) +#define bM4_PORT_PCRD4_DDIS (*((volatile unsigned int*)(0x42A79A3CUL))) +#define bM4_PORT_PFSRD4_FSEL0 (*((volatile unsigned int*)(0x42A79A40UL))) +#define bM4_PORT_PFSRD4_FSEL1 (*((volatile unsigned int*)(0x42A79A44UL))) +#define bM4_PORT_PFSRD4_FSEL2 (*((volatile unsigned int*)(0x42A79A48UL))) +#define bM4_PORT_PFSRD4_FSEL3 (*((volatile unsigned int*)(0x42A79A4CUL))) +#define bM4_PORT_PFSRD4_FSEL4 (*((volatile unsigned int*)(0x42A79A50UL))) +#define bM4_PORT_PFSRD4_FSEL5 (*((volatile unsigned int*)(0x42A79A54UL))) +#define bM4_PORT_PFSRD4_BFE (*((volatile unsigned int*)(0x42A79A60UL))) +#define bM4_PORT_PCRD5_POUT (*((volatile unsigned int*)(0x42A79A80UL))) +#define bM4_PORT_PCRD5_POUTE (*((volatile unsigned int*)(0x42A79A84UL))) +#define bM4_PORT_PCRD5_NOD (*((volatile unsigned int*)(0x42A79A88UL))) +#define bM4_PORT_PCRD5_DRV0 (*((volatile unsigned int*)(0x42A79A90UL))) +#define bM4_PORT_PCRD5_DRV1 (*((volatile unsigned int*)(0x42A79A94UL))) +#define bM4_PORT_PCRD5_PUU (*((volatile unsigned int*)(0x42A79A98UL))) +#define bM4_PORT_PCRD5_PIN (*((volatile unsigned int*)(0x42A79AA0UL))) +#define bM4_PORT_PCRD5_INVE (*((volatile unsigned int*)(0x42A79AA4UL))) +#define bM4_PORT_PCRD5_INTE (*((volatile unsigned int*)(0x42A79AB0UL))) +#define bM4_PORT_PCRD5_LTE (*((volatile unsigned int*)(0x42A79AB8UL))) +#define bM4_PORT_PCRD5_DDIS (*((volatile unsigned int*)(0x42A79ABCUL))) +#define bM4_PORT_PFSRD5_FSEL0 (*((volatile unsigned int*)(0x42A79AC0UL))) +#define bM4_PORT_PFSRD5_FSEL1 (*((volatile unsigned int*)(0x42A79AC4UL))) +#define bM4_PORT_PFSRD5_FSEL2 (*((volatile unsigned int*)(0x42A79AC8UL))) +#define bM4_PORT_PFSRD5_FSEL3 (*((volatile unsigned int*)(0x42A79ACCUL))) +#define bM4_PORT_PFSRD5_FSEL4 (*((volatile unsigned int*)(0x42A79AD0UL))) +#define bM4_PORT_PFSRD5_FSEL5 (*((volatile unsigned int*)(0x42A79AD4UL))) +#define bM4_PORT_PFSRD5_BFE (*((volatile unsigned int*)(0x42A79AE0UL))) +#define bM4_PORT_PCRD6_POUT (*((volatile unsigned int*)(0x42A79B00UL))) +#define bM4_PORT_PCRD6_POUTE (*((volatile unsigned int*)(0x42A79B04UL))) +#define bM4_PORT_PCRD6_NOD (*((volatile unsigned int*)(0x42A79B08UL))) +#define bM4_PORT_PCRD6_DRV0 (*((volatile unsigned int*)(0x42A79B10UL))) +#define bM4_PORT_PCRD6_DRV1 (*((volatile unsigned int*)(0x42A79B14UL))) +#define bM4_PORT_PCRD6_PUU (*((volatile unsigned int*)(0x42A79B18UL))) +#define bM4_PORT_PCRD6_PIN (*((volatile unsigned int*)(0x42A79B20UL))) +#define bM4_PORT_PCRD6_INVE (*((volatile unsigned int*)(0x42A79B24UL))) +#define bM4_PORT_PCRD6_INTE (*((volatile unsigned int*)(0x42A79B30UL))) +#define bM4_PORT_PCRD6_LTE (*((volatile unsigned int*)(0x42A79B38UL))) +#define bM4_PORT_PCRD6_DDIS (*((volatile unsigned int*)(0x42A79B3CUL))) +#define bM4_PORT_PFSRD6_FSEL0 (*((volatile unsigned int*)(0x42A79B40UL))) +#define bM4_PORT_PFSRD6_FSEL1 (*((volatile unsigned int*)(0x42A79B44UL))) +#define bM4_PORT_PFSRD6_FSEL2 (*((volatile unsigned int*)(0x42A79B48UL))) +#define bM4_PORT_PFSRD6_FSEL3 (*((volatile unsigned int*)(0x42A79B4CUL))) +#define bM4_PORT_PFSRD6_FSEL4 (*((volatile unsigned int*)(0x42A79B50UL))) +#define bM4_PORT_PFSRD6_FSEL5 (*((volatile unsigned int*)(0x42A79B54UL))) +#define bM4_PORT_PFSRD6_BFE (*((volatile unsigned int*)(0x42A79B60UL))) +#define bM4_PORT_PCRD7_POUT (*((volatile unsigned int*)(0x42A79B80UL))) +#define bM4_PORT_PCRD7_POUTE (*((volatile unsigned int*)(0x42A79B84UL))) +#define bM4_PORT_PCRD7_NOD (*((volatile unsigned int*)(0x42A79B88UL))) +#define bM4_PORT_PCRD7_DRV0 (*((volatile unsigned int*)(0x42A79B90UL))) +#define bM4_PORT_PCRD7_DRV1 (*((volatile unsigned int*)(0x42A79B94UL))) +#define bM4_PORT_PCRD7_PUU (*((volatile unsigned int*)(0x42A79B98UL))) +#define bM4_PORT_PCRD7_PIN (*((volatile unsigned int*)(0x42A79BA0UL))) +#define bM4_PORT_PCRD7_INVE (*((volatile unsigned int*)(0x42A79BA4UL))) +#define bM4_PORT_PCRD7_INTE (*((volatile unsigned int*)(0x42A79BB0UL))) +#define bM4_PORT_PCRD7_LTE (*((volatile unsigned int*)(0x42A79BB8UL))) +#define bM4_PORT_PCRD7_DDIS (*((volatile unsigned int*)(0x42A79BBCUL))) +#define bM4_PORT_PFSRD7_FSEL0 (*((volatile unsigned int*)(0x42A79BC0UL))) +#define bM4_PORT_PFSRD7_FSEL1 (*((volatile unsigned int*)(0x42A79BC4UL))) +#define bM4_PORT_PFSRD7_FSEL2 (*((volatile unsigned int*)(0x42A79BC8UL))) +#define bM4_PORT_PFSRD7_FSEL3 (*((volatile unsigned int*)(0x42A79BCCUL))) +#define bM4_PORT_PFSRD7_FSEL4 (*((volatile unsigned int*)(0x42A79BD0UL))) +#define bM4_PORT_PFSRD7_FSEL5 (*((volatile unsigned int*)(0x42A79BD4UL))) +#define bM4_PORT_PFSRD7_BFE (*((volatile unsigned int*)(0x42A79BE0UL))) +#define bM4_PORT_PCRD8_POUT (*((volatile unsigned int*)(0x42A79C00UL))) +#define bM4_PORT_PCRD8_POUTE (*((volatile unsigned int*)(0x42A79C04UL))) +#define bM4_PORT_PCRD8_NOD (*((volatile unsigned int*)(0x42A79C08UL))) +#define bM4_PORT_PCRD8_DRV0 (*((volatile unsigned int*)(0x42A79C10UL))) +#define bM4_PORT_PCRD8_DRV1 (*((volatile unsigned int*)(0x42A79C14UL))) +#define bM4_PORT_PCRD8_PUU (*((volatile unsigned int*)(0x42A79C18UL))) +#define bM4_PORT_PCRD8_PIN (*((volatile unsigned int*)(0x42A79C20UL))) +#define bM4_PORT_PCRD8_INVE (*((volatile unsigned int*)(0x42A79C24UL))) +#define bM4_PORT_PCRD8_INTE (*((volatile unsigned int*)(0x42A79C30UL))) +#define bM4_PORT_PCRD8_LTE (*((volatile unsigned int*)(0x42A79C38UL))) +#define bM4_PORT_PCRD8_DDIS (*((volatile unsigned int*)(0x42A79C3CUL))) +#define bM4_PORT_PFSRD8_FSEL0 (*((volatile unsigned int*)(0x42A79C40UL))) +#define bM4_PORT_PFSRD8_FSEL1 (*((volatile unsigned int*)(0x42A79C44UL))) +#define bM4_PORT_PFSRD8_FSEL2 (*((volatile unsigned int*)(0x42A79C48UL))) +#define bM4_PORT_PFSRD8_FSEL3 (*((volatile unsigned int*)(0x42A79C4CUL))) +#define bM4_PORT_PFSRD8_FSEL4 (*((volatile unsigned int*)(0x42A79C50UL))) +#define bM4_PORT_PFSRD8_FSEL5 (*((volatile unsigned int*)(0x42A79C54UL))) +#define bM4_PORT_PFSRD8_BFE (*((volatile unsigned int*)(0x42A79C60UL))) +#define bM4_PORT_PCRD9_POUT (*((volatile unsigned int*)(0x42A79C80UL))) +#define bM4_PORT_PCRD9_POUTE (*((volatile unsigned int*)(0x42A79C84UL))) +#define bM4_PORT_PCRD9_NOD (*((volatile unsigned int*)(0x42A79C88UL))) +#define bM4_PORT_PCRD9_DRV0 (*((volatile unsigned int*)(0x42A79C90UL))) +#define bM4_PORT_PCRD9_DRV1 (*((volatile unsigned int*)(0x42A79C94UL))) +#define bM4_PORT_PCRD9_PUU (*((volatile unsigned int*)(0x42A79C98UL))) +#define bM4_PORT_PCRD9_PIN (*((volatile unsigned int*)(0x42A79CA0UL))) +#define bM4_PORT_PCRD9_INVE (*((volatile unsigned int*)(0x42A79CA4UL))) +#define bM4_PORT_PCRD9_INTE (*((volatile unsigned int*)(0x42A79CB0UL))) +#define bM4_PORT_PCRD9_LTE (*((volatile unsigned int*)(0x42A79CB8UL))) +#define bM4_PORT_PCRD9_DDIS (*((volatile unsigned int*)(0x42A79CBCUL))) +#define bM4_PORT_PFSRD9_FSEL0 (*((volatile unsigned int*)(0x42A79CC0UL))) +#define bM4_PORT_PFSRD9_FSEL1 (*((volatile unsigned int*)(0x42A79CC4UL))) +#define bM4_PORT_PFSRD9_FSEL2 (*((volatile unsigned int*)(0x42A79CC8UL))) +#define bM4_PORT_PFSRD9_FSEL3 (*((volatile unsigned int*)(0x42A79CCCUL))) +#define bM4_PORT_PFSRD9_FSEL4 (*((volatile unsigned int*)(0x42A79CD0UL))) +#define bM4_PORT_PFSRD9_FSEL5 (*((volatile unsigned int*)(0x42A79CD4UL))) +#define bM4_PORT_PFSRD9_BFE (*((volatile unsigned int*)(0x42A79CE0UL))) +#define bM4_PORT_PCRD10_POUT (*((volatile unsigned int*)(0x42A79D00UL))) +#define bM4_PORT_PCRD10_POUTE (*((volatile unsigned int*)(0x42A79D04UL))) +#define bM4_PORT_PCRD10_NOD (*((volatile unsigned int*)(0x42A79D08UL))) +#define bM4_PORT_PCRD10_DRV0 (*((volatile unsigned int*)(0x42A79D10UL))) +#define bM4_PORT_PCRD10_DRV1 (*((volatile unsigned int*)(0x42A79D14UL))) +#define bM4_PORT_PCRD10_PUU (*((volatile unsigned int*)(0x42A79D18UL))) +#define bM4_PORT_PCRD10_PIN (*((volatile unsigned int*)(0x42A79D20UL))) +#define bM4_PORT_PCRD10_INVE (*((volatile unsigned int*)(0x42A79D24UL))) +#define bM4_PORT_PCRD10_INTE (*((volatile unsigned int*)(0x42A79D30UL))) +#define bM4_PORT_PCRD10_LTE (*((volatile unsigned int*)(0x42A79D38UL))) +#define bM4_PORT_PCRD10_DDIS (*((volatile unsigned int*)(0x42A79D3CUL))) +#define bM4_PORT_PFSRD10_FSEL0 (*((volatile unsigned int*)(0x42A79D40UL))) +#define bM4_PORT_PFSRD10_FSEL1 (*((volatile unsigned int*)(0x42A79D44UL))) +#define bM4_PORT_PFSRD10_FSEL2 (*((volatile unsigned int*)(0x42A79D48UL))) +#define bM4_PORT_PFSRD10_FSEL3 (*((volatile unsigned int*)(0x42A79D4CUL))) +#define bM4_PORT_PFSRD10_FSEL4 (*((volatile unsigned int*)(0x42A79D50UL))) +#define bM4_PORT_PFSRD10_FSEL5 (*((volatile unsigned int*)(0x42A79D54UL))) +#define bM4_PORT_PFSRD10_BFE (*((volatile unsigned int*)(0x42A79D60UL))) +#define bM4_PORT_PCRD11_POUT (*((volatile unsigned int*)(0x42A79D80UL))) +#define bM4_PORT_PCRD11_POUTE (*((volatile unsigned int*)(0x42A79D84UL))) +#define bM4_PORT_PCRD11_NOD (*((volatile unsigned int*)(0x42A79D88UL))) +#define bM4_PORT_PCRD11_DRV0 (*((volatile unsigned int*)(0x42A79D90UL))) +#define bM4_PORT_PCRD11_DRV1 (*((volatile unsigned int*)(0x42A79D94UL))) +#define bM4_PORT_PCRD11_PUU (*((volatile unsigned int*)(0x42A79D98UL))) +#define bM4_PORT_PCRD11_PIN (*((volatile unsigned int*)(0x42A79DA0UL))) +#define bM4_PORT_PCRD11_INVE (*((volatile unsigned int*)(0x42A79DA4UL))) +#define bM4_PORT_PCRD11_INTE (*((volatile unsigned int*)(0x42A79DB0UL))) +#define bM4_PORT_PCRD11_LTE (*((volatile unsigned int*)(0x42A79DB8UL))) +#define bM4_PORT_PCRD11_DDIS (*((volatile unsigned int*)(0x42A79DBCUL))) +#define bM4_PORT_PFSRD11_FSEL0 (*((volatile unsigned int*)(0x42A79DC0UL))) +#define bM4_PORT_PFSRD11_FSEL1 (*((volatile unsigned int*)(0x42A79DC4UL))) +#define bM4_PORT_PFSRD11_FSEL2 (*((volatile unsigned int*)(0x42A79DC8UL))) +#define bM4_PORT_PFSRD11_FSEL3 (*((volatile unsigned int*)(0x42A79DCCUL))) +#define bM4_PORT_PFSRD11_FSEL4 (*((volatile unsigned int*)(0x42A79DD0UL))) +#define bM4_PORT_PFSRD11_FSEL5 (*((volatile unsigned int*)(0x42A79DD4UL))) +#define bM4_PORT_PFSRD11_BFE (*((volatile unsigned int*)(0x42A79DE0UL))) +#define bM4_PORT_PCRD12_POUT (*((volatile unsigned int*)(0x42A79E00UL))) +#define bM4_PORT_PCRD12_POUTE (*((volatile unsigned int*)(0x42A79E04UL))) +#define bM4_PORT_PCRD12_NOD (*((volatile unsigned int*)(0x42A79E08UL))) +#define bM4_PORT_PCRD12_DRV0 (*((volatile unsigned int*)(0x42A79E10UL))) +#define bM4_PORT_PCRD12_DRV1 (*((volatile unsigned int*)(0x42A79E14UL))) +#define bM4_PORT_PCRD12_PUU (*((volatile unsigned int*)(0x42A79E18UL))) +#define bM4_PORT_PCRD12_PIN (*((volatile unsigned int*)(0x42A79E20UL))) +#define bM4_PORT_PCRD12_INVE (*((volatile unsigned int*)(0x42A79E24UL))) +#define bM4_PORT_PCRD12_INTE (*((volatile unsigned int*)(0x42A79E30UL))) +#define bM4_PORT_PCRD12_LTE (*((volatile unsigned int*)(0x42A79E38UL))) +#define bM4_PORT_PCRD12_DDIS (*((volatile unsigned int*)(0x42A79E3CUL))) +#define bM4_PORT_PFSRD12_FSEL0 (*((volatile unsigned int*)(0x42A79E40UL))) +#define bM4_PORT_PFSRD12_FSEL1 (*((volatile unsigned int*)(0x42A79E44UL))) +#define bM4_PORT_PFSRD12_FSEL2 (*((volatile unsigned int*)(0x42A79E48UL))) +#define bM4_PORT_PFSRD12_FSEL3 (*((volatile unsigned int*)(0x42A79E4CUL))) +#define bM4_PORT_PFSRD12_FSEL4 (*((volatile unsigned int*)(0x42A79E50UL))) +#define bM4_PORT_PFSRD12_FSEL5 (*((volatile unsigned int*)(0x42A79E54UL))) +#define bM4_PORT_PFSRD12_BFE (*((volatile unsigned int*)(0x42A79E60UL))) +#define bM4_PORT_PCRD13_POUT (*((volatile unsigned int*)(0x42A79E80UL))) +#define bM4_PORT_PCRD13_POUTE (*((volatile unsigned int*)(0x42A79E84UL))) +#define bM4_PORT_PCRD13_NOD (*((volatile unsigned int*)(0x42A79E88UL))) +#define bM4_PORT_PCRD13_DRV0 (*((volatile unsigned int*)(0x42A79E90UL))) +#define bM4_PORT_PCRD13_DRV1 (*((volatile unsigned int*)(0x42A79E94UL))) +#define bM4_PORT_PCRD13_PUU (*((volatile unsigned int*)(0x42A79E98UL))) +#define bM4_PORT_PCRD13_PIN (*((volatile unsigned int*)(0x42A79EA0UL))) +#define bM4_PORT_PCRD13_INVE (*((volatile unsigned int*)(0x42A79EA4UL))) +#define bM4_PORT_PCRD13_INTE (*((volatile unsigned int*)(0x42A79EB0UL))) +#define bM4_PORT_PCRD13_LTE (*((volatile unsigned int*)(0x42A79EB8UL))) +#define bM4_PORT_PCRD13_DDIS (*((volatile unsigned int*)(0x42A79EBCUL))) +#define bM4_PORT_PFSRD13_FSEL0 (*((volatile unsigned int*)(0x42A79EC0UL))) +#define bM4_PORT_PFSRD13_FSEL1 (*((volatile unsigned int*)(0x42A79EC4UL))) +#define bM4_PORT_PFSRD13_FSEL2 (*((volatile unsigned int*)(0x42A79EC8UL))) +#define bM4_PORT_PFSRD13_FSEL3 (*((volatile unsigned int*)(0x42A79ECCUL))) +#define bM4_PORT_PFSRD13_FSEL4 (*((volatile unsigned int*)(0x42A79ED0UL))) +#define bM4_PORT_PFSRD13_FSEL5 (*((volatile unsigned int*)(0x42A79ED4UL))) +#define bM4_PORT_PFSRD13_BFE (*((volatile unsigned int*)(0x42A79EE0UL))) +#define bM4_PORT_PCRD14_POUT (*((volatile unsigned int*)(0x42A79F00UL))) +#define bM4_PORT_PCRD14_POUTE (*((volatile unsigned int*)(0x42A79F04UL))) +#define bM4_PORT_PCRD14_NOD (*((volatile unsigned int*)(0x42A79F08UL))) +#define bM4_PORT_PCRD14_DRV0 (*((volatile unsigned int*)(0x42A79F10UL))) +#define bM4_PORT_PCRD14_DRV1 (*((volatile unsigned int*)(0x42A79F14UL))) +#define bM4_PORT_PCRD14_PUU (*((volatile unsigned int*)(0x42A79F18UL))) +#define bM4_PORT_PCRD14_PIN (*((volatile unsigned int*)(0x42A79F20UL))) +#define bM4_PORT_PCRD14_INVE (*((volatile unsigned int*)(0x42A79F24UL))) +#define bM4_PORT_PCRD14_INTE (*((volatile unsigned int*)(0x42A79F30UL))) +#define bM4_PORT_PCRD14_LTE (*((volatile unsigned int*)(0x42A79F38UL))) +#define bM4_PORT_PCRD14_DDIS (*((volatile unsigned int*)(0x42A79F3CUL))) +#define bM4_PORT_PFSRD14_FSEL0 (*((volatile unsigned int*)(0x42A79F40UL))) +#define bM4_PORT_PFSRD14_FSEL1 (*((volatile unsigned int*)(0x42A79F44UL))) +#define bM4_PORT_PFSRD14_FSEL2 (*((volatile unsigned int*)(0x42A79F48UL))) +#define bM4_PORT_PFSRD14_FSEL3 (*((volatile unsigned int*)(0x42A79F4CUL))) +#define bM4_PORT_PFSRD14_FSEL4 (*((volatile unsigned int*)(0x42A79F50UL))) +#define bM4_PORT_PFSRD14_FSEL5 (*((volatile unsigned int*)(0x42A79F54UL))) +#define bM4_PORT_PFSRD14_BFE (*((volatile unsigned int*)(0x42A79F60UL))) +#define bM4_PORT_PCRD15_POUT (*((volatile unsigned int*)(0x42A79F80UL))) +#define bM4_PORT_PCRD15_POUTE (*((volatile unsigned int*)(0x42A79F84UL))) +#define bM4_PORT_PCRD15_NOD (*((volatile unsigned int*)(0x42A79F88UL))) +#define bM4_PORT_PCRD15_DRV0 (*((volatile unsigned int*)(0x42A79F90UL))) +#define bM4_PORT_PCRD15_DRV1 (*((volatile unsigned int*)(0x42A79F94UL))) +#define bM4_PORT_PCRD15_PUU (*((volatile unsigned int*)(0x42A79F98UL))) +#define bM4_PORT_PCRD15_PIN (*((volatile unsigned int*)(0x42A79FA0UL))) +#define bM4_PORT_PCRD15_INVE (*((volatile unsigned int*)(0x42A79FA4UL))) +#define bM4_PORT_PCRD15_INTE (*((volatile unsigned int*)(0x42A79FB0UL))) +#define bM4_PORT_PCRD15_LTE (*((volatile unsigned int*)(0x42A79FB8UL))) +#define bM4_PORT_PCRD15_DDIS (*((volatile unsigned int*)(0x42A79FBCUL))) +#define bM4_PORT_PFSRD15_FSEL0 (*((volatile unsigned int*)(0x42A79FC0UL))) +#define bM4_PORT_PFSRD15_FSEL1 (*((volatile unsigned int*)(0x42A79FC4UL))) +#define bM4_PORT_PFSRD15_FSEL2 (*((volatile unsigned int*)(0x42A79FC8UL))) +#define bM4_PORT_PFSRD15_FSEL3 (*((volatile unsigned int*)(0x42A79FCCUL))) +#define bM4_PORT_PFSRD15_FSEL4 (*((volatile unsigned int*)(0x42A79FD0UL))) +#define bM4_PORT_PFSRD15_FSEL5 (*((volatile unsigned int*)(0x42A79FD4UL))) +#define bM4_PORT_PFSRD15_BFE (*((volatile unsigned int*)(0x42A79FE0UL))) +#define bM4_PORT_PCRE0_POUT (*((volatile unsigned int*)(0x42A7A000UL))) +#define bM4_PORT_PCRE0_POUTE (*((volatile unsigned int*)(0x42A7A004UL))) +#define bM4_PORT_PCRE0_NOD (*((volatile unsigned int*)(0x42A7A008UL))) +#define bM4_PORT_PCRE0_DRV0 (*((volatile unsigned int*)(0x42A7A010UL))) +#define bM4_PORT_PCRE0_DRV1 (*((volatile unsigned int*)(0x42A7A014UL))) +#define bM4_PORT_PCRE0_PUU (*((volatile unsigned int*)(0x42A7A018UL))) +#define bM4_PORT_PCRE0_PIN (*((volatile unsigned int*)(0x42A7A020UL))) +#define bM4_PORT_PCRE0_INVE (*((volatile unsigned int*)(0x42A7A024UL))) +#define bM4_PORT_PCRE0_INTE (*((volatile unsigned int*)(0x42A7A030UL))) +#define bM4_PORT_PCRE0_LTE (*((volatile unsigned int*)(0x42A7A038UL))) +#define bM4_PORT_PCRE0_DDIS (*((volatile unsigned int*)(0x42A7A03CUL))) +#define bM4_PORT_PFSRE0_FSEL0 (*((volatile unsigned int*)(0x42A7A040UL))) +#define bM4_PORT_PFSRE0_FSEL1 (*((volatile unsigned int*)(0x42A7A044UL))) +#define bM4_PORT_PFSRE0_FSEL2 (*((volatile unsigned int*)(0x42A7A048UL))) +#define bM4_PORT_PFSRE0_FSEL3 (*((volatile unsigned int*)(0x42A7A04CUL))) +#define bM4_PORT_PFSRE0_FSEL4 (*((volatile unsigned int*)(0x42A7A050UL))) +#define bM4_PORT_PFSRE0_FSEL5 (*((volatile unsigned int*)(0x42A7A054UL))) +#define bM4_PORT_PFSRE0_BFE (*((volatile unsigned int*)(0x42A7A060UL))) +#define bM4_PORT_PCRE1_POUT (*((volatile unsigned int*)(0x42A7A080UL))) +#define bM4_PORT_PCRE1_POUTE (*((volatile unsigned int*)(0x42A7A084UL))) +#define bM4_PORT_PCRE1_NOD (*((volatile unsigned int*)(0x42A7A088UL))) +#define bM4_PORT_PCRE1_DRV0 (*((volatile unsigned int*)(0x42A7A090UL))) +#define bM4_PORT_PCRE1_DRV1 (*((volatile unsigned int*)(0x42A7A094UL))) +#define bM4_PORT_PCRE1_PUU (*((volatile unsigned int*)(0x42A7A098UL))) +#define bM4_PORT_PCRE1_PIN (*((volatile unsigned int*)(0x42A7A0A0UL))) +#define bM4_PORT_PCRE1_INVE (*((volatile unsigned int*)(0x42A7A0A4UL))) +#define bM4_PORT_PCRE1_INTE (*((volatile unsigned int*)(0x42A7A0B0UL))) +#define bM4_PORT_PCRE1_LTE (*((volatile unsigned int*)(0x42A7A0B8UL))) +#define bM4_PORT_PCRE1_DDIS (*((volatile unsigned int*)(0x42A7A0BCUL))) +#define bM4_PORT_PFSRE1_FSEL0 (*((volatile unsigned int*)(0x42A7A0C0UL))) +#define bM4_PORT_PFSRE1_FSEL1 (*((volatile unsigned int*)(0x42A7A0C4UL))) +#define bM4_PORT_PFSRE1_FSEL2 (*((volatile unsigned int*)(0x42A7A0C8UL))) +#define bM4_PORT_PFSRE1_FSEL3 (*((volatile unsigned int*)(0x42A7A0CCUL))) +#define bM4_PORT_PFSRE1_FSEL4 (*((volatile unsigned int*)(0x42A7A0D0UL))) +#define bM4_PORT_PFSRE1_FSEL5 (*((volatile unsigned int*)(0x42A7A0D4UL))) +#define bM4_PORT_PFSRE1_BFE (*((volatile unsigned int*)(0x42A7A0E0UL))) +#define bM4_PORT_PCRE2_POUT (*((volatile unsigned int*)(0x42A7A100UL))) +#define bM4_PORT_PCRE2_POUTE (*((volatile unsigned int*)(0x42A7A104UL))) +#define bM4_PORT_PCRE2_NOD (*((volatile unsigned int*)(0x42A7A108UL))) +#define bM4_PORT_PCRE2_DRV0 (*((volatile unsigned int*)(0x42A7A110UL))) +#define bM4_PORT_PCRE2_DRV1 (*((volatile unsigned int*)(0x42A7A114UL))) +#define bM4_PORT_PCRE2_PUU (*((volatile unsigned int*)(0x42A7A118UL))) +#define bM4_PORT_PCRE2_PIN (*((volatile unsigned int*)(0x42A7A120UL))) +#define bM4_PORT_PCRE2_INVE (*((volatile unsigned int*)(0x42A7A124UL))) +#define bM4_PORT_PCRE2_INTE (*((volatile unsigned int*)(0x42A7A130UL))) +#define bM4_PORT_PCRE2_LTE (*((volatile unsigned int*)(0x42A7A138UL))) +#define bM4_PORT_PCRE2_DDIS (*((volatile unsigned int*)(0x42A7A13CUL))) +#define bM4_PORT_PFSRE2_FSEL0 (*((volatile unsigned int*)(0x42A7A140UL))) +#define bM4_PORT_PFSRE2_FSEL1 (*((volatile unsigned int*)(0x42A7A144UL))) +#define bM4_PORT_PFSRE2_FSEL2 (*((volatile unsigned int*)(0x42A7A148UL))) +#define bM4_PORT_PFSRE2_FSEL3 (*((volatile unsigned int*)(0x42A7A14CUL))) +#define bM4_PORT_PFSRE2_FSEL4 (*((volatile unsigned int*)(0x42A7A150UL))) +#define bM4_PORT_PFSRE2_FSEL5 (*((volatile unsigned int*)(0x42A7A154UL))) +#define bM4_PORT_PFSRE2_BFE (*((volatile unsigned int*)(0x42A7A160UL))) +#define bM4_PORT_PCRE3_POUT (*((volatile unsigned int*)(0x42A7A180UL))) +#define bM4_PORT_PCRE3_POUTE (*((volatile unsigned int*)(0x42A7A184UL))) +#define bM4_PORT_PCRE3_NOD (*((volatile unsigned int*)(0x42A7A188UL))) +#define bM4_PORT_PCRE3_DRV0 (*((volatile unsigned int*)(0x42A7A190UL))) +#define bM4_PORT_PCRE3_DRV1 (*((volatile unsigned int*)(0x42A7A194UL))) +#define bM4_PORT_PCRE3_PUU (*((volatile unsigned int*)(0x42A7A198UL))) +#define bM4_PORT_PCRE3_PIN (*((volatile unsigned int*)(0x42A7A1A0UL))) +#define bM4_PORT_PCRE3_INVE (*((volatile unsigned int*)(0x42A7A1A4UL))) +#define bM4_PORT_PCRE3_INTE (*((volatile unsigned int*)(0x42A7A1B0UL))) +#define bM4_PORT_PCRE3_LTE (*((volatile unsigned int*)(0x42A7A1B8UL))) +#define bM4_PORT_PCRE3_DDIS (*((volatile unsigned int*)(0x42A7A1BCUL))) +#define bM4_PORT_PFSRE3_FSEL0 (*((volatile unsigned int*)(0x42A7A1C0UL))) +#define bM4_PORT_PFSRE3_FSEL1 (*((volatile unsigned int*)(0x42A7A1C4UL))) +#define bM4_PORT_PFSRE3_FSEL2 (*((volatile unsigned int*)(0x42A7A1C8UL))) +#define bM4_PORT_PFSRE3_FSEL3 (*((volatile unsigned int*)(0x42A7A1CCUL))) +#define bM4_PORT_PFSRE3_FSEL4 (*((volatile unsigned int*)(0x42A7A1D0UL))) +#define bM4_PORT_PFSRE3_FSEL5 (*((volatile unsigned int*)(0x42A7A1D4UL))) +#define bM4_PORT_PFSRE3_BFE (*((volatile unsigned int*)(0x42A7A1E0UL))) +#define bM4_PORT_PCRE4_POUT (*((volatile unsigned int*)(0x42A7A200UL))) +#define bM4_PORT_PCRE4_POUTE (*((volatile unsigned int*)(0x42A7A204UL))) +#define bM4_PORT_PCRE4_NOD (*((volatile unsigned int*)(0x42A7A208UL))) +#define bM4_PORT_PCRE4_DRV0 (*((volatile unsigned int*)(0x42A7A210UL))) +#define bM4_PORT_PCRE4_DRV1 (*((volatile unsigned int*)(0x42A7A214UL))) +#define bM4_PORT_PCRE4_PUU (*((volatile unsigned int*)(0x42A7A218UL))) +#define bM4_PORT_PCRE4_PIN (*((volatile unsigned int*)(0x42A7A220UL))) +#define bM4_PORT_PCRE4_INVE (*((volatile unsigned int*)(0x42A7A224UL))) +#define bM4_PORT_PCRE4_INTE (*((volatile unsigned int*)(0x42A7A230UL))) +#define bM4_PORT_PCRE4_LTE (*((volatile unsigned int*)(0x42A7A238UL))) +#define bM4_PORT_PCRE4_DDIS (*((volatile unsigned int*)(0x42A7A23CUL))) +#define bM4_PORT_PFSRE4_FSEL0 (*((volatile unsigned int*)(0x42A7A240UL))) +#define bM4_PORT_PFSRE4_FSEL1 (*((volatile unsigned int*)(0x42A7A244UL))) +#define bM4_PORT_PFSRE4_FSEL2 (*((volatile unsigned int*)(0x42A7A248UL))) +#define bM4_PORT_PFSRE4_FSEL3 (*((volatile unsigned int*)(0x42A7A24CUL))) +#define bM4_PORT_PFSRE4_FSEL4 (*((volatile unsigned int*)(0x42A7A250UL))) +#define bM4_PORT_PFSRE4_FSEL5 (*((volatile unsigned int*)(0x42A7A254UL))) +#define bM4_PORT_PFSRE4_BFE (*((volatile unsigned int*)(0x42A7A260UL))) +#define bM4_PORT_PCRE5_POUT (*((volatile unsigned int*)(0x42A7A280UL))) +#define bM4_PORT_PCRE5_POUTE (*((volatile unsigned int*)(0x42A7A284UL))) +#define bM4_PORT_PCRE5_NOD (*((volatile unsigned int*)(0x42A7A288UL))) +#define bM4_PORT_PCRE5_DRV0 (*((volatile unsigned int*)(0x42A7A290UL))) +#define bM4_PORT_PCRE5_DRV1 (*((volatile unsigned int*)(0x42A7A294UL))) +#define bM4_PORT_PCRE5_PUU (*((volatile unsigned int*)(0x42A7A298UL))) +#define bM4_PORT_PCRE5_PIN (*((volatile unsigned int*)(0x42A7A2A0UL))) +#define bM4_PORT_PCRE5_INVE (*((volatile unsigned int*)(0x42A7A2A4UL))) +#define bM4_PORT_PCRE5_INTE (*((volatile unsigned int*)(0x42A7A2B0UL))) +#define bM4_PORT_PCRE5_LTE (*((volatile unsigned int*)(0x42A7A2B8UL))) +#define bM4_PORT_PCRE5_DDIS (*((volatile unsigned int*)(0x42A7A2BCUL))) +#define bM4_PORT_PFSRE5_FSEL0 (*((volatile unsigned int*)(0x42A7A2C0UL))) +#define bM4_PORT_PFSRE5_FSEL1 (*((volatile unsigned int*)(0x42A7A2C4UL))) +#define bM4_PORT_PFSRE5_FSEL2 (*((volatile unsigned int*)(0x42A7A2C8UL))) +#define bM4_PORT_PFSRE5_FSEL3 (*((volatile unsigned int*)(0x42A7A2CCUL))) +#define bM4_PORT_PFSRE5_FSEL4 (*((volatile unsigned int*)(0x42A7A2D0UL))) +#define bM4_PORT_PFSRE5_FSEL5 (*((volatile unsigned int*)(0x42A7A2D4UL))) +#define bM4_PORT_PFSRE5_BFE (*((volatile unsigned int*)(0x42A7A2E0UL))) +#define bM4_PORT_PCRE6_POUT (*((volatile unsigned int*)(0x42A7A300UL))) +#define bM4_PORT_PCRE6_POUTE (*((volatile unsigned int*)(0x42A7A304UL))) +#define bM4_PORT_PCRE6_NOD (*((volatile unsigned int*)(0x42A7A308UL))) +#define bM4_PORT_PCRE6_DRV0 (*((volatile unsigned int*)(0x42A7A310UL))) +#define bM4_PORT_PCRE6_DRV1 (*((volatile unsigned int*)(0x42A7A314UL))) +#define bM4_PORT_PCRE6_PUU (*((volatile unsigned int*)(0x42A7A318UL))) +#define bM4_PORT_PCRE6_PIN (*((volatile unsigned int*)(0x42A7A320UL))) +#define bM4_PORT_PCRE6_INVE (*((volatile unsigned int*)(0x42A7A324UL))) +#define bM4_PORT_PCRE6_INTE (*((volatile unsigned int*)(0x42A7A330UL))) +#define bM4_PORT_PCRE6_LTE (*((volatile unsigned int*)(0x42A7A338UL))) +#define bM4_PORT_PCRE6_DDIS (*((volatile unsigned int*)(0x42A7A33CUL))) +#define bM4_PORT_PFSRE6_FSEL0 (*((volatile unsigned int*)(0x42A7A340UL))) +#define bM4_PORT_PFSRE6_FSEL1 (*((volatile unsigned int*)(0x42A7A344UL))) +#define bM4_PORT_PFSRE6_FSEL2 (*((volatile unsigned int*)(0x42A7A348UL))) +#define bM4_PORT_PFSRE6_FSEL3 (*((volatile unsigned int*)(0x42A7A34CUL))) +#define bM4_PORT_PFSRE6_FSEL4 (*((volatile unsigned int*)(0x42A7A350UL))) +#define bM4_PORT_PFSRE6_FSEL5 (*((volatile unsigned int*)(0x42A7A354UL))) +#define bM4_PORT_PFSRE6_BFE (*((volatile unsigned int*)(0x42A7A360UL))) +#define bM4_PORT_PCRE7_POUT (*((volatile unsigned int*)(0x42A7A380UL))) +#define bM4_PORT_PCRE7_POUTE (*((volatile unsigned int*)(0x42A7A384UL))) +#define bM4_PORT_PCRE7_NOD (*((volatile unsigned int*)(0x42A7A388UL))) +#define bM4_PORT_PCRE7_DRV0 (*((volatile unsigned int*)(0x42A7A390UL))) +#define bM4_PORT_PCRE7_DRV1 (*((volatile unsigned int*)(0x42A7A394UL))) +#define bM4_PORT_PCRE7_PUU (*((volatile unsigned int*)(0x42A7A398UL))) +#define bM4_PORT_PCRE7_PIN (*((volatile unsigned int*)(0x42A7A3A0UL))) +#define bM4_PORT_PCRE7_INVE (*((volatile unsigned int*)(0x42A7A3A4UL))) +#define bM4_PORT_PCRE7_INTE (*((volatile unsigned int*)(0x42A7A3B0UL))) +#define bM4_PORT_PCRE7_LTE (*((volatile unsigned int*)(0x42A7A3B8UL))) +#define bM4_PORT_PCRE7_DDIS (*((volatile unsigned int*)(0x42A7A3BCUL))) +#define bM4_PORT_PFSRE7_FSEL0 (*((volatile unsigned int*)(0x42A7A3C0UL))) +#define bM4_PORT_PFSRE7_FSEL1 (*((volatile unsigned int*)(0x42A7A3C4UL))) +#define bM4_PORT_PFSRE7_FSEL2 (*((volatile unsigned int*)(0x42A7A3C8UL))) +#define bM4_PORT_PFSRE7_FSEL3 (*((volatile unsigned int*)(0x42A7A3CCUL))) +#define bM4_PORT_PFSRE7_FSEL4 (*((volatile unsigned int*)(0x42A7A3D0UL))) +#define bM4_PORT_PFSRE7_FSEL5 (*((volatile unsigned int*)(0x42A7A3D4UL))) +#define bM4_PORT_PFSRE7_BFE (*((volatile unsigned int*)(0x42A7A3E0UL))) +#define bM4_PORT_PCRE8_POUT (*((volatile unsigned int*)(0x42A7A400UL))) +#define bM4_PORT_PCRE8_POUTE (*((volatile unsigned int*)(0x42A7A404UL))) +#define bM4_PORT_PCRE8_NOD (*((volatile unsigned int*)(0x42A7A408UL))) +#define bM4_PORT_PCRE8_DRV0 (*((volatile unsigned int*)(0x42A7A410UL))) +#define bM4_PORT_PCRE8_DRV1 (*((volatile unsigned int*)(0x42A7A414UL))) +#define bM4_PORT_PCRE8_PUU (*((volatile unsigned int*)(0x42A7A418UL))) +#define bM4_PORT_PCRE8_PIN (*((volatile unsigned int*)(0x42A7A420UL))) +#define bM4_PORT_PCRE8_INVE (*((volatile unsigned int*)(0x42A7A424UL))) +#define bM4_PORT_PCRE8_INTE (*((volatile unsigned int*)(0x42A7A430UL))) +#define bM4_PORT_PCRE8_LTE (*((volatile unsigned int*)(0x42A7A438UL))) +#define bM4_PORT_PCRE8_DDIS (*((volatile unsigned int*)(0x42A7A43CUL))) +#define bM4_PORT_PFSRE8_FSEL0 (*((volatile unsigned int*)(0x42A7A440UL))) +#define bM4_PORT_PFSRE8_FSEL1 (*((volatile unsigned int*)(0x42A7A444UL))) +#define bM4_PORT_PFSRE8_FSEL2 (*((volatile unsigned int*)(0x42A7A448UL))) +#define bM4_PORT_PFSRE8_FSEL3 (*((volatile unsigned int*)(0x42A7A44CUL))) +#define bM4_PORT_PFSRE8_FSEL4 (*((volatile unsigned int*)(0x42A7A450UL))) +#define bM4_PORT_PFSRE8_FSEL5 (*((volatile unsigned int*)(0x42A7A454UL))) +#define bM4_PORT_PFSRE8_BFE (*((volatile unsigned int*)(0x42A7A460UL))) +#define bM4_PORT_PCRE9_POUT (*((volatile unsigned int*)(0x42A7A480UL))) +#define bM4_PORT_PCRE9_POUTE (*((volatile unsigned int*)(0x42A7A484UL))) +#define bM4_PORT_PCRE9_NOD (*((volatile unsigned int*)(0x42A7A488UL))) +#define bM4_PORT_PCRE9_DRV0 (*((volatile unsigned int*)(0x42A7A490UL))) +#define bM4_PORT_PCRE9_DRV1 (*((volatile unsigned int*)(0x42A7A494UL))) +#define bM4_PORT_PCRE9_PUU (*((volatile unsigned int*)(0x42A7A498UL))) +#define bM4_PORT_PCRE9_PIN (*((volatile unsigned int*)(0x42A7A4A0UL))) +#define bM4_PORT_PCRE9_INVE (*((volatile unsigned int*)(0x42A7A4A4UL))) +#define bM4_PORT_PCRE9_INTE (*((volatile unsigned int*)(0x42A7A4B0UL))) +#define bM4_PORT_PCRE9_LTE (*((volatile unsigned int*)(0x42A7A4B8UL))) +#define bM4_PORT_PCRE9_DDIS (*((volatile unsigned int*)(0x42A7A4BCUL))) +#define bM4_PORT_PFSRE9_FSEL0 (*((volatile unsigned int*)(0x42A7A4C0UL))) +#define bM4_PORT_PFSRE9_FSEL1 (*((volatile unsigned int*)(0x42A7A4C4UL))) +#define bM4_PORT_PFSRE9_FSEL2 (*((volatile unsigned int*)(0x42A7A4C8UL))) +#define bM4_PORT_PFSRE9_FSEL3 (*((volatile unsigned int*)(0x42A7A4CCUL))) +#define bM4_PORT_PFSRE9_FSEL4 (*((volatile unsigned int*)(0x42A7A4D0UL))) +#define bM4_PORT_PFSRE9_FSEL5 (*((volatile unsigned int*)(0x42A7A4D4UL))) +#define bM4_PORT_PFSRE9_BFE (*((volatile unsigned int*)(0x42A7A4E0UL))) +#define bM4_PORT_PCRE10_POUT (*((volatile unsigned int*)(0x42A7A500UL))) +#define bM4_PORT_PCRE10_POUTE (*((volatile unsigned int*)(0x42A7A504UL))) +#define bM4_PORT_PCRE10_NOD (*((volatile unsigned int*)(0x42A7A508UL))) +#define bM4_PORT_PCRE10_DRV0 (*((volatile unsigned int*)(0x42A7A510UL))) +#define bM4_PORT_PCRE10_DRV1 (*((volatile unsigned int*)(0x42A7A514UL))) +#define bM4_PORT_PCRE10_PUU (*((volatile unsigned int*)(0x42A7A518UL))) +#define bM4_PORT_PCRE10_PIN (*((volatile unsigned int*)(0x42A7A520UL))) +#define bM4_PORT_PCRE10_INVE (*((volatile unsigned int*)(0x42A7A524UL))) +#define bM4_PORT_PCRE10_INTE (*((volatile unsigned int*)(0x42A7A530UL))) +#define bM4_PORT_PCRE10_LTE (*((volatile unsigned int*)(0x42A7A538UL))) +#define bM4_PORT_PCRE10_DDIS (*((volatile unsigned int*)(0x42A7A53CUL))) +#define bM4_PORT_PFSRE10_FSEL0 (*((volatile unsigned int*)(0x42A7A540UL))) +#define bM4_PORT_PFSRE10_FSEL1 (*((volatile unsigned int*)(0x42A7A544UL))) +#define bM4_PORT_PFSRE10_FSEL2 (*((volatile unsigned int*)(0x42A7A548UL))) +#define bM4_PORT_PFSRE10_FSEL3 (*((volatile unsigned int*)(0x42A7A54CUL))) +#define bM4_PORT_PFSRE10_FSEL4 (*((volatile unsigned int*)(0x42A7A550UL))) +#define bM4_PORT_PFSRE10_FSEL5 (*((volatile unsigned int*)(0x42A7A554UL))) +#define bM4_PORT_PFSRE10_BFE (*((volatile unsigned int*)(0x42A7A560UL))) +#define bM4_PORT_PCRE11_POUT (*((volatile unsigned int*)(0x42A7A580UL))) +#define bM4_PORT_PCRE11_POUTE (*((volatile unsigned int*)(0x42A7A584UL))) +#define bM4_PORT_PCRE11_NOD (*((volatile unsigned int*)(0x42A7A588UL))) +#define bM4_PORT_PCRE11_DRV0 (*((volatile unsigned int*)(0x42A7A590UL))) +#define bM4_PORT_PCRE11_DRV1 (*((volatile unsigned int*)(0x42A7A594UL))) +#define bM4_PORT_PCRE11_PUU (*((volatile unsigned int*)(0x42A7A598UL))) +#define bM4_PORT_PCRE11_PIN (*((volatile unsigned int*)(0x42A7A5A0UL))) +#define bM4_PORT_PCRE11_INVE (*((volatile unsigned int*)(0x42A7A5A4UL))) +#define bM4_PORT_PCRE11_INTE (*((volatile unsigned int*)(0x42A7A5B0UL))) +#define bM4_PORT_PCRE11_LTE (*((volatile unsigned int*)(0x42A7A5B8UL))) +#define bM4_PORT_PCRE11_DDIS (*((volatile unsigned int*)(0x42A7A5BCUL))) +#define bM4_PORT_PFSRE11_FSEL0 (*((volatile unsigned int*)(0x42A7A5C0UL))) +#define bM4_PORT_PFSRE11_FSEL1 (*((volatile unsigned int*)(0x42A7A5C4UL))) +#define bM4_PORT_PFSRE11_FSEL2 (*((volatile unsigned int*)(0x42A7A5C8UL))) +#define bM4_PORT_PFSRE11_FSEL3 (*((volatile unsigned int*)(0x42A7A5CCUL))) +#define bM4_PORT_PFSRE11_FSEL4 (*((volatile unsigned int*)(0x42A7A5D0UL))) +#define bM4_PORT_PFSRE11_FSEL5 (*((volatile unsigned int*)(0x42A7A5D4UL))) +#define bM4_PORT_PFSRE11_BFE (*((volatile unsigned int*)(0x42A7A5E0UL))) +#define bM4_PORT_PCRE12_POUT (*((volatile unsigned int*)(0x42A7A600UL))) +#define bM4_PORT_PCRE12_POUTE (*((volatile unsigned int*)(0x42A7A604UL))) +#define bM4_PORT_PCRE12_NOD (*((volatile unsigned int*)(0x42A7A608UL))) +#define bM4_PORT_PCRE12_DRV0 (*((volatile unsigned int*)(0x42A7A610UL))) +#define bM4_PORT_PCRE12_DRV1 (*((volatile unsigned int*)(0x42A7A614UL))) +#define bM4_PORT_PCRE12_PUU (*((volatile unsigned int*)(0x42A7A618UL))) +#define bM4_PORT_PCRE12_PIN (*((volatile unsigned int*)(0x42A7A620UL))) +#define bM4_PORT_PCRE12_INVE (*((volatile unsigned int*)(0x42A7A624UL))) +#define bM4_PORT_PCRE12_INTE (*((volatile unsigned int*)(0x42A7A630UL))) +#define bM4_PORT_PCRE12_LTE (*((volatile unsigned int*)(0x42A7A638UL))) +#define bM4_PORT_PCRE12_DDIS (*((volatile unsigned int*)(0x42A7A63CUL))) +#define bM4_PORT_PFSRE12_FSEL0 (*((volatile unsigned int*)(0x42A7A640UL))) +#define bM4_PORT_PFSRE12_FSEL1 (*((volatile unsigned int*)(0x42A7A644UL))) +#define bM4_PORT_PFSRE12_FSEL2 (*((volatile unsigned int*)(0x42A7A648UL))) +#define bM4_PORT_PFSRE12_FSEL3 (*((volatile unsigned int*)(0x42A7A64CUL))) +#define bM4_PORT_PFSRE12_FSEL4 (*((volatile unsigned int*)(0x42A7A650UL))) +#define bM4_PORT_PFSRE12_FSEL5 (*((volatile unsigned int*)(0x42A7A654UL))) +#define bM4_PORT_PFSRE12_BFE (*((volatile unsigned int*)(0x42A7A660UL))) +#define bM4_PORT_PCRE13_POUT (*((volatile unsigned int*)(0x42A7A680UL))) +#define bM4_PORT_PCRE13_POUTE (*((volatile unsigned int*)(0x42A7A684UL))) +#define bM4_PORT_PCRE13_NOD (*((volatile unsigned int*)(0x42A7A688UL))) +#define bM4_PORT_PCRE13_DRV0 (*((volatile unsigned int*)(0x42A7A690UL))) +#define bM4_PORT_PCRE13_DRV1 (*((volatile unsigned int*)(0x42A7A694UL))) +#define bM4_PORT_PCRE13_PUU (*((volatile unsigned int*)(0x42A7A698UL))) +#define bM4_PORT_PCRE13_PIN (*((volatile unsigned int*)(0x42A7A6A0UL))) +#define bM4_PORT_PCRE13_INVE (*((volatile unsigned int*)(0x42A7A6A4UL))) +#define bM4_PORT_PCRE13_INTE (*((volatile unsigned int*)(0x42A7A6B0UL))) +#define bM4_PORT_PCRE13_LTE (*((volatile unsigned int*)(0x42A7A6B8UL))) +#define bM4_PORT_PCRE13_DDIS (*((volatile unsigned int*)(0x42A7A6BCUL))) +#define bM4_PORT_PFSRE13_FSEL0 (*((volatile unsigned int*)(0x42A7A6C0UL))) +#define bM4_PORT_PFSRE13_FSEL1 (*((volatile unsigned int*)(0x42A7A6C4UL))) +#define bM4_PORT_PFSRE13_FSEL2 (*((volatile unsigned int*)(0x42A7A6C8UL))) +#define bM4_PORT_PFSRE13_FSEL3 (*((volatile unsigned int*)(0x42A7A6CCUL))) +#define bM4_PORT_PFSRE13_FSEL4 (*((volatile unsigned int*)(0x42A7A6D0UL))) +#define bM4_PORT_PFSRE13_FSEL5 (*((volatile unsigned int*)(0x42A7A6D4UL))) +#define bM4_PORT_PFSRE13_BFE (*((volatile unsigned int*)(0x42A7A6E0UL))) +#define bM4_PORT_PCRE14_POUT (*((volatile unsigned int*)(0x42A7A700UL))) +#define bM4_PORT_PCRE14_POUTE (*((volatile unsigned int*)(0x42A7A704UL))) +#define bM4_PORT_PCRE14_NOD (*((volatile unsigned int*)(0x42A7A708UL))) +#define bM4_PORT_PCRE14_DRV0 (*((volatile unsigned int*)(0x42A7A710UL))) +#define bM4_PORT_PCRE14_DRV1 (*((volatile unsigned int*)(0x42A7A714UL))) +#define bM4_PORT_PCRE14_PUU (*((volatile unsigned int*)(0x42A7A718UL))) +#define bM4_PORT_PCRE14_PIN (*((volatile unsigned int*)(0x42A7A720UL))) +#define bM4_PORT_PCRE14_INVE (*((volatile unsigned int*)(0x42A7A724UL))) +#define bM4_PORT_PCRE14_INTE (*((volatile unsigned int*)(0x42A7A730UL))) +#define bM4_PORT_PCRE14_LTE (*((volatile unsigned int*)(0x42A7A738UL))) +#define bM4_PORT_PCRE14_DDIS (*((volatile unsigned int*)(0x42A7A73CUL))) +#define bM4_PORT_PFSRE14_FSEL0 (*((volatile unsigned int*)(0x42A7A740UL))) +#define bM4_PORT_PFSRE14_FSEL1 (*((volatile unsigned int*)(0x42A7A744UL))) +#define bM4_PORT_PFSRE14_FSEL2 (*((volatile unsigned int*)(0x42A7A748UL))) +#define bM4_PORT_PFSRE14_FSEL3 (*((volatile unsigned int*)(0x42A7A74CUL))) +#define bM4_PORT_PFSRE14_FSEL4 (*((volatile unsigned int*)(0x42A7A750UL))) +#define bM4_PORT_PFSRE14_FSEL5 (*((volatile unsigned int*)(0x42A7A754UL))) +#define bM4_PORT_PFSRE14_BFE (*((volatile unsigned int*)(0x42A7A760UL))) +#define bM4_PORT_PCRE15_POUT (*((volatile unsigned int*)(0x42A7A780UL))) +#define bM4_PORT_PCRE15_POUTE (*((volatile unsigned int*)(0x42A7A784UL))) +#define bM4_PORT_PCRE15_NOD (*((volatile unsigned int*)(0x42A7A788UL))) +#define bM4_PORT_PCRE15_DRV0 (*((volatile unsigned int*)(0x42A7A790UL))) +#define bM4_PORT_PCRE15_DRV1 (*((volatile unsigned int*)(0x42A7A794UL))) +#define bM4_PORT_PCRE15_PUU (*((volatile unsigned int*)(0x42A7A798UL))) +#define bM4_PORT_PCRE15_PIN (*((volatile unsigned int*)(0x42A7A7A0UL))) +#define bM4_PORT_PCRE15_INVE (*((volatile unsigned int*)(0x42A7A7A4UL))) +#define bM4_PORT_PCRE15_INTE (*((volatile unsigned int*)(0x42A7A7B0UL))) +#define bM4_PORT_PCRE15_LTE (*((volatile unsigned int*)(0x42A7A7B8UL))) +#define bM4_PORT_PCRE15_DDIS (*((volatile unsigned int*)(0x42A7A7BCUL))) +#define bM4_PORT_PFSRE15_FSEL0 (*((volatile unsigned int*)(0x42A7A7C0UL))) +#define bM4_PORT_PFSRE15_FSEL1 (*((volatile unsigned int*)(0x42A7A7C4UL))) +#define bM4_PORT_PFSRE15_FSEL2 (*((volatile unsigned int*)(0x42A7A7C8UL))) +#define bM4_PORT_PFSRE15_FSEL3 (*((volatile unsigned int*)(0x42A7A7CCUL))) +#define bM4_PORT_PFSRE15_FSEL4 (*((volatile unsigned int*)(0x42A7A7D0UL))) +#define bM4_PORT_PFSRE15_FSEL5 (*((volatile unsigned int*)(0x42A7A7D4UL))) +#define bM4_PORT_PFSRE15_BFE (*((volatile unsigned int*)(0x42A7A7E0UL))) +#define bM4_PORT_PCRH0_POUT (*((volatile unsigned int*)(0x42A7A800UL))) +#define bM4_PORT_PCRH0_POUTE (*((volatile unsigned int*)(0x42A7A804UL))) +#define bM4_PORT_PCRH0_NOD (*((volatile unsigned int*)(0x42A7A808UL))) +#define bM4_PORT_PCRH0_DRV0 (*((volatile unsigned int*)(0x42A7A810UL))) +#define bM4_PORT_PCRH0_DRV1 (*((volatile unsigned int*)(0x42A7A814UL))) +#define bM4_PORT_PCRH0_PUU (*((volatile unsigned int*)(0x42A7A818UL))) +#define bM4_PORT_PCRH0_PIN (*((volatile unsigned int*)(0x42A7A820UL))) +#define bM4_PORT_PCRH0_INVE (*((volatile unsigned int*)(0x42A7A824UL))) +#define bM4_PORT_PCRH0_INTE (*((volatile unsigned int*)(0x42A7A830UL))) +#define bM4_PORT_PCRH0_LTE (*((volatile unsigned int*)(0x42A7A838UL))) +#define bM4_PORT_PCRH0_DDIS (*((volatile unsigned int*)(0x42A7A83CUL))) +#define bM4_PORT_PFSRH0_FSEL0 (*((volatile unsigned int*)(0x42A7A840UL))) +#define bM4_PORT_PFSRH0_FSEL1 (*((volatile unsigned int*)(0x42A7A844UL))) +#define bM4_PORT_PFSRH0_FSEL2 (*((volatile unsigned int*)(0x42A7A848UL))) +#define bM4_PORT_PFSRH0_FSEL3 (*((volatile unsigned int*)(0x42A7A84CUL))) +#define bM4_PORT_PFSRH0_FSEL4 (*((volatile unsigned int*)(0x42A7A850UL))) +#define bM4_PORT_PFSRH0_FSEL5 (*((volatile unsigned int*)(0x42A7A854UL))) +#define bM4_PORT_PFSRH0_BFE (*((volatile unsigned int*)(0x42A7A860UL))) +#define bM4_PORT_PCRH1_POUT (*((volatile unsigned int*)(0x42A7A880UL))) +#define bM4_PORT_PCRH1_POUTE (*((volatile unsigned int*)(0x42A7A884UL))) +#define bM4_PORT_PCRH1_NOD (*((volatile unsigned int*)(0x42A7A888UL))) +#define bM4_PORT_PCRH1_DRV0 (*((volatile unsigned int*)(0x42A7A890UL))) +#define bM4_PORT_PCRH1_DRV1 (*((volatile unsigned int*)(0x42A7A894UL))) +#define bM4_PORT_PCRH1_PUU (*((volatile unsigned int*)(0x42A7A898UL))) +#define bM4_PORT_PCRH1_PIN (*((volatile unsigned int*)(0x42A7A8A0UL))) +#define bM4_PORT_PCRH1_INVE (*((volatile unsigned int*)(0x42A7A8A4UL))) +#define bM4_PORT_PCRH1_INTE (*((volatile unsigned int*)(0x42A7A8B0UL))) +#define bM4_PORT_PCRH1_LTE (*((volatile unsigned int*)(0x42A7A8B8UL))) +#define bM4_PORT_PCRH1_DDIS (*((volatile unsigned int*)(0x42A7A8BCUL))) +#define bM4_PORT_PFSRH1_FSEL0 (*((volatile unsigned int*)(0x42A7A8C0UL))) +#define bM4_PORT_PFSRH1_FSEL1 (*((volatile unsigned int*)(0x42A7A8C4UL))) +#define bM4_PORT_PFSRH1_FSEL2 (*((volatile unsigned int*)(0x42A7A8C8UL))) +#define bM4_PORT_PFSRH1_FSEL3 (*((volatile unsigned int*)(0x42A7A8CCUL))) +#define bM4_PORT_PFSRH1_FSEL4 (*((volatile unsigned int*)(0x42A7A8D0UL))) +#define bM4_PORT_PFSRH1_FSEL5 (*((volatile unsigned int*)(0x42A7A8D4UL))) +#define bM4_PORT_PFSRH1_BFE (*((volatile unsigned int*)(0x42A7A8E0UL))) +#define bM4_PORT_PCRH2_POUT (*((volatile unsigned int*)(0x42A7A900UL))) +#define bM4_PORT_PCRH2_POUTE (*((volatile unsigned int*)(0x42A7A904UL))) +#define bM4_PORT_PCRH2_NOD (*((volatile unsigned int*)(0x42A7A908UL))) +#define bM4_PORT_PCRH2_DRV0 (*((volatile unsigned int*)(0x42A7A910UL))) +#define bM4_PORT_PCRH2_DRV1 (*((volatile unsigned int*)(0x42A7A914UL))) +#define bM4_PORT_PCRH2_PUU (*((volatile unsigned int*)(0x42A7A918UL))) +#define bM4_PORT_PCRH2_PIN (*((volatile unsigned int*)(0x42A7A920UL))) +#define bM4_PORT_PCRH2_INVE (*((volatile unsigned int*)(0x42A7A924UL))) +#define bM4_PORT_PCRH2_INTE (*((volatile unsigned int*)(0x42A7A930UL))) +#define bM4_PORT_PCRH2_LTE (*((volatile unsigned int*)(0x42A7A938UL))) +#define bM4_PORT_PCRH2_DDIS (*((volatile unsigned int*)(0x42A7A93CUL))) +#define bM4_PORT_PFSRH2_FSEL0 (*((volatile unsigned int*)(0x42A7A940UL))) +#define bM4_PORT_PFSRH2_FSEL1 (*((volatile unsigned int*)(0x42A7A944UL))) +#define bM4_PORT_PFSRH2_FSEL2 (*((volatile unsigned int*)(0x42A7A948UL))) +#define bM4_PORT_PFSRH2_FSEL3 (*((volatile unsigned int*)(0x42A7A94CUL))) +#define bM4_PORT_PFSRH2_FSEL4 (*((volatile unsigned int*)(0x42A7A950UL))) +#define bM4_PORT_PFSRH2_FSEL5 (*((volatile unsigned int*)(0x42A7A954UL))) +#define bM4_PORT_PFSRH2_BFE (*((volatile unsigned int*)(0x42A7A960UL))) +#define bM4_RTC_CR0_RESET (*((volatile unsigned int*)(0x42980000UL))) +#define bM4_RTC_CR1_PRDS0 (*((volatile unsigned int*)(0x42980080UL))) +#define bM4_RTC_CR1_PRDS1 (*((volatile unsigned int*)(0x42980084UL))) +#define bM4_RTC_CR1_PRDS2 (*((volatile unsigned int*)(0x42980088UL))) +#define bM4_RTC_CR1_AMPM (*((volatile unsigned int*)(0x4298008CUL))) +#define bM4_RTC_CR1_ALMFCLR (*((volatile unsigned int*)(0x42980090UL))) +#define bM4_RTC_CR1_ONEHZOE (*((volatile unsigned int*)(0x42980094UL))) +#define bM4_RTC_CR1_ONEHZSEL (*((volatile unsigned int*)(0x42980098UL))) +#define bM4_RTC_CR1_START (*((volatile unsigned int*)(0x4298009CUL))) +#define bM4_RTC_CR2_RWREQ (*((volatile unsigned int*)(0x42980100UL))) +#define bM4_RTC_CR2_RWEN (*((volatile unsigned int*)(0x42980104UL))) +#define bM4_RTC_CR2_ALMF (*((volatile unsigned int*)(0x4298010CUL))) +#define bM4_RTC_CR2_PRDIE (*((volatile unsigned int*)(0x42980114UL))) +#define bM4_RTC_CR2_ALMIE (*((volatile unsigned int*)(0x42980118UL))) +#define bM4_RTC_CR2_ALME (*((volatile unsigned int*)(0x4298011CUL))) +#define bM4_RTC_CR3_LRCEN (*((volatile unsigned int*)(0x42980190UL))) +#define bM4_RTC_CR3_RCKSEL (*((volatile unsigned int*)(0x4298019CUL))) +#define bM4_RTC_SEC_SECU0 (*((volatile unsigned int*)(0x42980200UL))) +#define bM4_RTC_SEC_SECU1 (*((volatile unsigned int*)(0x42980204UL))) +#define bM4_RTC_SEC_SECU2 (*((volatile unsigned int*)(0x42980208UL))) +#define bM4_RTC_SEC_SECU3 (*((volatile unsigned int*)(0x4298020CUL))) +#define bM4_RTC_SEC_SECD0 (*((volatile unsigned int*)(0x42980210UL))) +#define bM4_RTC_SEC_SECD1 (*((volatile unsigned int*)(0x42980214UL))) +#define bM4_RTC_SEC_SECD2 (*((volatile unsigned int*)(0x42980218UL))) +#define bM4_RTC_MIN_MINU0 (*((volatile unsigned int*)(0x42980280UL))) +#define bM4_RTC_MIN_MINU1 (*((volatile unsigned int*)(0x42980284UL))) +#define bM4_RTC_MIN_MINU2 (*((volatile unsigned int*)(0x42980288UL))) +#define bM4_RTC_MIN_MINU3 (*((volatile unsigned int*)(0x4298028CUL))) +#define bM4_RTC_MIN_MIND0 (*((volatile unsigned int*)(0x42980290UL))) +#define bM4_RTC_MIN_MIND1 (*((volatile unsigned int*)(0x42980294UL))) +#define bM4_RTC_MIN_MIND2 (*((volatile unsigned int*)(0x42980298UL))) +#define bM4_RTC_HOUR_HOURU0 (*((volatile unsigned int*)(0x42980300UL))) +#define bM4_RTC_HOUR_HOURU1 (*((volatile unsigned int*)(0x42980304UL))) +#define bM4_RTC_HOUR_HOURU2 (*((volatile unsigned int*)(0x42980308UL))) +#define bM4_RTC_HOUR_HOURU3 (*((volatile unsigned int*)(0x4298030CUL))) +#define bM4_RTC_HOUR_HOURD0 (*((volatile unsigned int*)(0x42980310UL))) +#define bM4_RTC_HOUR_HOURD1 (*((volatile unsigned int*)(0x42980314UL))) +#define bM4_RTC_WEEK_WEEK0 (*((volatile unsigned int*)(0x42980380UL))) +#define bM4_RTC_WEEK_WEEK1 (*((volatile unsigned int*)(0x42980384UL))) +#define bM4_RTC_WEEK_WEEK2 (*((volatile unsigned int*)(0x42980388UL))) +#define bM4_RTC_DAY_DAYU0 (*((volatile unsigned int*)(0x42980400UL))) +#define bM4_RTC_DAY_DAYU1 (*((volatile unsigned int*)(0x42980404UL))) +#define bM4_RTC_DAY_DAYU2 (*((volatile unsigned int*)(0x42980408UL))) +#define bM4_RTC_DAY_DAYU3 (*((volatile unsigned int*)(0x4298040CUL))) +#define bM4_RTC_DAY_DAYD0 (*((volatile unsigned int*)(0x42980410UL))) +#define bM4_RTC_DAY_DAYD1 (*((volatile unsigned int*)(0x42980414UL))) +#define bM4_RTC_MON_MON0 (*((volatile unsigned int*)(0x42980480UL))) +#define bM4_RTC_MON_MON1 (*((volatile unsigned int*)(0x42980484UL))) +#define bM4_RTC_MON_MON2 (*((volatile unsigned int*)(0x42980488UL))) +#define bM4_RTC_MON_MON3 (*((volatile unsigned int*)(0x4298048CUL))) +#define bM4_RTC_MON_MON4 (*((volatile unsigned int*)(0x42980490UL))) +#define bM4_RTC_YEAR_YEARU0 (*((volatile unsigned int*)(0x42980500UL))) +#define bM4_RTC_YEAR_YEARU1 (*((volatile unsigned int*)(0x42980504UL))) +#define bM4_RTC_YEAR_YEARU2 (*((volatile unsigned int*)(0x42980508UL))) +#define bM4_RTC_YEAR_YEARU3 (*((volatile unsigned int*)(0x4298050CUL))) +#define bM4_RTC_YEAR_YEARD0 (*((volatile unsigned int*)(0x42980510UL))) +#define bM4_RTC_YEAR_YEARD1 (*((volatile unsigned int*)(0x42980514UL))) +#define bM4_RTC_YEAR_YEARD2 (*((volatile unsigned int*)(0x42980518UL))) +#define bM4_RTC_YEAR_YEARD3 (*((volatile unsigned int*)(0x4298051CUL))) +#define bM4_RTC_ALMMIN_ALMMINU0 (*((volatile unsigned int*)(0x42980580UL))) +#define bM4_RTC_ALMMIN_ALMMINU1 (*((volatile unsigned int*)(0x42980584UL))) +#define bM4_RTC_ALMMIN_ALMMINU2 (*((volatile unsigned int*)(0x42980588UL))) +#define bM4_RTC_ALMMIN_ALMMINU3 (*((volatile unsigned int*)(0x4298058CUL))) +#define bM4_RTC_ALMMIN_ALMMIND0 (*((volatile unsigned int*)(0x42980590UL))) +#define bM4_RTC_ALMMIN_ALMMIND1 (*((volatile unsigned int*)(0x42980594UL))) +#define bM4_RTC_ALMMIN_ALMMIND2 (*((volatile unsigned int*)(0x42980598UL))) +#define bM4_RTC_ALMHOUR_ALMHOURU0 (*((volatile unsigned int*)(0x42980600UL))) +#define bM4_RTC_ALMHOUR_ALMHOURU1 (*((volatile unsigned int*)(0x42980604UL))) +#define bM4_RTC_ALMHOUR_ALMHOURU2 (*((volatile unsigned int*)(0x42980608UL))) +#define bM4_RTC_ALMHOUR_ALMHOURU3 (*((volatile unsigned int*)(0x4298060CUL))) +#define bM4_RTC_ALMHOUR_ALMHOURD0 (*((volatile unsigned int*)(0x42980610UL))) +#define bM4_RTC_ALMHOUR_ALMHOURD1 (*((volatile unsigned int*)(0x42980614UL))) +#define bM4_RTC_ALMWEEK_ALMWEEK0 (*((volatile unsigned int*)(0x42980680UL))) +#define bM4_RTC_ALMWEEK_ALMWEEK1 (*((volatile unsigned int*)(0x42980684UL))) +#define bM4_RTC_ALMWEEK_ALMWEEK2 (*((volatile unsigned int*)(0x42980688UL))) +#define bM4_RTC_ALMWEEK_ALMWEEK3 (*((volatile unsigned int*)(0x4298068CUL))) +#define bM4_RTC_ALMWEEK_ALMWEEK4 (*((volatile unsigned int*)(0x42980690UL))) +#define bM4_RTC_ALMWEEK_ALMWEEK5 (*((volatile unsigned int*)(0x42980694UL))) +#define bM4_RTC_ALMWEEK_ALMWEEK6 (*((volatile unsigned int*)(0x42980698UL))) +#define bM4_RTC_ERRCRH_COMP8 (*((volatile unsigned int*)(0x42980700UL))) +#define bM4_RTC_ERRCRH_COMPEN (*((volatile unsigned int*)(0x4298071CUL))) +#define bM4_RTC_ERRCRL_COMP0 (*((volatile unsigned int*)(0x42980780UL))) +#define bM4_RTC_ERRCRL_COMP1 (*((volatile unsigned int*)(0x42980784UL))) +#define bM4_RTC_ERRCRL_COMP2 (*((volatile unsigned int*)(0x42980788UL))) +#define bM4_RTC_ERRCRL_COMP3 (*((volatile unsigned int*)(0x4298078CUL))) +#define bM4_RTC_ERRCRL_COMP4 (*((volatile unsigned int*)(0x42980790UL))) +#define bM4_RTC_ERRCRL_COMP5 (*((volatile unsigned int*)(0x42980794UL))) +#define bM4_RTC_ERRCRL_COMP6 (*((volatile unsigned int*)(0x42980798UL))) +#define bM4_RTC_ERRCRL_COMP7 (*((volatile unsigned int*)(0x4298079CUL))) +#define bM4_SDIOC1_BLKSIZE_TBS0 (*((volatile unsigned int*)(0x42DF8080UL))) +#define bM4_SDIOC1_BLKSIZE_TBS1 (*((volatile unsigned int*)(0x42DF8084UL))) +#define bM4_SDIOC1_BLKSIZE_TBS2 (*((volatile unsigned int*)(0x42DF8088UL))) +#define bM4_SDIOC1_BLKSIZE_TBS3 (*((volatile unsigned int*)(0x42DF808CUL))) +#define bM4_SDIOC1_BLKSIZE_TBS4 (*((volatile unsigned int*)(0x42DF8090UL))) +#define bM4_SDIOC1_BLKSIZE_TBS5 (*((volatile unsigned int*)(0x42DF8094UL))) +#define bM4_SDIOC1_BLKSIZE_TBS6 (*((volatile unsigned int*)(0x42DF8098UL))) +#define bM4_SDIOC1_BLKSIZE_TBS7 (*((volatile unsigned int*)(0x42DF809CUL))) +#define bM4_SDIOC1_BLKSIZE_TBS8 (*((volatile unsigned int*)(0x42DF80A0UL))) +#define bM4_SDIOC1_BLKSIZE_TBS9 (*((volatile unsigned int*)(0x42DF80A4UL))) +#define bM4_SDIOC1_BLKSIZE_TBS10 (*((volatile unsigned int*)(0x42DF80A8UL))) +#define bM4_SDIOC1_BLKSIZE_TBS11 (*((volatile unsigned int*)(0x42DF80ACUL))) +#define bM4_SDIOC1_TRANSMODE_BCE (*((volatile unsigned int*)(0x42DF8184UL))) +#define bM4_SDIOC1_TRANSMODE_ATCEN0 (*((volatile unsigned int*)(0x42DF8188UL))) +#define bM4_SDIOC1_TRANSMODE_ATCEN1 (*((volatile unsigned int*)(0x42DF818CUL))) +#define bM4_SDIOC1_TRANSMODE_DDIR (*((volatile unsigned int*)(0x42DF8190UL))) +#define bM4_SDIOC1_TRANSMODE_MULB (*((volatile unsigned int*)(0x42DF8194UL))) +#define bM4_SDIOC1_CMD_RESTYP0 (*((volatile unsigned int*)(0x42DF81C0UL))) +#define bM4_SDIOC1_CMD_RESTYP1 (*((volatile unsigned int*)(0x42DF81C4UL))) +#define bM4_SDIOC1_CMD_CCE (*((volatile unsigned int*)(0x42DF81CCUL))) +#define bM4_SDIOC1_CMD_ICE (*((volatile unsigned int*)(0x42DF81D0UL))) +#define bM4_SDIOC1_CMD_DAT (*((volatile unsigned int*)(0x42DF81D4UL))) +#define bM4_SDIOC1_CMD_TYP0 (*((volatile unsigned int*)(0x42DF81D8UL))) +#define bM4_SDIOC1_CMD_TYP1 (*((volatile unsigned int*)(0x42DF81DCUL))) +#define bM4_SDIOC1_CMD_IDX0 (*((volatile unsigned int*)(0x42DF81E0UL))) +#define bM4_SDIOC1_CMD_IDX1 (*((volatile unsigned int*)(0x42DF81E4UL))) +#define bM4_SDIOC1_CMD_IDX2 (*((volatile unsigned int*)(0x42DF81E8UL))) +#define bM4_SDIOC1_CMD_IDX3 (*((volatile unsigned int*)(0x42DF81ECUL))) +#define bM4_SDIOC1_CMD_IDX4 (*((volatile unsigned int*)(0x42DF81F0UL))) +#define bM4_SDIOC1_CMD_IDX5 (*((volatile unsigned int*)(0x42DF81F4UL))) +#define bM4_SDIOC1_PSTAT_CIC (*((volatile unsigned int*)(0x42DF8480UL))) +#define bM4_SDIOC1_PSTAT_CID (*((volatile unsigned int*)(0x42DF8484UL))) +#define bM4_SDIOC1_PSTAT_DA (*((volatile unsigned int*)(0x42DF8488UL))) +#define bM4_SDIOC1_PSTAT_WTA (*((volatile unsigned int*)(0x42DF84A0UL))) +#define bM4_SDIOC1_PSTAT_RTA (*((volatile unsigned int*)(0x42DF84A4UL))) +#define bM4_SDIOC1_PSTAT_BWE (*((volatile unsigned int*)(0x42DF84A8UL))) +#define bM4_SDIOC1_PSTAT_BRE (*((volatile unsigned int*)(0x42DF84ACUL))) +#define bM4_SDIOC1_PSTAT_CIN (*((volatile unsigned int*)(0x42DF84C0UL))) +#define bM4_SDIOC1_PSTAT_CSS (*((volatile unsigned int*)(0x42DF84C4UL))) +#define bM4_SDIOC1_PSTAT_CDL (*((volatile unsigned int*)(0x42DF84C8UL))) +#define bM4_SDIOC1_PSTAT_WPL (*((volatile unsigned int*)(0x42DF84CCUL))) +#define bM4_SDIOC1_PSTAT_DATL0 (*((volatile unsigned int*)(0x42DF84D0UL))) +#define bM4_SDIOC1_PSTAT_DATL1 (*((volatile unsigned int*)(0x42DF84D4UL))) +#define bM4_SDIOC1_PSTAT_DATL2 (*((volatile unsigned int*)(0x42DF84D8UL))) +#define bM4_SDIOC1_PSTAT_DATL3 (*((volatile unsigned int*)(0x42DF84DCUL))) +#define bM4_SDIOC1_PSTAT_CMDL (*((volatile unsigned int*)(0x42DF84E0UL))) +#define bM4_SDIOC1_HOSTCON_DW (*((volatile unsigned int*)(0x42DF8504UL))) +#define bM4_SDIOC1_HOSTCON_HSEN (*((volatile unsigned int*)(0x42DF8508UL))) +#define bM4_SDIOC1_HOSTCON_EXDW (*((volatile unsigned int*)(0x42DF8514UL))) +#define bM4_SDIOC1_HOSTCON_CDTL (*((volatile unsigned int*)(0x42DF8518UL))) +#define bM4_SDIOC1_HOSTCON_CDSS (*((volatile unsigned int*)(0x42DF851CUL))) +#define bM4_SDIOC1_PWRCON_PWON (*((volatile unsigned int*)(0x42DF8520UL))) +#define bM4_SDIOC1_BLKGPCON_SABGR (*((volatile unsigned int*)(0x42DF8540UL))) +#define bM4_SDIOC1_BLKGPCON_CR (*((volatile unsigned int*)(0x42DF8544UL))) +#define bM4_SDIOC1_BLKGPCON_RWC (*((volatile unsigned int*)(0x42DF8548UL))) +#define bM4_SDIOC1_BLKGPCON_IABG (*((volatile unsigned int*)(0x42DF854CUL))) +#define bM4_SDIOC1_CLKCON_ICE (*((volatile unsigned int*)(0x42DF8580UL))) +#define bM4_SDIOC1_CLKCON_CE (*((volatile unsigned int*)(0x42DF8588UL))) +#define bM4_SDIOC1_CLKCON_FS0 (*((volatile unsigned int*)(0x42DF85A0UL))) +#define bM4_SDIOC1_CLKCON_FS1 (*((volatile unsigned int*)(0x42DF85A4UL))) +#define bM4_SDIOC1_CLKCON_FS2 (*((volatile unsigned int*)(0x42DF85A8UL))) +#define bM4_SDIOC1_CLKCON_FS3 (*((volatile unsigned int*)(0x42DF85ACUL))) +#define bM4_SDIOC1_CLKCON_FS4 (*((volatile unsigned int*)(0x42DF85B0UL))) +#define bM4_SDIOC1_CLKCON_FS5 (*((volatile unsigned int*)(0x42DF85B4UL))) +#define bM4_SDIOC1_CLKCON_FS6 (*((volatile unsigned int*)(0x42DF85B8UL))) +#define bM4_SDIOC1_CLKCON_FS7 (*((volatile unsigned int*)(0x42DF85BCUL))) +#define bM4_SDIOC1_TOUTCON_DTO0 (*((volatile unsigned int*)(0x42DF85C0UL))) +#define bM4_SDIOC1_TOUTCON_DTO1 (*((volatile unsigned int*)(0x42DF85C4UL))) +#define bM4_SDIOC1_TOUTCON_DTO2 (*((volatile unsigned int*)(0x42DF85C8UL))) +#define bM4_SDIOC1_TOUTCON_DTO3 (*((volatile unsigned int*)(0x42DF85CCUL))) +#define bM4_SDIOC1_SFTRST_RSTA (*((volatile unsigned int*)(0x42DF85E0UL))) +#define bM4_SDIOC1_SFTRST_RSTC (*((volatile unsigned int*)(0x42DF85E4UL))) +#define bM4_SDIOC1_SFTRST_RSTD (*((volatile unsigned int*)(0x42DF85E8UL))) +#define bM4_SDIOC1_NORINTST_CC (*((volatile unsigned int*)(0x42DF8600UL))) +#define bM4_SDIOC1_NORINTST_TC (*((volatile unsigned int*)(0x42DF8604UL))) +#define bM4_SDIOC1_NORINTST_BGE (*((volatile unsigned int*)(0x42DF8608UL))) +#define bM4_SDIOC1_NORINTST_BWR (*((volatile unsigned int*)(0x42DF8610UL))) +#define bM4_SDIOC1_NORINTST_BRR (*((volatile unsigned int*)(0x42DF8614UL))) +#define bM4_SDIOC1_NORINTST_CIST (*((volatile unsigned int*)(0x42DF8618UL))) +#define bM4_SDIOC1_NORINTST_CRM (*((volatile unsigned int*)(0x42DF861CUL))) +#define bM4_SDIOC1_NORINTST_CINT (*((volatile unsigned int*)(0x42DF8620UL))) +#define bM4_SDIOC1_NORINTST_EI (*((volatile unsigned int*)(0x42DF863CUL))) +#define bM4_SDIOC1_ERRINTST_CTOE (*((volatile unsigned int*)(0x42DF8640UL))) +#define bM4_SDIOC1_ERRINTST_CCE (*((volatile unsigned int*)(0x42DF8644UL))) +#define bM4_SDIOC1_ERRINTST_CEBE (*((volatile unsigned int*)(0x42DF8648UL))) +#define bM4_SDIOC1_ERRINTST_CIE (*((volatile unsigned int*)(0x42DF864CUL))) +#define bM4_SDIOC1_ERRINTST_DTOE (*((volatile unsigned int*)(0x42DF8650UL))) +#define bM4_SDIOC1_ERRINTST_DCE (*((volatile unsigned int*)(0x42DF8654UL))) +#define bM4_SDIOC1_ERRINTST_DEBE (*((volatile unsigned int*)(0x42DF8658UL))) +#define bM4_SDIOC1_ERRINTST_ACE (*((volatile unsigned int*)(0x42DF8660UL))) +#define bM4_SDIOC1_NORINTSTEN_CCEN (*((volatile unsigned int*)(0x42DF8680UL))) +#define bM4_SDIOC1_NORINTSTEN_TCEN (*((volatile unsigned int*)(0x42DF8684UL))) +#define bM4_SDIOC1_NORINTSTEN_BGEEN (*((volatile unsigned int*)(0x42DF8688UL))) +#define bM4_SDIOC1_NORINTSTEN_BWREN (*((volatile unsigned int*)(0x42DF8690UL))) +#define bM4_SDIOC1_NORINTSTEN_BRREN (*((volatile unsigned int*)(0x42DF8694UL))) +#define bM4_SDIOC1_NORINTSTEN_CISTEN (*((volatile unsigned int*)(0x42DF8698UL))) +#define bM4_SDIOC1_NORINTSTEN_CRMEN (*((volatile unsigned int*)(0x42DF869CUL))) +#define bM4_SDIOC1_NORINTSTEN_CINTEN (*((volatile unsigned int*)(0x42DF86A0UL))) +#define bM4_SDIOC1_ERRINTSTEN_CTOEEN (*((volatile unsigned int*)(0x42DF86C0UL))) +#define bM4_SDIOC1_ERRINTSTEN_CCEEN (*((volatile unsigned int*)(0x42DF86C4UL))) +#define bM4_SDIOC1_ERRINTSTEN_CEBEEN (*((volatile unsigned int*)(0x42DF86C8UL))) +#define bM4_SDIOC1_ERRINTSTEN_CIEEN (*((volatile unsigned int*)(0x42DF86CCUL))) +#define bM4_SDIOC1_ERRINTSTEN_DTOEEN (*((volatile unsigned int*)(0x42DF86D0UL))) +#define bM4_SDIOC1_ERRINTSTEN_DCEEN (*((volatile unsigned int*)(0x42DF86D4UL))) +#define bM4_SDIOC1_ERRINTSTEN_DEBEEN (*((volatile unsigned int*)(0x42DF86D8UL))) +#define bM4_SDIOC1_ERRINTSTEN_ACEEN (*((volatile unsigned int*)(0x42DF86E0UL))) +#define bM4_SDIOC1_NORINTSGEN_CCSEN (*((volatile unsigned int*)(0x42DF8700UL))) +#define bM4_SDIOC1_NORINTSGEN_TCSEN (*((volatile unsigned int*)(0x42DF8704UL))) +#define bM4_SDIOC1_NORINTSGEN_BGESEN (*((volatile unsigned int*)(0x42DF8708UL))) +#define bM4_SDIOC1_NORINTSGEN_BWRSEN (*((volatile unsigned int*)(0x42DF8710UL))) +#define bM4_SDIOC1_NORINTSGEN_BRRSEN (*((volatile unsigned int*)(0x42DF8714UL))) +#define bM4_SDIOC1_NORINTSGEN_CISTSEN (*((volatile unsigned int*)(0x42DF8718UL))) +#define bM4_SDIOC1_NORINTSGEN_CRMSEN (*((volatile unsigned int*)(0x42DF871CUL))) +#define bM4_SDIOC1_NORINTSGEN_CINTSEN (*((volatile unsigned int*)(0x42DF8720UL))) +#define bM4_SDIOC1_ERRINTSGEN_CTOESEN (*((volatile unsigned int*)(0x42DF8740UL))) +#define bM4_SDIOC1_ERRINTSGEN_CCESEN (*((volatile unsigned int*)(0x42DF8744UL))) +#define bM4_SDIOC1_ERRINTSGEN_CEBESEN (*((volatile unsigned int*)(0x42DF8748UL))) +#define bM4_SDIOC1_ERRINTSGEN_CIESEN (*((volatile unsigned int*)(0x42DF874CUL))) +#define bM4_SDIOC1_ERRINTSGEN_DTOESEN (*((volatile unsigned int*)(0x42DF8750UL))) +#define bM4_SDIOC1_ERRINTSGEN_DCESEN (*((volatile unsigned int*)(0x42DF8754UL))) +#define bM4_SDIOC1_ERRINTSGEN_DEBESEN (*((volatile unsigned int*)(0x42DF8758UL))) +#define bM4_SDIOC1_ERRINTSGEN_ACESEN (*((volatile unsigned int*)(0x42DF8760UL))) +#define bM4_SDIOC1_ATCERRST_NE (*((volatile unsigned int*)(0x42DF8780UL))) +#define bM4_SDIOC1_ATCERRST_TOE (*((volatile unsigned int*)(0x42DF8784UL))) +#define bM4_SDIOC1_ATCERRST_CE (*((volatile unsigned int*)(0x42DF8788UL))) +#define bM4_SDIOC1_ATCERRST_EBE (*((volatile unsigned int*)(0x42DF878CUL))) +#define bM4_SDIOC1_ATCERRST_IE (*((volatile unsigned int*)(0x42DF8790UL))) +#define bM4_SDIOC1_ATCERRST_CMDE (*((volatile unsigned int*)(0x42DF879CUL))) +#define bM4_SDIOC1_FEA_FNE (*((volatile unsigned int*)(0x42DF8A00UL))) +#define bM4_SDIOC1_FEA_FTOE (*((volatile unsigned int*)(0x42DF8A04UL))) +#define bM4_SDIOC1_FEA_FCE (*((volatile unsigned int*)(0x42DF8A08UL))) +#define bM4_SDIOC1_FEA_FEBE (*((volatile unsigned int*)(0x42DF8A0CUL))) +#define bM4_SDIOC1_FEA_FIE (*((volatile unsigned int*)(0x42DF8A10UL))) +#define bM4_SDIOC1_FEA_FCMDE (*((volatile unsigned int*)(0x42DF8A1CUL))) +#define bM4_SDIOC1_FEE_FCTOE (*((volatile unsigned int*)(0x42DF8A40UL))) +#define bM4_SDIOC1_FEE_FCCE (*((volatile unsigned int*)(0x42DF8A44UL))) +#define bM4_SDIOC1_FEE_FCEBE (*((volatile unsigned int*)(0x42DF8A48UL))) +#define bM4_SDIOC1_FEE_FCIE (*((volatile unsigned int*)(0x42DF8A4CUL))) +#define bM4_SDIOC1_FEE_FDTOE (*((volatile unsigned int*)(0x42DF8A50UL))) +#define bM4_SDIOC1_FEE_FDCE (*((volatile unsigned int*)(0x42DF8A54UL))) +#define bM4_SDIOC1_FEE_FDEBE (*((volatile unsigned int*)(0x42DF8A58UL))) +#define bM4_SDIOC1_FEE_FACE (*((volatile unsigned int*)(0x42DF8A60UL))) +#define bM4_SDIOC2_BLKSIZE_TBS0 (*((volatile unsigned int*)(0x42E00080UL))) +#define bM4_SDIOC2_BLKSIZE_TBS1 (*((volatile unsigned int*)(0x42E00084UL))) +#define bM4_SDIOC2_BLKSIZE_TBS2 (*((volatile unsigned int*)(0x42E00088UL))) +#define bM4_SDIOC2_BLKSIZE_TBS3 (*((volatile unsigned int*)(0x42E0008CUL))) +#define bM4_SDIOC2_BLKSIZE_TBS4 (*((volatile unsigned int*)(0x42E00090UL))) +#define bM4_SDIOC2_BLKSIZE_TBS5 (*((volatile unsigned int*)(0x42E00094UL))) +#define bM4_SDIOC2_BLKSIZE_TBS6 (*((volatile unsigned int*)(0x42E00098UL))) +#define bM4_SDIOC2_BLKSIZE_TBS7 (*((volatile unsigned int*)(0x42E0009CUL))) +#define bM4_SDIOC2_BLKSIZE_TBS8 (*((volatile unsigned int*)(0x42E000A0UL))) +#define bM4_SDIOC2_BLKSIZE_TBS9 (*((volatile unsigned int*)(0x42E000A4UL))) +#define bM4_SDIOC2_BLKSIZE_TBS10 (*((volatile unsigned int*)(0x42E000A8UL))) +#define bM4_SDIOC2_BLKSIZE_TBS11 (*((volatile unsigned int*)(0x42E000ACUL))) +#define bM4_SDIOC2_TRANSMODE_BCE (*((volatile unsigned int*)(0x42E00184UL))) +#define bM4_SDIOC2_TRANSMODE_ATCEN0 (*((volatile unsigned int*)(0x42E00188UL))) +#define bM4_SDIOC2_TRANSMODE_ATCEN1 (*((volatile unsigned int*)(0x42E0018CUL))) +#define bM4_SDIOC2_TRANSMODE_DDIR (*((volatile unsigned int*)(0x42E00190UL))) +#define bM4_SDIOC2_TRANSMODE_MULB (*((volatile unsigned int*)(0x42E00194UL))) +#define bM4_SDIOC2_CMD_RESTYP0 (*((volatile unsigned int*)(0x42E001C0UL))) +#define bM4_SDIOC2_CMD_RESTYP1 (*((volatile unsigned int*)(0x42E001C4UL))) +#define bM4_SDIOC2_CMD_CCE (*((volatile unsigned int*)(0x42E001CCUL))) +#define bM4_SDIOC2_CMD_ICE (*((volatile unsigned int*)(0x42E001D0UL))) +#define bM4_SDIOC2_CMD_DAT (*((volatile unsigned int*)(0x42E001D4UL))) +#define bM4_SDIOC2_CMD_TYP0 (*((volatile unsigned int*)(0x42E001D8UL))) +#define bM4_SDIOC2_CMD_TYP1 (*((volatile unsigned int*)(0x42E001DCUL))) +#define bM4_SDIOC2_CMD_IDX0 (*((volatile unsigned int*)(0x42E001E0UL))) +#define bM4_SDIOC2_CMD_IDX1 (*((volatile unsigned int*)(0x42E001E4UL))) +#define bM4_SDIOC2_CMD_IDX2 (*((volatile unsigned int*)(0x42E001E8UL))) +#define bM4_SDIOC2_CMD_IDX3 (*((volatile unsigned int*)(0x42E001ECUL))) +#define bM4_SDIOC2_CMD_IDX4 (*((volatile unsigned int*)(0x42E001F0UL))) +#define bM4_SDIOC2_CMD_IDX5 (*((volatile unsigned int*)(0x42E001F4UL))) +#define bM4_SDIOC2_PSTAT_CIC (*((volatile unsigned int*)(0x42E00480UL))) +#define bM4_SDIOC2_PSTAT_CID (*((volatile unsigned int*)(0x42E00484UL))) +#define bM4_SDIOC2_PSTAT_DA (*((volatile unsigned int*)(0x42E00488UL))) +#define bM4_SDIOC2_PSTAT_WTA (*((volatile unsigned int*)(0x42E004A0UL))) +#define bM4_SDIOC2_PSTAT_RTA (*((volatile unsigned int*)(0x42E004A4UL))) +#define bM4_SDIOC2_PSTAT_BWE (*((volatile unsigned int*)(0x42E004A8UL))) +#define bM4_SDIOC2_PSTAT_BRE (*((volatile unsigned int*)(0x42E004ACUL))) +#define bM4_SDIOC2_PSTAT_CIN (*((volatile unsigned int*)(0x42E004C0UL))) +#define bM4_SDIOC2_PSTAT_CSS (*((volatile unsigned int*)(0x42E004C4UL))) +#define bM4_SDIOC2_PSTAT_CDL (*((volatile unsigned int*)(0x42E004C8UL))) +#define bM4_SDIOC2_PSTAT_WPL (*((volatile unsigned int*)(0x42E004CCUL))) +#define bM4_SDIOC2_PSTAT_DATL0 (*((volatile unsigned int*)(0x42E004D0UL))) +#define bM4_SDIOC2_PSTAT_DATL1 (*((volatile unsigned int*)(0x42E004D4UL))) +#define bM4_SDIOC2_PSTAT_DATL2 (*((volatile unsigned int*)(0x42E004D8UL))) +#define bM4_SDIOC2_PSTAT_DATL3 (*((volatile unsigned int*)(0x42E004DCUL))) +#define bM4_SDIOC2_PSTAT_CMDL (*((volatile unsigned int*)(0x42E004E0UL))) +#define bM4_SDIOC2_HOSTCON_DW (*((volatile unsigned int*)(0x42E00504UL))) +#define bM4_SDIOC2_HOSTCON_HSEN (*((volatile unsigned int*)(0x42E00508UL))) +#define bM4_SDIOC2_HOSTCON_EXDW (*((volatile unsigned int*)(0x42E00514UL))) +#define bM4_SDIOC2_HOSTCON_CDTL (*((volatile unsigned int*)(0x42E00518UL))) +#define bM4_SDIOC2_HOSTCON_CDSS (*((volatile unsigned int*)(0x42E0051CUL))) +#define bM4_SDIOC2_PWRCON_PWON (*((volatile unsigned int*)(0x42E00520UL))) +#define bM4_SDIOC2_BLKGPCON_SABGR (*((volatile unsigned int*)(0x42E00540UL))) +#define bM4_SDIOC2_BLKGPCON_CR (*((volatile unsigned int*)(0x42E00544UL))) +#define bM4_SDIOC2_BLKGPCON_RWC (*((volatile unsigned int*)(0x42E00548UL))) +#define bM4_SDIOC2_BLKGPCON_IABG (*((volatile unsigned int*)(0x42E0054CUL))) +#define bM4_SDIOC2_CLKCON_ICE (*((volatile unsigned int*)(0x42E00580UL))) +#define bM4_SDIOC2_CLKCON_CE (*((volatile unsigned int*)(0x42E00588UL))) +#define bM4_SDIOC2_CLKCON_FS0 (*((volatile unsigned int*)(0x42E005A0UL))) +#define bM4_SDIOC2_CLKCON_FS1 (*((volatile unsigned int*)(0x42E005A4UL))) +#define bM4_SDIOC2_CLKCON_FS2 (*((volatile unsigned int*)(0x42E005A8UL))) +#define bM4_SDIOC2_CLKCON_FS3 (*((volatile unsigned int*)(0x42E005ACUL))) +#define bM4_SDIOC2_CLKCON_FS4 (*((volatile unsigned int*)(0x42E005B0UL))) +#define bM4_SDIOC2_CLKCON_FS5 (*((volatile unsigned int*)(0x42E005B4UL))) +#define bM4_SDIOC2_CLKCON_FS6 (*((volatile unsigned int*)(0x42E005B8UL))) +#define bM4_SDIOC2_CLKCON_FS7 (*((volatile unsigned int*)(0x42E005BCUL))) +#define bM4_SDIOC2_TOUTCON_DTO0 (*((volatile unsigned int*)(0x42E005C0UL))) +#define bM4_SDIOC2_TOUTCON_DTO1 (*((volatile unsigned int*)(0x42E005C4UL))) +#define bM4_SDIOC2_TOUTCON_DTO2 (*((volatile unsigned int*)(0x42E005C8UL))) +#define bM4_SDIOC2_TOUTCON_DTO3 (*((volatile unsigned int*)(0x42E005CCUL))) +#define bM4_SDIOC2_SFTRST_RSTA (*((volatile unsigned int*)(0x42E005E0UL))) +#define bM4_SDIOC2_SFTRST_RSTC (*((volatile unsigned int*)(0x42E005E4UL))) +#define bM4_SDIOC2_SFTRST_RSTD (*((volatile unsigned int*)(0x42E005E8UL))) +#define bM4_SDIOC2_NORINTST_CC (*((volatile unsigned int*)(0x42E00600UL))) +#define bM4_SDIOC2_NORINTST_TC (*((volatile unsigned int*)(0x42E00604UL))) +#define bM4_SDIOC2_NORINTST_BGE (*((volatile unsigned int*)(0x42E00608UL))) +#define bM4_SDIOC2_NORINTST_BWR (*((volatile unsigned int*)(0x42E00610UL))) +#define bM4_SDIOC2_NORINTST_BRR (*((volatile unsigned int*)(0x42E00614UL))) +#define bM4_SDIOC2_NORINTST_CIST (*((volatile unsigned int*)(0x42E00618UL))) +#define bM4_SDIOC2_NORINTST_CRM (*((volatile unsigned int*)(0x42E0061CUL))) +#define bM4_SDIOC2_NORINTST_CINT (*((volatile unsigned int*)(0x42E00620UL))) +#define bM4_SDIOC2_NORINTST_EI (*((volatile unsigned int*)(0x42E0063CUL))) +#define bM4_SDIOC2_ERRINTST_CTOE (*((volatile unsigned int*)(0x42E00640UL))) +#define bM4_SDIOC2_ERRINTST_CCE (*((volatile unsigned int*)(0x42E00644UL))) +#define bM4_SDIOC2_ERRINTST_CEBE (*((volatile unsigned int*)(0x42E00648UL))) +#define bM4_SDIOC2_ERRINTST_CIE (*((volatile unsigned int*)(0x42E0064CUL))) +#define bM4_SDIOC2_ERRINTST_DTOE (*((volatile unsigned int*)(0x42E00650UL))) +#define bM4_SDIOC2_ERRINTST_DCE (*((volatile unsigned int*)(0x42E00654UL))) +#define bM4_SDIOC2_ERRINTST_DEBE (*((volatile unsigned int*)(0x42E00658UL))) +#define bM4_SDIOC2_ERRINTST_ACE (*((volatile unsigned int*)(0x42E00660UL))) +#define bM4_SDIOC2_NORINTSTEN_CCEN (*((volatile unsigned int*)(0x42E00680UL))) +#define bM4_SDIOC2_NORINTSTEN_TCEN (*((volatile unsigned int*)(0x42E00684UL))) +#define bM4_SDIOC2_NORINTSTEN_BGEEN (*((volatile unsigned int*)(0x42E00688UL))) +#define bM4_SDIOC2_NORINTSTEN_BWREN (*((volatile unsigned int*)(0x42E00690UL))) +#define bM4_SDIOC2_NORINTSTEN_BRREN (*((volatile unsigned int*)(0x42E00694UL))) +#define bM4_SDIOC2_NORINTSTEN_CISTEN (*((volatile unsigned int*)(0x42E00698UL))) +#define bM4_SDIOC2_NORINTSTEN_CRMEN (*((volatile unsigned int*)(0x42E0069CUL))) +#define bM4_SDIOC2_NORINTSTEN_CINTEN (*((volatile unsigned int*)(0x42E006A0UL))) +#define bM4_SDIOC2_ERRINTSTEN_CTOEEN (*((volatile unsigned int*)(0x42E006C0UL))) +#define bM4_SDIOC2_ERRINTSTEN_CCEEN (*((volatile unsigned int*)(0x42E006C4UL))) +#define bM4_SDIOC2_ERRINTSTEN_CEBEEN (*((volatile unsigned int*)(0x42E006C8UL))) +#define bM4_SDIOC2_ERRINTSTEN_CIEEN (*((volatile unsigned int*)(0x42E006CCUL))) +#define bM4_SDIOC2_ERRINTSTEN_DTOEEN (*((volatile unsigned int*)(0x42E006D0UL))) +#define bM4_SDIOC2_ERRINTSTEN_DCEEN (*((volatile unsigned int*)(0x42E006D4UL))) +#define bM4_SDIOC2_ERRINTSTEN_DEBEEN (*((volatile unsigned int*)(0x42E006D8UL))) +#define bM4_SDIOC2_ERRINTSTEN_ACEEN (*((volatile unsigned int*)(0x42E006E0UL))) +#define bM4_SDIOC2_NORINTSGEN_CCSEN (*((volatile unsigned int*)(0x42E00700UL))) +#define bM4_SDIOC2_NORINTSGEN_TCSEN (*((volatile unsigned int*)(0x42E00704UL))) +#define bM4_SDIOC2_NORINTSGEN_BGESEN (*((volatile unsigned int*)(0x42E00708UL))) +#define bM4_SDIOC2_NORINTSGEN_BWRSEN (*((volatile unsigned int*)(0x42E00710UL))) +#define bM4_SDIOC2_NORINTSGEN_BRRSEN (*((volatile unsigned int*)(0x42E00714UL))) +#define bM4_SDIOC2_NORINTSGEN_CISTSEN (*((volatile unsigned int*)(0x42E00718UL))) +#define bM4_SDIOC2_NORINTSGEN_CRMSEN (*((volatile unsigned int*)(0x42E0071CUL))) +#define bM4_SDIOC2_NORINTSGEN_CINTSEN (*((volatile unsigned int*)(0x42E00720UL))) +#define bM4_SDIOC2_ERRINTSGEN_CTOESEN (*((volatile unsigned int*)(0x42E00740UL))) +#define bM4_SDIOC2_ERRINTSGEN_CCESEN (*((volatile unsigned int*)(0x42E00744UL))) +#define bM4_SDIOC2_ERRINTSGEN_CEBESEN (*((volatile unsigned int*)(0x42E00748UL))) +#define bM4_SDIOC2_ERRINTSGEN_CIESEN (*((volatile unsigned int*)(0x42E0074CUL))) +#define bM4_SDIOC2_ERRINTSGEN_DTOESEN (*((volatile unsigned int*)(0x42E00750UL))) +#define bM4_SDIOC2_ERRINTSGEN_DCESEN (*((volatile unsigned int*)(0x42E00754UL))) +#define bM4_SDIOC2_ERRINTSGEN_DEBESEN (*((volatile unsigned int*)(0x42E00758UL))) +#define bM4_SDIOC2_ERRINTSGEN_ACESEN (*((volatile unsigned int*)(0x42E00760UL))) +#define bM4_SDIOC2_ATCERRST_NE (*((volatile unsigned int*)(0x42E00780UL))) +#define bM4_SDIOC2_ATCERRST_TOE (*((volatile unsigned int*)(0x42E00784UL))) +#define bM4_SDIOC2_ATCERRST_CE (*((volatile unsigned int*)(0x42E00788UL))) +#define bM4_SDIOC2_ATCERRST_EBE (*((volatile unsigned int*)(0x42E0078CUL))) +#define bM4_SDIOC2_ATCERRST_IE (*((volatile unsigned int*)(0x42E00790UL))) +#define bM4_SDIOC2_ATCERRST_CMDE (*((volatile unsigned int*)(0x42E0079CUL))) +#define bM4_SDIOC2_FEA_FNE (*((volatile unsigned int*)(0x42E00A00UL))) +#define bM4_SDIOC2_FEA_FTOE (*((volatile unsigned int*)(0x42E00A04UL))) +#define bM4_SDIOC2_FEA_FCE (*((volatile unsigned int*)(0x42E00A08UL))) +#define bM4_SDIOC2_FEA_FEBE (*((volatile unsigned int*)(0x42E00A0CUL))) +#define bM4_SDIOC2_FEA_FIE (*((volatile unsigned int*)(0x42E00A10UL))) +#define bM4_SDIOC2_FEA_FCMDE (*((volatile unsigned int*)(0x42E00A1CUL))) +#define bM4_SDIOC2_FEE_FCTOE (*((volatile unsigned int*)(0x42E00A40UL))) +#define bM4_SDIOC2_FEE_FCCE (*((volatile unsigned int*)(0x42E00A44UL))) +#define bM4_SDIOC2_FEE_FCEBE (*((volatile unsigned int*)(0x42E00A48UL))) +#define bM4_SDIOC2_FEE_FCIE (*((volatile unsigned int*)(0x42E00A4CUL))) +#define bM4_SDIOC2_FEE_FDTOE (*((volatile unsigned int*)(0x42E00A50UL))) +#define bM4_SDIOC2_FEE_FDCE (*((volatile unsigned int*)(0x42E00A54UL))) +#define bM4_SDIOC2_FEE_FDEBE (*((volatile unsigned int*)(0x42E00A58UL))) +#define bM4_SDIOC2_FEE_FACE (*((volatile unsigned int*)(0x42E00A60UL))) +#define bM4_SPI1_CR1_SPIMDS (*((volatile unsigned int*)(0x42380080UL))) +#define bM4_SPI1_CR1_TXMDS (*((volatile unsigned int*)(0x42380084UL))) +#define bM4_SPI1_CR1_MSTR (*((volatile unsigned int*)(0x4238008CUL))) +#define bM4_SPI1_CR1_SPLPBK (*((volatile unsigned int*)(0x42380090UL))) +#define bM4_SPI1_CR1_SPLPBK2 (*((volatile unsigned int*)(0x42380094UL))) +#define bM4_SPI1_CR1_SPE (*((volatile unsigned int*)(0x42380098UL))) +#define bM4_SPI1_CR1_CSUSPE (*((volatile unsigned int*)(0x4238009CUL))) +#define bM4_SPI1_CR1_EIE (*((volatile unsigned int*)(0x423800A0UL))) +#define bM4_SPI1_CR1_TXIE (*((volatile unsigned int*)(0x423800A4UL))) +#define bM4_SPI1_CR1_RXIE (*((volatile unsigned int*)(0x423800A8UL))) +#define bM4_SPI1_CR1_IDIE (*((volatile unsigned int*)(0x423800ACUL))) +#define bM4_SPI1_CR1_MODFE (*((volatile unsigned int*)(0x423800B0UL))) +#define bM4_SPI1_CR1_PATE (*((volatile unsigned int*)(0x423800B4UL))) +#define bM4_SPI1_CR1_PAOE (*((volatile unsigned int*)(0x423800B8UL))) +#define bM4_SPI1_CR1_PAE (*((volatile unsigned int*)(0x423800BCUL))) +#define bM4_SPI1_CFG1_FTHLV0 (*((volatile unsigned int*)(0x42380180UL))) +#define bM4_SPI1_CFG1_FTHLV1 (*((volatile unsigned int*)(0x42380184UL))) +#define bM4_SPI1_CFG1_SPRDTD (*((volatile unsigned int*)(0x42380198UL))) +#define bM4_SPI1_CFG1_SS0PV (*((volatile unsigned int*)(0x423801A0UL))) +#define bM4_SPI1_CFG1_SS1PV (*((volatile unsigned int*)(0x423801A4UL))) +#define bM4_SPI1_CFG1_SS2PV (*((volatile unsigned int*)(0x423801A8UL))) +#define bM4_SPI1_CFG1_SS3PV (*((volatile unsigned int*)(0x423801ACUL))) +#define bM4_SPI1_CFG1_MSSI0 (*((volatile unsigned int*)(0x423801D0UL))) +#define bM4_SPI1_CFG1_MSSI1 (*((volatile unsigned int*)(0x423801D4UL))) +#define bM4_SPI1_CFG1_MSSI2 (*((volatile unsigned int*)(0x423801D8UL))) +#define bM4_SPI1_CFG1_MSSDL0 (*((volatile unsigned int*)(0x423801E0UL))) +#define bM4_SPI1_CFG1_MSSDL1 (*((volatile unsigned int*)(0x423801E4UL))) +#define bM4_SPI1_CFG1_MSSDL2 (*((volatile unsigned int*)(0x423801E8UL))) +#define bM4_SPI1_CFG1_MIDI0 (*((volatile unsigned int*)(0x423801F0UL))) +#define bM4_SPI1_CFG1_MIDI1 (*((volatile unsigned int*)(0x423801F4UL))) +#define bM4_SPI1_CFG1_MIDI2 (*((volatile unsigned int*)(0x423801F8UL))) +#define bM4_SPI1_SR_OVRERF (*((volatile unsigned int*)(0x42380280UL))) +#define bM4_SPI1_SR_IDLNF (*((volatile unsigned int*)(0x42380284UL))) +#define bM4_SPI1_SR_MODFERF (*((volatile unsigned int*)(0x42380288UL))) +#define bM4_SPI1_SR_PERF (*((volatile unsigned int*)(0x4238028CUL))) +#define bM4_SPI1_SR_UDRERF (*((volatile unsigned int*)(0x42380290UL))) +#define bM4_SPI1_SR_TDEF (*((volatile unsigned int*)(0x42380294UL))) +#define bM4_SPI1_SR_RDFF (*((volatile unsigned int*)(0x4238029CUL))) +#define bM4_SPI1_CFG2_CPHA (*((volatile unsigned int*)(0x42380300UL))) +#define bM4_SPI1_CFG2_CPOL (*((volatile unsigned int*)(0x42380304UL))) +#define bM4_SPI1_CFG2_MBR0 (*((volatile unsigned int*)(0x42380308UL))) +#define bM4_SPI1_CFG2_MBR1 (*((volatile unsigned int*)(0x4238030CUL))) +#define bM4_SPI1_CFG2_MBR2 (*((volatile unsigned int*)(0x42380310UL))) +#define bM4_SPI1_CFG2_SSA0 (*((volatile unsigned int*)(0x42380314UL))) +#define bM4_SPI1_CFG2_SSA1 (*((volatile unsigned int*)(0x42380318UL))) +#define bM4_SPI1_CFG2_SSA2 (*((volatile unsigned int*)(0x4238031CUL))) +#define bM4_SPI1_CFG2_DSIZE0 (*((volatile unsigned int*)(0x42380320UL))) +#define bM4_SPI1_CFG2_DSIZE1 (*((volatile unsigned int*)(0x42380324UL))) +#define bM4_SPI1_CFG2_DSIZE2 (*((volatile unsigned int*)(0x42380328UL))) +#define bM4_SPI1_CFG2_DSIZE3 (*((volatile unsigned int*)(0x4238032CUL))) +#define bM4_SPI1_CFG2_LSBF (*((volatile unsigned int*)(0x42380330UL))) +#define bM4_SPI1_CFG2_MIDIE (*((volatile unsigned int*)(0x42380334UL))) +#define bM4_SPI1_CFG2_MSSDLE (*((volatile unsigned int*)(0x42380338UL))) +#define bM4_SPI1_CFG2_MSSIE (*((volatile unsigned int*)(0x4238033CUL))) +#define bM4_SPI2_CR1_SPIMDS (*((volatile unsigned int*)(0x42388080UL))) +#define bM4_SPI2_CR1_TXMDS (*((volatile unsigned int*)(0x42388084UL))) +#define bM4_SPI2_CR1_MSTR (*((volatile unsigned int*)(0x4238808CUL))) +#define bM4_SPI2_CR1_SPLPBK (*((volatile unsigned int*)(0x42388090UL))) +#define bM4_SPI2_CR1_SPLPBK2 (*((volatile unsigned int*)(0x42388094UL))) +#define bM4_SPI2_CR1_SPE (*((volatile unsigned int*)(0x42388098UL))) +#define bM4_SPI2_CR1_CSUSPE (*((volatile unsigned int*)(0x4238809CUL))) +#define bM4_SPI2_CR1_EIE (*((volatile unsigned int*)(0x423880A0UL))) +#define bM4_SPI2_CR1_TXIE (*((volatile unsigned int*)(0x423880A4UL))) +#define bM4_SPI2_CR1_RXIE (*((volatile unsigned int*)(0x423880A8UL))) +#define bM4_SPI2_CR1_IDIE (*((volatile unsigned int*)(0x423880ACUL))) +#define bM4_SPI2_CR1_MODFE (*((volatile unsigned int*)(0x423880B0UL))) +#define bM4_SPI2_CR1_PATE (*((volatile unsigned int*)(0x423880B4UL))) +#define bM4_SPI2_CR1_PAOE (*((volatile unsigned int*)(0x423880B8UL))) +#define bM4_SPI2_CR1_PAE (*((volatile unsigned int*)(0x423880BCUL))) +#define bM4_SPI2_CFG1_FTHLV0 (*((volatile unsigned int*)(0x42388180UL))) +#define bM4_SPI2_CFG1_FTHLV1 (*((volatile unsigned int*)(0x42388184UL))) +#define bM4_SPI2_CFG1_SPRDTD (*((volatile unsigned int*)(0x42388198UL))) +#define bM4_SPI2_CFG1_SS0PV (*((volatile unsigned int*)(0x423881A0UL))) +#define bM4_SPI2_CFG1_SS1PV (*((volatile unsigned int*)(0x423881A4UL))) +#define bM4_SPI2_CFG1_SS2PV (*((volatile unsigned int*)(0x423881A8UL))) +#define bM4_SPI2_CFG1_SS3PV (*((volatile unsigned int*)(0x423881ACUL))) +#define bM4_SPI2_CFG1_MSSI0 (*((volatile unsigned int*)(0x423881D0UL))) +#define bM4_SPI2_CFG1_MSSI1 (*((volatile unsigned int*)(0x423881D4UL))) +#define bM4_SPI2_CFG1_MSSI2 (*((volatile unsigned int*)(0x423881D8UL))) +#define bM4_SPI2_CFG1_MSSDL0 (*((volatile unsigned int*)(0x423881E0UL))) +#define bM4_SPI2_CFG1_MSSDL1 (*((volatile unsigned int*)(0x423881E4UL))) +#define bM4_SPI2_CFG1_MSSDL2 (*((volatile unsigned int*)(0x423881E8UL))) +#define bM4_SPI2_CFG1_MIDI0 (*((volatile unsigned int*)(0x423881F0UL))) +#define bM4_SPI2_CFG1_MIDI1 (*((volatile unsigned int*)(0x423881F4UL))) +#define bM4_SPI2_CFG1_MIDI2 (*((volatile unsigned int*)(0x423881F8UL))) +#define bM4_SPI2_SR_OVRERF (*((volatile unsigned int*)(0x42388280UL))) +#define bM4_SPI2_SR_IDLNF (*((volatile unsigned int*)(0x42388284UL))) +#define bM4_SPI2_SR_MODFERF (*((volatile unsigned int*)(0x42388288UL))) +#define bM4_SPI2_SR_PERF (*((volatile unsigned int*)(0x4238828CUL))) +#define bM4_SPI2_SR_UDRERF (*((volatile unsigned int*)(0x42388290UL))) +#define bM4_SPI2_SR_TDEF (*((volatile unsigned int*)(0x42388294UL))) +#define bM4_SPI2_SR_RDFF (*((volatile unsigned int*)(0x4238829CUL))) +#define bM4_SPI2_CFG2_CPHA (*((volatile unsigned int*)(0x42388300UL))) +#define bM4_SPI2_CFG2_CPOL (*((volatile unsigned int*)(0x42388304UL))) +#define bM4_SPI2_CFG2_MBR0 (*((volatile unsigned int*)(0x42388308UL))) +#define bM4_SPI2_CFG2_MBR1 (*((volatile unsigned int*)(0x4238830CUL))) +#define bM4_SPI2_CFG2_MBR2 (*((volatile unsigned int*)(0x42388310UL))) +#define bM4_SPI2_CFG2_SSA0 (*((volatile unsigned int*)(0x42388314UL))) +#define bM4_SPI2_CFG2_SSA1 (*((volatile unsigned int*)(0x42388318UL))) +#define bM4_SPI2_CFG2_SSA2 (*((volatile unsigned int*)(0x4238831CUL))) +#define bM4_SPI2_CFG2_DSIZE0 (*((volatile unsigned int*)(0x42388320UL))) +#define bM4_SPI2_CFG2_DSIZE1 (*((volatile unsigned int*)(0x42388324UL))) +#define bM4_SPI2_CFG2_DSIZE2 (*((volatile unsigned int*)(0x42388328UL))) +#define bM4_SPI2_CFG2_DSIZE3 (*((volatile unsigned int*)(0x4238832CUL))) +#define bM4_SPI2_CFG2_LSBF (*((volatile unsigned int*)(0x42388330UL))) +#define bM4_SPI2_CFG2_MIDIE (*((volatile unsigned int*)(0x42388334UL))) +#define bM4_SPI2_CFG2_MSSDLE (*((volatile unsigned int*)(0x42388338UL))) +#define bM4_SPI2_CFG2_MSSIE (*((volatile unsigned int*)(0x4238833CUL))) +#define bM4_SPI3_CR1_SPIMDS (*((volatile unsigned int*)(0x42400080UL))) +#define bM4_SPI3_CR1_TXMDS (*((volatile unsigned int*)(0x42400084UL))) +#define bM4_SPI3_CR1_MSTR (*((volatile unsigned int*)(0x4240008CUL))) +#define bM4_SPI3_CR1_SPLPBK (*((volatile unsigned int*)(0x42400090UL))) +#define bM4_SPI3_CR1_SPLPBK2 (*((volatile unsigned int*)(0x42400094UL))) +#define bM4_SPI3_CR1_SPE (*((volatile unsigned int*)(0x42400098UL))) +#define bM4_SPI3_CR1_CSUSPE (*((volatile unsigned int*)(0x4240009CUL))) +#define bM4_SPI3_CR1_EIE (*((volatile unsigned int*)(0x424000A0UL))) +#define bM4_SPI3_CR1_TXIE (*((volatile unsigned int*)(0x424000A4UL))) +#define bM4_SPI3_CR1_RXIE (*((volatile unsigned int*)(0x424000A8UL))) +#define bM4_SPI3_CR1_IDIE (*((volatile unsigned int*)(0x424000ACUL))) +#define bM4_SPI3_CR1_MODFE (*((volatile unsigned int*)(0x424000B0UL))) +#define bM4_SPI3_CR1_PATE (*((volatile unsigned int*)(0x424000B4UL))) +#define bM4_SPI3_CR1_PAOE (*((volatile unsigned int*)(0x424000B8UL))) +#define bM4_SPI3_CR1_PAE (*((volatile unsigned int*)(0x424000BCUL))) +#define bM4_SPI3_CFG1_FTHLV0 (*((volatile unsigned int*)(0x42400180UL))) +#define bM4_SPI3_CFG1_FTHLV1 (*((volatile unsigned int*)(0x42400184UL))) +#define bM4_SPI3_CFG1_SPRDTD (*((volatile unsigned int*)(0x42400198UL))) +#define bM4_SPI3_CFG1_SS0PV (*((volatile unsigned int*)(0x424001A0UL))) +#define bM4_SPI3_CFG1_SS1PV (*((volatile unsigned int*)(0x424001A4UL))) +#define bM4_SPI3_CFG1_SS2PV (*((volatile unsigned int*)(0x424001A8UL))) +#define bM4_SPI3_CFG1_SS3PV (*((volatile unsigned int*)(0x424001ACUL))) +#define bM4_SPI3_CFG1_MSSI0 (*((volatile unsigned int*)(0x424001D0UL))) +#define bM4_SPI3_CFG1_MSSI1 (*((volatile unsigned int*)(0x424001D4UL))) +#define bM4_SPI3_CFG1_MSSI2 (*((volatile unsigned int*)(0x424001D8UL))) +#define bM4_SPI3_CFG1_MSSDL0 (*((volatile unsigned int*)(0x424001E0UL))) +#define bM4_SPI3_CFG1_MSSDL1 (*((volatile unsigned int*)(0x424001E4UL))) +#define bM4_SPI3_CFG1_MSSDL2 (*((volatile unsigned int*)(0x424001E8UL))) +#define bM4_SPI3_CFG1_MIDI0 (*((volatile unsigned int*)(0x424001F0UL))) +#define bM4_SPI3_CFG1_MIDI1 (*((volatile unsigned int*)(0x424001F4UL))) +#define bM4_SPI3_CFG1_MIDI2 (*((volatile unsigned int*)(0x424001F8UL))) +#define bM4_SPI3_SR_OVRERF (*((volatile unsigned int*)(0x42400280UL))) +#define bM4_SPI3_SR_IDLNF (*((volatile unsigned int*)(0x42400284UL))) +#define bM4_SPI3_SR_MODFERF (*((volatile unsigned int*)(0x42400288UL))) +#define bM4_SPI3_SR_PERF (*((volatile unsigned int*)(0x4240028CUL))) +#define bM4_SPI3_SR_UDRERF (*((volatile unsigned int*)(0x42400290UL))) +#define bM4_SPI3_SR_TDEF (*((volatile unsigned int*)(0x42400294UL))) +#define bM4_SPI3_SR_RDFF (*((volatile unsigned int*)(0x4240029CUL))) +#define bM4_SPI3_CFG2_CPHA (*((volatile unsigned int*)(0x42400300UL))) +#define bM4_SPI3_CFG2_CPOL (*((volatile unsigned int*)(0x42400304UL))) +#define bM4_SPI3_CFG2_MBR0 (*((volatile unsigned int*)(0x42400308UL))) +#define bM4_SPI3_CFG2_MBR1 (*((volatile unsigned int*)(0x4240030CUL))) +#define bM4_SPI3_CFG2_MBR2 (*((volatile unsigned int*)(0x42400310UL))) +#define bM4_SPI3_CFG2_SSA0 (*((volatile unsigned int*)(0x42400314UL))) +#define bM4_SPI3_CFG2_SSA1 (*((volatile unsigned int*)(0x42400318UL))) +#define bM4_SPI3_CFG2_SSA2 (*((volatile unsigned int*)(0x4240031CUL))) +#define bM4_SPI3_CFG2_DSIZE0 (*((volatile unsigned int*)(0x42400320UL))) +#define bM4_SPI3_CFG2_DSIZE1 (*((volatile unsigned int*)(0x42400324UL))) +#define bM4_SPI3_CFG2_DSIZE2 (*((volatile unsigned int*)(0x42400328UL))) +#define bM4_SPI3_CFG2_DSIZE3 (*((volatile unsigned int*)(0x4240032CUL))) +#define bM4_SPI3_CFG2_LSBF (*((volatile unsigned int*)(0x42400330UL))) +#define bM4_SPI3_CFG2_MIDIE (*((volatile unsigned int*)(0x42400334UL))) +#define bM4_SPI3_CFG2_MSSDLE (*((volatile unsigned int*)(0x42400338UL))) +#define bM4_SPI3_CFG2_MSSIE (*((volatile unsigned int*)(0x4240033CUL))) +#define bM4_SPI4_CR1_SPIMDS (*((volatile unsigned int*)(0x42408080UL))) +#define bM4_SPI4_CR1_TXMDS (*((volatile unsigned int*)(0x42408084UL))) +#define bM4_SPI4_CR1_MSTR (*((volatile unsigned int*)(0x4240808CUL))) +#define bM4_SPI4_CR1_SPLPBK (*((volatile unsigned int*)(0x42408090UL))) +#define bM4_SPI4_CR1_SPLPBK2 (*((volatile unsigned int*)(0x42408094UL))) +#define bM4_SPI4_CR1_SPE (*((volatile unsigned int*)(0x42408098UL))) +#define bM4_SPI4_CR1_CSUSPE (*((volatile unsigned int*)(0x4240809CUL))) +#define bM4_SPI4_CR1_EIE (*((volatile unsigned int*)(0x424080A0UL))) +#define bM4_SPI4_CR1_TXIE (*((volatile unsigned int*)(0x424080A4UL))) +#define bM4_SPI4_CR1_RXIE (*((volatile unsigned int*)(0x424080A8UL))) +#define bM4_SPI4_CR1_IDIE (*((volatile unsigned int*)(0x424080ACUL))) +#define bM4_SPI4_CR1_MODFE (*((volatile unsigned int*)(0x424080B0UL))) +#define bM4_SPI4_CR1_PATE (*((volatile unsigned int*)(0x424080B4UL))) +#define bM4_SPI4_CR1_PAOE (*((volatile unsigned int*)(0x424080B8UL))) +#define bM4_SPI4_CR1_PAE (*((volatile unsigned int*)(0x424080BCUL))) +#define bM4_SPI4_CFG1_FTHLV0 (*((volatile unsigned int*)(0x42408180UL))) +#define bM4_SPI4_CFG1_FTHLV1 (*((volatile unsigned int*)(0x42408184UL))) +#define bM4_SPI4_CFG1_SPRDTD (*((volatile unsigned int*)(0x42408198UL))) +#define bM4_SPI4_CFG1_SS0PV (*((volatile unsigned int*)(0x424081A0UL))) +#define bM4_SPI4_CFG1_SS1PV (*((volatile unsigned int*)(0x424081A4UL))) +#define bM4_SPI4_CFG1_SS2PV (*((volatile unsigned int*)(0x424081A8UL))) +#define bM4_SPI4_CFG1_SS3PV (*((volatile unsigned int*)(0x424081ACUL))) +#define bM4_SPI4_CFG1_MSSI0 (*((volatile unsigned int*)(0x424081D0UL))) +#define bM4_SPI4_CFG1_MSSI1 (*((volatile unsigned int*)(0x424081D4UL))) +#define bM4_SPI4_CFG1_MSSI2 (*((volatile unsigned int*)(0x424081D8UL))) +#define bM4_SPI4_CFG1_MSSDL0 (*((volatile unsigned int*)(0x424081E0UL))) +#define bM4_SPI4_CFG1_MSSDL1 (*((volatile unsigned int*)(0x424081E4UL))) +#define bM4_SPI4_CFG1_MSSDL2 (*((volatile unsigned int*)(0x424081E8UL))) +#define bM4_SPI4_CFG1_MIDI0 (*((volatile unsigned int*)(0x424081F0UL))) +#define bM4_SPI4_CFG1_MIDI1 (*((volatile unsigned int*)(0x424081F4UL))) +#define bM4_SPI4_CFG1_MIDI2 (*((volatile unsigned int*)(0x424081F8UL))) +#define bM4_SPI4_SR_OVRERF (*((volatile unsigned int*)(0x42408280UL))) +#define bM4_SPI4_SR_IDLNF (*((volatile unsigned int*)(0x42408284UL))) +#define bM4_SPI4_SR_MODFERF (*((volatile unsigned int*)(0x42408288UL))) +#define bM4_SPI4_SR_PERF (*((volatile unsigned int*)(0x4240828CUL))) +#define bM4_SPI4_SR_UDRERF (*((volatile unsigned int*)(0x42408290UL))) +#define bM4_SPI4_SR_TDEF (*((volatile unsigned int*)(0x42408294UL))) +#define bM4_SPI4_SR_RDFF (*((volatile unsigned int*)(0x4240829CUL))) +#define bM4_SPI4_CFG2_CPHA (*((volatile unsigned int*)(0x42408300UL))) +#define bM4_SPI4_CFG2_CPOL (*((volatile unsigned int*)(0x42408304UL))) +#define bM4_SPI4_CFG2_MBR0 (*((volatile unsigned int*)(0x42408308UL))) +#define bM4_SPI4_CFG2_MBR1 (*((volatile unsigned int*)(0x4240830CUL))) +#define bM4_SPI4_CFG2_MBR2 (*((volatile unsigned int*)(0x42408310UL))) +#define bM4_SPI4_CFG2_SSA0 (*((volatile unsigned int*)(0x42408314UL))) +#define bM4_SPI4_CFG2_SSA1 (*((volatile unsigned int*)(0x42408318UL))) +#define bM4_SPI4_CFG2_SSA2 (*((volatile unsigned int*)(0x4240831CUL))) +#define bM4_SPI4_CFG2_DSIZE0 (*((volatile unsigned int*)(0x42408320UL))) +#define bM4_SPI4_CFG2_DSIZE1 (*((volatile unsigned int*)(0x42408324UL))) +#define bM4_SPI4_CFG2_DSIZE2 (*((volatile unsigned int*)(0x42408328UL))) +#define bM4_SPI4_CFG2_DSIZE3 (*((volatile unsigned int*)(0x4240832CUL))) +#define bM4_SPI4_CFG2_LSBF (*((volatile unsigned int*)(0x42408330UL))) +#define bM4_SPI4_CFG2_MIDIE (*((volatile unsigned int*)(0x42408334UL))) +#define bM4_SPI4_CFG2_MSSDLE (*((volatile unsigned int*)(0x42408338UL))) +#define bM4_SPI4_CFG2_MSSIE (*((volatile unsigned int*)(0x4240833CUL))) +#define bM4_SRAMC_WTCR_SRAM12_RWT0 (*((volatile unsigned int*)(0x42A10000UL))) +#define bM4_SRAMC_WTCR_SRAM12_RWT1 (*((volatile unsigned int*)(0x42A10004UL))) +#define bM4_SRAMC_WTCR_SRAM12_RWT2 (*((volatile unsigned int*)(0x42A10008UL))) +#define bM4_SRAMC_WTCR_SRAM12_WWT0 (*((volatile unsigned int*)(0x42A10010UL))) +#define bM4_SRAMC_WTCR_SRAM12_WWT1 (*((volatile unsigned int*)(0x42A10014UL))) +#define bM4_SRAMC_WTCR_SRAM12_WWT2 (*((volatile unsigned int*)(0x42A10018UL))) +#define bM4_SRAMC_WTCR_SRAM3_RWT0 (*((volatile unsigned int*)(0x42A10020UL))) +#define bM4_SRAMC_WTCR_SRAM3_RWT1 (*((volatile unsigned int*)(0x42A10024UL))) +#define bM4_SRAMC_WTCR_SRAM3_RWT2 (*((volatile unsigned int*)(0x42A10028UL))) +#define bM4_SRAMC_WTCR_SRAM3_WWT0 (*((volatile unsigned int*)(0x42A10030UL))) +#define bM4_SRAMC_WTCR_SRAM3_WWT1 (*((volatile unsigned int*)(0x42A10034UL))) +#define bM4_SRAMC_WTCR_SRAM3_WWT2 (*((volatile unsigned int*)(0x42A10038UL))) +#define bM4_SRAMC_WTCR_SRAMH_RWT0 (*((volatile unsigned int*)(0x42A10040UL))) +#define bM4_SRAMC_WTCR_SRAMH_RWT1 (*((volatile unsigned int*)(0x42A10044UL))) +#define bM4_SRAMC_WTCR_SRAMH_RWT2 (*((volatile unsigned int*)(0x42A10048UL))) +#define bM4_SRAMC_WTCR_SRAMH_WWT0 (*((volatile unsigned int*)(0x42A10050UL))) +#define bM4_SRAMC_WTCR_SRAMH_WWT1 (*((volatile unsigned int*)(0x42A10054UL))) +#define bM4_SRAMC_WTCR_SRAMH_WWT2 (*((volatile unsigned int*)(0x42A10058UL))) +#define bM4_SRAMC_WTCR_SRAMR_RWT0 (*((volatile unsigned int*)(0x42A10060UL))) +#define bM4_SRAMC_WTCR_SRAMR_RWT1 (*((volatile unsigned int*)(0x42A10064UL))) +#define bM4_SRAMC_WTCR_SRAMR_RWT2 (*((volatile unsigned int*)(0x42A10068UL))) +#define bM4_SRAMC_WTCR_SRAMR_WWT0 (*((volatile unsigned int*)(0x42A10070UL))) +#define bM4_SRAMC_WTCR_SRAMR_WWT1 (*((volatile unsigned int*)(0x42A10074UL))) +#define bM4_SRAMC_WTCR_SRAMR_WWT2 (*((volatile unsigned int*)(0x42A10078UL))) +#define bM4_SRAMC_WTPR_WTPRC (*((volatile unsigned int*)(0x42A10080UL))) +#define bM4_SRAMC_WTPR_WTPRKW0 (*((volatile unsigned int*)(0x42A10084UL))) +#define bM4_SRAMC_WTPR_WTPRKW1 (*((volatile unsigned int*)(0x42A10088UL))) +#define bM4_SRAMC_WTPR_WTPRKW2 (*((volatile unsigned int*)(0x42A1008CUL))) +#define bM4_SRAMC_WTPR_WTPRKW3 (*((volatile unsigned int*)(0x42A10090UL))) +#define bM4_SRAMC_WTPR_WTPRKW4 (*((volatile unsigned int*)(0x42A10094UL))) +#define bM4_SRAMC_WTPR_WTPRKW5 (*((volatile unsigned int*)(0x42A10098UL))) +#define bM4_SRAMC_WTPR_WTPRKW6 (*((volatile unsigned int*)(0x42A1009CUL))) +#define bM4_SRAMC_CKCR_PYOAD (*((volatile unsigned int*)(0x42A10100UL))) +#define bM4_SRAMC_CKCR_ECCOAD (*((volatile unsigned int*)(0x42A10140UL))) +#define bM4_SRAMC_CKCR_ECCMOD0 (*((volatile unsigned int*)(0x42A10160UL))) +#define bM4_SRAMC_CKCR_ECCMOD1 (*((volatile unsigned int*)(0x42A10164UL))) +#define bM4_SRAMC_CKPR_CKPRC (*((volatile unsigned int*)(0x42A10180UL))) +#define bM4_SRAMC_CKPR_CKPRKW0 (*((volatile unsigned int*)(0x42A10184UL))) +#define bM4_SRAMC_CKPR_CKPRKW1 (*((volatile unsigned int*)(0x42A10188UL))) +#define bM4_SRAMC_CKPR_CKPRKW2 (*((volatile unsigned int*)(0x42A1018CUL))) +#define bM4_SRAMC_CKPR_CKPRKW3 (*((volatile unsigned int*)(0x42A10190UL))) +#define bM4_SRAMC_CKPR_CKPRKW4 (*((volatile unsigned int*)(0x42A10194UL))) +#define bM4_SRAMC_CKPR_CKPRKW5 (*((volatile unsigned int*)(0x42A10198UL))) +#define bM4_SRAMC_CKPR_CKPRKW6 (*((volatile unsigned int*)(0x42A1019CUL))) +#define bM4_SRAMC_CKSR_SRAM3_1ERR (*((volatile unsigned int*)(0x42A10200UL))) +#define bM4_SRAMC_CKSR_SRAM3_2ERR (*((volatile unsigned int*)(0x42A10204UL))) +#define bM4_SRAMC_CKSR_SRAM12_PYERR (*((volatile unsigned int*)(0x42A10208UL))) +#define bM4_SRAMC_CKSR_SRAMH_PYERR (*((volatile unsigned int*)(0x42A1020CUL))) +#define bM4_SRAMC_CKSR_SRAMR_PYERR (*((volatile unsigned int*)(0x42A10210UL))) +#define bM4_SWDT_SR_CNT0 (*((volatile unsigned int*)(0x42928080UL))) +#define bM4_SWDT_SR_CNT1 (*((volatile unsigned int*)(0x42928084UL))) +#define bM4_SWDT_SR_CNT2 (*((volatile unsigned int*)(0x42928088UL))) +#define bM4_SWDT_SR_CNT3 (*((volatile unsigned int*)(0x4292808CUL))) +#define bM4_SWDT_SR_CNT4 (*((volatile unsigned int*)(0x42928090UL))) +#define bM4_SWDT_SR_CNT5 (*((volatile unsigned int*)(0x42928094UL))) +#define bM4_SWDT_SR_CNT6 (*((volatile unsigned int*)(0x42928098UL))) +#define bM4_SWDT_SR_CNT7 (*((volatile unsigned int*)(0x4292809CUL))) +#define bM4_SWDT_SR_CNT8 (*((volatile unsigned int*)(0x429280A0UL))) +#define bM4_SWDT_SR_CNT9 (*((volatile unsigned int*)(0x429280A4UL))) +#define bM4_SWDT_SR_CNT10 (*((volatile unsigned int*)(0x429280A8UL))) +#define bM4_SWDT_SR_CNT11 (*((volatile unsigned int*)(0x429280ACUL))) +#define bM4_SWDT_SR_CNT12 (*((volatile unsigned int*)(0x429280B0UL))) +#define bM4_SWDT_SR_CNT13 (*((volatile unsigned int*)(0x429280B4UL))) +#define bM4_SWDT_SR_CNT14 (*((volatile unsigned int*)(0x429280B8UL))) +#define bM4_SWDT_SR_CNT15 (*((volatile unsigned int*)(0x429280BCUL))) +#define bM4_SWDT_SR_UDF (*((volatile unsigned int*)(0x429280C0UL))) +#define bM4_SWDT_SR_REF (*((volatile unsigned int*)(0x429280C4UL))) +#define bM4_SWDT_RR_RF0 (*((volatile unsigned int*)(0x42928100UL))) +#define bM4_SWDT_RR_RF1 (*((volatile unsigned int*)(0x42928104UL))) +#define bM4_SWDT_RR_RF2 (*((volatile unsigned int*)(0x42928108UL))) +#define bM4_SWDT_RR_RF3 (*((volatile unsigned int*)(0x4292810CUL))) +#define bM4_SWDT_RR_RF4 (*((volatile unsigned int*)(0x42928110UL))) +#define bM4_SWDT_RR_RF5 (*((volatile unsigned int*)(0x42928114UL))) +#define bM4_SWDT_RR_RF6 (*((volatile unsigned int*)(0x42928118UL))) +#define bM4_SWDT_RR_RF7 (*((volatile unsigned int*)(0x4292811CUL))) +#define bM4_SWDT_RR_RF8 (*((volatile unsigned int*)(0x42928120UL))) +#define bM4_SWDT_RR_RF9 (*((volatile unsigned int*)(0x42928124UL))) +#define bM4_SWDT_RR_RF10 (*((volatile unsigned int*)(0x42928128UL))) +#define bM4_SWDT_RR_RF11 (*((volatile unsigned int*)(0x4292812CUL))) +#define bM4_SWDT_RR_RF12 (*((volatile unsigned int*)(0x42928130UL))) +#define bM4_SWDT_RR_RF13 (*((volatile unsigned int*)(0x42928134UL))) +#define bM4_SWDT_RR_RF14 (*((volatile unsigned int*)(0x42928138UL))) +#define bM4_SWDT_RR_RF15 (*((volatile unsigned int*)(0x4292813CUL))) +#define bM4_SYSREG_PWR_STPMCR_FLNWT (*((volatile unsigned int*)(0x42A80180UL))) +#define bM4_SYSREG_PWR_STPMCR_CKSMRC (*((volatile unsigned int*)(0x42A80184UL))) +#define bM4_SYSREG_PWR_STPMCR_STOP (*((volatile unsigned int*)(0x42A801BCUL))) +#define bM4_SYSREG_CMU_PERICKSEL_PERICKSEL0 (*((volatile unsigned int*)(0x42A80200UL))) +#define bM4_SYSREG_CMU_PERICKSEL_PERICKSEL1 (*((volatile unsigned int*)(0x42A80204UL))) +#define bM4_SYSREG_CMU_PERICKSEL_PERICKSEL2 (*((volatile unsigned int*)(0x42A80208UL))) +#define bM4_SYSREG_CMU_PERICKSEL_PERICKSEL3 (*((volatile unsigned int*)(0x42A8020CUL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S1CKSEL0 (*((volatile unsigned int*)(0x42A80240UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S1CKSEL1 (*((volatile unsigned int*)(0x42A80244UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S1CKSEL2 (*((volatile unsigned int*)(0x42A80248UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S1CKSEL3 (*((volatile unsigned int*)(0x42A8024CUL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S2CKSEL0 (*((volatile unsigned int*)(0x42A80250UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S2CKSEL1 (*((volatile unsigned int*)(0x42A80254UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S2CKSEL2 (*((volatile unsigned int*)(0x42A80258UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S2CKSEL3 (*((volatile unsigned int*)(0x42A8025CUL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S3CKSEL0 (*((volatile unsigned int*)(0x42A80260UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S3CKSEL1 (*((volatile unsigned int*)(0x42A80264UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S3CKSEL2 (*((volatile unsigned int*)(0x42A80268UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S3CKSEL3 (*((volatile unsigned int*)(0x42A8026CUL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S4CKSEL0 (*((volatile unsigned int*)(0x42A80270UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S4CKSEL1 (*((volatile unsigned int*)(0x42A80274UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S4CKSEL2 (*((volatile unsigned int*)(0x42A80278UL))) +#define bM4_SYSREG_CMU_I2SCKSEL_I2S4CKSEL3 (*((volatile unsigned int*)(0x42A8027CUL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC0 (*((volatile unsigned int*)(0x42A80280UL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC1 (*((volatile unsigned int*)(0x42A80284UL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC2 (*((volatile unsigned int*)(0x42A80288UL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC3 (*((volatile unsigned int*)(0x42A8028CUL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC4 (*((volatile unsigned int*)(0x42A80290UL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC5 (*((volatile unsigned int*)(0x42A80294UL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC6 (*((volatile unsigned int*)(0x42A80298UL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC7 (*((volatile unsigned int*)(0x42A8029CUL))) +#define bM4_SYSREG_PWR_RAMPC0_RAMPDC8 (*((volatile unsigned int*)(0x42A802A0UL))) +#define bM4_SYSREG_MPU_IPPR_AESRDP (*((volatile unsigned int*)(0x42A80380UL))) +#define bM4_SYSREG_MPU_IPPR_AESWRP (*((volatile unsigned int*)(0x42A80384UL))) +#define bM4_SYSREG_MPU_IPPR_HASHRDP (*((volatile unsigned int*)(0x42A80388UL))) +#define bM4_SYSREG_MPU_IPPR_HASHWRP (*((volatile unsigned int*)(0x42A8038CUL))) +#define bM4_SYSREG_MPU_IPPR_TRNGRDP (*((volatile unsigned int*)(0x42A80390UL))) +#define bM4_SYSREG_MPU_IPPR_TRNGWRP (*((volatile unsigned int*)(0x42A80394UL))) +#define bM4_SYSREG_MPU_IPPR_CRCRDP (*((volatile unsigned int*)(0x42A80398UL))) +#define bM4_SYSREG_MPU_IPPR_CRCWRP (*((volatile unsigned int*)(0x42A8039CUL))) +#define bM4_SYSREG_MPU_IPPR_FMCRDP (*((volatile unsigned int*)(0x42A803A0UL))) +#define bM4_SYSREG_MPU_IPPR_FMCWRP (*((volatile unsigned int*)(0x42A803A4UL))) +#define bM4_SYSREG_MPU_IPPR_WDTRDP (*((volatile unsigned int*)(0x42A803B0UL))) +#define bM4_SYSREG_MPU_IPPR_WDTWRP (*((volatile unsigned int*)(0x42A803B4UL))) +#define bM4_SYSREG_MPU_IPPR_SWDTRDP (*((volatile unsigned int*)(0x42A803B8UL))) +#define bM4_SYSREG_MPU_IPPR_SWDTWRP (*((volatile unsigned int*)(0x42A803BCUL))) +#define bM4_SYSREG_MPU_IPPR_BKSRAMRDP (*((volatile unsigned int*)(0x42A803C0UL))) +#define bM4_SYSREG_MPU_IPPR_BKSRAMWRP (*((volatile unsigned int*)(0x42A803C4UL))) +#define bM4_SYSREG_MPU_IPPR_RTCRDP (*((volatile unsigned int*)(0x42A803C8UL))) +#define bM4_SYSREG_MPU_IPPR_RTCWRP (*((volatile unsigned int*)(0x42A803CCUL))) +#define bM4_SYSREG_MPU_IPPR_DMPURDP (*((volatile unsigned int*)(0x42A803D0UL))) +#define bM4_SYSREG_MPU_IPPR_DMPUWRP (*((volatile unsigned int*)(0x42A803D4UL))) +#define bM4_SYSREG_MPU_IPPR_SRAMCRDP (*((volatile unsigned int*)(0x42A803D8UL))) +#define bM4_SYSREG_MPU_IPPR_SRAMCWRP (*((volatile unsigned int*)(0x42A803DCUL))) +#define bM4_SYSREG_MPU_IPPR_INTCRDP (*((volatile unsigned int*)(0x42A803E0UL))) +#define bM4_SYSREG_MPU_IPPR_INTCWRP (*((volatile unsigned int*)(0x42A803E4UL))) +#define bM4_SYSREG_MPU_IPPR_SYSCRDP (*((volatile unsigned int*)(0x42A803E8UL))) +#define bM4_SYSREG_MPU_IPPR_SYSCWRP (*((volatile unsigned int*)(0x42A803ECUL))) +#define bM4_SYSREG_MPU_IPPR_MSTPRDP (*((volatile unsigned int*)(0x42A803F0UL))) +#define bM4_SYSREG_MPU_IPPR_MSTPWRP (*((volatile unsigned int*)(0x42A803F4UL))) +#define bM4_SYSREG_MPU_IPPR_BUSERRE (*((volatile unsigned int*)(0x42A803FCUL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK0S0 (*((volatile unsigned int*)(0x42A80400UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK0S1 (*((volatile unsigned int*)(0x42A80404UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK0S2 (*((volatile unsigned int*)(0x42A80408UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK1S0 (*((volatile unsigned int*)(0x42A80410UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK1S1 (*((volatile unsigned int*)(0x42A80414UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK1S2 (*((volatile unsigned int*)(0x42A80418UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK2S0 (*((volatile unsigned int*)(0x42A80420UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK2S1 (*((volatile unsigned int*)(0x42A80424UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK2S2 (*((volatile unsigned int*)(0x42A80428UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK3S0 (*((volatile unsigned int*)(0x42A80430UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK3S1 (*((volatile unsigned int*)(0x42A80434UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK3S2 (*((volatile unsigned int*)(0x42A80438UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK4S0 (*((volatile unsigned int*)(0x42A80440UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK4S1 (*((volatile unsigned int*)(0x42A80444UL))) +#define bM4_SYSREG_CMU_SCFGR_PCLK4S2 (*((volatile unsigned int*)(0x42A80448UL))) +#define bM4_SYSREG_CMU_SCFGR_EXCKS0 (*((volatile unsigned int*)(0x42A80450UL))) +#define bM4_SYSREG_CMU_SCFGR_EXCKS1 (*((volatile unsigned int*)(0x42A80454UL))) +#define bM4_SYSREG_CMU_SCFGR_EXCKS2 (*((volatile unsigned int*)(0x42A80458UL))) +#define bM4_SYSREG_CMU_SCFGR_HCLKS0 (*((volatile unsigned int*)(0x42A80460UL))) +#define bM4_SYSREG_CMU_SCFGR_HCLKS1 (*((volatile unsigned int*)(0x42A80464UL))) +#define bM4_SYSREG_CMU_SCFGR_HCLKS2 (*((volatile unsigned int*)(0x42A80468UL))) +#define bM4_SYSREG_CMU_UFSCKCFGR_USBCKS0 (*((volatile unsigned int*)(0x42A80490UL))) +#define bM4_SYSREG_CMU_UFSCKCFGR_USBCKS1 (*((volatile unsigned int*)(0x42A80494UL))) +#define bM4_SYSREG_CMU_UFSCKCFGR_USBCKS2 (*((volatile unsigned int*)(0x42A80498UL))) +#define bM4_SYSREG_CMU_UFSCKCFGR_USBCKS3 (*((volatile unsigned int*)(0x42A8049CUL))) +#define bM4_SYSREG_CMU_CKSWR_CKSW0 (*((volatile unsigned int*)(0x42A804C0UL))) +#define bM4_SYSREG_CMU_CKSWR_CKSW1 (*((volatile unsigned int*)(0x42A804C4UL))) +#define bM4_SYSREG_CMU_CKSWR_CKSW2 (*((volatile unsigned int*)(0x42A804C8UL))) +#define bM4_SYSREG_CMU_PLLCR_MPLLOFF (*((volatile unsigned int*)(0x42A80540UL))) +#define bM4_SYSREG_CMU_UPLLCR_UPLLOFF (*((volatile unsigned int*)(0x42A805C0UL))) +#define bM4_SYSREG_CMU_XTALCR_XTALSTP (*((volatile unsigned int*)(0x42A80640UL))) +#define bM4_SYSREG_CMU_HRCCR_HRCSTP (*((volatile unsigned int*)(0x42A806C0UL))) +#define bM4_SYSREG_CMU_MRCCR_MRCSTP (*((volatile unsigned int*)(0x42A80700UL))) +#define bM4_SYSREG_CMU_OSCSTBSR_HRCSTBF (*((volatile unsigned int*)(0x42A80780UL))) +#define bM4_SYSREG_CMU_OSCSTBSR_XTALSTBF (*((volatile unsigned int*)(0x42A8078CUL))) +#define bM4_SYSREG_CMU_OSCSTBSR_MPLLSTBF (*((volatile unsigned int*)(0x42A80794UL))) +#define bM4_SYSREG_CMU_OSCSTBSR_UPLLSTBF (*((volatile unsigned int*)(0x42A80798UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1SEL0 (*((volatile unsigned int*)(0x42A807A0UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1SEL1 (*((volatile unsigned int*)(0x42A807A4UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1SEL2 (*((volatile unsigned int*)(0x42A807A8UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1SEL3 (*((volatile unsigned int*)(0x42A807ACUL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1DIV0 (*((volatile unsigned int*)(0x42A807B0UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1DIV1 (*((volatile unsigned int*)(0x42A807B4UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1DIV2 (*((volatile unsigned int*)(0x42A807B8UL))) +#define bM4_SYSREG_CMU_MCO1CFGR_MCO1EN (*((volatile unsigned int*)(0x42A807BCUL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2SEL0 (*((volatile unsigned int*)(0x42A807C0UL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2SEL1 (*((volatile unsigned int*)(0x42A807C4UL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2SEL2 (*((volatile unsigned int*)(0x42A807C8UL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2SEL3 (*((volatile unsigned int*)(0x42A807CCUL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2DIV0 (*((volatile unsigned int*)(0x42A807D0UL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2DIV1 (*((volatile unsigned int*)(0x42A807D4UL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2DIV2 (*((volatile unsigned int*)(0x42A807D8UL))) +#define bM4_SYSREG_CMU_MCO2CFGR_MCO2EN (*((volatile unsigned int*)(0x42A807DCUL))) +#define bM4_SYSREG_CMU_TPIUCKCFGR_TPIUCKS0 (*((volatile unsigned int*)(0x42A807E0UL))) +#define bM4_SYSREG_CMU_TPIUCKCFGR_TPIUCKS1 (*((volatile unsigned int*)(0x42A807E4UL))) +#define bM4_SYSREG_CMU_TPIUCKCFGR_TPIUCKOE (*((volatile unsigned int*)(0x42A807FCUL))) +#define bM4_SYSREG_CMU_XTALSTDCR_XTALSTDIE (*((volatile unsigned int*)(0x42A80800UL))) +#define bM4_SYSREG_CMU_XTALSTDCR_XTALSTDRE (*((volatile unsigned int*)(0x42A80804UL))) +#define bM4_SYSREG_CMU_XTALSTDCR_XTALSTDRIS (*((volatile unsigned int*)(0x42A80808UL))) +#define bM4_SYSREG_CMU_XTALSTDCR_XTALSTDE (*((volatile unsigned int*)(0x42A8081CUL))) +#define bM4_SYSREG_CMU_XTALSTDSR_XTALSTDF (*((volatile unsigned int*)(0x42A80820UL))) +#define bM4_SYSREG_CMU_XTALSTBCR_XTALSTB0 (*((volatile unsigned int*)(0x42A81440UL))) +#define bM4_SYSREG_CMU_XTALSTBCR_XTALSTB1 (*((volatile unsigned int*)(0x42A81444UL))) +#define bM4_SYSREG_CMU_XTALSTBCR_XTALSTB2 (*((volatile unsigned int*)(0x42A81448UL))) +#define bM4_SYSREG_CMU_XTALSTBCR_XTALSTB3 (*((volatile unsigned int*)(0x42A8144CUL))) +#define bM4_SYSREG_RMU_RSTF0_PORF (*((volatile unsigned int*)(0x42A81800UL))) +#define bM4_SYSREG_RMU_RSTF0_PINRF (*((volatile unsigned int*)(0x42A81804UL))) +#define bM4_SYSREG_RMU_RSTF0_BORF (*((volatile unsigned int*)(0x42A81808UL))) +#define bM4_SYSREG_RMU_RSTF0_PVD1RF (*((volatile unsigned int*)(0x42A8180CUL))) +#define bM4_SYSREG_RMU_RSTF0_PVD2RF (*((volatile unsigned int*)(0x42A81810UL))) +#define bM4_SYSREG_RMU_RSTF0_WDRF (*((volatile unsigned int*)(0x42A81814UL))) +#define bM4_SYSREG_RMU_RSTF0_SWDRF (*((volatile unsigned int*)(0x42A81818UL))) +#define bM4_SYSREG_RMU_RSTF0_PDRF (*((volatile unsigned int*)(0x42A8181CUL))) +#define bM4_SYSREG_RMU_RSTF0_SWRF (*((volatile unsigned int*)(0x42A81820UL))) +#define bM4_SYSREG_RMU_RSTF0_MPUERF (*((volatile unsigned int*)(0x42A81824UL))) +#define bM4_SYSREG_RMU_RSTF0_RAPERF (*((volatile unsigned int*)(0x42A81828UL))) +#define bM4_SYSREG_RMU_RSTF0_RAECRF (*((volatile unsigned int*)(0x42A8182CUL))) +#define bM4_SYSREG_RMU_RSTF0_CKFERF (*((volatile unsigned int*)(0x42A81830UL))) +#define bM4_SYSREG_RMU_RSTF0_XTALERF (*((volatile unsigned int*)(0x42A81834UL))) +#define bM4_SYSREG_RMU_RSTF0_MULTIRF (*((volatile unsigned int*)(0x42A81838UL))) +#define bM4_SYSREG_RMU_RSTF0_CLRF (*((volatile unsigned int*)(0x42A8183CUL))) +#define bM4_SYSREG_PWR_PVDICR_PVD1NMIS (*((volatile unsigned int*)(0x42A81C00UL))) +#define bM4_SYSREG_PWR_PVDICR_PVD2NMIS (*((volatile unsigned int*)(0x42A81C10UL))) +#define bM4_SYSREG_PWR_PVDDSR_PVD1MON (*((volatile unsigned int*)(0x42A81C20UL))) +#define bM4_SYSREG_PWR_PVDDSR_PVD1DETFLG (*((volatile unsigned int*)(0x42A81C24UL))) +#define bM4_SYSREG_PWR_PVDDSR_PVD2MON (*((volatile unsigned int*)(0x42A81C30UL))) +#define bM4_SYSREG_PWR_PVDDSR_PVD2DETFLG (*((volatile unsigned int*)(0x42A81C34UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLM0 (*((volatile unsigned int*)(0x42A82000UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLM1 (*((volatile unsigned int*)(0x42A82004UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLM2 (*((volatile unsigned int*)(0x42A82008UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLM3 (*((volatile unsigned int*)(0x42A8200CUL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLM4 (*((volatile unsigned int*)(0x42A82010UL))) +#define bM4_SYSREG_CMU_PLLCFGR_PLLSRC (*((volatile unsigned int*)(0x42A8201CUL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN0 (*((volatile unsigned int*)(0x42A82020UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN1 (*((volatile unsigned int*)(0x42A82024UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN2 (*((volatile unsigned int*)(0x42A82028UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN3 (*((volatile unsigned int*)(0x42A8202CUL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN4 (*((volatile unsigned int*)(0x42A82030UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN5 (*((volatile unsigned int*)(0x42A82034UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN6 (*((volatile unsigned int*)(0x42A82038UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN7 (*((volatile unsigned int*)(0x42A8203CUL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLN8 (*((volatile unsigned int*)(0x42A82040UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLR0 (*((volatile unsigned int*)(0x42A82050UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLR1 (*((volatile unsigned int*)(0x42A82054UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLR2 (*((volatile unsigned int*)(0x42A82058UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLR3 (*((volatile unsigned int*)(0x42A8205CUL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLQ0 (*((volatile unsigned int*)(0x42A82060UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLQ1 (*((volatile unsigned int*)(0x42A82064UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLQ2 (*((volatile unsigned int*)(0x42A82068UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLQ3 (*((volatile unsigned int*)(0x42A8206CUL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLP0 (*((volatile unsigned int*)(0x42A82070UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLP1 (*((volatile unsigned int*)(0x42A82074UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLP2 (*((volatile unsigned int*)(0x42A82078UL))) +#define bM4_SYSREG_CMU_PLLCFGR_MPLLP3 (*((volatile unsigned int*)(0x42A8207CUL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLM0 (*((volatile unsigned int*)(0x42A82080UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLM1 (*((volatile unsigned int*)(0x42A82084UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLM2 (*((volatile unsigned int*)(0x42A82088UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLM3 (*((volatile unsigned int*)(0x42A8208CUL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLM4 (*((volatile unsigned int*)(0x42A82090UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN0 (*((volatile unsigned int*)(0x42A820A0UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN1 (*((volatile unsigned int*)(0x42A820A4UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN2 (*((volatile unsigned int*)(0x42A820A8UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN3 (*((volatile unsigned int*)(0x42A820ACUL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN4 (*((volatile unsigned int*)(0x42A820B0UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN5 (*((volatile unsigned int*)(0x42A820B4UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN6 (*((volatile unsigned int*)(0x42A820B8UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN7 (*((volatile unsigned int*)(0x42A820BCUL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLN8 (*((volatile unsigned int*)(0x42A820C0UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLR0 (*((volatile unsigned int*)(0x42A820D0UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLR1 (*((volatile unsigned int*)(0x42A820D4UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLR2 (*((volatile unsigned int*)(0x42A820D8UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLR3 (*((volatile unsigned int*)(0x42A820DCUL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLQ0 (*((volatile unsigned int*)(0x42A820E0UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLQ1 (*((volatile unsigned int*)(0x42A820E4UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLQ2 (*((volatile unsigned int*)(0x42A820E8UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLQ3 (*((volatile unsigned int*)(0x42A820ECUL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLP0 (*((volatile unsigned int*)(0x42A820F0UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLP1 (*((volatile unsigned int*)(0x42A820F4UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLP2 (*((volatile unsigned int*)(0x42A820F8UL))) +#define bM4_SYSREG_CMU_UPLLCFGR_UPLLP3 (*((volatile unsigned int*)(0x42A820FCUL))) +#define bM4_SYSREG_PWR_FPRC_FPRCB0 (*((volatile unsigned int*)(0x42A87FC0UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCB1 (*((volatile unsigned int*)(0x42A87FC4UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCB2 (*((volatile unsigned int*)(0x42A87FC8UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCB3 (*((volatile unsigned int*)(0x42A87FCCUL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE0 (*((volatile unsigned int*)(0x42A87FE0UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE1 (*((volatile unsigned int*)(0x42A87FE4UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE2 (*((volatile unsigned int*)(0x42A87FE8UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE3 (*((volatile unsigned int*)(0x42A87FECUL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE4 (*((volatile unsigned int*)(0x42A87FF0UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE5 (*((volatile unsigned int*)(0x42A87FF4UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE6 (*((volatile unsigned int*)(0x42A87FF8UL))) +#define bM4_SYSREG_PWR_FPRC_FPRCWE7 (*((volatile unsigned int*)(0x42A87FFCUL))) +#define bM4_SYSREG_PWR_PWRC0_PDMDS0 (*((volatile unsigned int*)(0x42A88000UL))) +#define bM4_SYSREG_PWR_PWRC0_PDMDS1 (*((volatile unsigned int*)(0x42A88004UL))) +#define bM4_SYSREG_PWR_PWRC0_VVDRSD (*((volatile unsigned int*)(0x42A88008UL))) +#define bM4_SYSREG_PWR_PWRC0_RETRAMSD (*((volatile unsigned int*)(0x42A8800CUL))) +#define bM4_SYSREG_PWR_PWRC0_IORTN0 (*((volatile unsigned int*)(0x42A88010UL))) +#define bM4_SYSREG_PWR_PWRC0_IORTN1 (*((volatile unsigned int*)(0x42A88014UL))) +#define bM4_SYSREG_PWR_PWRC0_PWDN (*((volatile unsigned int*)(0x42A8801CUL))) +#define bM4_SYSREG_PWR_PWRC1_VPLLSD (*((volatile unsigned int*)(0x42A88020UL))) +#define bM4_SYSREG_PWR_PWRC1_VHRCSD (*((volatile unsigned int*)(0x42A88024UL))) +#define bM4_SYSREG_PWR_PWRC1_STPDAS0 (*((volatile unsigned int*)(0x42A88038UL))) +#define bM4_SYSREG_PWR_PWRC1_STPDAS1 (*((volatile unsigned int*)(0x42A8803CUL))) +#define bM4_SYSREG_PWR_PWRC2_DDAS0 (*((volatile unsigned int*)(0x42A88040UL))) +#define bM4_SYSREG_PWR_PWRC2_DDAS1 (*((volatile unsigned int*)(0x42A88044UL))) +#define bM4_SYSREG_PWR_PWRC2_DDAS2 (*((volatile unsigned int*)(0x42A88048UL))) +#define bM4_SYSREG_PWR_PWRC2_DDAS3 (*((volatile unsigned int*)(0x42A8804CUL))) +#define bM4_SYSREG_PWR_PWRC2_DVS0 (*((volatile unsigned int*)(0x42A88050UL))) +#define bM4_SYSREG_PWR_PWRC2_DVS1 (*((volatile unsigned int*)(0x42A88054UL))) +#define bM4_SYSREG_PWR_PWRC3_PDTS (*((volatile unsigned int*)(0x42A88068UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE00 (*((volatile unsigned int*)(0x42A88080UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE01 (*((volatile unsigned int*)(0x42A88084UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE02 (*((volatile unsigned int*)(0x42A88088UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE03 (*((volatile unsigned int*)(0x42A8808CUL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE10 (*((volatile unsigned int*)(0x42A88090UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE11 (*((volatile unsigned int*)(0x42A88094UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE12 (*((volatile unsigned int*)(0x42A88098UL))) +#define bM4_SYSREG_PWR_PDWKE0_WKE13 (*((volatile unsigned int*)(0x42A8809CUL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE20 (*((volatile unsigned int*)(0x42A880A0UL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE21 (*((volatile unsigned int*)(0x42A880A4UL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE22 (*((volatile unsigned int*)(0x42A880A8UL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE23 (*((volatile unsigned int*)(0x42A880ACUL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE30 (*((volatile unsigned int*)(0x42A880B0UL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE31 (*((volatile unsigned int*)(0x42A880B4UL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE32 (*((volatile unsigned int*)(0x42A880B8UL))) +#define bM4_SYSREG_PWR_PDWKE1_WKE33 (*((volatile unsigned int*)(0x42A880BCUL))) +#define bM4_SYSREG_PWR_PDWKE2_VD1WKE (*((volatile unsigned int*)(0x42A880C0UL))) +#define bM4_SYSREG_PWR_PDWKE2_VD2WKE (*((volatile unsigned int*)(0x42A880C4UL))) +#define bM4_SYSREG_PWR_PDWKE2_NMIWKE (*((volatile unsigned int*)(0x42A880C8UL))) +#define bM4_SYSREG_PWR_PDWKE2_RTCPRDWKE (*((volatile unsigned int*)(0x42A880D0UL))) +#define bM4_SYSREG_PWR_PDWKE2_RTCALMWKE (*((volatile unsigned int*)(0x42A880D4UL))) +#define bM4_SYSREG_PWR_PDWKE2_WKTMWKE (*((volatile unsigned int*)(0x42A880DCUL))) +#define bM4_SYSREG_PWR_PDWKES_WK0EGS (*((volatile unsigned int*)(0x42A880E0UL))) +#define bM4_SYSREG_PWR_PDWKES_WK1EGS (*((volatile unsigned int*)(0x42A880E4UL))) +#define bM4_SYSREG_PWR_PDWKES_WK2EGS (*((volatile unsigned int*)(0x42A880E8UL))) +#define bM4_SYSREG_PWR_PDWKES_WK3EGS (*((volatile unsigned int*)(0x42A880ECUL))) +#define bM4_SYSREG_PWR_PDWKES_VD1EGS (*((volatile unsigned int*)(0x42A880F0UL))) +#define bM4_SYSREG_PWR_PDWKES_VD2EGS (*((volatile unsigned int*)(0x42A880F4UL))) +#define bM4_SYSREG_PWR_PDWKES_NMIEGS (*((volatile unsigned int*)(0x42A880F8UL))) +#define bM4_SYSREG_PWR_PDWKF0_PTWK0F (*((volatile unsigned int*)(0x42A88100UL))) +#define bM4_SYSREG_PWR_PDWKF0_PTWK1F (*((volatile unsigned int*)(0x42A88104UL))) +#define bM4_SYSREG_PWR_PDWKF0_PTWK2F (*((volatile unsigned int*)(0x42A88108UL))) +#define bM4_SYSREG_PWR_PDWKF0_PTWK3F (*((volatile unsigned int*)(0x42A8810CUL))) +#define bM4_SYSREG_PWR_PDWKF0_VD1WKF (*((volatile unsigned int*)(0x42A88110UL))) +#define bM4_SYSREG_PWR_PDWKF0_VD2WKF (*((volatile unsigned int*)(0x42A88114UL))) +#define bM4_SYSREG_PWR_PDWKF0_NMIWKF (*((volatile unsigned int*)(0x42A88118UL))) +#define bM4_SYSREG_PWR_PDWKF1_RTCPRDWKF (*((volatile unsigned int*)(0x42A88130UL))) +#define bM4_SYSREG_PWR_PDWKF1_RTCALMWKF (*((volatile unsigned int*)(0x42A88134UL))) +#define bM4_SYSREG_PWR_PDWKF1_WKTMWKF (*((volatile unsigned int*)(0x42A8813CUL))) +#define bM4_SYSREG_PWR_PWCMR_ADBUFE (*((volatile unsigned int*)(0x42A8815CUL))) +#define bM4_SYSREG_CMU_XTALCFGR_XTALDRV0 (*((volatile unsigned int*)(0x42A88210UL))) +#define bM4_SYSREG_CMU_XTALCFGR_XTALDRV1 (*((volatile unsigned int*)(0x42A88214UL))) +#define bM4_SYSREG_CMU_XTALCFGR_XTALMS (*((volatile unsigned int*)(0x42A88218UL))) +#define bM4_SYSREG_CMU_XTALCFGR_SUPDRV (*((volatile unsigned int*)(0x42A8821CUL))) +#define bM4_SYSREG_PWR_PVDCR0_EXVCCINEN (*((volatile unsigned int*)(0x42A88240UL))) +#define bM4_SYSREG_PWR_PVDCR0_PVD1EN (*((volatile unsigned int*)(0x42A88254UL))) +#define bM4_SYSREG_PWR_PVDCR0_PVD2EN (*((volatile unsigned int*)(0x42A88258UL))) +#define bM4_SYSREG_PWR_PVDCR1_PVD1IRE (*((volatile unsigned int*)(0x42A88260UL))) +#define bM4_SYSREG_PWR_PVDCR1_PVD1IRS (*((volatile unsigned int*)(0x42A88264UL))) +#define bM4_SYSREG_PWR_PVDCR1_PVD1CMPOE (*((volatile unsigned int*)(0x42A88268UL))) +#define bM4_SYSREG_PWR_PVDCR1_PVD2IRE (*((volatile unsigned int*)(0x42A88270UL))) +#define bM4_SYSREG_PWR_PVDCR1_PVD2IRS (*((volatile unsigned int*)(0x42A88274UL))) +#define bM4_SYSREG_PWR_PVDCR1_PVD2CMPOE (*((volatile unsigned int*)(0x42A88278UL))) +#define bM4_SYSREG_PWR_PVDFCR_PVD1NFDIS (*((volatile unsigned int*)(0x42A88280UL))) +#define bM4_SYSREG_PWR_PVDFCR_PVD1NFCKS0 (*((volatile unsigned int*)(0x42A88284UL))) +#define bM4_SYSREG_PWR_PVDFCR_PVD1NFCKS1 (*((volatile unsigned int*)(0x42A88288UL))) +#define bM4_SYSREG_PWR_PVDFCR_PVD2NFDIS (*((volatile unsigned int*)(0x42A88290UL))) +#define bM4_SYSREG_PWR_PVDFCR_PVD2NFCKS0 (*((volatile unsigned int*)(0x42A88294UL))) +#define bM4_SYSREG_PWR_PVDFCR_PVD2NFCKS1 (*((volatile unsigned int*)(0x42A88298UL))) +#define bM4_SYSREG_PWR_PVDLCR_PVD1LVL0 (*((volatile unsigned int*)(0x42A882A0UL))) +#define bM4_SYSREG_PWR_PVDLCR_PVD1LVL1 (*((volatile unsigned int*)(0x42A882A4UL))) +#define bM4_SYSREG_PWR_PVDLCR_PVD1LVL2 (*((volatile unsigned int*)(0x42A882A8UL))) +#define bM4_SYSREG_PWR_PVDLCR_PVD2LVL0 (*((volatile unsigned int*)(0x42A882B0UL))) +#define bM4_SYSREG_PWR_PVDLCR_PVD2LVL1 (*((volatile unsigned int*)(0x42A882B4UL))) +#define bM4_SYSREG_PWR_PVDLCR_PVD2LVL2 (*((volatile unsigned int*)(0x42A882B8UL))) +#define bM4_SYSREG_CMU_XTAL32CR_XTAL32STP (*((volatile unsigned int*)(0x42A88400UL))) +#define bM4_SYSREG_CMU_XTAL32CFGR_XTAL32DRV0 (*((volatile unsigned int*)(0x42A88420UL))) +#define bM4_SYSREG_CMU_XTAL32CFGR_XTAL32DRV1 (*((volatile unsigned int*)(0x42A88424UL))) +#define bM4_SYSREG_CMU_XTAL32CFGR_XTAL32DRV2 (*((volatile unsigned int*)(0x42A88428UL))) +#define bM4_SYSREG_CMU_XTAL32NFR_XTAL32NF0 (*((volatile unsigned int*)(0x42A884A0UL))) +#define bM4_SYSREG_CMU_XTAL32NFR_XTAL32NF1 (*((volatile unsigned int*)(0x42A884A4UL))) +#define bM4_SYSREG_CMU_LRCCR_LRCSTP (*((volatile unsigned int*)(0x42A884E0UL))) +#define bM4_SYSREG_PWR_XTAL32CS_CSDIS (*((volatile unsigned int*)(0x42A8857CUL))) +#define bM4_TMR01_CNTAR_CNTA0 (*((volatile unsigned int*)(0x42480000UL))) +#define bM4_TMR01_CNTAR_CNTA1 (*((volatile unsigned int*)(0x42480004UL))) +#define bM4_TMR01_CNTAR_CNTA2 (*((volatile unsigned int*)(0x42480008UL))) +#define bM4_TMR01_CNTAR_CNTA3 (*((volatile unsigned int*)(0x4248000CUL))) +#define bM4_TMR01_CNTAR_CNTA4 (*((volatile unsigned int*)(0x42480010UL))) +#define bM4_TMR01_CNTAR_CNTA5 (*((volatile unsigned int*)(0x42480014UL))) +#define bM4_TMR01_CNTAR_CNTA6 (*((volatile unsigned int*)(0x42480018UL))) +#define bM4_TMR01_CNTAR_CNTA7 (*((volatile unsigned int*)(0x4248001CUL))) +#define bM4_TMR01_CNTAR_CNTA8 (*((volatile unsigned int*)(0x42480020UL))) +#define bM4_TMR01_CNTAR_CNTA9 (*((volatile unsigned int*)(0x42480024UL))) +#define bM4_TMR01_CNTAR_CNTA10 (*((volatile unsigned int*)(0x42480028UL))) +#define bM4_TMR01_CNTAR_CNTA11 (*((volatile unsigned int*)(0x4248002CUL))) +#define bM4_TMR01_CNTAR_CNTA12 (*((volatile unsigned int*)(0x42480030UL))) +#define bM4_TMR01_CNTAR_CNTA13 (*((volatile unsigned int*)(0x42480034UL))) +#define bM4_TMR01_CNTAR_CNTA14 (*((volatile unsigned int*)(0x42480038UL))) +#define bM4_TMR01_CNTAR_CNTA15 (*((volatile unsigned int*)(0x4248003CUL))) +#define bM4_TMR01_CNTBR_CNTB0 (*((volatile unsigned int*)(0x42480080UL))) +#define bM4_TMR01_CNTBR_CNTB1 (*((volatile unsigned int*)(0x42480084UL))) +#define bM4_TMR01_CNTBR_CNTB2 (*((volatile unsigned int*)(0x42480088UL))) +#define bM4_TMR01_CNTBR_CNTB3 (*((volatile unsigned int*)(0x4248008CUL))) +#define bM4_TMR01_CNTBR_CNTB4 (*((volatile unsigned int*)(0x42480090UL))) +#define bM4_TMR01_CNTBR_CNTB5 (*((volatile unsigned int*)(0x42480094UL))) +#define bM4_TMR01_CNTBR_CNTB6 (*((volatile unsigned int*)(0x42480098UL))) +#define bM4_TMR01_CNTBR_CNTB7 (*((volatile unsigned int*)(0x4248009CUL))) +#define bM4_TMR01_CNTBR_CNTB8 (*((volatile unsigned int*)(0x424800A0UL))) +#define bM4_TMR01_CNTBR_CNTB9 (*((volatile unsigned int*)(0x424800A4UL))) +#define bM4_TMR01_CNTBR_CNTB10 (*((volatile unsigned int*)(0x424800A8UL))) +#define bM4_TMR01_CNTBR_CNTB11 (*((volatile unsigned int*)(0x424800ACUL))) +#define bM4_TMR01_CNTBR_CNTB12 (*((volatile unsigned int*)(0x424800B0UL))) +#define bM4_TMR01_CNTBR_CNTB13 (*((volatile unsigned int*)(0x424800B4UL))) +#define bM4_TMR01_CNTBR_CNTB14 (*((volatile unsigned int*)(0x424800B8UL))) +#define bM4_TMR01_CNTBR_CNTB15 (*((volatile unsigned int*)(0x424800BCUL))) +#define bM4_TMR01_CMPAR_CMPA0 (*((volatile unsigned int*)(0x42480100UL))) +#define bM4_TMR01_CMPAR_CMPA1 (*((volatile unsigned int*)(0x42480104UL))) +#define bM4_TMR01_CMPAR_CMPA2 (*((volatile unsigned int*)(0x42480108UL))) +#define bM4_TMR01_CMPAR_CMPA3 (*((volatile unsigned int*)(0x4248010CUL))) +#define bM4_TMR01_CMPAR_CMPA4 (*((volatile unsigned int*)(0x42480110UL))) +#define bM4_TMR01_CMPAR_CMPA5 (*((volatile unsigned int*)(0x42480114UL))) +#define bM4_TMR01_CMPAR_CMPA6 (*((volatile unsigned int*)(0x42480118UL))) +#define bM4_TMR01_CMPAR_CMPA7 (*((volatile unsigned int*)(0x4248011CUL))) +#define bM4_TMR01_CMPAR_CMPA8 (*((volatile unsigned int*)(0x42480120UL))) +#define bM4_TMR01_CMPAR_CMPA9 (*((volatile unsigned int*)(0x42480124UL))) +#define bM4_TMR01_CMPAR_CMPA10 (*((volatile unsigned int*)(0x42480128UL))) +#define bM4_TMR01_CMPAR_CMPA11 (*((volatile unsigned int*)(0x4248012CUL))) +#define bM4_TMR01_CMPAR_CMPA12 (*((volatile unsigned int*)(0x42480130UL))) +#define bM4_TMR01_CMPAR_CMPA13 (*((volatile unsigned int*)(0x42480134UL))) +#define bM4_TMR01_CMPAR_CMPA14 (*((volatile unsigned int*)(0x42480138UL))) +#define bM4_TMR01_CMPAR_CMPA15 (*((volatile unsigned int*)(0x4248013CUL))) +#define bM4_TMR01_CMPBR_CMPB0 (*((volatile unsigned int*)(0x42480180UL))) +#define bM4_TMR01_CMPBR_CMPB1 (*((volatile unsigned int*)(0x42480184UL))) +#define bM4_TMR01_CMPBR_CMPB2 (*((volatile unsigned int*)(0x42480188UL))) +#define bM4_TMR01_CMPBR_CMPB3 (*((volatile unsigned int*)(0x4248018CUL))) +#define bM4_TMR01_CMPBR_CMPB4 (*((volatile unsigned int*)(0x42480190UL))) +#define bM4_TMR01_CMPBR_CMPB5 (*((volatile unsigned int*)(0x42480194UL))) +#define bM4_TMR01_CMPBR_CMPB6 (*((volatile unsigned int*)(0x42480198UL))) +#define bM4_TMR01_CMPBR_CMPB7 (*((volatile unsigned int*)(0x4248019CUL))) +#define bM4_TMR01_CMPBR_CMPB8 (*((volatile unsigned int*)(0x424801A0UL))) +#define bM4_TMR01_CMPBR_CMPB9 (*((volatile unsigned int*)(0x424801A4UL))) +#define bM4_TMR01_CMPBR_CMPB10 (*((volatile unsigned int*)(0x424801A8UL))) +#define bM4_TMR01_CMPBR_CMPB11 (*((volatile unsigned int*)(0x424801ACUL))) +#define bM4_TMR01_CMPBR_CMPB12 (*((volatile unsigned int*)(0x424801B0UL))) +#define bM4_TMR01_CMPBR_CMPB13 (*((volatile unsigned int*)(0x424801B4UL))) +#define bM4_TMR01_CMPBR_CMPB14 (*((volatile unsigned int*)(0x424801B8UL))) +#define bM4_TMR01_CMPBR_CMPB15 (*((volatile unsigned int*)(0x424801BCUL))) +#define bM4_TMR01_BCONR_CSTA (*((volatile unsigned int*)(0x42480200UL))) +#define bM4_TMR01_BCONR_CAPMDA (*((volatile unsigned int*)(0x42480204UL))) +#define bM4_TMR01_BCONR_INTENA (*((volatile unsigned int*)(0x42480208UL))) +#define bM4_TMR01_BCONR_CKDIVA0 (*((volatile unsigned int*)(0x42480210UL))) +#define bM4_TMR01_BCONR_CKDIVA1 (*((volatile unsigned int*)(0x42480214UL))) +#define bM4_TMR01_BCONR_CKDIVA2 (*((volatile unsigned int*)(0x42480218UL))) +#define bM4_TMR01_BCONR_CKDIVA3 (*((volatile unsigned int*)(0x4248021CUL))) +#define bM4_TMR01_BCONR_SYNSA (*((volatile unsigned int*)(0x42480220UL))) +#define bM4_TMR01_BCONR_SYNCLKA (*((volatile unsigned int*)(0x42480224UL))) +#define bM4_TMR01_BCONR_ASYNCLKA (*((volatile unsigned int*)(0x42480228UL))) +#define bM4_TMR01_BCONR_HSTAA (*((volatile unsigned int*)(0x42480230UL))) +#define bM4_TMR01_BCONR_HSTPA (*((volatile unsigned int*)(0x42480234UL))) +#define bM4_TMR01_BCONR_HCLEA (*((volatile unsigned int*)(0x42480238UL))) +#define bM4_TMR01_BCONR_HICPA (*((volatile unsigned int*)(0x4248023CUL))) +#define bM4_TMR01_BCONR_CSTB (*((volatile unsigned int*)(0x42480240UL))) +#define bM4_TMR01_BCONR_CAPMDB (*((volatile unsigned int*)(0x42480244UL))) +#define bM4_TMR01_BCONR_INTENB (*((volatile unsigned int*)(0x42480248UL))) +#define bM4_TMR01_BCONR_CKDIVB0 (*((volatile unsigned int*)(0x42480250UL))) +#define bM4_TMR01_BCONR_CKDIVB1 (*((volatile unsigned int*)(0x42480254UL))) +#define bM4_TMR01_BCONR_CKDIVB2 (*((volatile unsigned int*)(0x42480258UL))) +#define bM4_TMR01_BCONR_CKDIVB3 (*((volatile unsigned int*)(0x4248025CUL))) +#define bM4_TMR01_BCONR_SYNSB (*((volatile unsigned int*)(0x42480260UL))) +#define bM4_TMR01_BCONR_SYNCLKB (*((volatile unsigned int*)(0x42480264UL))) +#define bM4_TMR01_BCONR_ASYNCLKB (*((volatile unsigned int*)(0x42480268UL))) +#define bM4_TMR01_BCONR_HSTAB (*((volatile unsigned int*)(0x42480270UL))) +#define bM4_TMR01_BCONR_HSTPB (*((volatile unsigned int*)(0x42480274UL))) +#define bM4_TMR01_BCONR_HCLEB (*((volatile unsigned int*)(0x42480278UL))) +#define bM4_TMR01_BCONR_HICPB (*((volatile unsigned int*)(0x4248027CUL))) +#define bM4_TMR01_STFLR_CMAF (*((volatile unsigned int*)(0x42480280UL))) +#define bM4_TMR01_STFLR_CMBF (*((volatile unsigned int*)(0x424802C0UL))) +#define bM4_TMR02_CNTAR_CNTA0 (*((volatile unsigned int*)(0x42488000UL))) +#define bM4_TMR02_CNTAR_CNTA1 (*((volatile unsigned int*)(0x42488004UL))) +#define bM4_TMR02_CNTAR_CNTA2 (*((volatile unsigned int*)(0x42488008UL))) +#define bM4_TMR02_CNTAR_CNTA3 (*((volatile unsigned int*)(0x4248800CUL))) +#define bM4_TMR02_CNTAR_CNTA4 (*((volatile unsigned int*)(0x42488010UL))) +#define bM4_TMR02_CNTAR_CNTA5 (*((volatile unsigned int*)(0x42488014UL))) +#define bM4_TMR02_CNTAR_CNTA6 (*((volatile unsigned int*)(0x42488018UL))) +#define bM4_TMR02_CNTAR_CNTA7 (*((volatile unsigned int*)(0x4248801CUL))) +#define bM4_TMR02_CNTAR_CNTA8 (*((volatile unsigned int*)(0x42488020UL))) +#define bM4_TMR02_CNTAR_CNTA9 (*((volatile unsigned int*)(0x42488024UL))) +#define bM4_TMR02_CNTAR_CNTA10 (*((volatile unsigned int*)(0x42488028UL))) +#define bM4_TMR02_CNTAR_CNTA11 (*((volatile unsigned int*)(0x4248802CUL))) +#define bM4_TMR02_CNTAR_CNTA12 (*((volatile unsigned int*)(0x42488030UL))) +#define bM4_TMR02_CNTAR_CNTA13 (*((volatile unsigned int*)(0x42488034UL))) +#define bM4_TMR02_CNTAR_CNTA14 (*((volatile unsigned int*)(0x42488038UL))) +#define bM4_TMR02_CNTAR_CNTA15 (*((volatile unsigned int*)(0x4248803CUL))) +#define bM4_TMR02_CNTBR_CNTB0 (*((volatile unsigned int*)(0x42488080UL))) +#define bM4_TMR02_CNTBR_CNTB1 (*((volatile unsigned int*)(0x42488084UL))) +#define bM4_TMR02_CNTBR_CNTB2 (*((volatile unsigned int*)(0x42488088UL))) +#define bM4_TMR02_CNTBR_CNTB3 (*((volatile unsigned int*)(0x4248808CUL))) +#define bM4_TMR02_CNTBR_CNTB4 (*((volatile unsigned int*)(0x42488090UL))) +#define bM4_TMR02_CNTBR_CNTB5 (*((volatile unsigned int*)(0x42488094UL))) +#define bM4_TMR02_CNTBR_CNTB6 (*((volatile unsigned int*)(0x42488098UL))) +#define bM4_TMR02_CNTBR_CNTB7 (*((volatile unsigned int*)(0x4248809CUL))) +#define bM4_TMR02_CNTBR_CNTB8 (*((volatile unsigned int*)(0x424880A0UL))) +#define bM4_TMR02_CNTBR_CNTB9 (*((volatile unsigned int*)(0x424880A4UL))) +#define bM4_TMR02_CNTBR_CNTB10 (*((volatile unsigned int*)(0x424880A8UL))) +#define bM4_TMR02_CNTBR_CNTB11 (*((volatile unsigned int*)(0x424880ACUL))) +#define bM4_TMR02_CNTBR_CNTB12 (*((volatile unsigned int*)(0x424880B0UL))) +#define bM4_TMR02_CNTBR_CNTB13 (*((volatile unsigned int*)(0x424880B4UL))) +#define bM4_TMR02_CNTBR_CNTB14 (*((volatile unsigned int*)(0x424880B8UL))) +#define bM4_TMR02_CNTBR_CNTB15 (*((volatile unsigned int*)(0x424880BCUL))) +#define bM4_TMR02_CMPAR_CMPA0 (*((volatile unsigned int*)(0x42488100UL))) +#define bM4_TMR02_CMPAR_CMPA1 (*((volatile unsigned int*)(0x42488104UL))) +#define bM4_TMR02_CMPAR_CMPA2 (*((volatile unsigned int*)(0x42488108UL))) +#define bM4_TMR02_CMPAR_CMPA3 (*((volatile unsigned int*)(0x4248810CUL))) +#define bM4_TMR02_CMPAR_CMPA4 (*((volatile unsigned int*)(0x42488110UL))) +#define bM4_TMR02_CMPAR_CMPA5 (*((volatile unsigned int*)(0x42488114UL))) +#define bM4_TMR02_CMPAR_CMPA6 (*((volatile unsigned int*)(0x42488118UL))) +#define bM4_TMR02_CMPAR_CMPA7 (*((volatile unsigned int*)(0x4248811CUL))) +#define bM4_TMR02_CMPAR_CMPA8 (*((volatile unsigned int*)(0x42488120UL))) +#define bM4_TMR02_CMPAR_CMPA9 (*((volatile unsigned int*)(0x42488124UL))) +#define bM4_TMR02_CMPAR_CMPA10 (*((volatile unsigned int*)(0x42488128UL))) +#define bM4_TMR02_CMPAR_CMPA11 (*((volatile unsigned int*)(0x4248812CUL))) +#define bM4_TMR02_CMPAR_CMPA12 (*((volatile unsigned int*)(0x42488130UL))) +#define bM4_TMR02_CMPAR_CMPA13 (*((volatile unsigned int*)(0x42488134UL))) +#define bM4_TMR02_CMPAR_CMPA14 (*((volatile unsigned int*)(0x42488138UL))) +#define bM4_TMR02_CMPAR_CMPA15 (*((volatile unsigned int*)(0x4248813CUL))) +#define bM4_TMR02_CMPBR_CMPB0 (*((volatile unsigned int*)(0x42488180UL))) +#define bM4_TMR02_CMPBR_CMPB1 (*((volatile unsigned int*)(0x42488184UL))) +#define bM4_TMR02_CMPBR_CMPB2 (*((volatile unsigned int*)(0x42488188UL))) +#define bM4_TMR02_CMPBR_CMPB3 (*((volatile unsigned int*)(0x4248818CUL))) +#define bM4_TMR02_CMPBR_CMPB4 (*((volatile unsigned int*)(0x42488190UL))) +#define bM4_TMR02_CMPBR_CMPB5 (*((volatile unsigned int*)(0x42488194UL))) +#define bM4_TMR02_CMPBR_CMPB6 (*((volatile unsigned int*)(0x42488198UL))) +#define bM4_TMR02_CMPBR_CMPB7 (*((volatile unsigned int*)(0x4248819CUL))) +#define bM4_TMR02_CMPBR_CMPB8 (*((volatile unsigned int*)(0x424881A0UL))) +#define bM4_TMR02_CMPBR_CMPB9 (*((volatile unsigned int*)(0x424881A4UL))) +#define bM4_TMR02_CMPBR_CMPB10 (*((volatile unsigned int*)(0x424881A8UL))) +#define bM4_TMR02_CMPBR_CMPB11 (*((volatile unsigned int*)(0x424881ACUL))) +#define bM4_TMR02_CMPBR_CMPB12 (*((volatile unsigned int*)(0x424881B0UL))) +#define bM4_TMR02_CMPBR_CMPB13 (*((volatile unsigned int*)(0x424881B4UL))) +#define bM4_TMR02_CMPBR_CMPB14 (*((volatile unsigned int*)(0x424881B8UL))) +#define bM4_TMR02_CMPBR_CMPB15 (*((volatile unsigned int*)(0x424881BCUL))) +#define bM4_TMR02_BCONR_CSTA (*((volatile unsigned int*)(0x42488200UL))) +#define bM4_TMR02_BCONR_CAPMDA (*((volatile unsigned int*)(0x42488204UL))) +#define bM4_TMR02_BCONR_INTENA (*((volatile unsigned int*)(0x42488208UL))) +#define bM4_TMR02_BCONR_CKDIVA0 (*((volatile unsigned int*)(0x42488210UL))) +#define bM4_TMR02_BCONR_CKDIVA1 (*((volatile unsigned int*)(0x42488214UL))) +#define bM4_TMR02_BCONR_CKDIVA2 (*((volatile unsigned int*)(0x42488218UL))) +#define bM4_TMR02_BCONR_CKDIVA3 (*((volatile unsigned int*)(0x4248821CUL))) +#define bM4_TMR02_BCONR_SYNSA (*((volatile unsigned int*)(0x42488220UL))) +#define bM4_TMR02_BCONR_SYNCLKA (*((volatile unsigned int*)(0x42488224UL))) +#define bM4_TMR02_BCONR_ASYNCLKA (*((volatile unsigned int*)(0x42488228UL))) +#define bM4_TMR02_BCONR_HSTAA (*((volatile unsigned int*)(0x42488230UL))) +#define bM4_TMR02_BCONR_HSTPA (*((volatile unsigned int*)(0x42488234UL))) +#define bM4_TMR02_BCONR_HCLEA (*((volatile unsigned int*)(0x42488238UL))) +#define bM4_TMR02_BCONR_HICPA (*((volatile unsigned int*)(0x4248823CUL))) +#define bM4_TMR02_BCONR_CSTB (*((volatile unsigned int*)(0x42488240UL))) +#define bM4_TMR02_BCONR_CAPMDB (*((volatile unsigned int*)(0x42488244UL))) +#define bM4_TMR02_BCONR_INTENB (*((volatile unsigned int*)(0x42488248UL))) +#define bM4_TMR02_BCONR_CKDIVB0 (*((volatile unsigned int*)(0x42488250UL))) +#define bM4_TMR02_BCONR_CKDIVB1 (*((volatile unsigned int*)(0x42488254UL))) +#define bM4_TMR02_BCONR_CKDIVB2 (*((volatile unsigned int*)(0x42488258UL))) +#define bM4_TMR02_BCONR_CKDIVB3 (*((volatile unsigned int*)(0x4248825CUL))) +#define bM4_TMR02_BCONR_SYNSB (*((volatile unsigned int*)(0x42488260UL))) +#define bM4_TMR02_BCONR_SYNCLKB (*((volatile unsigned int*)(0x42488264UL))) +#define bM4_TMR02_BCONR_ASYNCLKB (*((volatile unsigned int*)(0x42488268UL))) +#define bM4_TMR02_BCONR_HSTAB (*((volatile unsigned int*)(0x42488270UL))) +#define bM4_TMR02_BCONR_HSTPB (*((volatile unsigned int*)(0x42488274UL))) +#define bM4_TMR02_BCONR_HCLEB (*((volatile unsigned int*)(0x42488278UL))) +#define bM4_TMR02_BCONR_HICPB (*((volatile unsigned int*)(0x4248827CUL))) +#define bM4_TMR02_STFLR_CMAF (*((volatile unsigned int*)(0x42488280UL))) +#define bM4_TMR02_STFLR_CMBF (*((volatile unsigned int*)(0x424882C0UL))) +#define bM4_TMR41_OCSRU_OCEH (*((volatile unsigned int*)(0x422E0300UL))) +#define bM4_TMR41_OCSRU_OCEL (*((volatile unsigned int*)(0x422E0304UL))) +#define bM4_TMR41_OCSRU_OCPH (*((volatile unsigned int*)(0x422E0308UL))) +#define bM4_TMR41_OCSRU_OCPL (*((volatile unsigned int*)(0x422E030CUL))) +#define bM4_TMR41_OCSRU_OCIEH (*((volatile unsigned int*)(0x422E0310UL))) +#define bM4_TMR41_OCSRU_OCIEL (*((volatile unsigned int*)(0x422E0314UL))) +#define bM4_TMR41_OCSRU_OCFH (*((volatile unsigned int*)(0x422E0318UL))) +#define bM4_TMR41_OCSRU_OCFL (*((volatile unsigned int*)(0x422E031CUL))) +#define bM4_TMR41_OCERU_CHBUFEN0 (*((volatile unsigned int*)(0x422E0340UL))) +#define bM4_TMR41_OCERU_CHBUFEN1 (*((volatile unsigned int*)(0x422E0344UL))) +#define bM4_TMR41_OCERU_CLBUFEN0 (*((volatile unsigned int*)(0x422E0348UL))) +#define bM4_TMR41_OCERU_CLBUFEN1 (*((volatile unsigned int*)(0x422E034CUL))) +#define bM4_TMR41_OCERU_MHBUFEN0 (*((volatile unsigned int*)(0x422E0350UL))) +#define bM4_TMR41_OCERU_MHBUFEN1 (*((volatile unsigned int*)(0x422E0354UL))) +#define bM4_TMR41_OCERU_MLBUFEN0 (*((volatile unsigned int*)(0x422E0358UL))) +#define bM4_TMR41_OCERU_MLBUFEN1 (*((volatile unsigned int*)(0x422E035CUL))) +#define bM4_TMR41_OCERU_LMCH (*((volatile unsigned int*)(0x422E0360UL))) +#define bM4_TMR41_OCERU_LMCL (*((volatile unsigned int*)(0x422E0364UL))) +#define bM4_TMR41_OCERU_LMMH (*((volatile unsigned int*)(0x422E0368UL))) +#define bM4_TMR41_OCERU_LMML (*((volatile unsigned int*)(0x422E036CUL))) +#define bM4_TMR41_OCERU_MCECH (*((volatile unsigned int*)(0x422E0370UL))) +#define bM4_TMR41_OCERU_MCECL (*((volatile unsigned int*)(0x422E0374UL))) +#define bM4_TMR41_OCSRV_OCEH (*((volatile unsigned int*)(0x422E0380UL))) +#define bM4_TMR41_OCSRV_OCEL (*((volatile unsigned int*)(0x422E0384UL))) +#define bM4_TMR41_OCSRV_OCPH (*((volatile unsigned int*)(0x422E0388UL))) +#define bM4_TMR41_OCSRV_OCPL (*((volatile unsigned int*)(0x422E038CUL))) +#define bM4_TMR41_OCSRV_OCIEH (*((volatile unsigned int*)(0x422E0390UL))) +#define bM4_TMR41_OCSRV_OCIEL (*((volatile unsigned int*)(0x422E0394UL))) +#define bM4_TMR41_OCSRV_OCFH (*((volatile unsigned int*)(0x422E0398UL))) +#define bM4_TMR41_OCSRV_OCFL (*((volatile unsigned int*)(0x422E039CUL))) +#define bM4_TMR41_OCERV_CHBUFEN0 (*((volatile unsigned int*)(0x422E03C0UL))) +#define bM4_TMR41_OCERV_CHBUFEN1 (*((volatile unsigned int*)(0x422E03C4UL))) +#define bM4_TMR41_OCERV_CLBUFEN0 (*((volatile unsigned int*)(0x422E03C8UL))) +#define bM4_TMR41_OCERV_CLBUFEN1 (*((volatile unsigned int*)(0x422E03CCUL))) +#define bM4_TMR41_OCERV_MHBUFEN0 (*((volatile unsigned int*)(0x422E03D0UL))) +#define bM4_TMR41_OCERV_MHBUFEN1 (*((volatile unsigned int*)(0x422E03D4UL))) +#define bM4_TMR41_OCERV_MLBUFEN0 (*((volatile unsigned int*)(0x422E03D8UL))) +#define bM4_TMR41_OCERV_MLBUFEN1 (*((volatile unsigned int*)(0x422E03DCUL))) +#define bM4_TMR41_OCERV_LMCH (*((volatile unsigned int*)(0x422E03E0UL))) +#define bM4_TMR41_OCERV_LMCL (*((volatile unsigned int*)(0x422E03E4UL))) +#define bM4_TMR41_OCERV_LMMH (*((volatile unsigned int*)(0x422E03E8UL))) +#define bM4_TMR41_OCERV_LMML (*((volatile unsigned int*)(0x422E03ECUL))) +#define bM4_TMR41_OCERV_MCECH (*((volatile unsigned int*)(0x422E03F0UL))) +#define bM4_TMR41_OCERV_MCECL (*((volatile unsigned int*)(0x422E03F4UL))) +#define bM4_TMR41_OCSRW_OCEH (*((volatile unsigned int*)(0x422E0400UL))) +#define bM4_TMR41_OCSRW_OCEL (*((volatile unsigned int*)(0x422E0404UL))) +#define bM4_TMR41_OCSRW_OCPH (*((volatile unsigned int*)(0x422E0408UL))) +#define bM4_TMR41_OCSRW_OCPL (*((volatile unsigned int*)(0x422E040CUL))) +#define bM4_TMR41_OCSRW_OCIEH (*((volatile unsigned int*)(0x422E0410UL))) +#define bM4_TMR41_OCSRW_OCIEL (*((volatile unsigned int*)(0x422E0414UL))) +#define bM4_TMR41_OCSRW_OCFH (*((volatile unsigned int*)(0x422E0418UL))) +#define bM4_TMR41_OCSRW_OCFL (*((volatile unsigned int*)(0x422E041CUL))) +#define bM4_TMR41_OCERW_CHBUFEN0 (*((volatile unsigned int*)(0x422E0440UL))) +#define bM4_TMR41_OCERW_CHBUFEN1 (*((volatile unsigned int*)(0x422E0444UL))) +#define bM4_TMR41_OCERW_CLBUFEN0 (*((volatile unsigned int*)(0x422E0448UL))) +#define bM4_TMR41_OCERW_CLBUFEN1 (*((volatile unsigned int*)(0x422E044CUL))) +#define bM4_TMR41_OCERW_MHBUFEN0 (*((volatile unsigned int*)(0x422E0450UL))) +#define bM4_TMR41_OCERW_MHBUFEN1 (*((volatile unsigned int*)(0x422E0454UL))) +#define bM4_TMR41_OCERW_MLBUFEN0 (*((volatile unsigned int*)(0x422E0458UL))) +#define bM4_TMR41_OCERW_MLBUFEN1 (*((volatile unsigned int*)(0x422E045CUL))) +#define bM4_TMR41_OCERW_LMCH (*((volatile unsigned int*)(0x422E0460UL))) +#define bM4_TMR41_OCERW_LMCL (*((volatile unsigned int*)(0x422E0464UL))) +#define bM4_TMR41_OCERW_LMMH (*((volatile unsigned int*)(0x422E0468UL))) +#define bM4_TMR41_OCERW_LMML (*((volatile unsigned int*)(0x422E046CUL))) +#define bM4_TMR41_OCERW_MCECH (*((volatile unsigned int*)(0x422E0470UL))) +#define bM4_TMR41_OCERW_MCECL (*((volatile unsigned int*)(0x422E0474UL))) +#define bM4_TMR41_OCMRHUH_OCFDCH (*((volatile unsigned int*)(0x422E0480UL))) +#define bM4_TMR41_OCMRHUH_OCFPKH (*((volatile unsigned int*)(0x422E0484UL))) +#define bM4_TMR41_OCMRHUH_OCFUCH (*((volatile unsigned int*)(0x422E0488UL))) +#define bM4_TMR41_OCMRHUH_OCFZRH (*((volatile unsigned int*)(0x422E048CUL))) +#define bM4_TMR41_OCMRHUH_OPDCH0 (*((volatile unsigned int*)(0x422E0490UL))) +#define bM4_TMR41_OCMRHUH_OPDCH1 (*((volatile unsigned int*)(0x422E0494UL))) +#define bM4_TMR41_OCMRHUH_OPPKH0 (*((volatile unsigned int*)(0x422E0498UL))) +#define bM4_TMR41_OCMRHUH_OPPKH1 (*((volatile unsigned int*)(0x422E049CUL))) +#define bM4_TMR41_OCMRHUH_OPUCH0 (*((volatile unsigned int*)(0x422E04A0UL))) +#define bM4_TMR41_OCMRHUH_OPUCH1 (*((volatile unsigned int*)(0x422E04A4UL))) +#define bM4_TMR41_OCMRHUH_OPZRH0 (*((volatile unsigned int*)(0x422E04A8UL))) +#define bM4_TMR41_OCMRHUH_OPZRH1 (*((volatile unsigned int*)(0x422E04ACUL))) +#define bM4_TMR41_OCMRHUH_OPNPKH0 (*((volatile unsigned int*)(0x422E04B0UL))) +#define bM4_TMR41_OCMRHUH_OPNPKH1 (*((volatile unsigned int*)(0x422E04B4UL))) +#define bM4_TMR41_OCMRHUH_OPNZRH0 (*((volatile unsigned int*)(0x422E04B8UL))) +#define bM4_TMR41_OCMRHUH_OPNZRH1 (*((volatile unsigned int*)(0x422E04BCUL))) +#define bM4_TMR41_OCMRLUL_OCFDCL (*((volatile unsigned int*)(0x422E0500UL))) +#define bM4_TMR41_OCMRLUL_OCFPKL (*((volatile unsigned int*)(0x422E0504UL))) +#define bM4_TMR41_OCMRLUL_OCFUCL (*((volatile unsigned int*)(0x422E0508UL))) +#define bM4_TMR41_OCMRLUL_OCFZRL (*((volatile unsigned int*)(0x422E050CUL))) +#define bM4_TMR41_OCMRLUL_OPDCL0 (*((volatile unsigned int*)(0x422E0510UL))) +#define bM4_TMR41_OCMRLUL_OPDCL1 (*((volatile unsigned int*)(0x422E0514UL))) +#define bM4_TMR41_OCMRLUL_OPPKL0 (*((volatile unsigned int*)(0x422E0518UL))) +#define bM4_TMR41_OCMRLUL_OPPKL1 (*((volatile unsigned int*)(0x422E051CUL))) +#define bM4_TMR41_OCMRLUL_OPUCL0 (*((volatile unsigned int*)(0x422E0520UL))) +#define bM4_TMR41_OCMRLUL_OPUCL1 (*((volatile unsigned int*)(0x422E0524UL))) +#define bM4_TMR41_OCMRLUL_OPZRL0 (*((volatile unsigned int*)(0x422E0528UL))) +#define bM4_TMR41_OCMRLUL_OPZRL1 (*((volatile unsigned int*)(0x422E052CUL))) +#define bM4_TMR41_OCMRLUL_OPNPKL0 (*((volatile unsigned int*)(0x422E0530UL))) +#define bM4_TMR41_OCMRLUL_OPNPKL1 (*((volatile unsigned int*)(0x422E0534UL))) +#define bM4_TMR41_OCMRLUL_OPNZRL0 (*((volatile unsigned int*)(0x422E0538UL))) +#define bM4_TMR41_OCMRLUL_OPNZRL1 (*((volatile unsigned int*)(0x422E053CUL))) +#define bM4_TMR41_OCMRLUL_EOPNDCL0 (*((volatile unsigned int*)(0x422E0540UL))) +#define bM4_TMR41_OCMRLUL_EOPNDCL1 (*((volatile unsigned int*)(0x422E0544UL))) +#define bM4_TMR41_OCMRLUL_EOPNUCL0 (*((volatile unsigned int*)(0x422E0548UL))) +#define bM4_TMR41_OCMRLUL_EOPNUCL1 (*((volatile unsigned int*)(0x422E054CUL))) +#define bM4_TMR41_OCMRLUL_EOPDCL0 (*((volatile unsigned int*)(0x422E0550UL))) +#define bM4_TMR41_OCMRLUL_EOPDCL1 (*((volatile unsigned int*)(0x422E0554UL))) +#define bM4_TMR41_OCMRLUL_EOPPKL0 (*((volatile unsigned int*)(0x422E0558UL))) +#define bM4_TMR41_OCMRLUL_EOPPKL1 (*((volatile unsigned int*)(0x422E055CUL))) +#define bM4_TMR41_OCMRLUL_EOPUCL0 (*((volatile unsigned int*)(0x422E0560UL))) +#define bM4_TMR41_OCMRLUL_EOPUCL1 (*((volatile unsigned int*)(0x422E0564UL))) +#define bM4_TMR41_OCMRLUL_EOPZRL0 (*((volatile unsigned int*)(0x422E0568UL))) +#define bM4_TMR41_OCMRLUL_EOPZRL1 (*((volatile unsigned int*)(0x422E056CUL))) +#define bM4_TMR41_OCMRLUL_EOPNPKL0 (*((volatile unsigned int*)(0x422E0570UL))) +#define bM4_TMR41_OCMRLUL_EOPNPKL1 (*((volatile unsigned int*)(0x422E0574UL))) +#define bM4_TMR41_OCMRLUL_EOPNZRL0 (*((volatile unsigned int*)(0x422E0578UL))) +#define bM4_TMR41_OCMRLUL_EOPNZRL1 (*((volatile unsigned int*)(0x422E057CUL))) +#define bM4_TMR41_OCMRHVH_OCFDCH (*((volatile unsigned int*)(0x422E0580UL))) +#define bM4_TMR41_OCMRHVH_OCFPKH (*((volatile unsigned int*)(0x422E0584UL))) +#define bM4_TMR41_OCMRHVH_OCFUCH (*((volatile unsigned int*)(0x422E0588UL))) +#define bM4_TMR41_OCMRHVH_OCFZRH (*((volatile unsigned int*)(0x422E058CUL))) +#define bM4_TMR41_OCMRHVH_OPDCH0 (*((volatile unsigned int*)(0x422E0590UL))) +#define bM4_TMR41_OCMRHVH_OPDCH1 (*((volatile unsigned int*)(0x422E0594UL))) +#define bM4_TMR41_OCMRHVH_OPPKH0 (*((volatile unsigned int*)(0x422E0598UL))) +#define bM4_TMR41_OCMRHVH_OPPKH1 (*((volatile unsigned int*)(0x422E059CUL))) +#define bM4_TMR41_OCMRHVH_OPUCH0 (*((volatile unsigned int*)(0x422E05A0UL))) +#define bM4_TMR41_OCMRHVH_OPUCH1 (*((volatile unsigned int*)(0x422E05A4UL))) +#define bM4_TMR41_OCMRHVH_OPZRH0 (*((volatile unsigned int*)(0x422E05A8UL))) +#define bM4_TMR41_OCMRHVH_OPZRH1 (*((volatile unsigned int*)(0x422E05ACUL))) +#define bM4_TMR41_OCMRHVH_OPNPKH0 (*((volatile unsigned int*)(0x422E05B0UL))) +#define bM4_TMR41_OCMRHVH_OPNPKH1 (*((volatile unsigned int*)(0x422E05B4UL))) +#define bM4_TMR41_OCMRHVH_OPNZRH0 (*((volatile unsigned int*)(0x422E05B8UL))) +#define bM4_TMR41_OCMRHVH_OPNZRH1 (*((volatile unsigned int*)(0x422E05BCUL))) +#define bM4_TMR41_OCMRLVL_OCFDCL (*((volatile unsigned int*)(0x422E0600UL))) +#define bM4_TMR41_OCMRLVL_OCFPKL (*((volatile unsigned int*)(0x422E0604UL))) +#define bM4_TMR41_OCMRLVL_OCFUCL (*((volatile unsigned int*)(0x422E0608UL))) +#define bM4_TMR41_OCMRLVL_OCFZRL (*((volatile unsigned int*)(0x422E060CUL))) +#define bM4_TMR41_OCMRLVL_OPDCL0 (*((volatile unsigned int*)(0x422E0610UL))) +#define bM4_TMR41_OCMRLVL_OPDCL1 (*((volatile unsigned int*)(0x422E0614UL))) +#define bM4_TMR41_OCMRLVL_OPPKL0 (*((volatile unsigned int*)(0x422E0618UL))) +#define bM4_TMR41_OCMRLVL_OPPKL1 (*((volatile unsigned int*)(0x422E061CUL))) +#define bM4_TMR41_OCMRLVL_OPUCL0 (*((volatile unsigned int*)(0x422E0620UL))) +#define bM4_TMR41_OCMRLVL_OPUCL1 (*((volatile unsigned int*)(0x422E0624UL))) +#define bM4_TMR41_OCMRLVL_OPZRL0 (*((volatile unsigned int*)(0x422E0628UL))) +#define bM4_TMR41_OCMRLVL_OPZRL1 (*((volatile unsigned int*)(0x422E062CUL))) +#define bM4_TMR41_OCMRLVL_OPNPKL0 (*((volatile unsigned int*)(0x422E0630UL))) +#define bM4_TMR41_OCMRLVL_OPNPKL1 (*((volatile unsigned int*)(0x422E0634UL))) +#define bM4_TMR41_OCMRLVL_OPNZRL0 (*((volatile unsigned int*)(0x422E0638UL))) +#define bM4_TMR41_OCMRLVL_OPNZRL1 (*((volatile unsigned int*)(0x422E063CUL))) +#define bM4_TMR41_OCMRLVL_EOPNDCL0 (*((volatile unsigned int*)(0x422E0640UL))) +#define bM4_TMR41_OCMRLVL_EOPNDCL1 (*((volatile unsigned int*)(0x422E0644UL))) +#define bM4_TMR41_OCMRLVL_EOPNUCL0 (*((volatile unsigned int*)(0x422E0648UL))) +#define bM4_TMR41_OCMRLVL_EOPNUCL1 (*((volatile unsigned int*)(0x422E064CUL))) +#define bM4_TMR41_OCMRLVL_EOPDCL0 (*((volatile unsigned int*)(0x422E0650UL))) +#define bM4_TMR41_OCMRLVL_EOPDCL1 (*((volatile unsigned int*)(0x422E0654UL))) +#define bM4_TMR41_OCMRLVL_EOPPKL0 (*((volatile unsigned int*)(0x422E0658UL))) +#define bM4_TMR41_OCMRLVL_EOPPKL1 (*((volatile unsigned int*)(0x422E065CUL))) +#define bM4_TMR41_OCMRLVL_EOPUCL0 (*((volatile unsigned int*)(0x422E0660UL))) +#define bM4_TMR41_OCMRLVL_EOPUCL1 (*((volatile unsigned int*)(0x422E0664UL))) +#define bM4_TMR41_OCMRLVL_EOPZRL0 (*((volatile unsigned int*)(0x422E0668UL))) +#define bM4_TMR41_OCMRLVL_EOPZRL1 (*((volatile unsigned int*)(0x422E066CUL))) +#define bM4_TMR41_OCMRLVL_EOPNPKL0 (*((volatile unsigned int*)(0x422E0670UL))) +#define bM4_TMR41_OCMRLVL_EOPNPKL1 (*((volatile unsigned int*)(0x422E0674UL))) +#define bM4_TMR41_OCMRLVL_EOPNZRL0 (*((volatile unsigned int*)(0x422E0678UL))) +#define bM4_TMR41_OCMRLVL_EOPNZRL1 (*((volatile unsigned int*)(0x422E067CUL))) +#define bM4_TMR41_OCMRHWH_OCFDCH (*((volatile unsigned int*)(0x422E0680UL))) +#define bM4_TMR41_OCMRHWH_OCFPKH (*((volatile unsigned int*)(0x422E0684UL))) +#define bM4_TMR41_OCMRHWH_OCFUCH (*((volatile unsigned int*)(0x422E0688UL))) +#define bM4_TMR41_OCMRHWH_OCFZRH (*((volatile unsigned int*)(0x422E068CUL))) +#define bM4_TMR41_OCMRHWH_OPDCH0 (*((volatile unsigned int*)(0x422E0690UL))) +#define bM4_TMR41_OCMRHWH_OPDCH1 (*((volatile unsigned int*)(0x422E0694UL))) +#define bM4_TMR41_OCMRHWH_OPPKH0 (*((volatile unsigned int*)(0x422E0698UL))) +#define bM4_TMR41_OCMRHWH_OPPKH1 (*((volatile unsigned int*)(0x422E069CUL))) +#define bM4_TMR41_OCMRHWH_OPUCH0 (*((volatile unsigned int*)(0x422E06A0UL))) +#define bM4_TMR41_OCMRHWH_OPUCH1 (*((volatile unsigned int*)(0x422E06A4UL))) +#define bM4_TMR41_OCMRHWH_OPZRH0 (*((volatile unsigned int*)(0x422E06A8UL))) +#define bM4_TMR41_OCMRHWH_OPZRH1 (*((volatile unsigned int*)(0x422E06ACUL))) +#define bM4_TMR41_OCMRHWH_OPNPKH0 (*((volatile unsigned int*)(0x422E06B0UL))) +#define bM4_TMR41_OCMRHWH_OPNPKH1 (*((volatile unsigned int*)(0x422E06B4UL))) +#define bM4_TMR41_OCMRHWH_OPNZRH0 (*((volatile unsigned int*)(0x422E06B8UL))) +#define bM4_TMR41_OCMRHWH_OPNZRH1 (*((volatile unsigned int*)(0x422E06BCUL))) +#define bM4_TMR41_OCMRLWL_OCFDCL (*((volatile unsigned int*)(0x422E0700UL))) +#define bM4_TMR41_OCMRLWL_OCFPKL (*((volatile unsigned int*)(0x422E0704UL))) +#define bM4_TMR41_OCMRLWL_OCFUCL (*((volatile unsigned int*)(0x422E0708UL))) +#define bM4_TMR41_OCMRLWL_OCFZRL (*((volatile unsigned int*)(0x422E070CUL))) +#define bM4_TMR41_OCMRLWL_OPDCL0 (*((volatile unsigned int*)(0x422E0710UL))) +#define bM4_TMR41_OCMRLWL_OPDCL1 (*((volatile unsigned int*)(0x422E0714UL))) +#define bM4_TMR41_OCMRLWL_OPPKL0 (*((volatile unsigned int*)(0x422E0718UL))) +#define bM4_TMR41_OCMRLWL_OPPKL1 (*((volatile unsigned int*)(0x422E071CUL))) +#define bM4_TMR41_OCMRLWL_OPUCL0 (*((volatile unsigned int*)(0x422E0720UL))) +#define bM4_TMR41_OCMRLWL_OPUCL1 (*((volatile unsigned int*)(0x422E0724UL))) +#define bM4_TMR41_OCMRLWL_OPZRL0 (*((volatile unsigned int*)(0x422E0728UL))) +#define bM4_TMR41_OCMRLWL_OPZRL1 (*((volatile unsigned int*)(0x422E072CUL))) +#define bM4_TMR41_OCMRLWL_OPNPKL0 (*((volatile unsigned int*)(0x422E0730UL))) +#define bM4_TMR41_OCMRLWL_OPNPKL1 (*((volatile unsigned int*)(0x422E0734UL))) +#define bM4_TMR41_OCMRLWL_OPNZRL0 (*((volatile unsigned int*)(0x422E0738UL))) +#define bM4_TMR41_OCMRLWL_OPNZRL1 (*((volatile unsigned int*)(0x422E073CUL))) +#define bM4_TMR41_OCMRLWL_EOPNDCL0 (*((volatile unsigned int*)(0x422E0740UL))) +#define bM4_TMR41_OCMRLWL_EOPNDCL1 (*((volatile unsigned int*)(0x422E0744UL))) +#define bM4_TMR41_OCMRLWL_EOPNUCL0 (*((volatile unsigned int*)(0x422E0748UL))) +#define bM4_TMR41_OCMRLWL_EOPNUCL1 (*((volatile unsigned int*)(0x422E074CUL))) +#define bM4_TMR41_OCMRLWL_EOPDCL0 (*((volatile unsigned int*)(0x422E0750UL))) +#define bM4_TMR41_OCMRLWL_EOPDCL1 (*((volatile unsigned int*)(0x422E0754UL))) +#define bM4_TMR41_OCMRLWL_EOPPKL0 (*((volatile unsigned int*)(0x422E0758UL))) +#define bM4_TMR41_OCMRLWL_EOPPKL1 (*((volatile unsigned int*)(0x422E075CUL))) +#define bM4_TMR41_OCMRLWL_EOPUCL0 (*((volatile unsigned int*)(0x422E0760UL))) +#define bM4_TMR41_OCMRLWL_EOPUCL1 (*((volatile unsigned int*)(0x422E0764UL))) +#define bM4_TMR41_OCMRLWL_EOPZRL0 (*((volatile unsigned int*)(0x422E0768UL))) +#define bM4_TMR41_OCMRLWL_EOPZRL1 (*((volatile unsigned int*)(0x422E076CUL))) +#define bM4_TMR41_OCMRLWL_EOPNPKL0 (*((volatile unsigned int*)(0x422E0770UL))) +#define bM4_TMR41_OCMRLWL_EOPNPKL1 (*((volatile unsigned int*)(0x422E0774UL))) +#define bM4_TMR41_OCMRLWL_EOPNZRL0 (*((volatile unsigned int*)(0x422E0778UL))) +#define bM4_TMR41_OCMRLWL_EOPNZRL1 (*((volatile unsigned int*)(0x422E077CUL))) +#define bM4_TMR41_CCSR_CKDIV0 (*((volatile unsigned int*)(0x422E0900UL))) +#define bM4_TMR41_CCSR_CKDIV1 (*((volatile unsigned int*)(0x422E0904UL))) +#define bM4_TMR41_CCSR_CKDIV2 (*((volatile unsigned int*)(0x422E0908UL))) +#define bM4_TMR41_CCSR_CKDIV3 (*((volatile unsigned int*)(0x422E090CUL))) +#define bM4_TMR41_CCSR_CLEAR (*((volatile unsigned int*)(0x422E0910UL))) +#define bM4_TMR41_CCSR_MODE (*((volatile unsigned int*)(0x422E0914UL))) +#define bM4_TMR41_CCSR_STOP (*((volatile unsigned int*)(0x422E0918UL))) +#define bM4_TMR41_CCSR_BUFEN (*((volatile unsigned int*)(0x422E091CUL))) +#define bM4_TMR41_CCSR_IRQPEN (*((volatile unsigned int*)(0x422E0920UL))) +#define bM4_TMR41_CCSR_IRQPF (*((volatile unsigned int*)(0x422E0924UL))) +#define bM4_TMR41_CCSR_IRQZEN (*((volatile unsigned int*)(0x422E0934UL))) +#define bM4_TMR41_CCSR_IRQZF (*((volatile unsigned int*)(0x422E0938UL))) +#define bM4_TMR41_CCSR_ECKEN (*((volatile unsigned int*)(0x422E093CUL))) +#define bM4_TMR41_CVPR_ZIM0 (*((volatile unsigned int*)(0x422E0940UL))) +#define bM4_TMR41_CVPR_ZIM1 (*((volatile unsigned int*)(0x422E0944UL))) +#define bM4_TMR41_CVPR_ZIM2 (*((volatile unsigned int*)(0x422E0948UL))) +#define bM4_TMR41_CVPR_ZIM3 (*((volatile unsigned int*)(0x422E094CUL))) +#define bM4_TMR41_CVPR_PIM0 (*((volatile unsigned int*)(0x422E0950UL))) +#define bM4_TMR41_CVPR_PIM1 (*((volatile unsigned int*)(0x422E0954UL))) +#define bM4_TMR41_CVPR_PIM2 (*((volatile unsigned int*)(0x422E0958UL))) +#define bM4_TMR41_CVPR_PIM3 (*((volatile unsigned int*)(0x422E095CUL))) +#define bM4_TMR41_CVPR_ZIC0 (*((volatile unsigned int*)(0x422E0960UL))) +#define bM4_TMR41_CVPR_ZIC1 (*((volatile unsigned int*)(0x422E0964UL))) +#define bM4_TMR41_CVPR_ZIC2 (*((volatile unsigned int*)(0x422E0968UL))) +#define bM4_TMR41_CVPR_ZIC3 (*((volatile unsigned int*)(0x422E096CUL))) +#define bM4_TMR41_CVPR_PIC0 (*((volatile unsigned int*)(0x422E0970UL))) +#define bM4_TMR41_CVPR_PIC1 (*((volatile unsigned int*)(0x422E0974UL))) +#define bM4_TMR41_CVPR_PIC2 (*((volatile unsigned int*)(0x422E0978UL))) +#define bM4_TMR41_CVPR_PIC3 (*((volatile unsigned int*)(0x422E097CUL))) +#define bM4_TMR41_POCRU_DIVCK0 (*((volatile unsigned int*)(0x422E1300UL))) +#define bM4_TMR41_POCRU_DIVCK1 (*((volatile unsigned int*)(0x422E1304UL))) +#define bM4_TMR41_POCRU_DIVCK2 (*((volatile unsigned int*)(0x422E1308UL))) +#define bM4_TMR41_POCRU_DIVCK3 (*((volatile unsigned int*)(0x422E130CUL))) +#define bM4_TMR41_POCRU_PWMMD0 (*((volatile unsigned int*)(0x422E1310UL))) +#define bM4_TMR41_POCRU_PWMMD1 (*((volatile unsigned int*)(0x422E1314UL))) +#define bM4_TMR41_POCRU_LVLS0 (*((volatile unsigned int*)(0x422E1318UL))) +#define bM4_TMR41_POCRU_LVLS1 (*((volatile unsigned int*)(0x422E131CUL))) +#define bM4_TMR41_POCRV_DIVCK0 (*((volatile unsigned int*)(0x422E1380UL))) +#define bM4_TMR41_POCRV_DIVCK1 (*((volatile unsigned int*)(0x422E1384UL))) +#define bM4_TMR41_POCRV_DIVCK2 (*((volatile unsigned int*)(0x422E1388UL))) +#define bM4_TMR41_POCRV_DIVCK3 (*((volatile unsigned int*)(0x422E138CUL))) +#define bM4_TMR41_POCRV_PWMMD0 (*((volatile unsigned int*)(0x422E1390UL))) +#define bM4_TMR41_POCRV_PWMMD1 (*((volatile unsigned int*)(0x422E1394UL))) +#define bM4_TMR41_POCRV_LVLS0 (*((volatile unsigned int*)(0x422E1398UL))) +#define bM4_TMR41_POCRV_LVLS1 (*((volatile unsigned int*)(0x422E139CUL))) +#define bM4_TMR41_POCRW_DIVCK0 (*((volatile unsigned int*)(0x422E1400UL))) +#define bM4_TMR41_POCRW_DIVCK1 (*((volatile unsigned int*)(0x422E1404UL))) +#define bM4_TMR41_POCRW_DIVCK2 (*((volatile unsigned int*)(0x422E1408UL))) +#define bM4_TMR41_POCRW_DIVCK3 (*((volatile unsigned int*)(0x422E140CUL))) +#define bM4_TMR41_POCRW_PWMMD0 (*((volatile unsigned int*)(0x422E1410UL))) +#define bM4_TMR41_POCRW_PWMMD1 (*((volatile unsigned int*)(0x422E1414UL))) +#define bM4_TMR41_POCRW_LVLS0 (*((volatile unsigned int*)(0x422E1418UL))) +#define bM4_TMR41_POCRW_LVLS1 (*((volatile unsigned int*)(0x422E141CUL))) +#define bM4_TMR41_RCSR_RTIDU (*((volatile unsigned int*)(0x422E1480UL))) +#define bM4_TMR41_RCSR_RTIDV (*((volatile unsigned int*)(0x422E1484UL))) +#define bM4_TMR41_RCSR_RTIDW (*((volatile unsigned int*)(0x422E1488UL))) +#define bM4_TMR41_RCSR_RTIFU (*((volatile unsigned int*)(0x422E1490UL))) +#define bM4_TMR41_RCSR_RTICU (*((volatile unsigned int*)(0x422E1494UL))) +#define bM4_TMR41_RCSR_RTEU (*((volatile unsigned int*)(0x422E1498UL))) +#define bM4_TMR41_RCSR_RTSU (*((volatile unsigned int*)(0x422E149CUL))) +#define bM4_TMR41_RCSR_RTIFV (*((volatile unsigned int*)(0x422E14A0UL))) +#define bM4_TMR41_RCSR_RTICV (*((volatile unsigned int*)(0x422E14A4UL))) +#define bM4_TMR41_RCSR_RTEV (*((volatile unsigned int*)(0x422E14A8UL))) +#define bM4_TMR41_RCSR_RTSV (*((volatile unsigned int*)(0x422E14ACUL))) +#define bM4_TMR41_RCSR_RTIFW (*((volatile unsigned int*)(0x422E14B0UL))) +#define bM4_TMR41_RCSR_RTICW (*((volatile unsigned int*)(0x422E14B4UL))) +#define bM4_TMR41_RCSR_RTEW (*((volatile unsigned int*)(0x422E14B8UL))) +#define bM4_TMR41_RCSR_RTSW (*((volatile unsigned int*)(0x422E14BCUL))) +#define bM4_TMR41_SCSRUH_BUFEN0 (*((volatile unsigned int*)(0x422E1900UL))) +#define bM4_TMR41_SCSRUH_BUFEN1 (*((volatile unsigned int*)(0x422E1904UL))) +#define bM4_TMR41_SCSRUH_EVTOS0 (*((volatile unsigned int*)(0x422E1908UL))) +#define bM4_TMR41_SCSRUH_EVTOS1 (*((volatile unsigned int*)(0x422E190CUL))) +#define bM4_TMR41_SCSRUH_EVTOS2 (*((volatile unsigned int*)(0x422E1910UL))) +#define bM4_TMR41_SCSRUH_LMC (*((volatile unsigned int*)(0x422E1914UL))) +#define bM4_TMR41_SCSRUH_EVTMS (*((volatile unsigned int*)(0x422E1920UL))) +#define bM4_TMR41_SCSRUH_EVTDS (*((volatile unsigned int*)(0x422E1924UL))) +#define bM4_TMR41_SCSRUH_DEN (*((volatile unsigned int*)(0x422E1930UL))) +#define bM4_TMR41_SCSRUH_PEN (*((volatile unsigned int*)(0x422E1934UL))) +#define bM4_TMR41_SCSRUH_UEN (*((volatile unsigned int*)(0x422E1938UL))) +#define bM4_TMR41_SCSRUH_ZEN (*((volatile unsigned int*)(0x422E193CUL))) +#define bM4_TMR41_SCMRUH_AMC0 (*((volatile unsigned int*)(0x422E1940UL))) +#define bM4_TMR41_SCMRUH_AMC1 (*((volatile unsigned int*)(0x422E1944UL))) +#define bM4_TMR41_SCMRUH_AMC2 (*((volatile unsigned int*)(0x422E1948UL))) +#define bM4_TMR41_SCMRUH_AMC3 (*((volatile unsigned int*)(0x422E194CUL))) +#define bM4_TMR41_SCMRUH_MZCE (*((volatile unsigned int*)(0x422E1958UL))) +#define bM4_TMR41_SCMRUH_MPCE (*((volatile unsigned int*)(0x422E195CUL))) +#define bM4_TMR41_SCSRUL_BUFEN0 (*((volatile unsigned int*)(0x422E1980UL))) +#define bM4_TMR41_SCSRUL_BUFEN1 (*((volatile unsigned int*)(0x422E1984UL))) +#define bM4_TMR41_SCSRUL_EVTOS0 (*((volatile unsigned int*)(0x422E1988UL))) +#define bM4_TMR41_SCSRUL_EVTOS1 (*((volatile unsigned int*)(0x422E198CUL))) +#define bM4_TMR41_SCSRUL_EVTOS2 (*((volatile unsigned int*)(0x422E1990UL))) +#define bM4_TMR41_SCSRUL_LMC (*((volatile unsigned int*)(0x422E1994UL))) +#define bM4_TMR41_SCSRUL_EVTMS (*((volatile unsigned int*)(0x422E19A0UL))) +#define bM4_TMR41_SCSRUL_EVTDS (*((volatile unsigned int*)(0x422E19A4UL))) +#define bM4_TMR41_SCSRUL_DEN (*((volatile unsigned int*)(0x422E19B0UL))) +#define bM4_TMR41_SCSRUL_PEN (*((volatile unsigned int*)(0x422E19B4UL))) +#define bM4_TMR41_SCSRUL_UEN (*((volatile unsigned int*)(0x422E19B8UL))) +#define bM4_TMR41_SCSRUL_ZEN (*((volatile unsigned int*)(0x422E19BCUL))) +#define bM4_TMR41_SCMRUL_AMC0 (*((volatile unsigned int*)(0x422E19C0UL))) +#define bM4_TMR41_SCMRUL_AMC1 (*((volatile unsigned int*)(0x422E19C4UL))) +#define bM4_TMR41_SCMRUL_AMC2 (*((volatile unsigned int*)(0x422E19C8UL))) +#define bM4_TMR41_SCMRUL_AMC3 (*((volatile unsigned int*)(0x422E19CCUL))) +#define bM4_TMR41_SCMRUL_MZCE (*((volatile unsigned int*)(0x422E19D8UL))) +#define bM4_TMR41_SCMRUL_MPCE (*((volatile unsigned int*)(0x422E19DCUL))) +#define bM4_TMR41_SCSRVH_BUFEN0 (*((volatile unsigned int*)(0x422E1A00UL))) +#define bM4_TMR41_SCSRVH_BUFEN1 (*((volatile unsigned int*)(0x422E1A04UL))) +#define bM4_TMR41_SCSRVH_EVTOS0 (*((volatile unsigned int*)(0x422E1A08UL))) +#define bM4_TMR41_SCSRVH_EVTOS1 (*((volatile unsigned int*)(0x422E1A0CUL))) +#define bM4_TMR41_SCSRVH_EVTOS2 (*((volatile unsigned int*)(0x422E1A10UL))) +#define bM4_TMR41_SCSRVH_LMC (*((volatile unsigned int*)(0x422E1A14UL))) +#define bM4_TMR41_SCSRVH_EVTMS (*((volatile unsigned int*)(0x422E1A20UL))) +#define bM4_TMR41_SCSRVH_EVTDS (*((volatile unsigned int*)(0x422E1A24UL))) +#define bM4_TMR41_SCSRVH_DEN (*((volatile unsigned int*)(0x422E1A30UL))) +#define bM4_TMR41_SCSRVH_PEN (*((volatile unsigned int*)(0x422E1A34UL))) +#define bM4_TMR41_SCSRVH_UEN (*((volatile unsigned int*)(0x422E1A38UL))) +#define bM4_TMR41_SCSRVH_ZEN (*((volatile unsigned int*)(0x422E1A3CUL))) +#define bM4_TMR41_SCMRVH_AMC0 (*((volatile unsigned int*)(0x422E1A40UL))) +#define bM4_TMR41_SCMRVH_AMC1 (*((volatile unsigned int*)(0x422E1A44UL))) +#define bM4_TMR41_SCMRVH_AMC2 (*((volatile unsigned int*)(0x422E1A48UL))) +#define bM4_TMR41_SCMRVH_AMC3 (*((volatile unsigned int*)(0x422E1A4CUL))) +#define bM4_TMR41_SCMRVH_MZCE (*((volatile unsigned int*)(0x422E1A58UL))) +#define bM4_TMR41_SCMRVH_MPCE (*((volatile unsigned int*)(0x422E1A5CUL))) +#define bM4_TMR41_SCSRVL_BUFEN0 (*((volatile unsigned int*)(0x422E1A80UL))) +#define bM4_TMR41_SCSRVL_BUFEN1 (*((volatile unsigned int*)(0x422E1A84UL))) +#define bM4_TMR41_SCSRVL_EVTOS0 (*((volatile unsigned int*)(0x422E1A88UL))) +#define bM4_TMR41_SCSRVL_EVTOS1 (*((volatile unsigned int*)(0x422E1A8CUL))) +#define bM4_TMR41_SCSRVL_EVTOS2 (*((volatile unsigned int*)(0x422E1A90UL))) +#define bM4_TMR41_SCSRVL_LMC (*((volatile unsigned int*)(0x422E1A94UL))) +#define bM4_TMR41_SCSRVL_EVTMS (*((volatile unsigned int*)(0x422E1AA0UL))) +#define bM4_TMR41_SCSRVL_EVTDS (*((volatile unsigned int*)(0x422E1AA4UL))) +#define bM4_TMR41_SCSRVL_DEN (*((volatile unsigned int*)(0x422E1AB0UL))) +#define bM4_TMR41_SCSRVL_PEN (*((volatile unsigned int*)(0x422E1AB4UL))) +#define bM4_TMR41_SCSRVL_UEN (*((volatile unsigned int*)(0x422E1AB8UL))) +#define bM4_TMR41_SCSRVL_ZEN (*((volatile unsigned int*)(0x422E1ABCUL))) +#define bM4_TMR41_SCMRVL_AMC0 (*((volatile unsigned int*)(0x422E1AC0UL))) +#define bM4_TMR41_SCMRVL_AMC1 (*((volatile unsigned int*)(0x422E1AC4UL))) +#define bM4_TMR41_SCMRVL_AMC2 (*((volatile unsigned int*)(0x422E1AC8UL))) +#define bM4_TMR41_SCMRVL_AMC3 (*((volatile unsigned int*)(0x422E1ACCUL))) +#define bM4_TMR41_SCMRVL_MZCE (*((volatile unsigned int*)(0x422E1AD8UL))) +#define bM4_TMR41_SCMRVL_MPCE (*((volatile unsigned int*)(0x422E1ADCUL))) +#define bM4_TMR41_SCSRWH_BUFEN0 (*((volatile unsigned int*)(0x422E1B00UL))) +#define bM4_TMR41_SCSRWH_BUFEN1 (*((volatile unsigned int*)(0x422E1B04UL))) +#define bM4_TMR41_SCSRWH_EVTOS0 (*((volatile unsigned int*)(0x422E1B08UL))) +#define bM4_TMR41_SCSRWH_EVTOS1 (*((volatile unsigned int*)(0x422E1B0CUL))) +#define bM4_TMR41_SCSRWH_EVTOS2 (*((volatile unsigned int*)(0x422E1B10UL))) +#define bM4_TMR41_SCSRWH_LMC (*((volatile unsigned int*)(0x422E1B14UL))) +#define bM4_TMR41_SCSRWH_EVTMS (*((volatile unsigned int*)(0x422E1B20UL))) +#define bM4_TMR41_SCSRWH_EVTDS (*((volatile unsigned int*)(0x422E1B24UL))) +#define bM4_TMR41_SCSRWH_DEN (*((volatile unsigned int*)(0x422E1B30UL))) +#define bM4_TMR41_SCSRWH_PEN (*((volatile unsigned int*)(0x422E1B34UL))) +#define bM4_TMR41_SCSRWH_UEN (*((volatile unsigned int*)(0x422E1B38UL))) +#define bM4_TMR41_SCSRWH_ZEN (*((volatile unsigned int*)(0x422E1B3CUL))) +#define bM4_TMR41_SCMRWH_AMC0 (*((volatile unsigned int*)(0x422E1B40UL))) +#define bM4_TMR41_SCMRWH_AMC1 (*((volatile unsigned int*)(0x422E1B44UL))) +#define bM4_TMR41_SCMRWH_AMC2 (*((volatile unsigned int*)(0x422E1B48UL))) +#define bM4_TMR41_SCMRWH_AMC3 (*((volatile unsigned int*)(0x422E1B4CUL))) +#define bM4_TMR41_SCMRWH_MZCE (*((volatile unsigned int*)(0x422E1B58UL))) +#define bM4_TMR41_SCMRWH_MPCE (*((volatile unsigned int*)(0x422E1B5CUL))) +#define bM4_TMR41_SCSRWL_BUFEN0 (*((volatile unsigned int*)(0x422E1B80UL))) +#define bM4_TMR41_SCSRWL_BUFEN1 (*((volatile unsigned int*)(0x422E1B84UL))) +#define bM4_TMR41_SCSRWL_EVTOS0 (*((volatile unsigned int*)(0x422E1B88UL))) +#define bM4_TMR41_SCSRWL_EVTOS1 (*((volatile unsigned int*)(0x422E1B8CUL))) +#define bM4_TMR41_SCSRWL_EVTOS2 (*((volatile unsigned int*)(0x422E1B90UL))) +#define bM4_TMR41_SCSRWL_LMC (*((volatile unsigned int*)(0x422E1B94UL))) +#define bM4_TMR41_SCSRWL_EVTMS (*((volatile unsigned int*)(0x422E1BA0UL))) +#define bM4_TMR41_SCSRWL_EVTDS (*((volatile unsigned int*)(0x422E1BA4UL))) +#define bM4_TMR41_SCSRWL_DEN (*((volatile unsigned int*)(0x422E1BB0UL))) +#define bM4_TMR41_SCSRWL_PEN (*((volatile unsigned int*)(0x422E1BB4UL))) +#define bM4_TMR41_SCSRWL_UEN (*((volatile unsigned int*)(0x422E1BB8UL))) +#define bM4_TMR41_SCSRWL_ZEN (*((volatile unsigned int*)(0x422E1BBCUL))) +#define bM4_TMR41_SCMRWL_AMC0 (*((volatile unsigned int*)(0x422E1BC0UL))) +#define bM4_TMR41_SCMRWL_AMC1 (*((volatile unsigned int*)(0x422E1BC4UL))) +#define bM4_TMR41_SCMRWL_AMC2 (*((volatile unsigned int*)(0x422E1BC8UL))) +#define bM4_TMR41_SCMRWL_AMC3 (*((volatile unsigned int*)(0x422E1BCCUL))) +#define bM4_TMR41_SCMRWL_MZCE (*((volatile unsigned int*)(0x422E1BD8UL))) +#define bM4_TMR41_SCMRWL_MPCE (*((volatile unsigned int*)(0x422E1BDCUL))) +#define bM4_TMR41_ECSR_HOLD (*((volatile unsigned int*)(0x422E1E1CUL))) +#define bM4_TMR42_OCSRU_OCEH (*((volatile unsigned int*)(0x42490300UL))) +#define bM4_TMR42_OCSRU_OCEL (*((volatile unsigned int*)(0x42490304UL))) +#define bM4_TMR42_OCSRU_OCPH (*((volatile unsigned int*)(0x42490308UL))) +#define bM4_TMR42_OCSRU_OCPL (*((volatile unsigned int*)(0x4249030CUL))) +#define bM4_TMR42_OCSRU_OCIEH (*((volatile unsigned int*)(0x42490310UL))) +#define bM4_TMR42_OCSRU_OCIEL (*((volatile unsigned int*)(0x42490314UL))) +#define bM4_TMR42_OCSRU_OCFH (*((volatile unsigned int*)(0x42490318UL))) +#define bM4_TMR42_OCSRU_OCFL (*((volatile unsigned int*)(0x4249031CUL))) +#define bM4_TMR42_OCERU_CHBUFEN0 (*((volatile unsigned int*)(0x42490340UL))) +#define bM4_TMR42_OCERU_CHBUFEN1 (*((volatile unsigned int*)(0x42490344UL))) +#define bM4_TMR42_OCERU_CLBUFEN0 (*((volatile unsigned int*)(0x42490348UL))) +#define bM4_TMR42_OCERU_CLBUFEN1 (*((volatile unsigned int*)(0x4249034CUL))) +#define bM4_TMR42_OCERU_MHBUFEN0 (*((volatile unsigned int*)(0x42490350UL))) +#define bM4_TMR42_OCERU_MHBUFEN1 (*((volatile unsigned int*)(0x42490354UL))) +#define bM4_TMR42_OCERU_MLBUFEN0 (*((volatile unsigned int*)(0x42490358UL))) +#define bM4_TMR42_OCERU_MLBUFEN1 (*((volatile unsigned int*)(0x4249035CUL))) +#define bM4_TMR42_OCERU_LMCH (*((volatile unsigned int*)(0x42490360UL))) +#define bM4_TMR42_OCERU_LMCL (*((volatile unsigned int*)(0x42490364UL))) +#define bM4_TMR42_OCERU_LMMH (*((volatile unsigned int*)(0x42490368UL))) +#define bM4_TMR42_OCERU_LMML (*((volatile unsigned int*)(0x4249036CUL))) +#define bM4_TMR42_OCERU_MCECH (*((volatile unsigned int*)(0x42490370UL))) +#define bM4_TMR42_OCERU_MCECL (*((volatile unsigned int*)(0x42490374UL))) +#define bM4_TMR42_OCSRV_OCEH (*((volatile unsigned int*)(0x42490380UL))) +#define bM4_TMR42_OCSRV_OCEL (*((volatile unsigned int*)(0x42490384UL))) +#define bM4_TMR42_OCSRV_OCPH (*((volatile unsigned int*)(0x42490388UL))) +#define bM4_TMR42_OCSRV_OCPL (*((volatile unsigned int*)(0x4249038CUL))) +#define bM4_TMR42_OCSRV_OCIEH (*((volatile unsigned int*)(0x42490390UL))) +#define bM4_TMR42_OCSRV_OCIEL (*((volatile unsigned int*)(0x42490394UL))) +#define bM4_TMR42_OCSRV_OCFH (*((volatile unsigned int*)(0x42490398UL))) +#define bM4_TMR42_OCSRV_OCFL (*((volatile unsigned int*)(0x4249039CUL))) +#define bM4_TMR42_OCERV_CHBUFEN0 (*((volatile unsigned int*)(0x424903C0UL))) +#define bM4_TMR42_OCERV_CHBUFEN1 (*((volatile unsigned int*)(0x424903C4UL))) +#define bM4_TMR42_OCERV_CLBUFEN0 (*((volatile unsigned int*)(0x424903C8UL))) +#define bM4_TMR42_OCERV_CLBUFEN1 (*((volatile unsigned int*)(0x424903CCUL))) +#define bM4_TMR42_OCERV_MHBUFEN0 (*((volatile unsigned int*)(0x424903D0UL))) +#define bM4_TMR42_OCERV_MHBUFEN1 (*((volatile unsigned int*)(0x424903D4UL))) +#define bM4_TMR42_OCERV_MLBUFEN0 (*((volatile unsigned int*)(0x424903D8UL))) +#define bM4_TMR42_OCERV_MLBUFEN1 (*((volatile unsigned int*)(0x424903DCUL))) +#define bM4_TMR42_OCERV_LMCH (*((volatile unsigned int*)(0x424903E0UL))) +#define bM4_TMR42_OCERV_LMCL (*((volatile unsigned int*)(0x424903E4UL))) +#define bM4_TMR42_OCERV_LMMH (*((volatile unsigned int*)(0x424903E8UL))) +#define bM4_TMR42_OCERV_LMML (*((volatile unsigned int*)(0x424903ECUL))) +#define bM4_TMR42_OCERV_MCECH (*((volatile unsigned int*)(0x424903F0UL))) +#define bM4_TMR42_OCERV_MCECL (*((volatile unsigned int*)(0x424903F4UL))) +#define bM4_TMR42_OCSRW_OCEH (*((volatile unsigned int*)(0x42490400UL))) +#define bM4_TMR42_OCSRW_OCEL (*((volatile unsigned int*)(0x42490404UL))) +#define bM4_TMR42_OCSRW_OCPH (*((volatile unsigned int*)(0x42490408UL))) +#define bM4_TMR42_OCSRW_OCPL (*((volatile unsigned int*)(0x4249040CUL))) +#define bM4_TMR42_OCSRW_OCIEH (*((volatile unsigned int*)(0x42490410UL))) +#define bM4_TMR42_OCSRW_OCIEL (*((volatile unsigned int*)(0x42490414UL))) +#define bM4_TMR42_OCSRW_OCFH (*((volatile unsigned int*)(0x42490418UL))) +#define bM4_TMR42_OCSRW_OCFL (*((volatile unsigned int*)(0x4249041CUL))) +#define bM4_TMR42_OCERW_CHBUFEN0 (*((volatile unsigned int*)(0x42490440UL))) +#define bM4_TMR42_OCERW_CHBUFEN1 (*((volatile unsigned int*)(0x42490444UL))) +#define bM4_TMR42_OCERW_CLBUFEN0 (*((volatile unsigned int*)(0x42490448UL))) +#define bM4_TMR42_OCERW_CLBUFEN1 (*((volatile unsigned int*)(0x4249044CUL))) +#define bM4_TMR42_OCERW_MHBUFEN0 (*((volatile unsigned int*)(0x42490450UL))) +#define bM4_TMR42_OCERW_MHBUFEN1 (*((volatile unsigned int*)(0x42490454UL))) +#define bM4_TMR42_OCERW_MLBUFEN0 (*((volatile unsigned int*)(0x42490458UL))) +#define bM4_TMR42_OCERW_MLBUFEN1 (*((volatile unsigned int*)(0x4249045CUL))) +#define bM4_TMR42_OCERW_LMCH (*((volatile unsigned int*)(0x42490460UL))) +#define bM4_TMR42_OCERW_LMCL (*((volatile unsigned int*)(0x42490464UL))) +#define bM4_TMR42_OCERW_LMMH (*((volatile unsigned int*)(0x42490468UL))) +#define bM4_TMR42_OCERW_LMML (*((volatile unsigned int*)(0x4249046CUL))) +#define bM4_TMR42_OCERW_MCECH (*((volatile unsigned int*)(0x42490470UL))) +#define bM4_TMR42_OCERW_MCECL (*((volatile unsigned int*)(0x42490474UL))) +#define bM4_TMR42_OCMRHUH_OCFDCH (*((volatile unsigned int*)(0x42490480UL))) +#define bM4_TMR42_OCMRHUH_OCFPKH (*((volatile unsigned int*)(0x42490484UL))) +#define bM4_TMR42_OCMRHUH_OCFUCH (*((volatile unsigned int*)(0x42490488UL))) +#define bM4_TMR42_OCMRHUH_OCFZRH (*((volatile unsigned int*)(0x4249048CUL))) +#define bM4_TMR42_OCMRHUH_OPDCH0 (*((volatile unsigned int*)(0x42490490UL))) +#define bM4_TMR42_OCMRHUH_OPDCH1 (*((volatile unsigned int*)(0x42490494UL))) +#define bM4_TMR42_OCMRHUH_OPPKH0 (*((volatile unsigned int*)(0x42490498UL))) +#define bM4_TMR42_OCMRHUH_OPPKH1 (*((volatile unsigned int*)(0x4249049CUL))) +#define bM4_TMR42_OCMRHUH_OPUCH0 (*((volatile unsigned int*)(0x424904A0UL))) +#define bM4_TMR42_OCMRHUH_OPUCH1 (*((volatile unsigned int*)(0x424904A4UL))) +#define bM4_TMR42_OCMRHUH_OPZRH0 (*((volatile unsigned int*)(0x424904A8UL))) +#define bM4_TMR42_OCMRHUH_OPZRH1 (*((volatile unsigned int*)(0x424904ACUL))) +#define bM4_TMR42_OCMRHUH_OPNPKH0 (*((volatile unsigned int*)(0x424904B0UL))) +#define bM4_TMR42_OCMRHUH_OPNPKH1 (*((volatile unsigned int*)(0x424904B4UL))) +#define bM4_TMR42_OCMRHUH_OPNZRH0 (*((volatile unsigned int*)(0x424904B8UL))) +#define bM4_TMR42_OCMRHUH_OPNZRH1 (*((volatile unsigned int*)(0x424904BCUL))) +#define bM4_TMR42_OCMRLUL_OCFDCL (*((volatile unsigned int*)(0x42490500UL))) +#define bM4_TMR42_OCMRLUL_OCFPKL (*((volatile unsigned int*)(0x42490504UL))) +#define bM4_TMR42_OCMRLUL_OCFUCL (*((volatile unsigned int*)(0x42490508UL))) +#define bM4_TMR42_OCMRLUL_OCFZRL (*((volatile unsigned int*)(0x4249050CUL))) +#define bM4_TMR42_OCMRLUL_OPDCL0 (*((volatile unsigned int*)(0x42490510UL))) +#define bM4_TMR42_OCMRLUL_OPDCL1 (*((volatile unsigned int*)(0x42490514UL))) +#define bM4_TMR42_OCMRLUL_OPPKL0 (*((volatile unsigned int*)(0x42490518UL))) +#define bM4_TMR42_OCMRLUL_OPPKL1 (*((volatile unsigned int*)(0x4249051CUL))) +#define bM4_TMR42_OCMRLUL_OPUCL0 (*((volatile unsigned int*)(0x42490520UL))) +#define bM4_TMR42_OCMRLUL_OPUCL1 (*((volatile unsigned int*)(0x42490524UL))) +#define bM4_TMR42_OCMRLUL_OPZRL0 (*((volatile unsigned int*)(0x42490528UL))) +#define bM4_TMR42_OCMRLUL_OPZRL1 (*((volatile unsigned int*)(0x4249052CUL))) +#define bM4_TMR42_OCMRLUL_OPNPKL0 (*((volatile unsigned int*)(0x42490530UL))) +#define bM4_TMR42_OCMRLUL_OPNPKL1 (*((volatile unsigned int*)(0x42490534UL))) +#define bM4_TMR42_OCMRLUL_OPNZRL0 (*((volatile unsigned int*)(0x42490538UL))) +#define bM4_TMR42_OCMRLUL_OPNZRL1 (*((volatile unsigned int*)(0x4249053CUL))) +#define bM4_TMR42_OCMRLUL_EOPNDCL0 (*((volatile unsigned int*)(0x42490540UL))) +#define bM4_TMR42_OCMRLUL_EOPNDCL1 (*((volatile unsigned int*)(0x42490544UL))) +#define bM4_TMR42_OCMRLUL_EOPNUCL0 (*((volatile unsigned int*)(0x42490548UL))) +#define bM4_TMR42_OCMRLUL_EOPNUCL1 (*((volatile unsigned int*)(0x4249054CUL))) +#define bM4_TMR42_OCMRLUL_EOPDCL0 (*((volatile unsigned int*)(0x42490550UL))) +#define bM4_TMR42_OCMRLUL_EOPDCL1 (*((volatile unsigned int*)(0x42490554UL))) +#define bM4_TMR42_OCMRLUL_EOPPKL0 (*((volatile unsigned int*)(0x42490558UL))) +#define bM4_TMR42_OCMRLUL_EOPPKL1 (*((volatile unsigned int*)(0x4249055CUL))) +#define bM4_TMR42_OCMRLUL_EOPUCL0 (*((volatile unsigned int*)(0x42490560UL))) +#define bM4_TMR42_OCMRLUL_EOPUCL1 (*((volatile unsigned int*)(0x42490564UL))) +#define bM4_TMR42_OCMRLUL_EOPZRL0 (*((volatile unsigned int*)(0x42490568UL))) +#define bM4_TMR42_OCMRLUL_EOPZRL1 (*((volatile unsigned int*)(0x4249056CUL))) +#define bM4_TMR42_OCMRLUL_EOPNPKL0 (*((volatile unsigned int*)(0x42490570UL))) +#define bM4_TMR42_OCMRLUL_EOPNPKL1 (*((volatile unsigned int*)(0x42490574UL))) +#define bM4_TMR42_OCMRLUL_EOPNZRL0 (*((volatile unsigned int*)(0x42490578UL))) +#define bM4_TMR42_OCMRLUL_EOPNZRL1 (*((volatile unsigned int*)(0x4249057CUL))) +#define bM4_TMR42_OCMRHVH_OCFDCH (*((volatile unsigned int*)(0x42490580UL))) +#define bM4_TMR42_OCMRHVH_OCFPKH (*((volatile unsigned int*)(0x42490584UL))) +#define bM4_TMR42_OCMRHVH_OCFUCH (*((volatile unsigned int*)(0x42490588UL))) +#define bM4_TMR42_OCMRHVH_OCFZRH (*((volatile unsigned int*)(0x4249058CUL))) +#define bM4_TMR42_OCMRHVH_OPDCH0 (*((volatile unsigned int*)(0x42490590UL))) +#define bM4_TMR42_OCMRHVH_OPDCH1 (*((volatile unsigned int*)(0x42490594UL))) +#define bM4_TMR42_OCMRHVH_OPPKH0 (*((volatile unsigned int*)(0x42490598UL))) +#define bM4_TMR42_OCMRHVH_OPPKH1 (*((volatile unsigned int*)(0x4249059CUL))) +#define bM4_TMR42_OCMRHVH_OPUCH0 (*((volatile unsigned int*)(0x424905A0UL))) +#define bM4_TMR42_OCMRHVH_OPUCH1 (*((volatile unsigned int*)(0x424905A4UL))) +#define bM4_TMR42_OCMRHVH_OPZRH0 (*((volatile unsigned int*)(0x424905A8UL))) +#define bM4_TMR42_OCMRHVH_OPZRH1 (*((volatile unsigned int*)(0x424905ACUL))) +#define bM4_TMR42_OCMRHVH_OPNPKH0 (*((volatile unsigned int*)(0x424905B0UL))) +#define bM4_TMR42_OCMRHVH_OPNPKH1 (*((volatile unsigned int*)(0x424905B4UL))) +#define bM4_TMR42_OCMRHVH_OPNZRH0 (*((volatile unsigned int*)(0x424905B8UL))) +#define bM4_TMR42_OCMRHVH_OPNZRH1 (*((volatile unsigned int*)(0x424905BCUL))) +#define bM4_TMR42_OCMRLVL_OCFDCL (*((volatile unsigned int*)(0x42490600UL))) +#define bM4_TMR42_OCMRLVL_OCFPKL (*((volatile unsigned int*)(0x42490604UL))) +#define bM4_TMR42_OCMRLVL_OCFUCL (*((volatile unsigned int*)(0x42490608UL))) +#define bM4_TMR42_OCMRLVL_OCFZRL (*((volatile unsigned int*)(0x4249060CUL))) +#define bM4_TMR42_OCMRLVL_OPDCL0 (*((volatile unsigned int*)(0x42490610UL))) +#define bM4_TMR42_OCMRLVL_OPDCL1 (*((volatile unsigned int*)(0x42490614UL))) +#define bM4_TMR42_OCMRLVL_OPPKL0 (*((volatile unsigned int*)(0x42490618UL))) +#define bM4_TMR42_OCMRLVL_OPPKL1 (*((volatile unsigned int*)(0x4249061CUL))) +#define bM4_TMR42_OCMRLVL_OPUCL0 (*((volatile unsigned int*)(0x42490620UL))) +#define bM4_TMR42_OCMRLVL_OPUCL1 (*((volatile unsigned int*)(0x42490624UL))) +#define bM4_TMR42_OCMRLVL_OPZRL0 (*((volatile unsigned int*)(0x42490628UL))) +#define bM4_TMR42_OCMRLVL_OPZRL1 (*((volatile unsigned int*)(0x4249062CUL))) +#define bM4_TMR42_OCMRLVL_OPNPKL0 (*((volatile unsigned int*)(0x42490630UL))) +#define bM4_TMR42_OCMRLVL_OPNPKL1 (*((volatile unsigned int*)(0x42490634UL))) +#define bM4_TMR42_OCMRLVL_OPNZRL0 (*((volatile unsigned int*)(0x42490638UL))) +#define bM4_TMR42_OCMRLVL_OPNZRL1 (*((volatile unsigned int*)(0x4249063CUL))) +#define bM4_TMR42_OCMRLVL_EOPNDCL0 (*((volatile unsigned int*)(0x42490640UL))) +#define bM4_TMR42_OCMRLVL_EOPNDCL1 (*((volatile unsigned int*)(0x42490644UL))) +#define bM4_TMR42_OCMRLVL_EOPNUCL0 (*((volatile unsigned int*)(0x42490648UL))) +#define bM4_TMR42_OCMRLVL_EOPNUCL1 (*((volatile unsigned int*)(0x4249064CUL))) +#define bM4_TMR42_OCMRLVL_EOPDCL0 (*((volatile unsigned int*)(0x42490650UL))) +#define bM4_TMR42_OCMRLVL_EOPDCL1 (*((volatile unsigned int*)(0x42490654UL))) +#define bM4_TMR42_OCMRLVL_EOPPKL0 (*((volatile unsigned int*)(0x42490658UL))) +#define bM4_TMR42_OCMRLVL_EOPPKL1 (*((volatile unsigned int*)(0x4249065CUL))) +#define bM4_TMR42_OCMRLVL_EOPUCL0 (*((volatile unsigned int*)(0x42490660UL))) +#define bM4_TMR42_OCMRLVL_EOPUCL1 (*((volatile unsigned int*)(0x42490664UL))) +#define bM4_TMR42_OCMRLVL_EOPZRL0 (*((volatile unsigned int*)(0x42490668UL))) +#define bM4_TMR42_OCMRLVL_EOPZRL1 (*((volatile unsigned int*)(0x4249066CUL))) +#define bM4_TMR42_OCMRLVL_EOPNPKL0 (*((volatile unsigned int*)(0x42490670UL))) +#define bM4_TMR42_OCMRLVL_EOPNPKL1 (*((volatile unsigned int*)(0x42490674UL))) +#define bM4_TMR42_OCMRLVL_EOPNZRL0 (*((volatile unsigned int*)(0x42490678UL))) +#define bM4_TMR42_OCMRLVL_EOPNZRL1 (*((volatile unsigned int*)(0x4249067CUL))) +#define bM4_TMR42_OCMRHWH_OCFDCH (*((volatile unsigned int*)(0x42490680UL))) +#define bM4_TMR42_OCMRHWH_OCFPKH (*((volatile unsigned int*)(0x42490684UL))) +#define bM4_TMR42_OCMRHWH_OCFUCH (*((volatile unsigned int*)(0x42490688UL))) +#define bM4_TMR42_OCMRHWH_OCFZRH (*((volatile unsigned int*)(0x4249068CUL))) +#define bM4_TMR42_OCMRHWH_OPDCH0 (*((volatile unsigned int*)(0x42490690UL))) +#define bM4_TMR42_OCMRHWH_OPDCH1 (*((volatile unsigned int*)(0x42490694UL))) +#define bM4_TMR42_OCMRHWH_OPPKH0 (*((volatile unsigned int*)(0x42490698UL))) +#define bM4_TMR42_OCMRHWH_OPPKH1 (*((volatile unsigned int*)(0x4249069CUL))) +#define bM4_TMR42_OCMRHWH_OPUCH0 (*((volatile unsigned int*)(0x424906A0UL))) +#define bM4_TMR42_OCMRHWH_OPUCH1 (*((volatile unsigned int*)(0x424906A4UL))) +#define bM4_TMR42_OCMRHWH_OPZRH0 (*((volatile unsigned int*)(0x424906A8UL))) +#define bM4_TMR42_OCMRHWH_OPZRH1 (*((volatile unsigned int*)(0x424906ACUL))) +#define bM4_TMR42_OCMRHWH_OPNPKH0 (*((volatile unsigned int*)(0x424906B0UL))) +#define bM4_TMR42_OCMRHWH_OPNPKH1 (*((volatile unsigned int*)(0x424906B4UL))) +#define bM4_TMR42_OCMRHWH_OPNZRH0 (*((volatile unsigned int*)(0x424906B8UL))) +#define bM4_TMR42_OCMRHWH_OPNZRH1 (*((volatile unsigned int*)(0x424906BCUL))) +#define bM4_TMR42_OCMRLWL_OCFDCL (*((volatile unsigned int*)(0x42490700UL))) +#define bM4_TMR42_OCMRLWL_OCFPKL (*((volatile unsigned int*)(0x42490704UL))) +#define bM4_TMR42_OCMRLWL_OCFUCL (*((volatile unsigned int*)(0x42490708UL))) +#define bM4_TMR42_OCMRLWL_OCFZRL (*((volatile unsigned int*)(0x4249070CUL))) +#define bM4_TMR42_OCMRLWL_OPDCL0 (*((volatile unsigned int*)(0x42490710UL))) +#define bM4_TMR42_OCMRLWL_OPDCL1 (*((volatile unsigned int*)(0x42490714UL))) +#define bM4_TMR42_OCMRLWL_OPPKL0 (*((volatile unsigned int*)(0x42490718UL))) +#define bM4_TMR42_OCMRLWL_OPPKL1 (*((volatile unsigned int*)(0x4249071CUL))) +#define bM4_TMR42_OCMRLWL_OPUCL0 (*((volatile unsigned int*)(0x42490720UL))) +#define bM4_TMR42_OCMRLWL_OPUCL1 (*((volatile unsigned int*)(0x42490724UL))) +#define bM4_TMR42_OCMRLWL_OPZRL0 (*((volatile unsigned int*)(0x42490728UL))) +#define bM4_TMR42_OCMRLWL_OPZRL1 (*((volatile unsigned int*)(0x4249072CUL))) +#define bM4_TMR42_OCMRLWL_OPNPKL0 (*((volatile unsigned int*)(0x42490730UL))) +#define bM4_TMR42_OCMRLWL_OPNPKL1 (*((volatile unsigned int*)(0x42490734UL))) +#define bM4_TMR42_OCMRLWL_OPNZRL0 (*((volatile unsigned int*)(0x42490738UL))) +#define bM4_TMR42_OCMRLWL_OPNZRL1 (*((volatile unsigned int*)(0x4249073CUL))) +#define bM4_TMR42_OCMRLWL_EOPNDCL0 (*((volatile unsigned int*)(0x42490740UL))) +#define bM4_TMR42_OCMRLWL_EOPNDCL1 (*((volatile unsigned int*)(0x42490744UL))) +#define bM4_TMR42_OCMRLWL_EOPNUCL0 (*((volatile unsigned int*)(0x42490748UL))) +#define bM4_TMR42_OCMRLWL_EOPNUCL1 (*((volatile unsigned int*)(0x4249074CUL))) +#define bM4_TMR42_OCMRLWL_EOPDCL0 (*((volatile unsigned int*)(0x42490750UL))) +#define bM4_TMR42_OCMRLWL_EOPDCL1 (*((volatile unsigned int*)(0x42490754UL))) +#define bM4_TMR42_OCMRLWL_EOPPKL0 (*((volatile unsigned int*)(0x42490758UL))) +#define bM4_TMR42_OCMRLWL_EOPPKL1 (*((volatile unsigned int*)(0x4249075CUL))) +#define bM4_TMR42_OCMRLWL_EOPUCL0 (*((volatile unsigned int*)(0x42490760UL))) +#define bM4_TMR42_OCMRLWL_EOPUCL1 (*((volatile unsigned int*)(0x42490764UL))) +#define bM4_TMR42_OCMRLWL_EOPZRL0 (*((volatile unsigned int*)(0x42490768UL))) +#define bM4_TMR42_OCMRLWL_EOPZRL1 (*((volatile unsigned int*)(0x4249076CUL))) +#define bM4_TMR42_OCMRLWL_EOPNPKL0 (*((volatile unsigned int*)(0x42490770UL))) +#define bM4_TMR42_OCMRLWL_EOPNPKL1 (*((volatile unsigned int*)(0x42490774UL))) +#define bM4_TMR42_OCMRLWL_EOPNZRL0 (*((volatile unsigned int*)(0x42490778UL))) +#define bM4_TMR42_OCMRLWL_EOPNZRL1 (*((volatile unsigned int*)(0x4249077CUL))) +#define bM4_TMR42_CCSR_CKDIV0 (*((volatile unsigned int*)(0x42490900UL))) +#define bM4_TMR42_CCSR_CKDIV1 (*((volatile unsigned int*)(0x42490904UL))) +#define bM4_TMR42_CCSR_CKDIV2 (*((volatile unsigned int*)(0x42490908UL))) +#define bM4_TMR42_CCSR_CKDIV3 (*((volatile unsigned int*)(0x4249090CUL))) +#define bM4_TMR42_CCSR_CLEAR (*((volatile unsigned int*)(0x42490910UL))) +#define bM4_TMR42_CCSR_MODE (*((volatile unsigned int*)(0x42490914UL))) +#define bM4_TMR42_CCSR_STOP (*((volatile unsigned int*)(0x42490918UL))) +#define bM4_TMR42_CCSR_BUFEN (*((volatile unsigned int*)(0x4249091CUL))) +#define bM4_TMR42_CCSR_IRQPEN (*((volatile unsigned int*)(0x42490920UL))) +#define bM4_TMR42_CCSR_IRQPF (*((volatile unsigned int*)(0x42490924UL))) +#define bM4_TMR42_CCSR_IRQZEN (*((volatile unsigned int*)(0x42490934UL))) +#define bM4_TMR42_CCSR_IRQZF (*((volatile unsigned int*)(0x42490938UL))) +#define bM4_TMR42_CCSR_ECKEN (*((volatile unsigned int*)(0x4249093CUL))) +#define bM4_TMR42_CVPR_ZIM0 (*((volatile unsigned int*)(0x42490940UL))) +#define bM4_TMR42_CVPR_ZIM1 (*((volatile unsigned int*)(0x42490944UL))) +#define bM4_TMR42_CVPR_ZIM2 (*((volatile unsigned int*)(0x42490948UL))) +#define bM4_TMR42_CVPR_ZIM3 (*((volatile unsigned int*)(0x4249094CUL))) +#define bM4_TMR42_CVPR_PIM0 (*((volatile unsigned int*)(0x42490950UL))) +#define bM4_TMR42_CVPR_PIM1 (*((volatile unsigned int*)(0x42490954UL))) +#define bM4_TMR42_CVPR_PIM2 (*((volatile unsigned int*)(0x42490958UL))) +#define bM4_TMR42_CVPR_PIM3 (*((volatile unsigned int*)(0x4249095CUL))) +#define bM4_TMR42_CVPR_ZIC0 (*((volatile unsigned int*)(0x42490960UL))) +#define bM4_TMR42_CVPR_ZIC1 (*((volatile unsigned int*)(0x42490964UL))) +#define bM4_TMR42_CVPR_ZIC2 (*((volatile unsigned int*)(0x42490968UL))) +#define bM4_TMR42_CVPR_ZIC3 (*((volatile unsigned int*)(0x4249096CUL))) +#define bM4_TMR42_CVPR_PIC0 (*((volatile unsigned int*)(0x42490970UL))) +#define bM4_TMR42_CVPR_PIC1 (*((volatile unsigned int*)(0x42490974UL))) +#define bM4_TMR42_CVPR_PIC2 (*((volatile unsigned int*)(0x42490978UL))) +#define bM4_TMR42_CVPR_PIC3 (*((volatile unsigned int*)(0x4249097CUL))) +#define bM4_TMR42_POCRU_DIVCK0 (*((volatile unsigned int*)(0x42491300UL))) +#define bM4_TMR42_POCRU_DIVCK1 (*((volatile unsigned int*)(0x42491304UL))) +#define bM4_TMR42_POCRU_DIVCK2 (*((volatile unsigned int*)(0x42491308UL))) +#define bM4_TMR42_POCRU_DIVCK3 (*((volatile unsigned int*)(0x4249130CUL))) +#define bM4_TMR42_POCRU_PWMMD0 (*((volatile unsigned int*)(0x42491310UL))) +#define bM4_TMR42_POCRU_PWMMD1 (*((volatile unsigned int*)(0x42491314UL))) +#define bM4_TMR42_POCRU_LVLS0 (*((volatile unsigned int*)(0x42491318UL))) +#define bM4_TMR42_POCRU_LVLS1 (*((volatile unsigned int*)(0x4249131CUL))) +#define bM4_TMR42_POCRV_DIVCK0 (*((volatile unsigned int*)(0x42491380UL))) +#define bM4_TMR42_POCRV_DIVCK1 (*((volatile unsigned int*)(0x42491384UL))) +#define bM4_TMR42_POCRV_DIVCK2 (*((volatile unsigned int*)(0x42491388UL))) +#define bM4_TMR42_POCRV_DIVCK3 (*((volatile unsigned int*)(0x4249138CUL))) +#define bM4_TMR42_POCRV_PWMMD0 (*((volatile unsigned int*)(0x42491390UL))) +#define bM4_TMR42_POCRV_PWMMD1 (*((volatile unsigned int*)(0x42491394UL))) +#define bM4_TMR42_POCRV_LVLS0 (*((volatile unsigned int*)(0x42491398UL))) +#define bM4_TMR42_POCRV_LVLS1 (*((volatile unsigned int*)(0x4249139CUL))) +#define bM4_TMR42_POCRW_DIVCK0 (*((volatile unsigned int*)(0x42491400UL))) +#define bM4_TMR42_POCRW_DIVCK1 (*((volatile unsigned int*)(0x42491404UL))) +#define bM4_TMR42_POCRW_DIVCK2 (*((volatile unsigned int*)(0x42491408UL))) +#define bM4_TMR42_POCRW_DIVCK3 (*((volatile unsigned int*)(0x4249140CUL))) +#define bM4_TMR42_POCRW_PWMMD0 (*((volatile unsigned int*)(0x42491410UL))) +#define bM4_TMR42_POCRW_PWMMD1 (*((volatile unsigned int*)(0x42491414UL))) +#define bM4_TMR42_POCRW_LVLS0 (*((volatile unsigned int*)(0x42491418UL))) +#define bM4_TMR42_POCRW_LVLS1 (*((volatile unsigned int*)(0x4249141CUL))) +#define bM4_TMR42_RCSR_RTIDU (*((volatile unsigned int*)(0x42491480UL))) +#define bM4_TMR42_RCSR_RTIDV (*((volatile unsigned int*)(0x42491484UL))) +#define bM4_TMR42_RCSR_RTIDW (*((volatile unsigned int*)(0x42491488UL))) +#define bM4_TMR42_RCSR_RTIFU (*((volatile unsigned int*)(0x42491490UL))) +#define bM4_TMR42_RCSR_RTICU (*((volatile unsigned int*)(0x42491494UL))) +#define bM4_TMR42_RCSR_RTEU (*((volatile unsigned int*)(0x42491498UL))) +#define bM4_TMR42_RCSR_RTSU (*((volatile unsigned int*)(0x4249149CUL))) +#define bM4_TMR42_RCSR_RTIFV (*((volatile unsigned int*)(0x424914A0UL))) +#define bM4_TMR42_RCSR_RTICV (*((volatile unsigned int*)(0x424914A4UL))) +#define bM4_TMR42_RCSR_RTEV (*((volatile unsigned int*)(0x424914A8UL))) +#define bM4_TMR42_RCSR_RTSV (*((volatile unsigned int*)(0x424914ACUL))) +#define bM4_TMR42_RCSR_RTIFW (*((volatile unsigned int*)(0x424914B0UL))) +#define bM4_TMR42_RCSR_RTICW (*((volatile unsigned int*)(0x424914B4UL))) +#define bM4_TMR42_RCSR_RTEW (*((volatile unsigned int*)(0x424914B8UL))) +#define bM4_TMR42_RCSR_RTSW (*((volatile unsigned int*)(0x424914BCUL))) +#define bM4_TMR42_SCSRUH_BUFEN0 (*((volatile unsigned int*)(0x42491900UL))) +#define bM4_TMR42_SCSRUH_BUFEN1 (*((volatile unsigned int*)(0x42491904UL))) +#define bM4_TMR42_SCSRUH_EVTOS0 (*((volatile unsigned int*)(0x42491908UL))) +#define bM4_TMR42_SCSRUH_EVTOS1 (*((volatile unsigned int*)(0x4249190CUL))) +#define bM4_TMR42_SCSRUH_EVTOS2 (*((volatile unsigned int*)(0x42491910UL))) +#define bM4_TMR42_SCSRUH_LMC (*((volatile unsigned int*)(0x42491914UL))) +#define bM4_TMR42_SCSRUH_EVTMS (*((volatile unsigned int*)(0x42491920UL))) +#define bM4_TMR42_SCSRUH_EVTDS (*((volatile unsigned int*)(0x42491924UL))) +#define bM4_TMR42_SCSRUH_DEN (*((volatile unsigned int*)(0x42491930UL))) +#define bM4_TMR42_SCSRUH_PEN (*((volatile unsigned int*)(0x42491934UL))) +#define bM4_TMR42_SCSRUH_UEN (*((volatile unsigned int*)(0x42491938UL))) +#define bM4_TMR42_SCSRUH_ZEN (*((volatile unsigned int*)(0x4249193CUL))) +#define bM4_TMR42_SCMRUH_AMC0 (*((volatile unsigned int*)(0x42491940UL))) +#define bM4_TMR42_SCMRUH_AMC1 (*((volatile unsigned int*)(0x42491944UL))) +#define bM4_TMR42_SCMRUH_AMC2 (*((volatile unsigned int*)(0x42491948UL))) +#define bM4_TMR42_SCMRUH_AMC3 (*((volatile unsigned int*)(0x4249194CUL))) +#define bM4_TMR42_SCMRUH_MZCE (*((volatile unsigned int*)(0x42491958UL))) +#define bM4_TMR42_SCMRUH_MPCE (*((volatile unsigned int*)(0x4249195CUL))) +#define bM4_TMR42_SCSRUL_BUFEN0 (*((volatile unsigned int*)(0x42491980UL))) +#define bM4_TMR42_SCSRUL_BUFEN1 (*((volatile unsigned int*)(0x42491984UL))) +#define bM4_TMR42_SCSRUL_EVTOS0 (*((volatile unsigned int*)(0x42491988UL))) +#define bM4_TMR42_SCSRUL_EVTOS1 (*((volatile unsigned int*)(0x4249198CUL))) +#define bM4_TMR42_SCSRUL_EVTOS2 (*((volatile unsigned int*)(0x42491990UL))) +#define bM4_TMR42_SCSRUL_LMC (*((volatile unsigned int*)(0x42491994UL))) +#define bM4_TMR42_SCSRUL_EVTMS (*((volatile unsigned int*)(0x424919A0UL))) +#define bM4_TMR42_SCSRUL_EVTDS (*((volatile unsigned int*)(0x424919A4UL))) +#define bM4_TMR42_SCSRUL_DEN (*((volatile unsigned int*)(0x424919B0UL))) +#define bM4_TMR42_SCSRUL_PEN (*((volatile unsigned int*)(0x424919B4UL))) +#define bM4_TMR42_SCSRUL_UEN (*((volatile unsigned int*)(0x424919B8UL))) +#define bM4_TMR42_SCSRUL_ZEN (*((volatile unsigned int*)(0x424919BCUL))) +#define bM4_TMR42_SCMRUL_AMC0 (*((volatile unsigned int*)(0x424919C0UL))) +#define bM4_TMR42_SCMRUL_AMC1 (*((volatile unsigned int*)(0x424919C4UL))) +#define bM4_TMR42_SCMRUL_AMC2 (*((volatile unsigned int*)(0x424919C8UL))) +#define bM4_TMR42_SCMRUL_AMC3 (*((volatile unsigned int*)(0x424919CCUL))) +#define bM4_TMR42_SCMRUL_MZCE (*((volatile unsigned int*)(0x424919D8UL))) +#define bM4_TMR42_SCMRUL_MPCE (*((volatile unsigned int*)(0x424919DCUL))) +#define bM4_TMR42_SCSRVH_BUFEN0 (*((volatile unsigned int*)(0x42491A00UL))) +#define bM4_TMR42_SCSRVH_BUFEN1 (*((volatile unsigned int*)(0x42491A04UL))) +#define bM4_TMR42_SCSRVH_EVTOS0 (*((volatile unsigned int*)(0x42491A08UL))) +#define bM4_TMR42_SCSRVH_EVTOS1 (*((volatile unsigned int*)(0x42491A0CUL))) +#define bM4_TMR42_SCSRVH_EVTOS2 (*((volatile unsigned int*)(0x42491A10UL))) +#define bM4_TMR42_SCSRVH_LMC (*((volatile unsigned int*)(0x42491A14UL))) +#define bM4_TMR42_SCSRVH_EVTMS (*((volatile unsigned int*)(0x42491A20UL))) +#define bM4_TMR42_SCSRVH_EVTDS (*((volatile unsigned int*)(0x42491A24UL))) +#define bM4_TMR42_SCSRVH_DEN (*((volatile unsigned int*)(0x42491A30UL))) +#define bM4_TMR42_SCSRVH_PEN (*((volatile unsigned int*)(0x42491A34UL))) +#define bM4_TMR42_SCSRVH_UEN (*((volatile unsigned int*)(0x42491A38UL))) +#define bM4_TMR42_SCSRVH_ZEN (*((volatile unsigned int*)(0x42491A3CUL))) +#define bM4_TMR42_SCMRVH_AMC0 (*((volatile unsigned int*)(0x42491A40UL))) +#define bM4_TMR42_SCMRVH_AMC1 (*((volatile unsigned int*)(0x42491A44UL))) +#define bM4_TMR42_SCMRVH_AMC2 (*((volatile unsigned int*)(0x42491A48UL))) +#define bM4_TMR42_SCMRVH_AMC3 (*((volatile unsigned int*)(0x42491A4CUL))) +#define bM4_TMR42_SCMRVH_MZCE (*((volatile unsigned int*)(0x42491A58UL))) +#define bM4_TMR42_SCMRVH_MPCE (*((volatile unsigned int*)(0x42491A5CUL))) +#define bM4_TMR42_SCSRVL_BUFEN0 (*((volatile unsigned int*)(0x42491A80UL))) +#define bM4_TMR42_SCSRVL_BUFEN1 (*((volatile unsigned int*)(0x42491A84UL))) +#define bM4_TMR42_SCSRVL_EVTOS0 (*((volatile unsigned int*)(0x42491A88UL))) +#define bM4_TMR42_SCSRVL_EVTOS1 (*((volatile unsigned int*)(0x42491A8CUL))) +#define bM4_TMR42_SCSRVL_EVTOS2 (*((volatile unsigned int*)(0x42491A90UL))) +#define bM4_TMR42_SCSRVL_LMC (*((volatile unsigned int*)(0x42491A94UL))) +#define bM4_TMR42_SCSRVL_EVTMS (*((volatile unsigned int*)(0x42491AA0UL))) +#define bM4_TMR42_SCSRVL_EVTDS (*((volatile unsigned int*)(0x42491AA4UL))) +#define bM4_TMR42_SCSRVL_DEN (*((volatile unsigned int*)(0x42491AB0UL))) +#define bM4_TMR42_SCSRVL_PEN (*((volatile unsigned int*)(0x42491AB4UL))) +#define bM4_TMR42_SCSRVL_UEN (*((volatile unsigned int*)(0x42491AB8UL))) +#define bM4_TMR42_SCSRVL_ZEN (*((volatile unsigned int*)(0x42491ABCUL))) +#define bM4_TMR42_SCMRVL_AMC0 (*((volatile unsigned int*)(0x42491AC0UL))) +#define bM4_TMR42_SCMRVL_AMC1 (*((volatile unsigned int*)(0x42491AC4UL))) +#define bM4_TMR42_SCMRVL_AMC2 (*((volatile unsigned int*)(0x42491AC8UL))) +#define bM4_TMR42_SCMRVL_AMC3 (*((volatile unsigned int*)(0x42491ACCUL))) +#define bM4_TMR42_SCMRVL_MZCE (*((volatile unsigned int*)(0x42491AD8UL))) +#define bM4_TMR42_SCMRVL_MPCE (*((volatile unsigned int*)(0x42491ADCUL))) +#define bM4_TMR42_SCSRWH_BUFEN0 (*((volatile unsigned int*)(0x42491B00UL))) +#define bM4_TMR42_SCSRWH_BUFEN1 (*((volatile unsigned int*)(0x42491B04UL))) +#define bM4_TMR42_SCSRWH_EVTOS0 (*((volatile unsigned int*)(0x42491B08UL))) +#define bM4_TMR42_SCSRWH_EVTOS1 (*((volatile unsigned int*)(0x42491B0CUL))) +#define bM4_TMR42_SCSRWH_EVTOS2 (*((volatile unsigned int*)(0x42491B10UL))) +#define bM4_TMR42_SCSRWH_LMC (*((volatile unsigned int*)(0x42491B14UL))) +#define bM4_TMR42_SCSRWH_EVTMS (*((volatile unsigned int*)(0x42491B20UL))) +#define bM4_TMR42_SCSRWH_EVTDS (*((volatile unsigned int*)(0x42491B24UL))) +#define bM4_TMR42_SCSRWH_DEN (*((volatile unsigned int*)(0x42491B30UL))) +#define bM4_TMR42_SCSRWH_PEN (*((volatile unsigned int*)(0x42491B34UL))) +#define bM4_TMR42_SCSRWH_UEN (*((volatile unsigned int*)(0x42491B38UL))) +#define bM4_TMR42_SCSRWH_ZEN (*((volatile unsigned int*)(0x42491B3CUL))) +#define bM4_TMR42_SCMRWH_AMC0 (*((volatile unsigned int*)(0x42491B40UL))) +#define bM4_TMR42_SCMRWH_AMC1 (*((volatile unsigned int*)(0x42491B44UL))) +#define bM4_TMR42_SCMRWH_AMC2 (*((volatile unsigned int*)(0x42491B48UL))) +#define bM4_TMR42_SCMRWH_AMC3 (*((volatile unsigned int*)(0x42491B4CUL))) +#define bM4_TMR42_SCMRWH_MZCE (*((volatile unsigned int*)(0x42491B58UL))) +#define bM4_TMR42_SCMRWH_MPCE (*((volatile unsigned int*)(0x42491B5CUL))) +#define bM4_TMR42_SCSRWL_BUFEN0 (*((volatile unsigned int*)(0x42491B80UL))) +#define bM4_TMR42_SCSRWL_BUFEN1 (*((volatile unsigned int*)(0x42491B84UL))) +#define bM4_TMR42_SCSRWL_EVTOS0 (*((volatile unsigned int*)(0x42491B88UL))) +#define bM4_TMR42_SCSRWL_EVTOS1 (*((volatile unsigned int*)(0x42491B8CUL))) +#define bM4_TMR42_SCSRWL_EVTOS2 (*((volatile unsigned int*)(0x42491B90UL))) +#define bM4_TMR42_SCSRWL_LMC (*((volatile unsigned int*)(0x42491B94UL))) +#define bM4_TMR42_SCSRWL_EVTMS (*((volatile unsigned int*)(0x42491BA0UL))) +#define bM4_TMR42_SCSRWL_EVTDS (*((volatile unsigned int*)(0x42491BA4UL))) +#define bM4_TMR42_SCSRWL_DEN (*((volatile unsigned int*)(0x42491BB0UL))) +#define bM4_TMR42_SCSRWL_PEN (*((volatile unsigned int*)(0x42491BB4UL))) +#define bM4_TMR42_SCSRWL_UEN (*((volatile unsigned int*)(0x42491BB8UL))) +#define bM4_TMR42_SCSRWL_ZEN (*((volatile unsigned int*)(0x42491BBCUL))) +#define bM4_TMR42_SCMRWL_AMC0 (*((volatile unsigned int*)(0x42491BC0UL))) +#define bM4_TMR42_SCMRWL_AMC1 (*((volatile unsigned int*)(0x42491BC4UL))) +#define bM4_TMR42_SCMRWL_AMC2 (*((volatile unsigned int*)(0x42491BC8UL))) +#define bM4_TMR42_SCMRWL_AMC3 (*((volatile unsigned int*)(0x42491BCCUL))) +#define bM4_TMR42_SCMRWL_MZCE (*((volatile unsigned int*)(0x42491BD8UL))) +#define bM4_TMR42_SCMRWL_MPCE (*((volatile unsigned int*)(0x42491BDCUL))) +#define bM4_TMR42_ECSR_HOLD (*((volatile unsigned int*)(0x42491E1CUL))) +#define bM4_TMR43_OCSRU_OCEH (*((volatile unsigned int*)(0x42498300UL))) +#define bM4_TMR43_OCSRU_OCEL (*((volatile unsigned int*)(0x42498304UL))) +#define bM4_TMR43_OCSRU_OCPH (*((volatile unsigned int*)(0x42498308UL))) +#define bM4_TMR43_OCSRU_OCPL (*((volatile unsigned int*)(0x4249830CUL))) +#define bM4_TMR43_OCSRU_OCIEH (*((volatile unsigned int*)(0x42498310UL))) +#define bM4_TMR43_OCSRU_OCIEL (*((volatile unsigned int*)(0x42498314UL))) +#define bM4_TMR43_OCSRU_OCFH (*((volatile unsigned int*)(0x42498318UL))) +#define bM4_TMR43_OCSRU_OCFL (*((volatile unsigned int*)(0x4249831CUL))) +#define bM4_TMR43_OCERU_CHBUFEN0 (*((volatile unsigned int*)(0x42498340UL))) +#define bM4_TMR43_OCERU_CHBUFEN1 (*((volatile unsigned int*)(0x42498344UL))) +#define bM4_TMR43_OCERU_CLBUFEN0 (*((volatile unsigned int*)(0x42498348UL))) +#define bM4_TMR43_OCERU_CLBUFEN1 (*((volatile unsigned int*)(0x4249834CUL))) +#define bM4_TMR43_OCERU_MHBUFEN0 (*((volatile unsigned int*)(0x42498350UL))) +#define bM4_TMR43_OCERU_MHBUFEN1 (*((volatile unsigned int*)(0x42498354UL))) +#define bM4_TMR43_OCERU_MLBUFEN0 (*((volatile unsigned int*)(0x42498358UL))) +#define bM4_TMR43_OCERU_MLBUFEN1 (*((volatile unsigned int*)(0x4249835CUL))) +#define bM4_TMR43_OCERU_LMCH (*((volatile unsigned int*)(0x42498360UL))) +#define bM4_TMR43_OCERU_LMCL (*((volatile unsigned int*)(0x42498364UL))) +#define bM4_TMR43_OCERU_LMMH (*((volatile unsigned int*)(0x42498368UL))) +#define bM4_TMR43_OCERU_LMML (*((volatile unsigned int*)(0x4249836CUL))) +#define bM4_TMR43_OCERU_MCECH (*((volatile unsigned int*)(0x42498370UL))) +#define bM4_TMR43_OCERU_MCECL (*((volatile unsigned int*)(0x42498374UL))) +#define bM4_TMR43_OCSRV_OCEH (*((volatile unsigned int*)(0x42498380UL))) +#define bM4_TMR43_OCSRV_OCEL (*((volatile unsigned int*)(0x42498384UL))) +#define bM4_TMR43_OCSRV_OCPH (*((volatile unsigned int*)(0x42498388UL))) +#define bM4_TMR43_OCSRV_OCPL (*((volatile unsigned int*)(0x4249838CUL))) +#define bM4_TMR43_OCSRV_OCIEH (*((volatile unsigned int*)(0x42498390UL))) +#define bM4_TMR43_OCSRV_OCIEL (*((volatile unsigned int*)(0x42498394UL))) +#define bM4_TMR43_OCSRV_OCFH (*((volatile unsigned int*)(0x42498398UL))) +#define bM4_TMR43_OCSRV_OCFL (*((volatile unsigned int*)(0x4249839CUL))) +#define bM4_TMR43_OCERV_CHBUFEN0 (*((volatile unsigned int*)(0x424983C0UL))) +#define bM4_TMR43_OCERV_CHBUFEN1 (*((volatile unsigned int*)(0x424983C4UL))) +#define bM4_TMR43_OCERV_CLBUFEN0 (*((volatile unsigned int*)(0x424983C8UL))) +#define bM4_TMR43_OCERV_CLBUFEN1 (*((volatile unsigned int*)(0x424983CCUL))) +#define bM4_TMR43_OCERV_MHBUFEN0 (*((volatile unsigned int*)(0x424983D0UL))) +#define bM4_TMR43_OCERV_MHBUFEN1 (*((volatile unsigned int*)(0x424983D4UL))) +#define bM4_TMR43_OCERV_MLBUFEN0 (*((volatile unsigned int*)(0x424983D8UL))) +#define bM4_TMR43_OCERV_MLBUFEN1 (*((volatile unsigned int*)(0x424983DCUL))) +#define bM4_TMR43_OCERV_LMCH (*((volatile unsigned int*)(0x424983E0UL))) +#define bM4_TMR43_OCERV_LMCL (*((volatile unsigned int*)(0x424983E4UL))) +#define bM4_TMR43_OCERV_LMMH (*((volatile unsigned int*)(0x424983E8UL))) +#define bM4_TMR43_OCERV_LMML (*((volatile unsigned int*)(0x424983ECUL))) +#define bM4_TMR43_OCERV_MCECH (*((volatile unsigned int*)(0x424983F0UL))) +#define bM4_TMR43_OCERV_MCECL (*((volatile unsigned int*)(0x424983F4UL))) +#define bM4_TMR43_OCSRW_OCEH (*((volatile unsigned int*)(0x42498400UL))) +#define bM4_TMR43_OCSRW_OCEL (*((volatile unsigned int*)(0x42498404UL))) +#define bM4_TMR43_OCSRW_OCPH (*((volatile unsigned int*)(0x42498408UL))) +#define bM4_TMR43_OCSRW_OCPL (*((volatile unsigned int*)(0x4249840CUL))) +#define bM4_TMR43_OCSRW_OCIEH (*((volatile unsigned int*)(0x42498410UL))) +#define bM4_TMR43_OCSRW_OCIEL (*((volatile unsigned int*)(0x42498414UL))) +#define bM4_TMR43_OCSRW_OCFH (*((volatile unsigned int*)(0x42498418UL))) +#define bM4_TMR43_OCSRW_OCFL (*((volatile unsigned int*)(0x4249841CUL))) +#define bM4_TMR43_OCERW_CHBUFEN0 (*((volatile unsigned int*)(0x42498440UL))) +#define bM4_TMR43_OCERW_CHBUFEN1 (*((volatile unsigned int*)(0x42498444UL))) +#define bM4_TMR43_OCERW_CLBUFEN0 (*((volatile unsigned int*)(0x42498448UL))) +#define bM4_TMR43_OCERW_CLBUFEN1 (*((volatile unsigned int*)(0x4249844CUL))) +#define bM4_TMR43_OCERW_MHBUFEN0 (*((volatile unsigned int*)(0x42498450UL))) +#define bM4_TMR43_OCERW_MHBUFEN1 (*((volatile unsigned int*)(0x42498454UL))) +#define bM4_TMR43_OCERW_MLBUFEN0 (*((volatile unsigned int*)(0x42498458UL))) +#define bM4_TMR43_OCERW_MLBUFEN1 (*((volatile unsigned int*)(0x4249845CUL))) +#define bM4_TMR43_OCERW_LMCH (*((volatile unsigned int*)(0x42498460UL))) +#define bM4_TMR43_OCERW_LMCL (*((volatile unsigned int*)(0x42498464UL))) +#define bM4_TMR43_OCERW_LMMH (*((volatile unsigned int*)(0x42498468UL))) +#define bM4_TMR43_OCERW_LMML (*((volatile unsigned int*)(0x4249846CUL))) +#define bM4_TMR43_OCERW_MCECH (*((volatile unsigned int*)(0x42498470UL))) +#define bM4_TMR43_OCERW_MCECL (*((volatile unsigned int*)(0x42498474UL))) +#define bM4_TMR43_OCMRHUH_OCFDCH (*((volatile unsigned int*)(0x42498480UL))) +#define bM4_TMR43_OCMRHUH_OCFPKH (*((volatile unsigned int*)(0x42498484UL))) +#define bM4_TMR43_OCMRHUH_OCFUCH (*((volatile unsigned int*)(0x42498488UL))) +#define bM4_TMR43_OCMRHUH_OCFZRH (*((volatile unsigned int*)(0x4249848CUL))) +#define bM4_TMR43_OCMRHUH_OPDCH0 (*((volatile unsigned int*)(0x42498490UL))) +#define bM4_TMR43_OCMRHUH_OPDCH1 (*((volatile unsigned int*)(0x42498494UL))) +#define bM4_TMR43_OCMRHUH_OPPKH0 (*((volatile unsigned int*)(0x42498498UL))) +#define bM4_TMR43_OCMRHUH_OPPKH1 (*((volatile unsigned int*)(0x4249849CUL))) +#define bM4_TMR43_OCMRHUH_OPUCH0 (*((volatile unsigned int*)(0x424984A0UL))) +#define bM4_TMR43_OCMRHUH_OPUCH1 (*((volatile unsigned int*)(0x424984A4UL))) +#define bM4_TMR43_OCMRHUH_OPZRH0 (*((volatile unsigned int*)(0x424984A8UL))) +#define bM4_TMR43_OCMRHUH_OPZRH1 (*((volatile unsigned int*)(0x424984ACUL))) +#define bM4_TMR43_OCMRHUH_OPNPKH0 (*((volatile unsigned int*)(0x424984B0UL))) +#define bM4_TMR43_OCMRHUH_OPNPKH1 (*((volatile unsigned int*)(0x424984B4UL))) +#define bM4_TMR43_OCMRHUH_OPNZRH0 (*((volatile unsigned int*)(0x424984B8UL))) +#define bM4_TMR43_OCMRHUH_OPNZRH1 (*((volatile unsigned int*)(0x424984BCUL))) +#define bM4_TMR43_OCMRLUL_OCFDCL (*((volatile unsigned int*)(0x42498500UL))) +#define bM4_TMR43_OCMRLUL_OCFPKL (*((volatile unsigned int*)(0x42498504UL))) +#define bM4_TMR43_OCMRLUL_OCFUCL (*((volatile unsigned int*)(0x42498508UL))) +#define bM4_TMR43_OCMRLUL_OCFZRL (*((volatile unsigned int*)(0x4249850CUL))) +#define bM4_TMR43_OCMRLUL_OPDCL0 (*((volatile unsigned int*)(0x42498510UL))) +#define bM4_TMR43_OCMRLUL_OPDCL1 (*((volatile unsigned int*)(0x42498514UL))) +#define bM4_TMR43_OCMRLUL_OPPKL0 (*((volatile unsigned int*)(0x42498518UL))) +#define bM4_TMR43_OCMRLUL_OPPKL1 (*((volatile unsigned int*)(0x4249851CUL))) +#define bM4_TMR43_OCMRLUL_OPUCL0 (*((volatile unsigned int*)(0x42498520UL))) +#define bM4_TMR43_OCMRLUL_OPUCL1 (*((volatile unsigned int*)(0x42498524UL))) +#define bM4_TMR43_OCMRLUL_OPZRL0 (*((volatile unsigned int*)(0x42498528UL))) +#define bM4_TMR43_OCMRLUL_OPZRL1 (*((volatile unsigned int*)(0x4249852CUL))) +#define bM4_TMR43_OCMRLUL_OPNPKL0 (*((volatile unsigned int*)(0x42498530UL))) +#define bM4_TMR43_OCMRLUL_OPNPKL1 (*((volatile unsigned int*)(0x42498534UL))) +#define bM4_TMR43_OCMRLUL_OPNZRL0 (*((volatile unsigned int*)(0x42498538UL))) +#define bM4_TMR43_OCMRLUL_OPNZRL1 (*((volatile unsigned int*)(0x4249853CUL))) +#define bM4_TMR43_OCMRLUL_EOPNDCL0 (*((volatile unsigned int*)(0x42498540UL))) +#define bM4_TMR43_OCMRLUL_EOPNDCL1 (*((volatile unsigned int*)(0x42498544UL))) +#define bM4_TMR43_OCMRLUL_EOPNUCL0 (*((volatile unsigned int*)(0x42498548UL))) +#define bM4_TMR43_OCMRLUL_EOPNUCL1 (*((volatile unsigned int*)(0x4249854CUL))) +#define bM4_TMR43_OCMRLUL_EOPDCL0 (*((volatile unsigned int*)(0x42498550UL))) +#define bM4_TMR43_OCMRLUL_EOPDCL1 (*((volatile unsigned int*)(0x42498554UL))) +#define bM4_TMR43_OCMRLUL_EOPPKL0 (*((volatile unsigned int*)(0x42498558UL))) +#define bM4_TMR43_OCMRLUL_EOPPKL1 (*((volatile unsigned int*)(0x4249855CUL))) +#define bM4_TMR43_OCMRLUL_EOPUCL0 (*((volatile unsigned int*)(0x42498560UL))) +#define bM4_TMR43_OCMRLUL_EOPUCL1 (*((volatile unsigned int*)(0x42498564UL))) +#define bM4_TMR43_OCMRLUL_EOPZRL0 (*((volatile unsigned int*)(0x42498568UL))) +#define bM4_TMR43_OCMRLUL_EOPZRL1 (*((volatile unsigned int*)(0x4249856CUL))) +#define bM4_TMR43_OCMRLUL_EOPNPKL0 (*((volatile unsigned int*)(0x42498570UL))) +#define bM4_TMR43_OCMRLUL_EOPNPKL1 (*((volatile unsigned int*)(0x42498574UL))) +#define bM4_TMR43_OCMRLUL_EOPNZRL0 (*((volatile unsigned int*)(0x42498578UL))) +#define bM4_TMR43_OCMRLUL_EOPNZRL1 (*((volatile unsigned int*)(0x4249857CUL))) +#define bM4_TMR43_OCMRHVH_OCFDCH (*((volatile unsigned int*)(0x42498580UL))) +#define bM4_TMR43_OCMRHVH_OCFPKH (*((volatile unsigned int*)(0x42498584UL))) +#define bM4_TMR43_OCMRHVH_OCFUCH (*((volatile unsigned int*)(0x42498588UL))) +#define bM4_TMR43_OCMRHVH_OCFZRH (*((volatile unsigned int*)(0x4249858CUL))) +#define bM4_TMR43_OCMRHVH_OPDCH0 (*((volatile unsigned int*)(0x42498590UL))) +#define bM4_TMR43_OCMRHVH_OPDCH1 (*((volatile unsigned int*)(0x42498594UL))) +#define bM4_TMR43_OCMRHVH_OPPKH0 (*((volatile unsigned int*)(0x42498598UL))) +#define bM4_TMR43_OCMRHVH_OPPKH1 (*((volatile unsigned int*)(0x4249859CUL))) +#define bM4_TMR43_OCMRHVH_OPUCH0 (*((volatile unsigned int*)(0x424985A0UL))) +#define bM4_TMR43_OCMRHVH_OPUCH1 (*((volatile unsigned int*)(0x424985A4UL))) +#define bM4_TMR43_OCMRHVH_OPZRH0 (*((volatile unsigned int*)(0x424985A8UL))) +#define bM4_TMR43_OCMRHVH_OPZRH1 (*((volatile unsigned int*)(0x424985ACUL))) +#define bM4_TMR43_OCMRHVH_OPNPKH0 (*((volatile unsigned int*)(0x424985B0UL))) +#define bM4_TMR43_OCMRHVH_OPNPKH1 (*((volatile unsigned int*)(0x424985B4UL))) +#define bM4_TMR43_OCMRHVH_OPNZRH0 (*((volatile unsigned int*)(0x424985B8UL))) +#define bM4_TMR43_OCMRHVH_OPNZRH1 (*((volatile unsigned int*)(0x424985BCUL))) +#define bM4_TMR43_OCMRLVL_OCFDCL (*((volatile unsigned int*)(0x42498600UL))) +#define bM4_TMR43_OCMRLVL_OCFPKL (*((volatile unsigned int*)(0x42498604UL))) +#define bM4_TMR43_OCMRLVL_OCFUCL (*((volatile unsigned int*)(0x42498608UL))) +#define bM4_TMR43_OCMRLVL_OCFZRL (*((volatile unsigned int*)(0x4249860CUL))) +#define bM4_TMR43_OCMRLVL_OPDCL0 (*((volatile unsigned int*)(0x42498610UL))) +#define bM4_TMR43_OCMRLVL_OPDCL1 (*((volatile unsigned int*)(0x42498614UL))) +#define bM4_TMR43_OCMRLVL_OPPKL0 (*((volatile unsigned int*)(0x42498618UL))) +#define bM4_TMR43_OCMRLVL_OPPKL1 (*((volatile unsigned int*)(0x4249861CUL))) +#define bM4_TMR43_OCMRLVL_OPUCL0 (*((volatile unsigned int*)(0x42498620UL))) +#define bM4_TMR43_OCMRLVL_OPUCL1 (*((volatile unsigned int*)(0x42498624UL))) +#define bM4_TMR43_OCMRLVL_OPZRL0 (*((volatile unsigned int*)(0x42498628UL))) +#define bM4_TMR43_OCMRLVL_OPZRL1 (*((volatile unsigned int*)(0x4249862CUL))) +#define bM4_TMR43_OCMRLVL_OPNPKL0 (*((volatile unsigned int*)(0x42498630UL))) +#define bM4_TMR43_OCMRLVL_OPNPKL1 (*((volatile unsigned int*)(0x42498634UL))) +#define bM4_TMR43_OCMRLVL_OPNZRL0 (*((volatile unsigned int*)(0x42498638UL))) +#define bM4_TMR43_OCMRLVL_OPNZRL1 (*((volatile unsigned int*)(0x4249863CUL))) +#define bM4_TMR43_OCMRLVL_EOPNDCL0 (*((volatile unsigned int*)(0x42498640UL))) +#define bM4_TMR43_OCMRLVL_EOPNDCL1 (*((volatile unsigned int*)(0x42498644UL))) +#define bM4_TMR43_OCMRLVL_EOPNUCL0 (*((volatile unsigned int*)(0x42498648UL))) +#define bM4_TMR43_OCMRLVL_EOPNUCL1 (*((volatile unsigned int*)(0x4249864CUL))) +#define bM4_TMR43_OCMRLVL_EOPDCL0 (*((volatile unsigned int*)(0x42498650UL))) +#define bM4_TMR43_OCMRLVL_EOPDCL1 (*((volatile unsigned int*)(0x42498654UL))) +#define bM4_TMR43_OCMRLVL_EOPPKL0 (*((volatile unsigned int*)(0x42498658UL))) +#define bM4_TMR43_OCMRLVL_EOPPKL1 (*((volatile unsigned int*)(0x4249865CUL))) +#define bM4_TMR43_OCMRLVL_EOPUCL0 (*((volatile unsigned int*)(0x42498660UL))) +#define bM4_TMR43_OCMRLVL_EOPUCL1 (*((volatile unsigned int*)(0x42498664UL))) +#define bM4_TMR43_OCMRLVL_EOPZRL0 (*((volatile unsigned int*)(0x42498668UL))) +#define bM4_TMR43_OCMRLVL_EOPZRL1 (*((volatile unsigned int*)(0x4249866CUL))) +#define bM4_TMR43_OCMRLVL_EOPNPKL0 (*((volatile unsigned int*)(0x42498670UL))) +#define bM4_TMR43_OCMRLVL_EOPNPKL1 (*((volatile unsigned int*)(0x42498674UL))) +#define bM4_TMR43_OCMRLVL_EOPNZRL0 (*((volatile unsigned int*)(0x42498678UL))) +#define bM4_TMR43_OCMRLVL_EOPNZRL1 (*((volatile unsigned int*)(0x4249867CUL))) +#define bM4_TMR43_OCMRHWH_OCFDCH (*((volatile unsigned int*)(0x42498680UL))) +#define bM4_TMR43_OCMRHWH_OCFPKH (*((volatile unsigned int*)(0x42498684UL))) +#define bM4_TMR43_OCMRHWH_OCFUCH (*((volatile unsigned int*)(0x42498688UL))) +#define bM4_TMR43_OCMRHWH_OCFZRH (*((volatile unsigned int*)(0x4249868CUL))) +#define bM4_TMR43_OCMRHWH_OPDCH0 (*((volatile unsigned int*)(0x42498690UL))) +#define bM4_TMR43_OCMRHWH_OPDCH1 (*((volatile unsigned int*)(0x42498694UL))) +#define bM4_TMR43_OCMRHWH_OPPKH0 (*((volatile unsigned int*)(0x42498698UL))) +#define bM4_TMR43_OCMRHWH_OPPKH1 (*((volatile unsigned int*)(0x4249869CUL))) +#define bM4_TMR43_OCMRHWH_OPUCH0 (*((volatile unsigned int*)(0x424986A0UL))) +#define bM4_TMR43_OCMRHWH_OPUCH1 (*((volatile unsigned int*)(0x424986A4UL))) +#define bM4_TMR43_OCMRHWH_OPZRH0 (*((volatile unsigned int*)(0x424986A8UL))) +#define bM4_TMR43_OCMRHWH_OPZRH1 (*((volatile unsigned int*)(0x424986ACUL))) +#define bM4_TMR43_OCMRHWH_OPNPKH0 (*((volatile unsigned int*)(0x424986B0UL))) +#define bM4_TMR43_OCMRHWH_OPNPKH1 (*((volatile unsigned int*)(0x424986B4UL))) +#define bM4_TMR43_OCMRHWH_OPNZRH0 (*((volatile unsigned int*)(0x424986B8UL))) +#define bM4_TMR43_OCMRHWH_OPNZRH1 (*((volatile unsigned int*)(0x424986BCUL))) +#define bM4_TMR43_OCMRLWL_OCFDCL (*((volatile unsigned int*)(0x42498700UL))) +#define bM4_TMR43_OCMRLWL_OCFPKL (*((volatile unsigned int*)(0x42498704UL))) +#define bM4_TMR43_OCMRLWL_OCFUCL (*((volatile unsigned int*)(0x42498708UL))) +#define bM4_TMR43_OCMRLWL_OCFZRL (*((volatile unsigned int*)(0x4249870CUL))) +#define bM4_TMR43_OCMRLWL_OPDCL0 (*((volatile unsigned int*)(0x42498710UL))) +#define bM4_TMR43_OCMRLWL_OPDCL1 (*((volatile unsigned int*)(0x42498714UL))) +#define bM4_TMR43_OCMRLWL_OPPKL0 (*((volatile unsigned int*)(0x42498718UL))) +#define bM4_TMR43_OCMRLWL_OPPKL1 (*((volatile unsigned int*)(0x4249871CUL))) +#define bM4_TMR43_OCMRLWL_OPUCL0 (*((volatile unsigned int*)(0x42498720UL))) +#define bM4_TMR43_OCMRLWL_OPUCL1 (*((volatile unsigned int*)(0x42498724UL))) +#define bM4_TMR43_OCMRLWL_OPZRL0 (*((volatile unsigned int*)(0x42498728UL))) +#define bM4_TMR43_OCMRLWL_OPZRL1 (*((volatile unsigned int*)(0x4249872CUL))) +#define bM4_TMR43_OCMRLWL_OPNPKL0 (*((volatile unsigned int*)(0x42498730UL))) +#define bM4_TMR43_OCMRLWL_OPNPKL1 (*((volatile unsigned int*)(0x42498734UL))) +#define bM4_TMR43_OCMRLWL_OPNZRL0 (*((volatile unsigned int*)(0x42498738UL))) +#define bM4_TMR43_OCMRLWL_OPNZRL1 (*((volatile unsigned int*)(0x4249873CUL))) +#define bM4_TMR43_OCMRLWL_EOPNDCL0 (*((volatile unsigned int*)(0x42498740UL))) +#define bM4_TMR43_OCMRLWL_EOPNDCL1 (*((volatile unsigned int*)(0x42498744UL))) +#define bM4_TMR43_OCMRLWL_EOPNUCL0 (*((volatile unsigned int*)(0x42498748UL))) +#define bM4_TMR43_OCMRLWL_EOPNUCL1 (*((volatile unsigned int*)(0x4249874CUL))) +#define bM4_TMR43_OCMRLWL_EOPDCL0 (*((volatile unsigned int*)(0x42498750UL))) +#define bM4_TMR43_OCMRLWL_EOPDCL1 (*((volatile unsigned int*)(0x42498754UL))) +#define bM4_TMR43_OCMRLWL_EOPPKL0 (*((volatile unsigned int*)(0x42498758UL))) +#define bM4_TMR43_OCMRLWL_EOPPKL1 (*((volatile unsigned int*)(0x4249875CUL))) +#define bM4_TMR43_OCMRLWL_EOPUCL0 (*((volatile unsigned int*)(0x42498760UL))) +#define bM4_TMR43_OCMRLWL_EOPUCL1 (*((volatile unsigned int*)(0x42498764UL))) +#define bM4_TMR43_OCMRLWL_EOPZRL0 (*((volatile unsigned int*)(0x42498768UL))) +#define bM4_TMR43_OCMRLWL_EOPZRL1 (*((volatile unsigned int*)(0x4249876CUL))) +#define bM4_TMR43_OCMRLWL_EOPNPKL0 (*((volatile unsigned int*)(0x42498770UL))) +#define bM4_TMR43_OCMRLWL_EOPNPKL1 (*((volatile unsigned int*)(0x42498774UL))) +#define bM4_TMR43_OCMRLWL_EOPNZRL0 (*((volatile unsigned int*)(0x42498778UL))) +#define bM4_TMR43_OCMRLWL_EOPNZRL1 (*((volatile unsigned int*)(0x4249877CUL))) +#define bM4_TMR43_CCSR_CKDIV0 (*((volatile unsigned int*)(0x42498900UL))) +#define bM4_TMR43_CCSR_CKDIV1 (*((volatile unsigned int*)(0x42498904UL))) +#define bM4_TMR43_CCSR_CKDIV2 (*((volatile unsigned int*)(0x42498908UL))) +#define bM4_TMR43_CCSR_CKDIV3 (*((volatile unsigned int*)(0x4249890CUL))) +#define bM4_TMR43_CCSR_CLEAR (*((volatile unsigned int*)(0x42498910UL))) +#define bM4_TMR43_CCSR_MODE (*((volatile unsigned int*)(0x42498914UL))) +#define bM4_TMR43_CCSR_STOP (*((volatile unsigned int*)(0x42498918UL))) +#define bM4_TMR43_CCSR_BUFEN (*((volatile unsigned int*)(0x4249891CUL))) +#define bM4_TMR43_CCSR_IRQPEN (*((volatile unsigned int*)(0x42498920UL))) +#define bM4_TMR43_CCSR_IRQPF (*((volatile unsigned int*)(0x42498924UL))) +#define bM4_TMR43_CCSR_IRQZEN (*((volatile unsigned int*)(0x42498934UL))) +#define bM4_TMR43_CCSR_IRQZF (*((volatile unsigned int*)(0x42498938UL))) +#define bM4_TMR43_CCSR_ECKEN (*((volatile unsigned int*)(0x4249893CUL))) +#define bM4_TMR43_CVPR_ZIM0 (*((volatile unsigned int*)(0x42498940UL))) +#define bM4_TMR43_CVPR_ZIM1 (*((volatile unsigned int*)(0x42498944UL))) +#define bM4_TMR43_CVPR_ZIM2 (*((volatile unsigned int*)(0x42498948UL))) +#define bM4_TMR43_CVPR_ZIM3 (*((volatile unsigned int*)(0x4249894CUL))) +#define bM4_TMR43_CVPR_PIM0 (*((volatile unsigned int*)(0x42498950UL))) +#define bM4_TMR43_CVPR_PIM1 (*((volatile unsigned int*)(0x42498954UL))) +#define bM4_TMR43_CVPR_PIM2 (*((volatile unsigned int*)(0x42498958UL))) +#define bM4_TMR43_CVPR_PIM3 (*((volatile unsigned int*)(0x4249895CUL))) +#define bM4_TMR43_CVPR_ZIC0 (*((volatile unsigned int*)(0x42498960UL))) +#define bM4_TMR43_CVPR_ZIC1 (*((volatile unsigned int*)(0x42498964UL))) +#define bM4_TMR43_CVPR_ZIC2 (*((volatile unsigned int*)(0x42498968UL))) +#define bM4_TMR43_CVPR_ZIC3 (*((volatile unsigned int*)(0x4249896CUL))) +#define bM4_TMR43_CVPR_PIC0 (*((volatile unsigned int*)(0x42498970UL))) +#define bM4_TMR43_CVPR_PIC1 (*((volatile unsigned int*)(0x42498974UL))) +#define bM4_TMR43_CVPR_PIC2 (*((volatile unsigned int*)(0x42498978UL))) +#define bM4_TMR43_CVPR_PIC3 (*((volatile unsigned int*)(0x4249897CUL))) +#define bM4_TMR43_POCRU_DIVCK0 (*((volatile unsigned int*)(0x42499300UL))) +#define bM4_TMR43_POCRU_DIVCK1 (*((volatile unsigned int*)(0x42499304UL))) +#define bM4_TMR43_POCRU_DIVCK2 (*((volatile unsigned int*)(0x42499308UL))) +#define bM4_TMR43_POCRU_DIVCK3 (*((volatile unsigned int*)(0x4249930CUL))) +#define bM4_TMR43_POCRU_PWMMD0 (*((volatile unsigned int*)(0x42499310UL))) +#define bM4_TMR43_POCRU_PWMMD1 (*((volatile unsigned int*)(0x42499314UL))) +#define bM4_TMR43_POCRU_LVLS0 (*((volatile unsigned int*)(0x42499318UL))) +#define bM4_TMR43_POCRU_LVLS1 (*((volatile unsigned int*)(0x4249931CUL))) +#define bM4_TMR43_POCRV_DIVCK0 (*((volatile unsigned int*)(0x42499380UL))) +#define bM4_TMR43_POCRV_DIVCK1 (*((volatile unsigned int*)(0x42499384UL))) +#define bM4_TMR43_POCRV_DIVCK2 (*((volatile unsigned int*)(0x42499388UL))) +#define bM4_TMR43_POCRV_DIVCK3 (*((volatile unsigned int*)(0x4249938CUL))) +#define bM4_TMR43_POCRV_PWMMD0 (*((volatile unsigned int*)(0x42499390UL))) +#define bM4_TMR43_POCRV_PWMMD1 (*((volatile unsigned int*)(0x42499394UL))) +#define bM4_TMR43_POCRV_LVLS0 (*((volatile unsigned int*)(0x42499398UL))) +#define bM4_TMR43_POCRV_LVLS1 (*((volatile unsigned int*)(0x4249939CUL))) +#define bM4_TMR43_POCRW_DIVCK0 (*((volatile unsigned int*)(0x42499400UL))) +#define bM4_TMR43_POCRW_DIVCK1 (*((volatile unsigned int*)(0x42499404UL))) +#define bM4_TMR43_POCRW_DIVCK2 (*((volatile unsigned int*)(0x42499408UL))) +#define bM4_TMR43_POCRW_DIVCK3 (*((volatile unsigned int*)(0x4249940CUL))) +#define bM4_TMR43_POCRW_PWMMD0 (*((volatile unsigned int*)(0x42499410UL))) +#define bM4_TMR43_POCRW_PWMMD1 (*((volatile unsigned int*)(0x42499414UL))) +#define bM4_TMR43_POCRW_LVLS0 (*((volatile unsigned int*)(0x42499418UL))) +#define bM4_TMR43_POCRW_LVLS1 (*((volatile unsigned int*)(0x4249941CUL))) +#define bM4_TMR43_RCSR_RTIDU (*((volatile unsigned int*)(0x42499480UL))) +#define bM4_TMR43_RCSR_RTIDV (*((volatile unsigned int*)(0x42499484UL))) +#define bM4_TMR43_RCSR_RTIDW (*((volatile unsigned int*)(0x42499488UL))) +#define bM4_TMR43_RCSR_RTIFU (*((volatile unsigned int*)(0x42499490UL))) +#define bM4_TMR43_RCSR_RTICU (*((volatile unsigned int*)(0x42499494UL))) +#define bM4_TMR43_RCSR_RTEU (*((volatile unsigned int*)(0x42499498UL))) +#define bM4_TMR43_RCSR_RTSU (*((volatile unsigned int*)(0x4249949CUL))) +#define bM4_TMR43_RCSR_RTIFV (*((volatile unsigned int*)(0x424994A0UL))) +#define bM4_TMR43_RCSR_RTICV (*((volatile unsigned int*)(0x424994A4UL))) +#define bM4_TMR43_RCSR_RTEV (*((volatile unsigned int*)(0x424994A8UL))) +#define bM4_TMR43_RCSR_RTSV (*((volatile unsigned int*)(0x424994ACUL))) +#define bM4_TMR43_RCSR_RTIFW (*((volatile unsigned int*)(0x424994B0UL))) +#define bM4_TMR43_RCSR_RTICW (*((volatile unsigned int*)(0x424994B4UL))) +#define bM4_TMR43_RCSR_RTEW (*((volatile unsigned int*)(0x424994B8UL))) +#define bM4_TMR43_RCSR_RTSW (*((volatile unsigned int*)(0x424994BCUL))) +#define bM4_TMR43_SCSRUH_BUFEN0 (*((volatile unsigned int*)(0x42499900UL))) +#define bM4_TMR43_SCSRUH_BUFEN1 (*((volatile unsigned int*)(0x42499904UL))) +#define bM4_TMR43_SCSRUH_EVTOS0 (*((volatile unsigned int*)(0x42499908UL))) +#define bM4_TMR43_SCSRUH_EVTOS1 (*((volatile unsigned int*)(0x4249990CUL))) +#define bM4_TMR43_SCSRUH_EVTOS2 (*((volatile unsigned int*)(0x42499910UL))) +#define bM4_TMR43_SCSRUH_LMC (*((volatile unsigned int*)(0x42499914UL))) +#define bM4_TMR43_SCSRUH_EVTMS (*((volatile unsigned int*)(0x42499920UL))) +#define bM4_TMR43_SCSRUH_EVTDS (*((volatile unsigned int*)(0x42499924UL))) +#define bM4_TMR43_SCSRUH_DEN (*((volatile unsigned int*)(0x42499930UL))) +#define bM4_TMR43_SCSRUH_PEN (*((volatile unsigned int*)(0x42499934UL))) +#define bM4_TMR43_SCSRUH_UEN (*((volatile unsigned int*)(0x42499938UL))) +#define bM4_TMR43_SCSRUH_ZEN (*((volatile unsigned int*)(0x4249993CUL))) +#define bM4_TMR43_SCMRUH_AMC0 (*((volatile unsigned int*)(0x42499940UL))) +#define bM4_TMR43_SCMRUH_AMC1 (*((volatile unsigned int*)(0x42499944UL))) +#define bM4_TMR43_SCMRUH_AMC2 (*((volatile unsigned int*)(0x42499948UL))) +#define bM4_TMR43_SCMRUH_AMC3 (*((volatile unsigned int*)(0x4249994CUL))) +#define bM4_TMR43_SCMRUH_MZCE (*((volatile unsigned int*)(0x42499958UL))) +#define bM4_TMR43_SCMRUH_MPCE (*((volatile unsigned int*)(0x4249995CUL))) +#define bM4_TMR43_SCSRUL_BUFEN0 (*((volatile unsigned int*)(0x42499980UL))) +#define bM4_TMR43_SCSRUL_BUFEN1 (*((volatile unsigned int*)(0x42499984UL))) +#define bM4_TMR43_SCSRUL_EVTOS0 (*((volatile unsigned int*)(0x42499988UL))) +#define bM4_TMR43_SCSRUL_EVTOS1 (*((volatile unsigned int*)(0x4249998CUL))) +#define bM4_TMR43_SCSRUL_EVTOS2 (*((volatile unsigned int*)(0x42499990UL))) +#define bM4_TMR43_SCSRUL_LMC (*((volatile unsigned int*)(0x42499994UL))) +#define bM4_TMR43_SCSRUL_EVTMS (*((volatile unsigned int*)(0x424999A0UL))) +#define bM4_TMR43_SCSRUL_EVTDS (*((volatile unsigned int*)(0x424999A4UL))) +#define bM4_TMR43_SCSRUL_DEN (*((volatile unsigned int*)(0x424999B0UL))) +#define bM4_TMR43_SCSRUL_PEN (*((volatile unsigned int*)(0x424999B4UL))) +#define bM4_TMR43_SCSRUL_UEN (*((volatile unsigned int*)(0x424999B8UL))) +#define bM4_TMR43_SCSRUL_ZEN (*((volatile unsigned int*)(0x424999BCUL))) +#define bM4_TMR43_SCMRUL_AMC0 (*((volatile unsigned int*)(0x424999C0UL))) +#define bM4_TMR43_SCMRUL_AMC1 (*((volatile unsigned int*)(0x424999C4UL))) +#define bM4_TMR43_SCMRUL_AMC2 (*((volatile unsigned int*)(0x424999C8UL))) +#define bM4_TMR43_SCMRUL_AMC3 (*((volatile unsigned int*)(0x424999CCUL))) +#define bM4_TMR43_SCMRUL_MZCE (*((volatile unsigned int*)(0x424999D8UL))) +#define bM4_TMR43_SCMRUL_MPCE (*((volatile unsigned int*)(0x424999DCUL))) +#define bM4_TMR43_SCSRVH_BUFEN0 (*((volatile unsigned int*)(0x42499A00UL))) +#define bM4_TMR43_SCSRVH_BUFEN1 (*((volatile unsigned int*)(0x42499A04UL))) +#define bM4_TMR43_SCSRVH_EVTOS0 (*((volatile unsigned int*)(0x42499A08UL))) +#define bM4_TMR43_SCSRVH_EVTOS1 (*((volatile unsigned int*)(0x42499A0CUL))) +#define bM4_TMR43_SCSRVH_EVTOS2 (*((volatile unsigned int*)(0x42499A10UL))) +#define bM4_TMR43_SCSRVH_LMC (*((volatile unsigned int*)(0x42499A14UL))) +#define bM4_TMR43_SCSRVH_EVTMS (*((volatile unsigned int*)(0x42499A20UL))) +#define bM4_TMR43_SCSRVH_EVTDS (*((volatile unsigned int*)(0x42499A24UL))) +#define bM4_TMR43_SCSRVH_DEN (*((volatile unsigned int*)(0x42499A30UL))) +#define bM4_TMR43_SCSRVH_PEN (*((volatile unsigned int*)(0x42499A34UL))) +#define bM4_TMR43_SCSRVH_UEN (*((volatile unsigned int*)(0x42499A38UL))) +#define bM4_TMR43_SCSRVH_ZEN (*((volatile unsigned int*)(0x42499A3CUL))) +#define bM4_TMR43_SCMRVH_AMC0 (*((volatile unsigned int*)(0x42499A40UL))) +#define bM4_TMR43_SCMRVH_AMC1 (*((volatile unsigned int*)(0x42499A44UL))) +#define bM4_TMR43_SCMRVH_AMC2 (*((volatile unsigned int*)(0x42499A48UL))) +#define bM4_TMR43_SCMRVH_AMC3 (*((volatile unsigned int*)(0x42499A4CUL))) +#define bM4_TMR43_SCMRVH_MZCE (*((volatile unsigned int*)(0x42499A58UL))) +#define bM4_TMR43_SCMRVH_MPCE (*((volatile unsigned int*)(0x42499A5CUL))) +#define bM4_TMR43_SCSRVL_BUFEN0 (*((volatile unsigned int*)(0x42499A80UL))) +#define bM4_TMR43_SCSRVL_BUFEN1 (*((volatile unsigned int*)(0x42499A84UL))) +#define bM4_TMR43_SCSRVL_EVTOS0 (*((volatile unsigned int*)(0x42499A88UL))) +#define bM4_TMR43_SCSRVL_EVTOS1 (*((volatile unsigned int*)(0x42499A8CUL))) +#define bM4_TMR43_SCSRVL_EVTOS2 (*((volatile unsigned int*)(0x42499A90UL))) +#define bM4_TMR43_SCSRVL_LMC (*((volatile unsigned int*)(0x42499A94UL))) +#define bM4_TMR43_SCSRVL_EVTMS (*((volatile unsigned int*)(0x42499AA0UL))) +#define bM4_TMR43_SCSRVL_EVTDS (*((volatile unsigned int*)(0x42499AA4UL))) +#define bM4_TMR43_SCSRVL_DEN (*((volatile unsigned int*)(0x42499AB0UL))) +#define bM4_TMR43_SCSRVL_PEN (*((volatile unsigned int*)(0x42499AB4UL))) +#define bM4_TMR43_SCSRVL_UEN (*((volatile unsigned int*)(0x42499AB8UL))) +#define bM4_TMR43_SCSRVL_ZEN (*((volatile unsigned int*)(0x42499ABCUL))) +#define bM4_TMR43_SCMRVL_AMC0 (*((volatile unsigned int*)(0x42499AC0UL))) +#define bM4_TMR43_SCMRVL_AMC1 (*((volatile unsigned int*)(0x42499AC4UL))) +#define bM4_TMR43_SCMRVL_AMC2 (*((volatile unsigned int*)(0x42499AC8UL))) +#define bM4_TMR43_SCMRVL_AMC3 (*((volatile unsigned int*)(0x42499ACCUL))) +#define bM4_TMR43_SCMRVL_MZCE (*((volatile unsigned int*)(0x42499AD8UL))) +#define bM4_TMR43_SCMRVL_MPCE (*((volatile unsigned int*)(0x42499ADCUL))) +#define bM4_TMR43_SCSRWH_BUFEN0 (*((volatile unsigned int*)(0x42499B00UL))) +#define bM4_TMR43_SCSRWH_BUFEN1 (*((volatile unsigned int*)(0x42499B04UL))) +#define bM4_TMR43_SCSRWH_EVTOS0 (*((volatile unsigned int*)(0x42499B08UL))) +#define bM4_TMR43_SCSRWH_EVTOS1 (*((volatile unsigned int*)(0x42499B0CUL))) +#define bM4_TMR43_SCSRWH_EVTOS2 (*((volatile unsigned int*)(0x42499B10UL))) +#define bM4_TMR43_SCSRWH_LMC (*((volatile unsigned int*)(0x42499B14UL))) +#define bM4_TMR43_SCSRWH_EVTMS (*((volatile unsigned int*)(0x42499B20UL))) +#define bM4_TMR43_SCSRWH_EVTDS (*((volatile unsigned int*)(0x42499B24UL))) +#define bM4_TMR43_SCSRWH_DEN (*((volatile unsigned int*)(0x42499B30UL))) +#define bM4_TMR43_SCSRWH_PEN (*((volatile unsigned int*)(0x42499B34UL))) +#define bM4_TMR43_SCSRWH_UEN (*((volatile unsigned int*)(0x42499B38UL))) +#define bM4_TMR43_SCSRWH_ZEN (*((volatile unsigned int*)(0x42499B3CUL))) +#define bM4_TMR43_SCMRWH_AMC0 (*((volatile unsigned int*)(0x42499B40UL))) +#define bM4_TMR43_SCMRWH_AMC1 (*((volatile unsigned int*)(0x42499B44UL))) +#define bM4_TMR43_SCMRWH_AMC2 (*((volatile unsigned int*)(0x42499B48UL))) +#define bM4_TMR43_SCMRWH_AMC3 (*((volatile unsigned int*)(0x42499B4CUL))) +#define bM4_TMR43_SCMRWH_MZCE (*((volatile unsigned int*)(0x42499B58UL))) +#define bM4_TMR43_SCMRWH_MPCE (*((volatile unsigned int*)(0x42499B5CUL))) +#define bM4_TMR43_SCSRWL_BUFEN0 (*((volatile unsigned int*)(0x42499B80UL))) +#define bM4_TMR43_SCSRWL_BUFEN1 (*((volatile unsigned int*)(0x42499B84UL))) +#define bM4_TMR43_SCSRWL_EVTOS0 (*((volatile unsigned int*)(0x42499B88UL))) +#define bM4_TMR43_SCSRWL_EVTOS1 (*((volatile unsigned int*)(0x42499B8CUL))) +#define bM4_TMR43_SCSRWL_EVTOS2 (*((volatile unsigned int*)(0x42499B90UL))) +#define bM4_TMR43_SCSRWL_LMC (*((volatile unsigned int*)(0x42499B94UL))) +#define bM4_TMR43_SCSRWL_EVTMS (*((volatile unsigned int*)(0x42499BA0UL))) +#define bM4_TMR43_SCSRWL_EVTDS (*((volatile unsigned int*)(0x42499BA4UL))) +#define bM4_TMR43_SCSRWL_DEN (*((volatile unsigned int*)(0x42499BB0UL))) +#define bM4_TMR43_SCSRWL_PEN (*((volatile unsigned int*)(0x42499BB4UL))) +#define bM4_TMR43_SCSRWL_UEN (*((volatile unsigned int*)(0x42499BB8UL))) +#define bM4_TMR43_SCSRWL_ZEN (*((volatile unsigned int*)(0x42499BBCUL))) +#define bM4_TMR43_SCMRWL_AMC0 (*((volatile unsigned int*)(0x42499BC0UL))) +#define bM4_TMR43_SCMRWL_AMC1 (*((volatile unsigned int*)(0x42499BC4UL))) +#define bM4_TMR43_SCMRWL_AMC2 (*((volatile unsigned int*)(0x42499BC8UL))) +#define bM4_TMR43_SCMRWL_AMC3 (*((volatile unsigned int*)(0x42499BCCUL))) +#define bM4_TMR43_SCMRWL_MZCE (*((volatile unsigned int*)(0x42499BD8UL))) +#define bM4_TMR43_SCMRWL_MPCE (*((volatile unsigned int*)(0x42499BDCUL))) +#define bM4_TMR43_ECSR_HOLD (*((volatile unsigned int*)(0x42499E1CUL))) +#define bM4_TMR4_CR_ECER1_EMBVAL0 (*((volatile unsigned int*)(0x42AA8100UL))) +#define bM4_TMR4_CR_ECER1_EMBVAL1 (*((volatile unsigned int*)(0x42AA8104UL))) +#define bM4_TMR4_CR_ECER2_EMBVAL0 (*((volatile unsigned int*)(0x42AA8180UL))) +#define bM4_TMR4_CR_ECER2_EMBVAL1 (*((volatile unsigned int*)(0x42AA8184UL))) +#define bM4_TMR4_CR_ECER3_EMBVAL0 (*((volatile unsigned int*)(0x42AA8200UL))) +#define bM4_TMR4_CR_ECER3_EMBVAL1 (*((volatile unsigned int*)(0x42AA8204UL))) +#define bM4_TMR61_CNTER_CNT0 (*((volatile unsigned int*)(0x42300000UL))) +#define bM4_TMR61_CNTER_CNT1 (*((volatile unsigned int*)(0x42300004UL))) +#define bM4_TMR61_CNTER_CNT2 (*((volatile unsigned int*)(0x42300008UL))) +#define bM4_TMR61_CNTER_CNT3 (*((volatile unsigned int*)(0x4230000CUL))) +#define bM4_TMR61_CNTER_CNT4 (*((volatile unsigned int*)(0x42300010UL))) +#define bM4_TMR61_CNTER_CNT5 (*((volatile unsigned int*)(0x42300014UL))) +#define bM4_TMR61_CNTER_CNT6 (*((volatile unsigned int*)(0x42300018UL))) +#define bM4_TMR61_CNTER_CNT7 (*((volatile unsigned int*)(0x4230001CUL))) +#define bM4_TMR61_CNTER_CNT8 (*((volatile unsigned int*)(0x42300020UL))) +#define bM4_TMR61_CNTER_CNT9 (*((volatile unsigned int*)(0x42300024UL))) +#define bM4_TMR61_CNTER_CNT10 (*((volatile unsigned int*)(0x42300028UL))) +#define bM4_TMR61_CNTER_CNT11 (*((volatile unsigned int*)(0x4230002CUL))) +#define bM4_TMR61_CNTER_CNT12 (*((volatile unsigned int*)(0x42300030UL))) +#define bM4_TMR61_CNTER_CNT13 (*((volatile unsigned int*)(0x42300034UL))) +#define bM4_TMR61_CNTER_CNT14 (*((volatile unsigned int*)(0x42300038UL))) +#define bM4_TMR61_CNTER_CNT15 (*((volatile unsigned int*)(0x4230003CUL))) +#define bM4_TMR61_PERAR_PERA0 (*((volatile unsigned int*)(0x42300080UL))) +#define bM4_TMR61_PERAR_PERA1 (*((volatile unsigned int*)(0x42300084UL))) +#define bM4_TMR61_PERAR_PERA2 (*((volatile unsigned int*)(0x42300088UL))) +#define bM4_TMR61_PERAR_PERA3 (*((volatile unsigned int*)(0x4230008CUL))) +#define bM4_TMR61_PERAR_PERA4 (*((volatile unsigned int*)(0x42300090UL))) +#define bM4_TMR61_PERAR_PERA5 (*((volatile unsigned int*)(0x42300094UL))) +#define bM4_TMR61_PERAR_PERA6 (*((volatile unsigned int*)(0x42300098UL))) +#define bM4_TMR61_PERAR_PERA7 (*((volatile unsigned int*)(0x4230009CUL))) +#define bM4_TMR61_PERAR_PERA8 (*((volatile unsigned int*)(0x423000A0UL))) +#define bM4_TMR61_PERAR_PERA9 (*((volatile unsigned int*)(0x423000A4UL))) +#define bM4_TMR61_PERAR_PERA10 (*((volatile unsigned int*)(0x423000A8UL))) +#define bM4_TMR61_PERAR_PERA11 (*((volatile unsigned int*)(0x423000ACUL))) +#define bM4_TMR61_PERAR_PERA12 (*((volatile unsigned int*)(0x423000B0UL))) +#define bM4_TMR61_PERAR_PERA13 (*((volatile unsigned int*)(0x423000B4UL))) +#define bM4_TMR61_PERAR_PERA14 (*((volatile unsigned int*)(0x423000B8UL))) +#define bM4_TMR61_PERAR_PERA15 (*((volatile unsigned int*)(0x423000BCUL))) +#define bM4_TMR61_PERBR_PERB0 (*((volatile unsigned int*)(0x42300100UL))) +#define bM4_TMR61_PERBR_PERB1 (*((volatile unsigned int*)(0x42300104UL))) +#define bM4_TMR61_PERBR_PERB2 (*((volatile unsigned int*)(0x42300108UL))) +#define bM4_TMR61_PERBR_PERB3 (*((volatile unsigned int*)(0x4230010CUL))) +#define bM4_TMR61_PERBR_PERB4 (*((volatile unsigned int*)(0x42300110UL))) +#define bM4_TMR61_PERBR_PERB5 (*((volatile unsigned int*)(0x42300114UL))) +#define bM4_TMR61_PERBR_PERB6 (*((volatile unsigned int*)(0x42300118UL))) +#define bM4_TMR61_PERBR_PERB7 (*((volatile unsigned int*)(0x4230011CUL))) +#define bM4_TMR61_PERBR_PERB8 (*((volatile unsigned int*)(0x42300120UL))) +#define bM4_TMR61_PERBR_PERB9 (*((volatile unsigned int*)(0x42300124UL))) +#define bM4_TMR61_PERBR_PERB10 (*((volatile unsigned int*)(0x42300128UL))) +#define bM4_TMR61_PERBR_PERB11 (*((volatile unsigned int*)(0x4230012CUL))) +#define bM4_TMR61_PERBR_PERB12 (*((volatile unsigned int*)(0x42300130UL))) +#define bM4_TMR61_PERBR_PERB13 (*((volatile unsigned int*)(0x42300134UL))) +#define bM4_TMR61_PERBR_PERB14 (*((volatile unsigned int*)(0x42300138UL))) +#define bM4_TMR61_PERBR_PERB15 (*((volatile unsigned int*)(0x4230013CUL))) +#define bM4_TMR61_PERCR_PERC0 (*((volatile unsigned int*)(0x42300180UL))) +#define bM4_TMR61_PERCR_PERC1 (*((volatile unsigned int*)(0x42300184UL))) +#define bM4_TMR61_PERCR_PERC2 (*((volatile unsigned int*)(0x42300188UL))) +#define bM4_TMR61_PERCR_PERC3 (*((volatile unsigned int*)(0x4230018CUL))) +#define bM4_TMR61_PERCR_PERC4 (*((volatile unsigned int*)(0x42300190UL))) +#define bM4_TMR61_PERCR_PERC5 (*((volatile unsigned int*)(0x42300194UL))) +#define bM4_TMR61_PERCR_PERC6 (*((volatile unsigned int*)(0x42300198UL))) +#define bM4_TMR61_PERCR_PERC7 (*((volatile unsigned int*)(0x4230019CUL))) +#define bM4_TMR61_PERCR_PERC8 (*((volatile unsigned int*)(0x423001A0UL))) +#define bM4_TMR61_PERCR_PERC9 (*((volatile unsigned int*)(0x423001A4UL))) +#define bM4_TMR61_PERCR_PERC10 (*((volatile unsigned int*)(0x423001A8UL))) +#define bM4_TMR61_PERCR_PERC11 (*((volatile unsigned int*)(0x423001ACUL))) +#define bM4_TMR61_PERCR_PERC12 (*((volatile unsigned int*)(0x423001B0UL))) +#define bM4_TMR61_PERCR_PERC13 (*((volatile unsigned int*)(0x423001B4UL))) +#define bM4_TMR61_PERCR_PERC14 (*((volatile unsigned int*)(0x423001B8UL))) +#define bM4_TMR61_PERCR_PERC15 (*((volatile unsigned int*)(0x423001BCUL))) +#define bM4_TMR61_GCMAR_GCMA0 (*((volatile unsigned int*)(0x42300200UL))) +#define bM4_TMR61_GCMAR_GCMA1 (*((volatile unsigned int*)(0x42300204UL))) +#define bM4_TMR61_GCMAR_GCMA2 (*((volatile unsigned int*)(0x42300208UL))) +#define bM4_TMR61_GCMAR_GCMA3 (*((volatile unsigned int*)(0x4230020CUL))) +#define bM4_TMR61_GCMAR_GCMA4 (*((volatile unsigned int*)(0x42300210UL))) +#define bM4_TMR61_GCMAR_GCMA5 (*((volatile unsigned int*)(0x42300214UL))) +#define bM4_TMR61_GCMAR_GCMA6 (*((volatile unsigned int*)(0x42300218UL))) +#define bM4_TMR61_GCMAR_GCMA7 (*((volatile unsigned int*)(0x4230021CUL))) +#define bM4_TMR61_GCMAR_GCMA8 (*((volatile unsigned int*)(0x42300220UL))) +#define bM4_TMR61_GCMAR_GCMA9 (*((volatile unsigned int*)(0x42300224UL))) +#define bM4_TMR61_GCMAR_GCMA10 (*((volatile unsigned int*)(0x42300228UL))) +#define bM4_TMR61_GCMAR_GCMA11 (*((volatile unsigned int*)(0x4230022CUL))) +#define bM4_TMR61_GCMAR_GCMA12 (*((volatile unsigned int*)(0x42300230UL))) +#define bM4_TMR61_GCMAR_GCMA13 (*((volatile unsigned int*)(0x42300234UL))) +#define bM4_TMR61_GCMAR_GCMA14 (*((volatile unsigned int*)(0x42300238UL))) +#define bM4_TMR61_GCMAR_GCMA15 (*((volatile unsigned int*)(0x4230023CUL))) +#define bM4_TMR61_GCMBR_GCMB0 (*((volatile unsigned int*)(0x42300280UL))) +#define bM4_TMR61_GCMBR_GCMB1 (*((volatile unsigned int*)(0x42300284UL))) +#define bM4_TMR61_GCMBR_GCMB2 (*((volatile unsigned int*)(0x42300288UL))) +#define bM4_TMR61_GCMBR_GCMB3 (*((volatile unsigned int*)(0x4230028CUL))) +#define bM4_TMR61_GCMBR_GCMB4 (*((volatile unsigned int*)(0x42300290UL))) +#define bM4_TMR61_GCMBR_GCMB5 (*((volatile unsigned int*)(0x42300294UL))) +#define bM4_TMR61_GCMBR_GCMB6 (*((volatile unsigned int*)(0x42300298UL))) +#define bM4_TMR61_GCMBR_GCMB7 (*((volatile unsigned int*)(0x4230029CUL))) +#define bM4_TMR61_GCMBR_GCMB8 (*((volatile unsigned int*)(0x423002A0UL))) +#define bM4_TMR61_GCMBR_GCMB9 (*((volatile unsigned int*)(0x423002A4UL))) +#define bM4_TMR61_GCMBR_GCMB10 (*((volatile unsigned int*)(0x423002A8UL))) +#define bM4_TMR61_GCMBR_GCMB11 (*((volatile unsigned int*)(0x423002ACUL))) +#define bM4_TMR61_GCMBR_GCMB12 (*((volatile unsigned int*)(0x423002B0UL))) +#define bM4_TMR61_GCMBR_GCMB13 (*((volatile unsigned int*)(0x423002B4UL))) +#define bM4_TMR61_GCMBR_GCMB14 (*((volatile unsigned int*)(0x423002B8UL))) +#define bM4_TMR61_GCMBR_GCMB15 (*((volatile unsigned int*)(0x423002BCUL))) +#define bM4_TMR61_GCMCR_GCMC0 (*((volatile unsigned int*)(0x42300300UL))) +#define bM4_TMR61_GCMCR_GCMC1 (*((volatile unsigned int*)(0x42300304UL))) +#define bM4_TMR61_GCMCR_GCMC2 (*((volatile unsigned int*)(0x42300308UL))) +#define bM4_TMR61_GCMCR_GCMC3 (*((volatile unsigned int*)(0x4230030CUL))) +#define bM4_TMR61_GCMCR_GCMC4 (*((volatile unsigned int*)(0x42300310UL))) +#define bM4_TMR61_GCMCR_GCMC5 (*((volatile unsigned int*)(0x42300314UL))) +#define bM4_TMR61_GCMCR_GCMC6 (*((volatile unsigned int*)(0x42300318UL))) +#define bM4_TMR61_GCMCR_GCMC7 (*((volatile unsigned int*)(0x4230031CUL))) +#define bM4_TMR61_GCMCR_GCMC8 (*((volatile unsigned int*)(0x42300320UL))) +#define bM4_TMR61_GCMCR_GCMC9 (*((volatile unsigned int*)(0x42300324UL))) +#define bM4_TMR61_GCMCR_GCMC10 (*((volatile unsigned int*)(0x42300328UL))) +#define bM4_TMR61_GCMCR_GCMC11 (*((volatile unsigned int*)(0x4230032CUL))) +#define bM4_TMR61_GCMCR_GCMC12 (*((volatile unsigned int*)(0x42300330UL))) +#define bM4_TMR61_GCMCR_GCMC13 (*((volatile unsigned int*)(0x42300334UL))) +#define bM4_TMR61_GCMCR_GCMC14 (*((volatile unsigned int*)(0x42300338UL))) +#define bM4_TMR61_GCMCR_GCMC15 (*((volatile unsigned int*)(0x4230033CUL))) +#define bM4_TMR61_GCMDR_GCMD0 (*((volatile unsigned int*)(0x42300380UL))) +#define bM4_TMR61_GCMDR_GCMD1 (*((volatile unsigned int*)(0x42300384UL))) +#define bM4_TMR61_GCMDR_GCMD2 (*((volatile unsigned int*)(0x42300388UL))) +#define bM4_TMR61_GCMDR_GCMD3 (*((volatile unsigned int*)(0x4230038CUL))) +#define bM4_TMR61_GCMDR_GCMD4 (*((volatile unsigned int*)(0x42300390UL))) +#define bM4_TMR61_GCMDR_GCMD5 (*((volatile unsigned int*)(0x42300394UL))) +#define bM4_TMR61_GCMDR_GCMD6 (*((volatile unsigned int*)(0x42300398UL))) +#define bM4_TMR61_GCMDR_GCMD7 (*((volatile unsigned int*)(0x4230039CUL))) +#define bM4_TMR61_GCMDR_GCMD8 (*((volatile unsigned int*)(0x423003A0UL))) +#define bM4_TMR61_GCMDR_GCMD9 (*((volatile unsigned int*)(0x423003A4UL))) +#define bM4_TMR61_GCMDR_GCMD10 (*((volatile unsigned int*)(0x423003A8UL))) +#define bM4_TMR61_GCMDR_GCMD11 (*((volatile unsigned int*)(0x423003ACUL))) +#define bM4_TMR61_GCMDR_GCMD12 (*((volatile unsigned int*)(0x423003B0UL))) +#define bM4_TMR61_GCMDR_GCMD13 (*((volatile unsigned int*)(0x423003B4UL))) +#define bM4_TMR61_GCMDR_GCMD14 (*((volatile unsigned int*)(0x423003B8UL))) +#define bM4_TMR61_GCMDR_GCMD15 (*((volatile unsigned int*)(0x423003BCUL))) +#define bM4_TMR61_GCMER_GCME0 (*((volatile unsigned int*)(0x42300400UL))) +#define bM4_TMR61_GCMER_GCME1 (*((volatile unsigned int*)(0x42300404UL))) +#define bM4_TMR61_GCMER_GCME2 (*((volatile unsigned int*)(0x42300408UL))) +#define bM4_TMR61_GCMER_GCME3 (*((volatile unsigned int*)(0x4230040CUL))) +#define bM4_TMR61_GCMER_GCME4 (*((volatile unsigned int*)(0x42300410UL))) +#define bM4_TMR61_GCMER_GCME5 (*((volatile unsigned int*)(0x42300414UL))) +#define bM4_TMR61_GCMER_GCME6 (*((volatile unsigned int*)(0x42300418UL))) +#define bM4_TMR61_GCMER_GCME7 (*((volatile unsigned int*)(0x4230041CUL))) +#define bM4_TMR61_GCMER_GCME8 (*((volatile unsigned int*)(0x42300420UL))) +#define bM4_TMR61_GCMER_GCME9 (*((volatile unsigned int*)(0x42300424UL))) +#define bM4_TMR61_GCMER_GCME10 (*((volatile unsigned int*)(0x42300428UL))) +#define bM4_TMR61_GCMER_GCME11 (*((volatile unsigned int*)(0x4230042CUL))) +#define bM4_TMR61_GCMER_GCME12 (*((volatile unsigned int*)(0x42300430UL))) +#define bM4_TMR61_GCMER_GCME13 (*((volatile unsigned int*)(0x42300434UL))) +#define bM4_TMR61_GCMER_GCME14 (*((volatile unsigned int*)(0x42300438UL))) +#define bM4_TMR61_GCMER_GCME15 (*((volatile unsigned int*)(0x4230043CUL))) +#define bM4_TMR61_GCMFR_GCMF0 (*((volatile unsigned int*)(0x42300480UL))) +#define bM4_TMR61_GCMFR_GCMF1 (*((volatile unsigned int*)(0x42300484UL))) +#define bM4_TMR61_GCMFR_GCMF2 (*((volatile unsigned int*)(0x42300488UL))) +#define bM4_TMR61_GCMFR_GCMF3 (*((volatile unsigned int*)(0x4230048CUL))) +#define bM4_TMR61_GCMFR_GCMF4 (*((volatile unsigned int*)(0x42300490UL))) +#define bM4_TMR61_GCMFR_GCMF5 (*((volatile unsigned int*)(0x42300494UL))) +#define bM4_TMR61_GCMFR_GCMF6 (*((volatile unsigned int*)(0x42300498UL))) +#define bM4_TMR61_GCMFR_GCMF7 (*((volatile unsigned int*)(0x4230049CUL))) +#define bM4_TMR61_GCMFR_GCMF8 (*((volatile unsigned int*)(0x423004A0UL))) +#define bM4_TMR61_GCMFR_GCMF9 (*((volatile unsigned int*)(0x423004A4UL))) +#define bM4_TMR61_GCMFR_GCMF10 (*((volatile unsigned int*)(0x423004A8UL))) +#define bM4_TMR61_GCMFR_GCMF11 (*((volatile unsigned int*)(0x423004ACUL))) +#define bM4_TMR61_GCMFR_GCMF12 (*((volatile unsigned int*)(0x423004B0UL))) +#define bM4_TMR61_GCMFR_GCMF13 (*((volatile unsigned int*)(0x423004B4UL))) +#define bM4_TMR61_GCMFR_GCMF14 (*((volatile unsigned int*)(0x423004B8UL))) +#define bM4_TMR61_GCMFR_GCMF15 (*((volatile unsigned int*)(0x423004BCUL))) +#define bM4_TMR61_SCMAR_SCMA0 (*((volatile unsigned int*)(0x42300500UL))) +#define bM4_TMR61_SCMAR_SCMA1 (*((volatile unsigned int*)(0x42300504UL))) +#define bM4_TMR61_SCMAR_SCMA2 (*((volatile unsigned int*)(0x42300508UL))) +#define bM4_TMR61_SCMAR_SCMA3 (*((volatile unsigned int*)(0x4230050CUL))) +#define bM4_TMR61_SCMAR_SCMA4 (*((volatile unsigned int*)(0x42300510UL))) +#define bM4_TMR61_SCMAR_SCMA5 (*((volatile unsigned int*)(0x42300514UL))) +#define bM4_TMR61_SCMAR_SCMA6 (*((volatile unsigned int*)(0x42300518UL))) +#define bM4_TMR61_SCMAR_SCMA7 (*((volatile unsigned int*)(0x4230051CUL))) +#define bM4_TMR61_SCMAR_SCMA8 (*((volatile unsigned int*)(0x42300520UL))) +#define bM4_TMR61_SCMAR_SCMA9 (*((volatile unsigned int*)(0x42300524UL))) +#define bM4_TMR61_SCMAR_SCMA10 (*((volatile unsigned int*)(0x42300528UL))) +#define bM4_TMR61_SCMAR_SCMA11 (*((volatile unsigned int*)(0x4230052CUL))) +#define bM4_TMR61_SCMAR_SCMA12 (*((volatile unsigned int*)(0x42300530UL))) +#define bM4_TMR61_SCMAR_SCMA13 (*((volatile unsigned int*)(0x42300534UL))) +#define bM4_TMR61_SCMAR_SCMA14 (*((volatile unsigned int*)(0x42300538UL))) +#define bM4_TMR61_SCMAR_SCMA15 (*((volatile unsigned int*)(0x4230053CUL))) +#define bM4_TMR61_SCMBR_SCMB0 (*((volatile unsigned int*)(0x42300580UL))) +#define bM4_TMR61_SCMBR_SCMB1 (*((volatile unsigned int*)(0x42300584UL))) +#define bM4_TMR61_SCMBR_SCMB2 (*((volatile unsigned int*)(0x42300588UL))) +#define bM4_TMR61_SCMBR_SCMB3 (*((volatile unsigned int*)(0x4230058CUL))) +#define bM4_TMR61_SCMBR_SCMB4 (*((volatile unsigned int*)(0x42300590UL))) +#define bM4_TMR61_SCMBR_SCMB5 (*((volatile unsigned int*)(0x42300594UL))) +#define bM4_TMR61_SCMBR_SCMB6 (*((volatile unsigned int*)(0x42300598UL))) +#define bM4_TMR61_SCMBR_SCMB7 (*((volatile unsigned int*)(0x4230059CUL))) +#define bM4_TMR61_SCMBR_SCMB8 (*((volatile unsigned int*)(0x423005A0UL))) +#define bM4_TMR61_SCMBR_SCMB9 (*((volatile unsigned int*)(0x423005A4UL))) +#define bM4_TMR61_SCMBR_SCMB10 (*((volatile unsigned int*)(0x423005A8UL))) +#define bM4_TMR61_SCMBR_SCMB11 (*((volatile unsigned int*)(0x423005ACUL))) +#define bM4_TMR61_SCMBR_SCMB12 (*((volatile unsigned int*)(0x423005B0UL))) +#define bM4_TMR61_SCMBR_SCMB13 (*((volatile unsigned int*)(0x423005B4UL))) +#define bM4_TMR61_SCMBR_SCMB14 (*((volatile unsigned int*)(0x423005B8UL))) +#define bM4_TMR61_SCMBR_SCMB15 (*((volatile unsigned int*)(0x423005BCUL))) +#define bM4_TMR61_SCMCR_SCMC0 (*((volatile unsigned int*)(0x42300600UL))) +#define bM4_TMR61_SCMCR_SCMC1 (*((volatile unsigned int*)(0x42300604UL))) +#define bM4_TMR61_SCMCR_SCMC2 (*((volatile unsigned int*)(0x42300608UL))) +#define bM4_TMR61_SCMCR_SCMC3 (*((volatile unsigned int*)(0x4230060CUL))) +#define bM4_TMR61_SCMCR_SCMC4 (*((volatile unsigned int*)(0x42300610UL))) +#define bM4_TMR61_SCMCR_SCMC5 (*((volatile unsigned int*)(0x42300614UL))) +#define bM4_TMR61_SCMCR_SCMC6 (*((volatile unsigned int*)(0x42300618UL))) +#define bM4_TMR61_SCMCR_SCMC7 (*((volatile unsigned int*)(0x4230061CUL))) +#define bM4_TMR61_SCMCR_SCMC8 (*((volatile unsigned int*)(0x42300620UL))) +#define bM4_TMR61_SCMCR_SCMC9 (*((volatile unsigned int*)(0x42300624UL))) +#define bM4_TMR61_SCMCR_SCMC10 (*((volatile unsigned int*)(0x42300628UL))) +#define bM4_TMR61_SCMCR_SCMC11 (*((volatile unsigned int*)(0x4230062CUL))) +#define bM4_TMR61_SCMCR_SCMC12 (*((volatile unsigned int*)(0x42300630UL))) +#define bM4_TMR61_SCMCR_SCMC13 (*((volatile unsigned int*)(0x42300634UL))) +#define bM4_TMR61_SCMCR_SCMC14 (*((volatile unsigned int*)(0x42300638UL))) +#define bM4_TMR61_SCMCR_SCMC15 (*((volatile unsigned int*)(0x4230063CUL))) +#define bM4_TMR61_SCMDR_SCMD0 (*((volatile unsigned int*)(0x42300680UL))) +#define bM4_TMR61_SCMDR_SCMD1 (*((volatile unsigned int*)(0x42300684UL))) +#define bM4_TMR61_SCMDR_SCMD2 (*((volatile unsigned int*)(0x42300688UL))) +#define bM4_TMR61_SCMDR_SCMD3 (*((volatile unsigned int*)(0x4230068CUL))) +#define bM4_TMR61_SCMDR_SCMD4 (*((volatile unsigned int*)(0x42300690UL))) +#define bM4_TMR61_SCMDR_SCMD5 (*((volatile unsigned int*)(0x42300694UL))) +#define bM4_TMR61_SCMDR_SCMD6 (*((volatile unsigned int*)(0x42300698UL))) +#define bM4_TMR61_SCMDR_SCMD7 (*((volatile unsigned int*)(0x4230069CUL))) +#define bM4_TMR61_SCMDR_SCMD8 (*((volatile unsigned int*)(0x423006A0UL))) +#define bM4_TMR61_SCMDR_SCMD9 (*((volatile unsigned int*)(0x423006A4UL))) +#define bM4_TMR61_SCMDR_SCMD10 (*((volatile unsigned int*)(0x423006A8UL))) +#define bM4_TMR61_SCMDR_SCMD11 (*((volatile unsigned int*)(0x423006ACUL))) +#define bM4_TMR61_SCMDR_SCMD12 (*((volatile unsigned int*)(0x423006B0UL))) +#define bM4_TMR61_SCMDR_SCMD13 (*((volatile unsigned int*)(0x423006B4UL))) +#define bM4_TMR61_SCMDR_SCMD14 (*((volatile unsigned int*)(0x423006B8UL))) +#define bM4_TMR61_SCMDR_SCMD15 (*((volatile unsigned int*)(0x423006BCUL))) +#define bM4_TMR61_SCMER_SCME0 (*((volatile unsigned int*)(0x42300700UL))) +#define bM4_TMR61_SCMER_SCME1 (*((volatile unsigned int*)(0x42300704UL))) +#define bM4_TMR61_SCMER_SCME2 (*((volatile unsigned int*)(0x42300708UL))) +#define bM4_TMR61_SCMER_SCME3 (*((volatile unsigned int*)(0x4230070CUL))) +#define bM4_TMR61_SCMER_SCME4 (*((volatile unsigned int*)(0x42300710UL))) +#define bM4_TMR61_SCMER_SCME5 (*((volatile unsigned int*)(0x42300714UL))) +#define bM4_TMR61_SCMER_SCME6 (*((volatile unsigned int*)(0x42300718UL))) +#define bM4_TMR61_SCMER_SCME7 (*((volatile unsigned int*)(0x4230071CUL))) +#define bM4_TMR61_SCMER_SCME8 (*((volatile unsigned int*)(0x42300720UL))) +#define bM4_TMR61_SCMER_SCME9 (*((volatile unsigned int*)(0x42300724UL))) +#define bM4_TMR61_SCMER_SCME10 (*((volatile unsigned int*)(0x42300728UL))) +#define bM4_TMR61_SCMER_SCME11 (*((volatile unsigned int*)(0x4230072CUL))) +#define bM4_TMR61_SCMER_SCME12 (*((volatile unsigned int*)(0x42300730UL))) +#define bM4_TMR61_SCMER_SCME13 (*((volatile unsigned int*)(0x42300734UL))) +#define bM4_TMR61_SCMER_SCME14 (*((volatile unsigned int*)(0x42300738UL))) +#define bM4_TMR61_SCMER_SCME15 (*((volatile unsigned int*)(0x4230073CUL))) +#define bM4_TMR61_SCMFR_SCMF0 (*((volatile unsigned int*)(0x42300780UL))) +#define bM4_TMR61_SCMFR_SCMF1 (*((volatile unsigned int*)(0x42300784UL))) +#define bM4_TMR61_SCMFR_SCMF2 (*((volatile unsigned int*)(0x42300788UL))) +#define bM4_TMR61_SCMFR_SCMF3 (*((volatile unsigned int*)(0x4230078CUL))) +#define bM4_TMR61_SCMFR_SCMF4 (*((volatile unsigned int*)(0x42300790UL))) +#define bM4_TMR61_SCMFR_SCMF5 (*((volatile unsigned int*)(0x42300794UL))) +#define bM4_TMR61_SCMFR_SCMF6 (*((volatile unsigned int*)(0x42300798UL))) +#define bM4_TMR61_SCMFR_SCMF7 (*((volatile unsigned int*)(0x4230079CUL))) +#define bM4_TMR61_SCMFR_SCMF8 (*((volatile unsigned int*)(0x423007A0UL))) +#define bM4_TMR61_SCMFR_SCMF9 (*((volatile unsigned int*)(0x423007A4UL))) +#define bM4_TMR61_SCMFR_SCMF10 (*((volatile unsigned int*)(0x423007A8UL))) +#define bM4_TMR61_SCMFR_SCMF11 (*((volatile unsigned int*)(0x423007ACUL))) +#define bM4_TMR61_SCMFR_SCMF12 (*((volatile unsigned int*)(0x423007B0UL))) +#define bM4_TMR61_SCMFR_SCMF13 (*((volatile unsigned int*)(0x423007B4UL))) +#define bM4_TMR61_SCMFR_SCMF14 (*((volatile unsigned int*)(0x423007B8UL))) +#define bM4_TMR61_SCMFR_SCMF15 (*((volatile unsigned int*)(0x423007BCUL))) +#define bM4_TMR61_DTUAR_DTUA0 (*((volatile unsigned int*)(0x42300800UL))) +#define bM4_TMR61_DTUAR_DTUA1 (*((volatile unsigned int*)(0x42300804UL))) +#define bM4_TMR61_DTUAR_DTUA2 (*((volatile unsigned int*)(0x42300808UL))) +#define bM4_TMR61_DTUAR_DTUA3 (*((volatile unsigned int*)(0x4230080CUL))) +#define bM4_TMR61_DTUAR_DTUA4 (*((volatile unsigned int*)(0x42300810UL))) +#define bM4_TMR61_DTUAR_DTUA5 (*((volatile unsigned int*)(0x42300814UL))) +#define bM4_TMR61_DTUAR_DTUA6 (*((volatile unsigned int*)(0x42300818UL))) +#define bM4_TMR61_DTUAR_DTUA7 (*((volatile unsigned int*)(0x4230081CUL))) +#define bM4_TMR61_DTUAR_DTUA8 (*((volatile unsigned int*)(0x42300820UL))) +#define bM4_TMR61_DTUAR_DTUA9 (*((volatile unsigned int*)(0x42300824UL))) +#define bM4_TMR61_DTUAR_DTUA10 (*((volatile unsigned int*)(0x42300828UL))) +#define bM4_TMR61_DTUAR_DTUA11 (*((volatile unsigned int*)(0x4230082CUL))) +#define bM4_TMR61_DTUAR_DTUA12 (*((volatile unsigned int*)(0x42300830UL))) +#define bM4_TMR61_DTUAR_DTUA13 (*((volatile unsigned int*)(0x42300834UL))) +#define bM4_TMR61_DTUAR_DTUA14 (*((volatile unsigned int*)(0x42300838UL))) +#define bM4_TMR61_DTUAR_DTUA15 (*((volatile unsigned int*)(0x4230083CUL))) +#define bM4_TMR61_DTDAR_DTDA0 (*((volatile unsigned int*)(0x42300880UL))) +#define bM4_TMR61_DTDAR_DTDA1 (*((volatile unsigned int*)(0x42300884UL))) +#define bM4_TMR61_DTDAR_DTDA2 (*((volatile unsigned int*)(0x42300888UL))) +#define bM4_TMR61_DTDAR_DTDA3 (*((volatile unsigned int*)(0x4230088CUL))) +#define bM4_TMR61_DTDAR_DTDA4 (*((volatile unsigned int*)(0x42300890UL))) +#define bM4_TMR61_DTDAR_DTDA5 (*((volatile unsigned int*)(0x42300894UL))) +#define bM4_TMR61_DTDAR_DTDA6 (*((volatile unsigned int*)(0x42300898UL))) +#define bM4_TMR61_DTDAR_DTDA7 (*((volatile unsigned int*)(0x4230089CUL))) +#define bM4_TMR61_DTDAR_DTDA8 (*((volatile unsigned int*)(0x423008A0UL))) +#define bM4_TMR61_DTDAR_DTDA9 (*((volatile unsigned int*)(0x423008A4UL))) +#define bM4_TMR61_DTDAR_DTDA10 (*((volatile unsigned int*)(0x423008A8UL))) +#define bM4_TMR61_DTDAR_DTDA11 (*((volatile unsigned int*)(0x423008ACUL))) +#define bM4_TMR61_DTDAR_DTDA12 (*((volatile unsigned int*)(0x423008B0UL))) +#define bM4_TMR61_DTDAR_DTDA13 (*((volatile unsigned int*)(0x423008B4UL))) +#define bM4_TMR61_DTDAR_DTDA14 (*((volatile unsigned int*)(0x423008B8UL))) +#define bM4_TMR61_DTDAR_DTDA15 (*((volatile unsigned int*)(0x423008BCUL))) +#define bM4_TMR61_DTUBR_DTUB0 (*((volatile unsigned int*)(0x42300900UL))) +#define bM4_TMR61_DTUBR_DTUB1 (*((volatile unsigned int*)(0x42300904UL))) +#define bM4_TMR61_DTUBR_DTUB2 (*((volatile unsigned int*)(0x42300908UL))) +#define bM4_TMR61_DTUBR_DTUB3 (*((volatile unsigned int*)(0x4230090CUL))) +#define bM4_TMR61_DTUBR_DTUB4 (*((volatile unsigned int*)(0x42300910UL))) +#define bM4_TMR61_DTUBR_DTUB5 (*((volatile unsigned int*)(0x42300914UL))) +#define bM4_TMR61_DTUBR_DTUB6 (*((volatile unsigned int*)(0x42300918UL))) +#define bM4_TMR61_DTUBR_DTUB7 (*((volatile unsigned int*)(0x4230091CUL))) +#define bM4_TMR61_DTUBR_DTUB8 (*((volatile unsigned int*)(0x42300920UL))) +#define bM4_TMR61_DTUBR_DTUB9 (*((volatile unsigned int*)(0x42300924UL))) +#define bM4_TMR61_DTUBR_DTUB10 (*((volatile unsigned int*)(0x42300928UL))) +#define bM4_TMR61_DTUBR_DTUB11 (*((volatile unsigned int*)(0x4230092CUL))) +#define bM4_TMR61_DTUBR_DTUB12 (*((volatile unsigned int*)(0x42300930UL))) +#define bM4_TMR61_DTUBR_DTUB13 (*((volatile unsigned int*)(0x42300934UL))) +#define bM4_TMR61_DTUBR_DTUB14 (*((volatile unsigned int*)(0x42300938UL))) +#define bM4_TMR61_DTUBR_DTUB15 (*((volatile unsigned int*)(0x4230093CUL))) +#define bM4_TMR61_DTDBR_DTDB0 (*((volatile unsigned int*)(0x42300980UL))) +#define bM4_TMR61_DTDBR_DTDB1 (*((volatile unsigned int*)(0x42300984UL))) +#define bM4_TMR61_DTDBR_DTDB2 (*((volatile unsigned int*)(0x42300988UL))) +#define bM4_TMR61_DTDBR_DTDB3 (*((volatile unsigned int*)(0x4230098CUL))) +#define bM4_TMR61_DTDBR_DTDB4 (*((volatile unsigned int*)(0x42300990UL))) +#define bM4_TMR61_DTDBR_DTDB5 (*((volatile unsigned int*)(0x42300994UL))) +#define bM4_TMR61_DTDBR_DTDB6 (*((volatile unsigned int*)(0x42300998UL))) +#define bM4_TMR61_DTDBR_DTDB7 (*((volatile unsigned int*)(0x4230099CUL))) +#define bM4_TMR61_DTDBR_DTDB8 (*((volatile unsigned int*)(0x423009A0UL))) +#define bM4_TMR61_DTDBR_DTDB9 (*((volatile unsigned int*)(0x423009A4UL))) +#define bM4_TMR61_DTDBR_DTDB10 (*((volatile unsigned int*)(0x423009A8UL))) +#define bM4_TMR61_DTDBR_DTDB11 (*((volatile unsigned int*)(0x423009ACUL))) +#define bM4_TMR61_DTDBR_DTDB12 (*((volatile unsigned int*)(0x423009B0UL))) +#define bM4_TMR61_DTDBR_DTDB13 (*((volatile unsigned int*)(0x423009B4UL))) +#define bM4_TMR61_DTDBR_DTDB14 (*((volatile unsigned int*)(0x423009B8UL))) +#define bM4_TMR61_DTDBR_DTDB15 (*((volatile unsigned int*)(0x423009BCUL))) +#define bM4_TMR61_GCONR_START (*((volatile unsigned int*)(0x42300A00UL))) +#define bM4_TMR61_GCONR_MODE0 (*((volatile unsigned int*)(0x42300A04UL))) +#define bM4_TMR61_GCONR_MODE1 (*((volatile unsigned int*)(0x42300A08UL))) +#define bM4_TMR61_GCONR_MODE2 (*((volatile unsigned int*)(0x42300A0CUL))) +#define bM4_TMR61_GCONR_CKDIV0 (*((volatile unsigned int*)(0x42300A10UL))) +#define bM4_TMR61_GCONR_CKDIV1 (*((volatile unsigned int*)(0x42300A14UL))) +#define bM4_TMR61_GCONR_CKDIV2 (*((volatile unsigned int*)(0x42300A18UL))) +#define bM4_TMR61_GCONR_DIR (*((volatile unsigned int*)(0x42300A20UL))) +#define bM4_TMR61_GCONR_ZMSKREV (*((volatile unsigned int*)(0x42300A40UL))) +#define bM4_TMR61_GCONR_ZMSKPOS (*((volatile unsigned int*)(0x42300A44UL))) +#define bM4_TMR61_GCONR_ZMSKVAL0 (*((volatile unsigned int*)(0x42300A48UL))) +#define bM4_TMR61_GCONR_ZMSKVAL1 (*((volatile unsigned int*)(0x42300A4CUL))) +#define bM4_TMR61_ICONR_INTENA (*((volatile unsigned int*)(0x42300A80UL))) +#define bM4_TMR61_ICONR_INTENB (*((volatile unsigned int*)(0x42300A84UL))) +#define bM4_TMR61_ICONR_INTENC (*((volatile unsigned int*)(0x42300A88UL))) +#define bM4_TMR61_ICONR_INTEND (*((volatile unsigned int*)(0x42300A8CUL))) +#define bM4_TMR61_ICONR_INTENE (*((volatile unsigned int*)(0x42300A90UL))) +#define bM4_TMR61_ICONR_INTENF (*((volatile unsigned int*)(0x42300A94UL))) +#define bM4_TMR61_ICONR_INTENOVF (*((volatile unsigned int*)(0x42300A98UL))) +#define bM4_TMR61_ICONR_INTENUDF (*((volatile unsigned int*)(0x42300A9CUL))) +#define bM4_TMR61_ICONR_INTENDTE (*((volatile unsigned int*)(0x42300AA0UL))) +#define bM4_TMR61_ICONR_INTENSAU (*((volatile unsigned int*)(0x42300AC0UL))) +#define bM4_TMR61_ICONR_INTENSAD (*((volatile unsigned int*)(0x42300AC4UL))) +#define bM4_TMR61_ICONR_INTENSBU (*((volatile unsigned int*)(0x42300AC8UL))) +#define bM4_TMR61_ICONR_INTENSBD (*((volatile unsigned int*)(0x42300ACCUL))) +#define bM4_TMR61_PCONR_CAPMDA (*((volatile unsigned int*)(0x42300B00UL))) +#define bM4_TMR61_PCONR_STACA (*((volatile unsigned int*)(0x42300B04UL))) +#define bM4_TMR61_PCONR_STPCA (*((volatile unsigned int*)(0x42300B08UL))) +#define bM4_TMR61_PCONR_STASTPSA (*((volatile unsigned int*)(0x42300B0CUL))) +#define bM4_TMR61_PCONR_CMPCA0 (*((volatile unsigned int*)(0x42300B10UL))) +#define bM4_TMR61_PCONR_CMPCA1 (*((volatile unsigned int*)(0x42300B14UL))) +#define bM4_TMR61_PCONR_PERCA0 (*((volatile unsigned int*)(0x42300B18UL))) +#define bM4_TMR61_PCONR_PERCA1 (*((volatile unsigned int*)(0x42300B1CUL))) +#define bM4_TMR61_PCONR_OUTENA (*((volatile unsigned int*)(0x42300B20UL))) +#define bM4_TMR61_PCONR_EMBVALA0 (*((volatile unsigned int*)(0x42300B2CUL))) +#define bM4_TMR61_PCONR_EMBVALA1 (*((volatile unsigned int*)(0x42300B30UL))) +#define bM4_TMR61_PCONR_CAPMDB (*((volatile unsigned int*)(0x42300B40UL))) +#define bM4_TMR61_PCONR_STACB (*((volatile unsigned int*)(0x42300B44UL))) +#define bM4_TMR61_PCONR_STPCB (*((volatile unsigned int*)(0x42300B48UL))) +#define bM4_TMR61_PCONR_STASTPSB (*((volatile unsigned int*)(0x42300B4CUL))) +#define bM4_TMR61_PCONR_CMPCB0 (*((volatile unsigned int*)(0x42300B50UL))) +#define bM4_TMR61_PCONR_CMPCB1 (*((volatile unsigned int*)(0x42300B54UL))) +#define bM4_TMR61_PCONR_PERCB0 (*((volatile unsigned int*)(0x42300B58UL))) +#define bM4_TMR61_PCONR_PERCB1 (*((volatile unsigned int*)(0x42300B5CUL))) +#define bM4_TMR61_PCONR_OUTENB (*((volatile unsigned int*)(0x42300B60UL))) +#define bM4_TMR61_PCONR_EMBVALB0 (*((volatile unsigned int*)(0x42300B6CUL))) +#define bM4_TMR61_PCONR_EMBVALB1 (*((volatile unsigned int*)(0x42300B70UL))) +#define bM4_TMR61_BCONR_BENA (*((volatile unsigned int*)(0x42300B80UL))) +#define bM4_TMR61_BCONR_BSEA (*((volatile unsigned int*)(0x42300B84UL))) +#define bM4_TMR61_BCONR_BENB (*((volatile unsigned int*)(0x42300B88UL))) +#define bM4_TMR61_BCONR_BSEB (*((volatile unsigned int*)(0x42300B8CUL))) +#define bM4_TMR61_BCONR_BENP (*((volatile unsigned int*)(0x42300BA0UL))) +#define bM4_TMR61_BCONR_BSEP (*((volatile unsigned int*)(0x42300BA4UL))) +#define bM4_TMR61_BCONR_BENSPA (*((volatile unsigned int*)(0x42300BC0UL))) +#define bM4_TMR61_BCONR_BSESPA (*((volatile unsigned int*)(0x42300BC4UL))) +#define bM4_TMR61_BCONR_BTRSPA0 (*((volatile unsigned int*)(0x42300BD0UL))) +#define bM4_TMR61_BCONR_BTRSPA1 (*((volatile unsigned int*)(0x42300BD4UL))) +#define bM4_TMR61_BCONR_BENSPB (*((volatile unsigned int*)(0x42300BE0UL))) +#define bM4_TMR61_BCONR_BSESPB (*((volatile unsigned int*)(0x42300BE4UL))) +#define bM4_TMR61_BCONR_BTRSPB0 (*((volatile unsigned int*)(0x42300BF0UL))) +#define bM4_TMR61_BCONR_BTRSPB1 (*((volatile unsigned int*)(0x42300BF4UL))) +#define bM4_TMR61_DCONR_DTCEN (*((volatile unsigned int*)(0x42300C00UL))) +#define bM4_TMR61_DCONR_DTBENU (*((volatile unsigned int*)(0x42300C10UL))) +#define bM4_TMR61_DCONR_DTBEND (*((volatile unsigned int*)(0x42300C14UL))) +#define bM4_TMR61_DCONR_SEPA (*((volatile unsigned int*)(0x42300C20UL))) +#define bM4_TMR61_FCONR_NOFIENGA (*((volatile unsigned int*)(0x42300D00UL))) +#define bM4_TMR61_FCONR_NOFICKGA0 (*((volatile unsigned int*)(0x42300D04UL))) +#define bM4_TMR61_FCONR_NOFICKGA1 (*((volatile unsigned int*)(0x42300D08UL))) +#define bM4_TMR61_FCONR_NOFIENGB (*((volatile unsigned int*)(0x42300D10UL))) +#define bM4_TMR61_FCONR_NOFICKGB0 (*((volatile unsigned int*)(0x42300D14UL))) +#define bM4_TMR61_FCONR_NOFICKGB1 (*((volatile unsigned int*)(0x42300D18UL))) +#define bM4_TMR61_FCONR_NOFIENTA (*((volatile unsigned int*)(0x42300D40UL))) +#define bM4_TMR61_FCONR_NOFICKTA0 (*((volatile unsigned int*)(0x42300D44UL))) +#define bM4_TMR61_FCONR_NOFICKTA1 (*((volatile unsigned int*)(0x42300D48UL))) +#define bM4_TMR61_FCONR_NOFIENTB (*((volatile unsigned int*)(0x42300D50UL))) +#define bM4_TMR61_FCONR_NOFICKTB0 (*((volatile unsigned int*)(0x42300D54UL))) +#define bM4_TMR61_FCONR_NOFICKTB1 (*((volatile unsigned int*)(0x42300D58UL))) +#define bM4_TMR61_VPERR_SPPERIA (*((volatile unsigned int*)(0x42300DA0UL))) +#define bM4_TMR61_VPERR_SPPERIB (*((volatile unsigned int*)(0x42300DA4UL))) +#define bM4_TMR61_VPERR_PCNTE0 (*((volatile unsigned int*)(0x42300DC0UL))) +#define bM4_TMR61_VPERR_PCNTE1 (*((volatile unsigned int*)(0x42300DC4UL))) +#define bM4_TMR61_VPERR_PCNTS0 (*((volatile unsigned int*)(0x42300DC8UL))) +#define bM4_TMR61_VPERR_PCNTS1 (*((volatile unsigned int*)(0x42300DCCUL))) +#define bM4_TMR61_VPERR_PCNTS2 (*((volatile unsigned int*)(0x42300DD0UL))) +#define bM4_TMR61_STFLR_CMAF (*((volatile unsigned int*)(0x42300E00UL))) +#define bM4_TMR61_STFLR_CMBF (*((volatile unsigned int*)(0x42300E04UL))) +#define bM4_TMR61_STFLR_CMCF (*((volatile unsigned int*)(0x42300E08UL))) +#define bM4_TMR61_STFLR_CMDF (*((volatile unsigned int*)(0x42300E0CUL))) +#define bM4_TMR61_STFLR_CMEF (*((volatile unsigned int*)(0x42300E10UL))) +#define bM4_TMR61_STFLR_CMFF (*((volatile unsigned int*)(0x42300E14UL))) +#define bM4_TMR61_STFLR_OVFF (*((volatile unsigned int*)(0x42300E18UL))) +#define bM4_TMR61_STFLR_UDFF (*((volatile unsigned int*)(0x42300E1CUL))) +#define bM4_TMR61_STFLR_DTEF (*((volatile unsigned int*)(0x42300E20UL))) +#define bM4_TMR61_STFLR_CMSAUF (*((volatile unsigned int*)(0x42300E24UL))) +#define bM4_TMR61_STFLR_CMSADF (*((volatile unsigned int*)(0x42300E28UL))) +#define bM4_TMR61_STFLR_CMSBUF (*((volatile unsigned int*)(0x42300E2CUL))) +#define bM4_TMR61_STFLR_CMSBDF (*((volatile unsigned int*)(0x42300E30UL))) +#define bM4_TMR61_STFLR_VPERNUM0 (*((volatile unsigned int*)(0x42300E54UL))) +#define bM4_TMR61_STFLR_VPERNUM1 (*((volatile unsigned int*)(0x42300E58UL))) +#define bM4_TMR61_STFLR_VPERNUM2 (*((volatile unsigned int*)(0x42300E5CUL))) +#define bM4_TMR61_STFLR_DIRF (*((volatile unsigned int*)(0x42300E7CUL))) +#define bM4_TMR61_HSTAR_HSTA0 (*((volatile unsigned int*)(0x42300E80UL))) +#define bM4_TMR61_HSTAR_HSTA1 (*((volatile unsigned int*)(0x42300E84UL))) +#define bM4_TMR61_HSTAR_HSTA4 (*((volatile unsigned int*)(0x42300E90UL))) +#define bM4_TMR61_HSTAR_HSTA5 (*((volatile unsigned int*)(0x42300E94UL))) +#define bM4_TMR61_HSTAR_HSTA6 (*((volatile unsigned int*)(0x42300E98UL))) +#define bM4_TMR61_HSTAR_HSTA7 (*((volatile unsigned int*)(0x42300E9CUL))) +#define bM4_TMR61_HSTAR_HSTA8 (*((volatile unsigned int*)(0x42300EA0UL))) +#define bM4_TMR61_HSTAR_HSTA9 (*((volatile unsigned int*)(0x42300EA4UL))) +#define bM4_TMR61_HSTAR_HSTA10 (*((volatile unsigned int*)(0x42300EA8UL))) +#define bM4_TMR61_HSTAR_HSTA11 (*((volatile unsigned int*)(0x42300EACUL))) +#define bM4_TMR61_HSTAR_STARTS (*((volatile unsigned int*)(0x42300EFCUL))) +#define bM4_TMR61_HSTPR_HSTP0 (*((volatile unsigned int*)(0x42300F00UL))) +#define bM4_TMR61_HSTPR_HSTP1 (*((volatile unsigned int*)(0x42300F04UL))) +#define bM4_TMR61_HSTPR_HSTP4 (*((volatile unsigned int*)(0x42300F10UL))) +#define bM4_TMR61_HSTPR_HSTP5 (*((volatile unsigned int*)(0x42300F14UL))) +#define bM4_TMR61_HSTPR_HSTP6 (*((volatile unsigned int*)(0x42300F18UL))) +#define bM4_TMR61_HSTPR_HSTP7 (*((volatile unsigned int*)(0x42300F1CUL))) +#define bM4_TMR61_HSTPR_HSTP8 (*((volatile unsigned int*)(0x42300F20UL))) +#define bM4_TMR61_HSTPR_HSTP9 (*((volatile unsigned int*)(0x42300F24UL))) +#define bM4_TMR61_HSTPR_HSTP10 (*((volatile unsigned int*)(0x42300F28UL))) +#define bM4_TMR61_HSTPR_HSTP11 (*((volatile unsigned int*)(0x42300F2CUL))) +#define bM4_TMR61_HSTPR_STOPS (*((volatile unsigned int*)(0x42300F7CUL))) +#define bM4_TMR61_HCLRR_HCLE0 (*((volatile unsigned int*)(0x42300F80UL))) +#define bM4_TMR61_HCLRR_HCLE1 (*((volatile unsigned int*)(0x42300F84UL))) +#define bM4_TMR61_HCLRR_HCLE4 (*((volatile unsigned int*)(0x42300F90UL))) +#define bM4_TMR61_HCLRR_HCLE5 (*((volatile unsigned int*)(0x42300F94UL))) +#define bM4_TMR61_HCLRR_HCLE6 (*((volatile unsigned int*)(0x42300F98UL))) +#define bM4_TMR61_HCLRR_HCLE7 (*((volatile unsigned int*)(0x42300F9CUL))) +#define bM4_TMR61_HCLRR_HCLE8 (*((volatile unsigned int*)(0x42300FA0UL))) +#define bM4_TMR61_HCLRR_HCLE9 (*((volatile unsigned int*)(0x42300FA4UL))) +#define bM4_TMR61_HCLRR_HCLE10 (*((volatile unsigned int*)(0x42300FA8UL))) +#define bM4_TMR61_HCLRR_HCLE11 (*((volatile unsigned int*)(0x42300FACUL))) +#define bM4_TMR61_HCLRR_CLEARS (*((volatile unsigned int*)(0x42300FFCUL))) +#define bM4_TMR61_HCPAR_HCPA0 (*((volatile unsigned int*)(0x42301000UL))) +#define bM4_TMR61_HCPAR_HCPA1 (*((volatile unsigned int*)(0x42301004UL))) +#define bM4_TMR61_HCPAR_HCPA4 (*((volatile unsigned int*)(0x42301010UL))) +#define bM4_TMR61_HCPAR_HCPA5 (*((volatile unsigned int*)(0x42301014UL))) +#define bM4_TMR61_HCPAR_HCPA6 (*((volatile unsigned int*)(0x42301018UL))) +#define bM4_TMR61_HCPAR_HCPA7 (*((volatile unsigned int*)(0x4230101CUL))) +#define bM4_TMR61_HCPAR_HCPA8 (*((volatile unsigned int*)(0x42301020UL))) +#define bM4_TMR61_HCPAR_HCPA9 (*((volatile unsigned int*)(0x42301024UL))) +#define bM4_TMR61_HCPAR_HCPA10 (*((volatile unsigned int*)(0x42301028UL))) +#define bM4_TMR61_HCPAR_HCPA11 (*((volatile unsigned int*)(0x4230102CUL))) +#define bM4_TMR61_HCPBR_HCPB0 (*((volatile unsigned int*)(0x42301080UL))) +#define bM4_TMR61_HCPBR_HCPB1 (*((volatile unsigned int*)(0x42301084UL))) +#define bM4_TMR61_HCPBR_HCPB4 (*((volatile unsigned int*)(0x42301090UL))) +#define bM4_TMR61_HCPBR_HCPB5 (*((volatile unsigned int*)(0x42301094UL))) +#define bM4_TMR61_HCPBR_HCPB6 (*((volatile unsigned int*)(0x42301098UL))) +#define bM4_TMR61_HCPBR_HCPB7 (*((volatile unsigned int*)(0x4230109CUL))) +#define bM4_TMR61_HCPBR_HCPB8 (*((volatile unsigned int*)(0x423010A0UL))) +#define bM4_TMR61_HCPBR_HCPB9 (*((volatile unsigned int*)(0x423010A4UL))) +#define bM4_TMR61_HCPBR_HCPB10 (*((volatile unsigned int*)(0x423010A8UL))) +#define bM4_TMR61_HCPBR_HCPB11 (*((volatile unsigned int*)(0x423010ACUL))) +#define bM4_TMR61_HCUPR_HCUP0 (*((volatile unsigned int*)(0x42301100UL))) +#define bM4_TMR61_HCUPR_HCUP1 (*((volatile unsigned int*)(0x42301104UL))) +#define bM4_TMR61_HCUPR_HCUP2 (*((volatile unsigned int*)(0x42301108UL))) +#define bM4_TMR61_HCUPR_HCUP3 (*((volatile unsigned int*)(0x4230110CUL))) +#define bM4_TMR61_HCUPR_HCUP4 (*((volatile unsigned int*)(0x42301110UL))) +#define bM4_TMR61_HCUPR_HCUP5 (*((volatile unsigned int*)(0x42301114UL))) +#define bM4_TMR61_HCUPR_HCUP6 (*((volatile unsigned int*)(0x42301118UL))) +#define bM4_TMR61_HCUPR_HCUP7 (*((volatile unsigned int*)(0x4230111CUL))) +#define bM4_TMR61_HCUPR_HCUP8 (*((volatile unsigned int*)(0x42301120UL))) +#define bM4_TMR61_HCUPR_HCUP9 (*((volatile unsigned int*)(0x42301124UL))) +#define bM4_TMR61_HCUPR_HCUP10 (*((volatile unsigned int*)(0x42301128UL))) +#define bM4_TMR61_HCUPR_HCUP11 (*((volatile unsigned int*)(0x4230112CUL))) +#define bM4_TMR61_HCUPR_HCUP16 (*((volatile unsigned int*)(0x42301140UL))) +#define bM4_TMR61_HCUPR_HCUP17 (*((volatile unsigned int*)(0x42301144UL))) +#define bM4_TMR61_HCDOR_HCDO0 (*((volatile unsigned int*)(0x42301180UL))) +#define bM4_TMR61_HCDOR_HCDO1 (*((volatile unsigned int*)(0x42301184UL))) +#define bM4_TMR61_HCDOR_HCDO2 (*((volatile unsigned int*)(0x42301188UL))) +#define bM4_TMR61_HCDOR_HCDO3 (*((volatile unsigned int*)(0x4230118CUL))) +#define bM4_TMR61_HCDOR_HCDO4 (*((volatile unsigned int*)(0x42301190UL))) +#define bM4_TMR61_HCDOR_HCDO5 (*((volatile unsigned int*)(0x42301194UL))) +#define bM4_TMR61_HCDOR_HCDO6 (*((volatile unsigned int*)(0x42301198UL))) +#define bM4_TMR61_HCDOR_HCDO7 (*((volatile unsigned int*)(0x4230119CUL))) +#define bM4_TMR61_HCDOR_HCDO8 (*((volatile unsigned int*)(0x423011A0UL))) +#define bM4_TMR61_HCDOR_HCDO9 (*((volatile unsigned int*)(0x423011A4UL))) +#define bM4_TMR61_HCDOR_HCDO10 (*((volatile unsigned int*)(0x423011A8UL))) +#define bM4_TMR61_HCDOR_HCDO11 (*((volatile unsigned int*)(0x423011ACUL))) +#define bM4_TMR61_HCDOR_HCDO16 (*((volatile unsigned int*)(0x423011C0UL))) +#define bM4_TMR61_HCDOR_HCDO17 (*((volatile unsigned int*)(0x423011C4UL))) +#define bM4_TMR62_CNTER_CNT0 (*((volatile unsigned int*)(0x42308000UL))) +#define bM4_TMR62_CNTER_CNT1 (*((volatile unsigned int*)(0x42308004UL))) +#define bM4_TMR62_CNTER_CNT2 (*((volatile unsigned int*)(0x42308008UL))) +#define bM4_TMR62_CNTER_CNT3 (*((volatile unsigned int*)(0x4230800CUL))) +#define bM4_TMR62_CNTER_CNT4 (*((volatile unsigned int*)(0x42308010UL))) +#define bM4_TMR62_CNTER_CNT5 (*((volatile unsigned int*)(0x42308014UL))) +#define bM4_TMR62_CNTER_CNT6 (*((volatile unsigned int*)(0x42308018UL))) +#define bM4_TMR62_CNTER_CNT7 (*((volatile unsigned int*)(0x4230801CUL))) +#define bM4_TMR62_CNTER_CNT8 (*((volatile unsigned int*)(0x42308020UL))) +#define bM4_TMR62_CNTER_CNT9 (*((volatile unsigned int*)(0x42308024UL))) +#define bM4_TMR62_CNTER_CNT10 (*((volatile unsigned int*)(0x42308028UL))) +#define bM4_TMR62_CNTER_CNT11 (*((volatile unsigned int*)(0x4230802CUL))) +#define bM4_TMR62_CNTER_CNT12 (*((volatile unsigned int*)(0x42308030UL))) +#define bM4_TMR62_CNTER_CNT13 (*((volatile unsigned int*)(0x42308034UL))) +#define bM4_TMR62_CNTER_CNT14 (*((volatile unsigned int*)(0x42308038UL))) +#define bM4_TMR62_CNTER_CNT15 (*((volatile unsigned int*)(0x4230803CUL))) +#define bM4_TMR62_PERAR_PERA0 (*((volatile unsigned int*)(0x42308080UL))) +#define bM4_TMR62_PERAR_PERA1 (*((volatile unsigned int*)(0x42308084UL))) +#define bM4_TMR62_PERAR_PERA2 (*((volatile unsigned int*)(0x42308088UL))) +#define bM4_TMR62_PERAR_PERA3 (*((volatile unsigned int*)(0x4230808CUL))) +#define bM4_TMR62_PERAR_PERA4 (*((volatile unsigned int*)(0x42308090UL))) +#define bM4_TMR62_PERAR_PERA5 (*((volatile unsigned int*)(0x42308094UL))) +#define bM4_TMR62_PERAR_PERA6 (*((volatile unsigned int*)(0x42308098UL))) +#define bM4_TMR62_PERAR_PERA7 (*((volatile unsigned int*)(0x4230809CUL))) +#define bM4_TMR62_PERAR_PERA8 (*((volatile unsigned int*)(0x423080A0UL))) +#define bM4_TMR62_PERAR_PERA9 (*((volatile unsigned int*)(0x423080A4UL))) +#define bM4_TMR62_PERAR_PERA10 (*((volatile unsigned int*)(0x423080A8UL))) +#define bM4_TMR62_PERAR_PERA11 (*((volatile unsigned int*)(0x423080ACUL))) +#define bM4_TMR62_PERAR_PERA12 (*((volatile unsigned int*)(0x423080B0UL))) +#define bM4_TMR62_PERAR_PERA13 (*((volatile unsigned int*)(0x423080B4UL))) +#define bM4_TMR62_PERAR_PERA14 (*((volatile unsigned int*)(0x423080B8UL))) +#define bM4_TMR62_PERAR_PERA15 (*((volatile unsigned int*)(0x423080BCUL))) +#define bM4_TMR62_PERBR_PERB0 (*((volatile unsigned int*)(0x42308100UL))) +#define bM4_TMR62_PERBR_PERB1 (*((volatile unsigned int*)(0x42308104UL))) +#define bM4_TMR62_PERBR_PERB2 (*((volatile unsigned int*)(0x42308108UL))) +#define bM4_TMR62_PERBR_PERB3 (*((volatile unsigned int*)(0x4230810CUL))) +#define bM4_TMR62_PERBR_PERB4 (*((volatile unsigned int*)(0x42308110UL))) +#define bM4_TMR62_PERBR_PERB5 (*((volatile unsigned int*)(0x42308114UL))) +#define bM4_TMR62_PERBR_PERB6 (*((volatile unsigned int*)(0x42308118UL))) +#define bM4_TMR62_PERBR_PERB7 (*((volatile unsigned int*)(0x4230811CUL))) +#define bM4_TMR62_PERBR_PERB8 (*((volatile unsigned int*)(0x42308120UL))) +#define bM4_TMR62_PERBR_PERB9 (*((volatile unsigned int*)(0x42308124UL))) +#define bM4_TMR62_PERBR_PERB10 (*((volatile unsigned int*)(0x42308128UL))) +#define bM4_TMR62_PERBR_PERB11 (*((volatile unsigned int*)(0x4230812CUL))) +#define bM4_TMR62_PERBR_PERB12 (*((volatile unsigned int*)(0x42308130UL))) +#define bM4_TMR62_PERBR_PERB13 (*((volatile unsigned int*)(0x42308134UL))) +#define bM4_TMR62_PERBR_PERB14 (*((volatile unsigned int*)(0x42308138UL))) +#define bM4_TMR62_PERBR_PERB15 (*((volatile unsigned int*)(0x4230813CUL))) +#define bM4_TMR62_PERCR_PERC0 (*((volatile unsigned int*)(0x42308180UL))) +#define bM4_TMR62_PERCR_PERC1 (*((volatile unsigned int*)(0x42308184UL))) +#define bM4_TMR62_PERCR_PERC2 (*((volatile unsigned int*)(0x42308188UL))) +#define bM4_TMR62_PERCR_PERC3 (*((volatile unsigned int*)(0x4230818CUL))) +#define bM4_TMR62_PERCR_PERC4 (*((volatile unsigned int*)(0x42308190UL))) +#define bM4_TMR62_PERCR_PERC5 (*((volatile unsigned int*)(0x42308194UL))) +#define bM4_TMR62_PERCR_PERC6 (*((volatile unsigned int*)(0x42308198UL))) +#define bM4_TMR62_PERCR_PERC7 (*((volatile unsigned int*)(0x4230819CUL))) +#define bM4_TMR62_PERCR_PERC8 (*((volatile unsigned int*)(0x423081A0UL))) +#define bM4_TMR62_PERCR_PERC9 (*((volatile unsigned int*)(0x423081A4UL))) +#define bM4_TMR62_PERCR_PERC10 (*((volatile unsigned int*)(0x423081A8UL))) +#define bM4_TMR62_PERCR_PERC11 (*((volatile unsigned int*)(0x423081ACUL))) +#define bM4_TMR62_PERCR_PERC12 (*((volatile unsigned int*)(0x423081B0UL))) +#define bM4_TMR62_PERCR_PERC13 (*((volatile unsigned int*)(0x423081B4UL))) +#define bM4_TMR62_PERCR_PERC14 (*((volatile unsigned int*)(0x423081B8UL))) +#define bM4_TMR62_PERCR_PERC15 (*((volatile unsigned int*)(0x423081BCUL))) +#define bM4_TMR62_GCMAR_GCMA0 (*((volatile unsigned int*)(0x42308200UL))) +#define bM4_TMR62_GCMAR_GCMA1 (*((volatile unsigned int*)(0x42308204UL))) +#define bM4_TMR62_GCMAR_GCMA2 (*((volatile unsigned int*)(0x42308208UL))) +#define bM4_TMR62_GCMAR_GCMA3 (*((volatile unsigned int*)(0x4230820CUL))) +#define bM4_TMR62_GCMAR_GCMA4 (*((volatile unsigned int*)(0x42308210UL))) +#define bM4_TMR62_GCMAR_GCMA5 (*((volatile unsigned int*)(0x42308214UL))) +#define bM4_TMR62_GCMAR_GCMA6 (*((volatile unsigned int*)(0x42308218UL))) +#define bM4_TMR62_GCMAR_GCMA7 (*((volatile unsigned int*)(0x4230821CUL))) +#define bM4_TMR62_GCMAR_GCMA8 (*((volatile unsigned int*)(0x42308220UL))) +#define bM4_TMR62_GCMAR_GCMA9 (*((volatile unsigned int*)(0x42308224UL))) +#define bM4_TMR62_GCMAR_GCMA10 (*((volatile unsigned int*)(0x42308228UL))) +#define bM4_TMR62_GCMAR_GCMA11 (*((volatile unsigned int*)(0x4230822CUL))) +#define bM4_TMR62_GCMAR_GCMA12 (*((volatile unsigned int*)(0x42308230UL))) +#define bM4_TMR62_GCMAR_GCMA13 (*((volatile unsigned int*)(0x42308234UL))) +#define bM4_TMR62_GCMAR_GCMA14 (*((volatile unsigned int*)(0x42308238UL))) +#define bM4_TMR62_GCMAR_GCMA15 (*((volatile unsigned int*)(0x4230823CUL))) +#define bM4_TMR62_GCMBR_GCMB0 (*((volatile unsigned int*)(0x42308280UL))) +#define bM4_TMR62_GCMBR_GCMB1 (*((volatile unsigned int*)(0x42308284UL))) +#define bM4_TMR62_GCMBR_GCMB2 (*((volatile unsigned int*)(0x42308288UL))) +#define bM4_TMR62_GCMBR_GCMB3 (*((volatile unsigned int*)(0x4230828CUL))) +#define bM4_TMR62_GCMBR_GCMB4 (*((volatile unsigned int*)(0x42308290UL))) +#define bM4_TMR62_GCMBR_GCMB5 (*((volatile unsigned int*)(0x42308294UL))) +#define bM4_TMR62_GCMBR_GCMB6 (*((volatile unsigned int*)(0x42308298UL))) +#define bM4_TMR62_GCMBR_GCMB7 (*((volatile unsigned int*)(0x4230829CUL))) +#define bM4_TMR62_GCMBR_GCMB8 (*((volatile unsigned int*)(0x423082A0UL))) +#define bM4_TMR62_GCMBR_GCMB9 (*((volatile unsigned int*)(0x423082A4UL))) +#define bM4_TMR62_GCMBR_GCMB10 (*((volatile unsigned int*)(0x423082A8UL))) +#define bM4_TMR62_GCMBR_GCMB11 (*((volatile unsigned int*)(0x423082ACUL))) +#define bM4_TMR62_GCMBR_GCMB12 (*((volatile unsigned int*)(0x423082B0UL))) +#define bM4_TMR62_GCMBR_GCMB13 (*((volatile unsigned int*)(0x423082B4UL))) +#define bM4_TMR62_GCMBR_GCMB14 (*((volatile unsigned int*)(0x423082B8UL))) +#define bM4_TMR62_GCMBR_GCMB15 (*((volatile unsigned int*)(0x423082BCUL))) +#define bM4_TMR62_GCMCR_GCMC0 (*((volatile unsigned int*)(0x42308300UL))) +#define bM4_TMR62_GCMCR_GCMC1 (*((volatile unsigned int*)(0x42308304UL))) +#define bM4_TMR62_GCMCR_GCMC2 (*((volatile unsigned int*)(0x42308308UL))) +#define bM4_TMR62_GCMCR_GCMC3 (*((volatile unsigned int*)(0x4230830CUL))) +#define bM4_TMR62_GCMCR_GCMC4 (*((volatile unsigned int*)(0x42308310UL))) +#define bM4_TMR62_GCMCR_GCMC5 (*((volatile unsigned int*)(0x42308314UL))) +#define bM4_TMR62_GCMCR_GCMC6 (*((volatile unsigned int*)(0x42308318UL))) +#define bM4_TMR62_GCMCR_GCMC7 (*((volatile unsigned int*)(0x4230831CUL))) +#define bM4_TMR62_GCMCR_GCMC8 (*((volatile unsigned int*)(0x42308320UL))) +#define bM4_TMR62_GCMCR_GCMC9 (*((volatile unsigned int*)(0x42308324UL))) +#define bM4_TMR62_GCMCR_GCMC10 (*((volatile unsigned int*)(0x42308328UL))) +#define bM4_TMR62_GCMCR_GCMC11 (*((volatile unsigned int*)(0x4230832CUL))) +#define bM4_TMR62_GCMCR_GCMC12 (*((volatile unsigned int*)(0x42308330UL))) +#define bM4_TMR62_GCMCR_GCMC13 (*((volatile unsigned int*)(0x42308334UL))) +#define bM4_TMR62_GCMCR_GCMC14 (*((volatile unsigned int*)(0x42308338UL))) +#define bM4_TMR62_GCMCR_GCMC15 (*((volatile unsigned int*)(0x4230833CUL))) +#define bM4_TMR62_GCMDR_GCMD0 (*((volatile unsigned int*)(0x42308380UL))) +#define bM4_TMR62_GCMDR_GCMD1 (*((volatile unsigned int*)(0x42308384UL))) +#define bM4_TMR62_GCMDR_GCMD2 (*((volatile unsigned int*)(0x42308388UL))) +#define bM4_TMR62_GCMDR_GCMD3 (*((volatile unsigned int*)(0x4230838CUL))) +#define bM4_TMR62_GCMDR_GCMD4 (*((volatile unsigned int*)(0x42308390UL))) +#define bM4_TMR62_GCMDR_GCMD5 (*((volatile unsigned int*)(0x42308394UL))) +#define bM4_TMR62_GCMDR_GCMD6 (*((volatile unsigned int*)(0x42308398UL))) +#define bM4_TMR62_GCMDR_GCMD7 (*((volatile unsigned int*)(0x4230839CUL))) +#define bM4_TMR62_GCMDR_GCMD8 (*((volatile unsigned int*)(0x423083A0UL))) +#define bM4_TMR62_GCMDR_GCMD9 (*((volatile unsigned int*)(0x423083A4UL))) +#define bM4_TMR62_GCMDR_GCMD10 (*((volatile unsigned int*)(0x423083A8UL))) +#define bM4_TMR62_GCMDR_GCMD11 (*((volatile unsigned int*)(0x423083ACUL))) +#define bM4_TMR62_GCMDR_GCMD12 (*((volatile unsigned int*)(0x423083B0UL))) +#define bM4_TMR62_GCMDR_GCMD13 (*((volatile unsigned int*)(0x423083B4UL))) +#define bM4_TMR62_GCMDR_GCMD14 (*((volatile unsigned int*)(0x423083B8UL))) +#define bM4_TMR62_GCMDR_GCMD15 (*((volatile unsigned int*)(0x423083BCUL))) +#define bM4_TMR62_GCMER_GCME0 (*((volatile unsigned int*)(0x42308400UL))) +#define bM4_TMR62_GCMER_GCME1 (*((volatile unsigned int*)(0x42308404UL))) +#define bM4_TMR62_GCMER_GCME2 (*((volatile unsigned int*)(0x42308408UL))) +#define bM4_TMR62_GCMER_GCME3 (*((volatile unsigned int*)(0x4230840CUL))) +#define bM4_TMR62_GCMER_GCME4 (*((volatile unsigned int*)(0x42308410UL))) +#define bM4_TMR62_GCMER_GCME5 (*((volatile unsigned int*)(0x42308414UL))) +#define bM4_TMR62_GCMER_GCME6 (*((volatile unsigned int*)(0x42308418UL))) +#define bM4_TMR62_GCMER_GCME7 (*((volatile unsigned int*)(0x4230841CUL))) +#define bM4_TMR62_GCMER_GCME8 (*((volatile unsigned int*)(0x42308420UL))) +#define bM4_TMR62_GCMER_GCME9 (*((volatile unsigned int*)(0x42308424UL))) +#define bM4_TMR62_GCMER_GCME10 (*((volatile unsigned int*)(0x42308428UL))) +#define bM4_TMR62_GCMER_GCME11 (*((volatile unsigned int*)(0x4230842CUL))) +#define bM4_TMR62_GCMER_GCME12 (*((volatile unsigned int*)(0x42308430UL))) +#define bM4_TMR62_GCMER_GCME13 (*((volatile unsigned int*)(0x42308434UL))) +#define bM4_TMR62_GCMER_GCME14 (*((volatile unsigned int*)(0x42308438UL))) +#define bM4_TMR62_GCMER_GCME15 (*((volatile unsigned int*)(0x4230843CUL))) +#define bM4_TMR62_GCMFR_GCMF0 (*((volatile unsigned int*)(0x42308480UL))) +#define bM4_TMR62_GCMFR_GCMF1 (*((volatile unsigned int*)(0x42308484UL))) +#define bM4_TMR62_GCMFR_GCMF2 (*((volatile unsigned int*)(0x42308488UL))) +#define bM4_TMR62_GCMFR_GCMF3 (*((volatile unsigned int*)(0x4230848CUL))) +#define bM4_TMR62_GCMFR_GCMF4 (*((volatile unsigned int*)(0x42308490UL))) +#define bM4_TMR62_GCMFR_GCMF5 (*((volatile unsigned int*)(0x42308494UL))) +#define bM4_TMR62_GCMFR_GCMF6 (*((volatile unsigned int*)(0x42308498UL))) +#define bM4_TMR62_GCMFR_GCMF7 (*((volatile unsigned int*)(0x4230849CUL))) +#define bM4_TMR62_GCMFR_GCMF8 (*((volatile unsigned int*)(0x423084A0UL))) +#define bM4_TMR62_GCMFR_GCMF9 (*((volatile unsigned int*)(0x423084A4UL))) +#define bM4_TMR62_GCMFR_GCMF10 (*((volatile unsigned int*)(0x423084A8UL))) +#define bM4_TMR62_GCMFR_GCMF11 (*((volatile unsigned int*)(0x423084ACUL))) +#define bM4_TMR62_GCMFR_GCMF12 (*((volatile unsigned int*)(0x423084B0UL))) +#define bM4_TMR62_GCMFR_GCMF13 (*((volatile unsigned int*)(0x423084B4UL))) +#define bM4_TMR62_GCMFR_GCMF14 (*((volatile unsigned int*)(0x423084B8UL))) +#define bM4_TMR62_GCMFR_GCMF15 (*((volatile unsigned int*)(0x423084BCUL))) +#define bM4_TMR62_SCMAR_SCMA0 (*((volatile unsigned int*)(0x42308500UL))) +#define bM4_TMR62_SCMAR_SCMA1 (*((volatile unsigned int*)(0x42308504UL))) +#define bM4_TMR62_SCMAR_SCMA2 (*((volatile unsigned int*)(0x42308508UL))) +#define bM4_TMR62_SCMAR_SCMA3 (*((volatile unsigned int*)(0x4230850CUL))) +#define bM4_TMR62_SCMAR_SCMA4 (*((volatile unsigned int*)(0x42308510UL))) +#define bM4_TMR62_SCMAR_SCMA5 (*((volatile unsigned int*)(0x42308514UL))) +#define bM4_TMR62_SCMAR_SCMA6 (*((volatile unsigned int*)(0x42308518UL))) +#define bM4_TMR62_SCMAR_SCMA7 (*((volatile unsigned int*)(0x4230851CUL))) +#define bM4_TMR62_SCMAR_SCMA8 (*((volatile unsigned int*)(0x42308520UL))) +#define bM4_TMR62_SCMAR_SCMA9 (*((volatile unsigned int*)(0x42308524UL))) +#define bM4_TMR62_SCMAR_SCMA10 (*((volatile unsigned int*)(0x42308528UL))) +#define bM4_TMR62_SCMAR_SCMA11 (*((volatile unsigned int*)(0x4230852CUL))) +#define bM4_TMR62_SCMAR_SCMA12 (*((volatile unsigned int*)(0x42308530UL))) +#define bM4_TMR62_SCMAR_SCMA13 (*((volatile unsigned int*)(0x42308534UL))) +#define bM4_TMR62_SCMAR_SCMA14 (*((volatile unsigned int*)(0x42308538UL))) +#define bM4_TMR62_SCMAR_SCMA15 (*((volatile unsigned int*)(0x4230853CUL))) +#define bM4_TMR62_SCMBR_SCMB0 (*((volatile unsigned int*)(0x42308580UL))) +#define bM4_TMR62_SCMBR_SCMB1 (*((volatile unsigned int*)(0x42308584UL))) +#define bM4_TMR62_SCMBR_SCMB2 (*((volatile unsigned int*)(0x42308588UL))) +#define bM4_TMR62_SCMBR_SCMB3 (*((volatile unsigned int*)(0x4230858CUL))) +#define bM4_TMR62_SCMBR_SCMB4 (*((volatile unsigned int*)(0x42308590UL))) +#define bM4_TMR62_SCMBR_SCMB5 (*((volatile unsigned int*)(0x42308594UL))) +#define bM4_TMR62_SCMBR_SCMB6 (*((volatile unsigned int*)(0x42308598UL))) +#define bM4_TMR62_SCMBR_SCMB7 (*((volatile unsigned int*)(0x4230859CUL))) +#define bM4_TMR62_SCMBR_SCMB8 (*((volatile unsigned int*)(0x423085A0UL))) +#define bM4_TMR62_SCMBR_SCMB9 (*((volatile unsigned int*)(0x423085A4UL))) +#define bM4_TMR62_SCMBR_SCMB10 (*((volatile unsigned int*)(0x423085A8UL))) +#define bM4_TMR62_SCMBR_SCMB11 (*((volatile unsigned int*)(0x423085ACUL))) +#define bM4_TMR62_SCMBR_SCMB12 (*((volatile unsigned int*)(0x423085B0UL))) +#define bM4_TMR62_SCMBR_SCMB13 (*((volatile unsigned int*)(0x423085B4UL))) +#define bM4_TMR62_SCMBR_SCMB14 (*((volatile unsigned int*)(0x423085B8UL))) +#define bM4_TMR62_SCMBR_SCMB15 (*((volatile unsigned int*)(0x423085BCUL))) +#define bM4_TMR62_SCMCR_SCMC0 (*((volatile unsigned int*)(0x42308600UL))) +#define bM4_TMR62_SCMCR_SCMC1 (*((volatile unsigned int*)(0x42308604UL))) +#define bM4_TMR62_SCMCR_SCMC2 (*((volatile unsigned int*)(0x42308608UL))) +#define bM4_TMR62_SCMCR_SCMC3 (*((volatile unsigned int*)(0x4230860CUL))) +#define bM4_TMR62_SCMCR_SCMC4 (*((volatile unsigned int*)(0x42308610UL))) +#define bM4_TMR62_SCMCR_SCMC5 (*((volatile unsigned int*)(0x42308614UL))) +#define bM4_TMR62_SCMCR_SCMC6 (*((volatile unsigned int*)(0x42308618UL))) +#define bM4_TMR62_SCMCR_SCMC7 (*((volatile unsigned int*)(0x4230861CUL))) +#define bM4_TMR62_SCMCR_SCMC8 (*((volatile unsigned int*)(0x42308620UL))) +#define bM4_TMR62_SCMCR_SCMC9 (*((volatile unsigned int*)(0x42308624UL))) +#define bM4_TMR62_SCMCR_SCMC10 (*((volatile unsigned int*)(0x42308628UL))) +#define bM4_TMR62_SCMCR_SCMC11 (*((volatile unsigned int*)(0x4230862CUL))) +#define bM4_TMR62_SCMCR_SCMC12 (*((volatile unsigned int*)(0x42308630UL))) +#define bM4_TMR62_SCMCR_SCMC13 (*((volatile unsigned int*)(0x42308634UL))) +#define bM4_TMR62_SCMCR_SCMC14 (*((volatile unsigned int*)(0x42308638UL))) +#define bM4_TMR62_SCMCR_SCMC15 (*((volatile unsigned int*)(0x4230863CUL))) +#define bM4_TMR62_SCMDR_SCMD0 (*((volatile unsigned int*)(0x42308680UL))) +#define bM4_TMR62_SCMDR_SCMD1 (*((volatile unsigned int*)(0x42308684UL))) +#define bM4_TMR62_SCMDR_SCMD2 (*((volatile unsigned int*)(0x42308688UL))) +#define bM4_TMR62_SCMDR_SCMD3 (*((volatile unsigned int*)(0x4230868CUL))) +#define bM4_TMR62_SCMDR_SCMD4 (*((volatile unsigned int*)(0x42308690UL))) +#define bM4_TMR62_SCMDR_SCMD5 (*((volatile unsigned int*)(0x42308694UL))) +#define bM4_TMR62_SCMDR_SCMD6 (*((volatile unsigned int*)(0x42308698UL))) +#define bM4_TMR62_SCMDR_SCMD7 (*((volatile unsigned int*)(0x4230869CUL))) +#define bM4_TMR62_SCMDR_SCMD8 (*((volatile unsigned int*)(0x423086A0UL))) +#define bM4_TMR62_SCMDR_SCMD9 (*((volatile unsigned int*)(0x423086A4UL))) +#define bM4_TMR62_SCMDR_SCMD10 (*((volatile unsigned int*)(0x423086A8UL))) +#define bM4_TMR62_SCMDR_SCMD11 (*((volatile unsigned int*)(0x423086ACUL))) +#define bM4_TMR62_SCMDR_SCMD12 (*((volatile unsigned int*)(0x423086B0UL))) +#define bM4_TMR62_SCMDR_SCMD13 (*((volatile unsigned int*)(0x423086B4UL))) +#define bM4_TMR62_SCMDR_SCMD14 (*((volatile unsigned int*)(0x423086B8UL))) +#define bM4_TMR62_SCMDR_SCMD15 (*((volatile unsigned int*)(0x423086BCUL))) +#define bM4_TMR62_SCMER_SCME0 (*((volatile unsigned int*)(0x42308700UL))) +#define bM4_TMR62_SCMER_SCME1 (*((volatile unsigned int*)(0x42308704UL))) +#define bM4_TMR62_SCMER_SCME2 (*((volatile unsigned int*)(0x42308708UL))) +#define bM4_TMR62_SCMER_SCME3 (*((volatile unsigned int*)(0x4230870CUL))) +#define bM4_TMR62_SCMER_SCME4 (*((volatile unsigned int*)(0x42308710UL))) +#define bM4_TMR62_SCMER_SCME5 (*((volatile unsigned int*)(0x42308714UL))) +#define bM4_TMR62_SCMER_SCME6 (*((volatile unsigned int*)(0x42308718UL))) +#define bM4_TMR62_SCMER_SCME7 (*((volatile unsigned int*)(0x4230871CUL))) +#define bM4_TMR62_SCMER_SCME8 (*((volatile unsigned int*)(0x42308720UL))) +#define bM4_TMR62_SCMER_SCME9 (*((volatile unsigned int*)(0x42308724UL))) +#define bM4_TMR62_SCMER_SCME10 (*((volatile unsigned int*)(0x42308728UL))) +#define bM4_TMR62_SCMER_SCME11 (*((volatile unsigned int*)(0x4230872CUL))) +#define bM4_TMR62_SCMER_SCME12 (*((volatile unsigned int*)(0x42308730UL))) +#define bM4_TMR62_SCMER_SCME13 (*((volatile unsigned int*)(0x42308734UL))) +#define bM4_TMR62_SCMER_SCME14 (*((volatile unsigned int*)(0x42308738UL))) +#define bM4_TMR62_SCMER_SCME15 (*((volatile unsigned int*)(0x4230873CUL))) +#define bM4_TMR62_SCMFR_SCMF0 (*((volatile unsigned int*)(0x42308780UL))) +#define bM4_TMR62_SCMFR_SCMF1 (*((volatile unsigned int*)(0x42308784UL))) +#define bM4_TMR62_SCMFR_SCMF2 (*((volatile unsigned int*)(0x42308788UL))) +#define bM4_TMR62_SCMFR_SCMF3 (*((volatile unsigned int*)(0x4230878CUL))) +#define bM4_TMR62_SCMFR_SCMF4 (*((volatile unsigned int*)(0x42308790UL))) +#define bM4_TMR62_SCMFR_SCMF5 (*((volatile unsigned int*)(0x42308794UL))) +#define bM4_TMR62_SCMFR_SCMF6 (*((volatile unsigned int*)(0x42308798UL))) +#define bM4_TMR62_SCMFR_SCMF7 (*((volatile unsigned int*)(0x4230879CUL))) +#define bM4_TMR62_SCMFR_SCMF8 (*((volatile unsigned int*)(0x423087A0UL))) +#define bM4_TMR62_SCMFR_SCMF9 (*((volatile unsigned int*)(0x423087A4UL))) +#define bM4_TMR62_SCMFR_SCMF10 (*((volatile unsigned int*)(0x423087A8UL))) +#define bM4_TMR62_SCMFR_SCMF11 (*((volatile unsigned int*)(0x423087ACUL))) +#define bM4_TMR62_SCMFR_SCMF12 (*((volatile unsigned int*)(0x423087B0UL))) +#define bM4_TMR62_SCMFR_SCMF13 (*((volatile unsigned int*)(0x423087B4UL))) +#define bM4_TMR62_SCMFR_SCMF14 (*((volatile unsigned int*)(0x423087B8UL))) +#define bM4_TMR62_SCMFR_SCMF15 (*((volatile unsigned int*)(0x423087BCUL))) +#define bM4_TMR62_DTUAR_DTUA0 (*((volatile unsigned int*)(0x42308800UL))) +#define bM4_TMR62_DTUAR_DTUA1 (*((volatile unsigned int*)(0x42308804UL))) +#define bM4_TMR62_DTUAR_DTUA2 (*((volatile unsigned int*)(0x42308808UL))) +#define bM4_TMR62_DTUAR_DTUA3 (*((volatile unsigned int*)(0x4230880CUL))) +#define bM4_TMR62_DTUAR_DTUA4 (*((volatile unsigned int*)(0x42308810UL))) +#define bM4_TMR62_DTUAR_DTUA5 (*((volatile unsigned int*)(0x42308814UL))) +#define bM4_TMR62_DTUAR_DTUA6 (*((volatile unsigned int*)(0x42308818UL))) +#define bM4_TMR62_DTUAR_DTUA7 (*((volatile unsigned int*)(0x4230881CUL))) +#define bM4_TMR62_DTUAR_DTUA8 (*((volatile unsigned int*)(0x42308820UL))) +#define bM4_TMR62_DTUAR_DTUA9 (*((volatile unsigned int*)(0x42308824UL))) +#define bM4_TMR62_DTUAR_DTUA10 (*((volatile unsigned int*)(0x42308828UL))) +#define bM4_TMR62_DTUAR_DTUA11 (*((volatile unsigned int*)(0x4230882CUL))) +#define bM4_TMR62_DTUAR_DTUA12 (*((volatile unsigned int*)(0x42308830UL))) +#define bM4_TMR62_DTUAR_DTUA13 (*((volatile unsigned int*)(0x42308834UL))) +#define bM4_TMR62_DTUAR_DTUA14 (*((volatile unsigned int*)(0x42308838UL))) +#define bM4_TMR62_DTUAR_DTUA15 (*((volatile unsigned int*)(0x4230883CUL))) +#define bM4_TMR62_DTDAR_DTDA0 (*((volatile unsigned int*)(0x42308880UL))) +#define bM4_TMR62_DTDAR_DTDA1 (*((volatile unsigned int*)(0x42308884UL))) +#define bM4_TMR62_DTDAR_DTDA2 (*((volatile unsigned int*)(0x42308888UL))) +#define bM4_TMR62_DTDAR_DTDA3 (*((volatile unsigned int*)(0x4230888CUL))) +#define bM4_TMR62_DTDAR_DTDA4 (*((volatile unsigned int*)(0x42308890UL))) +#define bM4_TMR62_DTDAR_DTDA5 (*((volatile unsigned int*)(0x42308894UL))) +#define bM4_TMR62_DTDAR_DTDA6 (*((volatile unsigned int*)(0x42308898UL))) +#define bM4_TMR62_DTDAR_DTDA7 (*((volatile unsigned int*)(0x4230889CUL))) +#define bM4_TMR62_DTDAR_DTDA8 (*((volatile unsigned int*)(0x423088A0UL))) +#define bM4_TMR62_DTDAR_DTDA9 (*((volatile unsigned int*)(0x423088A4UL))) +#define bM4_TMR62_DTDAR_DTDA10 (*((volatile unsigned int*)(0x423088A8UL))) +#define bM4_TMR62_DTDAR_DTDA11 (*((volatile unsigned int*)(0x423088ACUL))) +#define bM4_TMR62_DTDAR_DTDA12 (*((volatile unsigned int*)(0x423088B0UL))) +#define bM4_TMR62_DTDAR_DTDA13 (*((volatile unsigned int*)(0x423088B4UL))) +#define bM4_TMR62_DTDAR_DTDA14 (*((volatile unsigned int*)(0x423088B8UL))) +#define bM4_TMR62_DTDAR_DTDA15 (*((volatile unsigned int*)(0x423088BCUL))) +#define bM4_TMR62_DTUBR_DTUB0 (*((volatile unsigned int*)(0x42308900UL))) +#define bM4_TMR62_DTUBR_DTUB1 (*((volatile unsigned int*)(0x42308904UL))) +#define bM4_TMR62_DTUBR_DTUB2 (*((volatile unsigned int*)(0x42308908UL))) +#define bM4_TMR62_DTUBR_DTUB3 (*((volatile unsigned int*)(0x4230890CUL))) +#define bM4_TMR62_DTUBR_DTUB4 (*((volatile unsigned int*)(0x42308910UL))) +#define bM4_TMR62_DTUBR_DTUB5 (*((volatile unsigned int*)(0x42308914UL))) +#define bM4_TMR62_DTUBR_DTUB6 (*((volatile unsigned int*)(0x42308918UL))) +#define bM4_TMR62_DTUBR_DTUB7 (*((volatile unsigned int*)(0x4230891CUL))) +#define bM4_TMR62_DTUBR_DTUB8 (*((volatile unsigned int*)(0x42308920UL))) +#define bM4_TMR62_DTUBR_DTUB9 (*((volatile unsigned int*)(0x42308924UL))) +#define bM4_TMR62_DTUBR_DTUB10 (*((volatile unsigned int*)(0x42308928UL))) +#define bM4_TMR62_DTUBR_DTUB11 (*((volatile unsigned int*)(0x4230892CUL))) +#define bM4_TMR62_DTUBR_DTUB12 (*((volatile unsigned int*)(0x42308930UL))) +#define bM4_TMR62_DTUBR_DTUB13 (*((volatile unsigned int*)(0x42308934UL))) +#define bM4_TMR62_DTUBR_DTUB14 (*((volatile unsigned int*)(0x42308938UL))) +#define bM4_TMR62_DTUBR_DTUB15 (*((volatile unsigned int*)(0x4230893CUL))) +#define bM4_TMR62_DTDBR_DTDB0 (*((volatile unsigned int*)(0x42308980UL))) +#define bM4_TMR62_DTDBR_DTDB1 (*((volatile unsigned int*)(0x42308984UL))) +#define bM4_TMR62_DTDBR_DTDB2 (*((volatile unsigned int*)(0x42308988UL))) +#define bM4_TMR62_DTDBR_DTDB3 (*((volatile unsigned int*)(0x4230898CUL))) +#define bM4_TMR62_DTDBR_DTDB4 (*((volatile unsigned int*)(0x42308990UL))) +#define bM4_TMR62_DTDBR_DTDB5 (*((volatile unsigned int*)(0x42308994UL))) +#define bM4_TMR62_DTDBR_DTDB6 (*((volatile unsigned int*)(0x42308998UL))) +#define bM4_TMR62_DTDBR_DTDB7 (*((volatile unsigned int*)(0x4230899CUL))) +#define bM4_TMR62_DTDBR_DTDB8 (*((volatile unsigned int*)(0x423089A0UL))) +#define bM4_TMR62_DTDBR_DTDB9 (*((volatile unsigned int*)(0x423089A4UL))) +#define bM4_TMR62_DTDBR_DTDB10 (*((volatile unsigned int*)(0x423089A8UL))) +#define bM4_TMR62_DTDBR_DTDB11 (*((volatile unsigned int*)(0x423089ACUL))) +#define bM4_TMR62_DTDBR_DTDB12 (*((volatile unsigned int*)(0x423089B0UL))) +#define bM4_TMR62_DTDBR_DTDB13 (*((volatile unsigned int*)(0x423089B4UL))) +#define bM4_TMR62_DTDBR_DTDB14 (*((volatile unsigned int*)(0x423089B8UL))) +#define bM4_TMR62_DTDBR_DTDB15 (*((volatile unsigned int*)(0x423089BCUL))) +#define bM4_TMR62_GCONR_START (*((volatile unsigned int*)(0x42308A00UL))) +#define bM4_TMR62_GCONR_MODE0 (*((volatile unsigned int*)(0x42308A04UL))) +#define bM4_TMR62_GCONR_MODE1 (*((volatile unsigned int*)(0x42308A08UL))) +#define bM4_TMR62_GCONR_MODE2 (*((volatile unsigned int*)(0x42308A0CUL))) +#define bM4_TMR62_GCONR_CKDIV0 (*((volatile unsigned int*)(0x42308A10UL))) +#define bM4_TMR62_GCONR_CKDIV1 (*((volatile unsigned int*)(0x42308A14UL))) +#define bM4_TMR62_GCONR_CKDIV2 (*((volatile unsigned int*)(0x42308A18UL))) +#define bM4_TMR62_GCONR_DIR (*((volatile unsigned int*)(0x42308A20UL))) +#define bM4_TMR62_GCONR_ZMSKREV (*((volatile unsigned int*)(0x42308A40UL))) +#define bM4_TMR62_GCONR_ZMSKPOS (*((volatile unsigned int*)(0x42308A44UL))) +#define bM4_TMR62_GCONR_ZMSKVAL0 (*((volatile unsigned int*)(0x42308A48UL))) +#define bM4_TMR62_GCONR_ZMSKVAL1 (*((volatile unsigned int*)(0x42308A4CUL))) +#define bM4_TMR62_ICONR_INTENA (*((volatile unsigned int*)(0x42308A80UL))) +#define bM4_TMR62_ICONR_INTENB (*((volatile unsigned int*)(0x42308A84UL))) +#define bM4_TMR62_ICONR_INTENC (*((volatile unsigned int*)(0x42308A88UL))) +#define bM4_TMR62_ICONR_INTEND (*((volatile unsigned int*)(0x42308A8CUL))) +#define bM4_TMR62_ICONR_INTENE (*((volatile unsigned int*)(0x42308A90UL))) +#define bM4_TMR62_ICONR_INTENF (*((volatile unsigned int*)(0x42308A94UL))) +#define bM4_TMR62_ICONR_INTENOVF (*((volatile unsigned int*)(0x42308A98UL))) +#define bM4_TMR62_ICONR_INTENUDF (*((volatile unsigned int*)(0x42308A9CUL))) +#define bM4_TMR62_ICONR_INTENDTE (*((volatile unsigned int*)(0x42308AA0UL))) +#define bM4_TMR62_ICONR_INTENSAU (*((volatile unsigned int*)(0x42308AC0UL))) +#define bM4_TMR62_ICONR_INTENSAD (*((volatile unsigned int*)(0x42308AC4UL))) +#define bM4_TMR62_ICONR_INTENSBU (*((volatile unsigned int*)(0x42308AC8UL))) +#define bM4_TMR62_ICONR_INTENSBD (*((volatile unsigned int*)(0x42308ACCUL))) +#define bM4_TMR62_PCONR_CAPMDA (*((volatile unsigned int*)(0x42308B00UL))) +#define bM4_TMR62_PCONR_STACA (*((volatile unsigned int*)(0x42308B04UL))) +#define bM4_TMR62_PCONR_STPCA (*((volatile unsigned int*)(0x42308B08UL))) +#define bM4_TMR62_PCONR_STASTPSA (*((volatile unsigned int*)(0x42308B0CUL))) +#define bM4_TMR62_PCONR_CMPCA0 (*((volatile unsigned int*)(0x42308B10UL))) +#define bM4_TMR62_PCONR_CMPCA1 (*((volatile unsigned int*)(0x42308B14UL))) +#define bM4_TMR62_PCONR_PERCA0 (*((volatile unsigned int*)(0x42308B18UL))) +#define bM4_TMR62_PCONR_PERCA1 (*((volatile unsigned int*)(0x42308B1CUL))) +#define bM4_TMR62_PCONR_OUTENA (*((volatile unsigned int*)(0x42308B20UL))) +#define bM4_TMR62_PCONR_EMBVALA0 (*((volatile unsigned int*)(0x42308B2CUL))) +#define bM4_TMR62_PCONR_EMBVALA1 (*((volatile unsigned int*)(0x42308B30UL))) +#define bM4_TMR62_PCONR_CAPMDB (*((volatile unsigned int*)(0x42308B40UL))) +#define bM4_TMR62_PCONR_STACB (*((volatile unsigned int*)(0x42308B44UL))) +#define bM4_TMR62_PCONR_STPCB (*((volatile unsigned int*)(0x42308B48UL))) +#define bM4_TMR62_PCONR_STASTPSB (*((volatile unsigned int*)(0x42308B4CUL))) +#define bM4_TMR62_PCONR_CMPCB0 (*((volatile unsigned int*)(0x42308B50UL))) +#define bM4_TMR62_PCONR_CMPCB1 (*((volatile unsigned int*)(0x42308B54UL))) +#define bM4_TMR62_PCONR_PERCB0 (*((volatile unsigned int*)(0x42308B58UL))) +#define bM4_TMR62_PCONR_PERCB1 (*((volatile unsigned int*)(0x42308B5CUL))) +#define bM4_TMR62_PCONR_OUTENB (*((volatile unsigned int*)(0x42308B60UL))) +#define bM4_TMR62_PCONR_EMBVALB0 (*((volatile unsigned int*)(0x42308B6CUL))) +#define bM4_TMR62_PCONR_EMBVALB1 (*((volatile unsigned int*)(0x42308B70UL))) +#define bM4_TMR62_BCONR_BENA (*((volatile unsigned int*)(0x42308B80UL))) +#define bM4_TMR62_BCONR_BSEA (*((volatile unsigned int*)(0x42308B84UL))) +#define bM4_TMR62_BCONR_BENB (*((volatile unsigned int*)(0x42308B88UL))) +#define bM4_TMR62_BCONR_BSEB (*((volatile unsigned int*)(0x42308B8CUL))) +#define bM4_TMR62_BCONR_BENP (*((volatile unsigned int*)(0x42308BA0UL))) +#define bM4_TMR62_BCONR_BSEP (*((volatile unsigned int*)(0x42308BA4UL))) +#define bM4_TMR62_BCONR_BENSPA (*((volatile unsigned int*)(0x42308BC0UL))) +#define bM4_TMR62_BCONR_BSESPA (*((volatile unsigned int*)(0x42308BC4UL))) +#define bM4_TMR62_BCONR_BTRSPA0 (*((volatile unsigned int*)(0x42308BD0UL))) +#define bM4_TMR62_BCONR_BTRSPA1 (*((volatile unsigned int*)(0x42308BD4UL))) +#define bM4_TMR62_BCONR_BENSPB (*((volatile unsigned int*)(0x42308BE0UL))) +#define bM4_TMR62_BCONR_BSESPB (*((volatile unsigned int*)(0x42308BE4UL))) +#define bM4_TMR62_BCONR_BTRSPB0 (*((volatile unsigned int*)(0x42308BF0UL))) +#define bM4_TMR62_BCONR_BTRSPB1 (*((volatile unsigned int*)(0x42308BF4UL))) +#define bM4_TMR62_DCONR_DTCEN (*((volatile unsigned int*)(0x42308C00UL))) +#define bM4_TMR62_DCONR_DTBENU (*((volatile unsigned int*)(0x42308C10UL))) +#define bM4_TMR62_DCONR_DTBEND (*((volatile unsigned int*)(0x42308C14UL))) +#define bM4_TMR62_DCONR_SEPA (*((volatile unsigned int*)(0x42308C20UL))) +#define bM4_TMR62_FCONR_NOFIENGA (*((volatile unsigned int*)(0x42308D00UL))) +#define bM4_TMR62_FCONR_NOFICKGA0 (*((volatile unsigned int*)(0x42308D04UL))) +#define bM4_TMR62_FCONR_NOFICKGA1 (*((volatile unsigned int*)(0x42308D08UL))) +#define bM4_TMR62_FCONR_NOFIENGB (*((volatile unsigned int*)(0x42308D10UL))) +#define bM4_TMR62_FCONR_NOFICKGB0 (*((volatile unsigned int*)(0x42308D14UL))) +#define bM4_TMR62_FCONR_NOFICKGB1 (*((volatile unsigned int*)(0x42308D18UL))) +#define bM4_TMR62_FCONR_NOFIENTA (*((volatile unsigned int*)(0x42308D40UL))) +#define bM4_TMR62_FCONR_NOFICKTA0 (*((volatile unsigned int*)(0x42308D44UL))) +#define bM4_TMR62_FCONR_NOFICKTA1 (*((volatile unsigned int*)(0x42308D48UL))) +#define bM4_TMR62_FCONR_NOFIENTB (*((volatile unsigned int*)(0x42308D50UL))) +#define bM4_TMR62_FCONR_NOFICKTB0 (*((volatile unsigned int*)(0x42308D54UL))) +#define bM4_TMR62_FCONR_NOFICKTB1 (*((volatile unsigned int*)(0x42308D58UL))) +#define bM4_TMR62_VPERR_SPPERIA (*((volatile unsigned int*)(0x42308DA0UL))) +#define bM4_TMR62_VPERR_SPPERIB (*((volatile unsigned int*)(0x42308DA4UL))) +#define bM4_TMR62_VPERR_PCNTE0 (*((volatile unsigned int*)(0x42308DC0UL))) +#define bM4_TMR62_VPERR_PCNTE1 (*((volatile unsigned int*)(0x42308DC4UL))) +#define bM4_TMR62_VPERR_PCNTS0 (*((volatile unsigned int*)(0x42308DC8UL))) +#define bM4_TMR62_VPERR_PCNTS1 (*((volatile unsigned int*)(0x42308DCCUL))) +#define bM4_TMR62_VPERR_PCNTS2 (*((volatile unsigned int*)(0x42308DD0UL))) +#define bM4_TMR62_STFLR_CMAF (*((volatile unsigned int*)(0x42308E00UL))) +#define bM4_TMR62_STFLR_CMBF (*((volatile unsigned int*)(0x42308E04UL))) +#define bM4_TMR62_STFLR_CMCF (*((volatile unsigned int*)(0x42308E08UL))) +#define bM4_TMR62_STFLR_CMDF (*((volatile unsigned int*)(0x42308E0CUL))) +#define bM4_TMR62_STFLR_CMEF (*((volatile unsigned int*)(0x42308E10UL))) +#define bM4_TMR62_STFLR_CMFF (*((volatile unsigned int*)(0x42308E14UL))) +#define bM4_TMR62_STFLR_OVFF (*((volatile unsigned int*)(0x42308E18UL))) +#define bM4_TMR62_STFLR_UDFF (*((volatile unsigned int*)(0x42308E1CUL))) +#define bM4_TMR62_STFLR_DTEF (*((volatile unsigned int*)(0x42308E20UL))) +#define bM4_TMR62_STFLR_CMSAUF (*((volatile unsigned int*)(0x42308E24UL))) +#define bM4_TMR62_STFLR_CMSADF (*((volatile unsigned int*)(0x42308E28UL))) +#define bM4_TMR62_STFLR_CMSBUF (*((volatile unsigned int*)(0x42308E2CUL))) +#define bM4_TMR62_STFLR_CMSBDF (*((volatile unsigned int*)(0x42308E30UL))) +#define bM4_TMR62_STFLR_VPERNUM0 (*((volatile unsigned int*)(0x42308E54UL))) +#define bM4_TMR62_STFLR_VPERNUM1 (*((volatile unsigned int*)(0x42308E58UL))) +#define bM4_TMR62_STFLR_VPERNUM2 (*((volatile unsigned int*)(0x42308E5CUL))) +#define bM4_TMR62_STFLR_DIRF (*((volatile unsigned int*)(0x42308E7CUL))) +#define bM4_TMR62_HSTAR_HSTA0 (*((volatile unsigned int*)(0x42308E80UL))) +#define bM4_TMR62_HSTAR_HSTA1 (*((volatile unsigned int*)(0x42308E84UL))) +#define bM4_TMR62_HSTAR_HSTA4 (*((volatile unsigned int*)(0x42308E90UL))) +#define bM4_TMR62_HSTAR_HSTA5 (*((volatile unsigned int*)(0x42308E94UL))) +#define bM4_TMR62_HSTAR_HSTA6 (*((volatile unsigned int*)(0x42308E98UL))) +#define bM4_TMR62_HSTAR_HSTA7 (*((volatile unsigned int*)(0x42308E9CUL))) +#define bM4_TMR62_HSTAR_HSTA8 (*((volatile unsigned int*)(0x42308EA0UL))) +#define bM4_TMR62_HSTAR_HSTA9 (*((volatile unsigned int*)(0x42308EA4UL))) +#define bM4_TMR62_HSTAR_HSTA10 (*((volatile unsigned int*)(0x42308EA8UL))) +#define bM4_TMR62_HSTAR_HSTA11 (*((volatile unsigned int*)(0x42308EACUL))) +#define bM4_TMR62_HSTAR_STARTS (*((volatile unsigned int*)(0x42308EFCUL))) +#define bM4_TMR62_HSTPR_HSTP0 (*((volatile unsigned int*)(0x42308F00UL))) +#define bM4_TMR62_HSTPR_HSTP1 (*((volatile unsigned int*)(0x42308F04UL))) +#define bM4_TMR62_HSTPR_HSTP4 (*((volatile unsigned int*)(0x42308F10UL))) +#define bM4_TMR62_HSTPR_HSTP5 (*((volatile unsigned int*)(0x42308F14UL))) +#define bM4_TMR62_HSTPR_HSTP6 (*((volatile unsigned int*)(0x42308F18UL))) +#define bM4_TMR62_HSTPR_HSTP7 (*((volatile unsigned int*)(0x42308F1CUL))) +#define bM4_TMR62_HSTPR_HSTP8 (*((volatile unsigned int*)(0x42308F20UL))) +#define bM4_TMR62_HSTPR_HSTP9 (*((volatile unsigned int*)(0x42308F24UL))) +#define bM4_TMR62_HSTPR_HSTP10 (*((volatile unsigned int*)(0x42308F28UL))) +#define bM4_TMR62_HSTPR_HSTP11 (*((volatile unsigned int*)(0x42308F2CUL))) +#define bM4_TMR62_HSTPR_STOPS (*((volatile unsigned int*)(0x42308F7CUL))) +#define bM4_TMR62_HCLRR_HCLE0 (*((volatile unsigned int*)(0x42308F80UL))) +#define bM4_TMR62_HCLRR_HCLE1 (*((volatile unsigned int*)(0x42308F84UL))) +#define bM4_TMR62_HCLRR_HCLE4 (*((volatile unsigned int*)(0x42308F90UL))) +#define bM4_TMR62_HCLRR_HCLE5 (*((volatile unsigned int*)(0x42308F94UL))) +#define bM4_TMR62_HCLRR_HCLE6 (*((volatile unsigned int*)(0x42308F98UL))) +#define bM4_TMR62_HCLRR_HCLE7 (*((volatile unsigned int*)(0x42308F9CUL))) +#define bM4_TMR62_HCLRR_HCLE8 (*((volatile unsigned int*)(0x42308FA0UL))) +#define bM4_TMR62_HCLRR_HCLE9 (*((volatile unsigned int*)(0x42308FA4UL))) +#define bM4_TMR62_HCLRR_HCLE10 (*((volatile unsigned int*)(0x42308FA8UL))) +#define bM4_TMR62_HCLRR_HCLE11 (*((volatile unsigned int*)(0x42308FACUL))) +#define bM4_TMR62_HCLRR_CLEARS (*((volatile unsigned int*)(0x42308FFCUL))) +#define bM4_TMR62_HCPAR_HCPA0 (*((volatile unsigned int*)(0x42309000UL))) +#define bM4_TMR62_HCPAR_HCPA1 (*((volatile unsigned int*)(0x42309004UL))) +#define bM4_TMR62_HCPAR_HCPA4 (*((volatile unsigned int*)(0x42309010UL))) +#define bM4_TMR62_HCPAR_HCPA5 (*((volatile unsigned int*)(0x42309014UL))) +#define bM4_TMR62_HCPAR_HCPA6 (*((volatile unsigned int*)(0x42309018UL))) +#define bM4_TMR62_HCPAR_HCPA7 (*((volatile unsigned int*)(0x4230901CUL))) +#define bM4_TMR62_HCPAR_HCPA8 (*((volatile unsigned int*)(0x42309020UL))) +#define bM4_TMR62_HCPAR_HCPA9 (*((volatile unsigned int*)(0x42309024UL))) +#define bM4_TMR62_HCPAR_HCPA10 (*((volatile unsigned int*)(0x42309028UL))) +#define bM4_TMR62_HCPAR_HCPA11 (*((volatile unsigned int*)(0x4230902CUL))) +#define bM4_TMR62_HCPBR_HCPB0 (*((volatile unsigned int*)(0x42309080UL))) +#define bM4_TMR62_HCPBR_HCPB1 (*((volatile unsigned int*)(0x42309084UL))) +#define bM4_TMR62_HCPBR_HCPB4 (*((volatile unsigned int*)(0x42309090UL))) +#define bM4_TMR62_HCPBR_HCPB5 (*((volatile unsigned int*)(0x42309094UL))) +#define bM4_TMR62_HCPBR_HCPB6 (*((volatile unsigned int*)(0x42309098UL))) +#define bM4_TMR62_HCPBR_HCPB7 (*((volatile unsigned int*)(0x4230909CUL))) +#define bM4_TMR62_HCPBR_HCPB8 (*((volatile unsigned int*)(0x423090A0UL))) +#define bM4_TMR62_HCPBR_HCPB9 (*((volatile unsigned int*)(0x423090A4UL))) +#define bM4_TMR62_HCPBR_HCPB10 (*((volatile unsigned int*)(0x423090A8UL))) +#define bM4_TMR62_HCPBR_HCPB11 (*((volatile unsigned int*)(0x423090ACUL))) +#define bM4_TMR62_HCUPR_HCUP0 (*((volatile unsigned int*)(0x42309100UL))) +#define bM4_TMR62_HCUPR_HCUP1 (*((volatile unsigned int*)(0x42309104UL))) +#define bM4_TMR62_HCUPR_HCUP2 (*((volatile unsigned int*)(0x42309108UL))) +#define bM4_TMR62_HCUPR_HCUP3 (*((volatile unsigned int*)(0x4230910CUL))) +#define bM4_TMR62_HCUPR_HCUP4 (*((volatile unsigned int*)(0x42309110UL))) +#define bM4_TMR62_HCUPR_HCUP5 (*((volatile unsigned int*)(0x42309114UL))) +#define bM4_TMR62_HCUPR_HCUP6 (*((volatile unsigned int*)(0x42309118UL))) +#define bM4_TMR62_HCUPR_HCUP7 (*((volatile unsigned int*)(0x4230911CUL))) +#define bM4_TMR62_HCUPR_HCUP8 (*((volatile unsigned int*)(0x42309120UL))) +#define bM4_TMR62_HCUPR_HCUP9 (*((volatile unsigned int*)(0x42309124UL))) +#define bM4_TMR62_HCUPR_HCUP10 (*((volatile unsigned int*)(0x42309128UL))) +#define bM4_TMR62_HCUPR_HCUP11 (*((volatile unsigned int*)(0x4230912CUL))) +#define bM4_TMR62_HCUPR_HCUP16 (*((volatile unsigned int*)(0x42309140UL))) +#define bM4_TMR62_HCUPR_HCUP17 (*((volatile unsigned int*)(0x42309144UL))) +#define bM4_TMR62_HCDOR_HCDO0 (*((volatile unsigned int*)(0x42309180UL))) +#define bM4_TMR62_HCDOR_HCDO1 (*((volatile unsigned int*)(0x42309184UL))) +#define bM4_TMR62_HCDOR_HCDO2 (*((volatile unsigned int*)(0x42309188UL))) +#define bM4_TMR62_HCDOR_HCDO3 (*((volatile unsigned int*)(0x4230918CUL))) +#define bM4_TMR62_HCDOR_HCDO4 (*((volatile unsigned int*)(0x42309190UL))) +#define bM4_TMR62_HCDOR_HCDO5 (*((volatile unsigned int*)(0x42309194UL))) +#define bM4_TMR62_HCDOR_HCDO6 (*((volatile unsigned int*)(0x42309198UL))) +#define bM4_TMR62_HCDOR_HCDO7 (*((volatile unsigned int*)(0x4230919CUL))) +#define bM4_TMR62_HCDOR_HCDO8 (*((volatile unsigned int*)(0x423091A0UL))) +#define bM4_TMR62_HCDOR_HCDO9 (*((volatile unsigned int*)(0x423091A4UL))) +#define bM4_TMR62_HCDOR_HCDO10 (*((volatile unsigned int*)(0x423091A8UL))) +#define bM4_TMR62_HCDOR_HCDO11 (*((volatile unsigned int*)(0x423091ACUL))) +#define bM4_TMR62_HCDOR_HCDO16 (*((volatile unsigned int*)(0x423091C0UL))) +#define bM4_TMR62_HCDOR_HCDO17 (*((volatile unsigned int*)(0x423091C4UL))) +#define bM4_TMR63_CNTER_CNT0 (*((volatile unsigned int*)(0x42310000UL))) +#define bM4_TMR63_CNTER_CNT1 (*((volatile unsigned int*)(0x42310004UL))) +#define bM4_TMR63_CNTER_CNT2 (*((volatile unsigned int*)(0x42310008UL))) +#define bM4_TMR63_CNTER_CNT3 (*((volatile unsigned int*)(0x4231000CUL))) +#define bM4_TMR63_CNTER_CNT4 (*((volatile unsigned int*)(0x42310010UL))) +#define bM4_TMR63_CNTER_CNT5 (*((volatile unsigned int*)(0x42310014UL))) +#define bM4_TMR63_CNTER_CNT6 (*((volatile unsigned int*)(0x42310018UL))) +#define bM4_TMR63_CNTER_CNT7 (*((volatile unsigned int*)(0x4231001CUL))) +#define bM4_TMR63_CNTER_CNT8 (*((volatile unsigned int*)(0x42310020UL))) +#define bM4_TMR63_CNTER_CNT9 (*((volatile unsigned int*)(0x42310024UL))) +#define bM4_TMR63_CNTER_CNT10 (*((volatile unsigned int*)(0x42310028UL))) +#define bM4_TMR63_CNTER_CNT11 (*((volatile unsigned int*)(0x4231002CUL))) +#define bM4_TMR63_CNTER_CNT12 (*((volatile unsigned int*)(0x42310030UL))) +#define bM4_TMR63_CNTER_CNT13 (*((volatile unsigned int*)(0x42310034UL))) +#define bM4_TMR63_CNTER_CNT14 (*((volatile unsigned int*)(0x42310038UL))) +#define bM4_TMR63_CNTER_CNT15 (*((volatile unsigned int*)(0x4231003CUL))) +#define bM4_TMR63_PERAR_PERA0 (*((volatile unsigned int*)(0x42310080UL))) +#define bM4_TMR63_PERAR_PERA1 (*((volatile unsigned int*)(0x42310084UL))) +#define bM4_TMR63_PERAR_PERA2 (*((volatile unsigned int*)(0x42310088UL))) +#define bM4_TMR63_PERAR_PERA3 (*((volatile unsigned int*)(0x4231008CUL))) +#define bM4_TMR63_PERAR_PERA4 (*((volatile unsigned int*)(0x42310090UL))) +#define bM4_TMR63_PERAR_PERA5 (*((volatile unsigned int*)(0x42310094UL))) +#define bM4_TMR63_PERAR_PERA6 (*((volatile unsigned int*)(0x42310098UL))) +#define bM4_TMR63_PERAR_PERA7 (*((volatile unsigned int*)(0x4231009CUL))) +#define bM4_TMR63_PERAR_PERA8 (*((volatile unsigned int*)(0x423100A0UL))) +#define bM4_TMR63_PERAR_PERA9 (*((volatile unsigned int*)(0x423100A4UL))) +#define bM4_TMR63_PERAR_PERA10 (*((volatile unsigned int*)(0x423100A8UL))) +#define bM4_TMR63_PERAR_PERA11 (*((volatile unsigned int*)(0x423100ACUL))) +#define bM4_TMR63_PERAR_PERA12 (*((volatile unsigned int*)(0x423100B0UL))) +#define bM4_TMR63_PERAR_PERA13 (*((volatile unsigned int*)(0x423100B4UL))) +#define bM4_TMR63_PERAR_PERA14 (*((volatile unsigned int*)(0x423100B8UL))) +#define bM4_TMR63_PERAR_PERA15 (*((volatile unsigned int*)(0x423100BCUL))) +#define bM4_TMR63_PERBR_PERB0 (*((volatile unsigned int*)(0x42310100UL))) +#define bM4_TMR63_PERBR_PERB1 (*((volatile unsigned int*)(0x42310104UL))) +#define bM4_TMR63_PERBR_PERB2 (*((volatile unsigned int*)(0x42310108UL))) +#define bM4_TMR63_PERBR_PERB3 (*((volatile unsigned int*)(0x4231010CUL))) +#define bM4_TMR63_PERBR_PERB4 (*((volatile unsigned int*)(0x42310110UL))) +#define bM4_TMR63_PERBR_PERB5 (*((volatile unsigned int*)(0x42310114UL))) +#define bM4_TMR63_PERBR_PERB6 (*((volatile unsigned int*)(0x42310118UL))) +#define bM4_TMR63_PERBR_PERB7 (*((volatile unsigned int*)(0x4231011CUL))) +#define bM4_TMR63_PERBR_PERB8 (*((volatile unsigned int*)(0x42310120UL))) +#define bM4_TMR63_PERBR_PERB9 (*((volatile unsigned int*)(0x42310124UL))) +#define bM4_TMR63_PERBR_PERB10 (*((volatile unsigned int*)(0x42310128UL))) +#define bM4_TMR63_PERBR_PERB11 (*((volatile unsigned int*)(0x4231012CUL))) +#define bM4_TMR63_PERBR_PERB12 (*((volatile unsigned int*)(0x42310130UL))) +#define bM4_TMR63_PERBR_PERB13 (*((volatile unsigned int*)(0x42310134UL))) +#define bM4_TMR63_PERBR_PERB14 (*((volatile unsigned int*)(0x42310138UL))) +#define bM4_TMR63_PERBR_PERB15 (*((volatile unsigned int*)(0x4231013CUL))) +#define bM4_TMR63_PERCR_PERC0 (*((volatile unsigned int*)(0x42310180UL))) +#define bM4_TMR63_PERCR_PERC1 (*((volatile unsigned int*)(0x42310184UL))) +#define bM4_TMR63_PERCR_PERC2 (*((volatile unsigned int*)(0x42310188UL))) +#define bM4_TMR63_PERCR_PERC3 (*((volatile unsigned int*)(0x4231018CUL))) +#define bM4_TMR63_PERCR_PERC4 (*((volatile unsigned int*)(0x42310190UL))) +#define bM4_TMR63_PERCR_PERC5 (*((volatile unsigned int*)(0x42310194UL))) +#define bM4_TMR63_PERCR_PERC6 (*((volatile unsigned int*)(0x42310198UL))) +#define bM4_TMR63_PERCR_PERC7 (*((volatile unsigned int*)(0x4231019CUL))) +#define bM4_TMR63_PERCR_PERC8 (*((volatile unsigned int*)(0x423101A0UL))) +#define bM4_TMR63_PERCR_PERC9 (*((volatile unsigned int*)(0x423101A4UL))) +#define bM4_TMR63_PERCR_PERC10 (*((volatile unsigned int*)(0x423101A8UL))) +#define bM4_TMR63_PERCR_PERC11 (*((volatile unsigned int*)(0x423101ACUL))) +#define bM4_TMR63_PERCR_PERC12 (*((volatile unsigned int*)(0x423101B0UL))) +#define bM4_TMR63_PERCR_PERC13 (*((volatile unsigned int*)(0x423101B4UL))) +#define bM4_TMR63_PERCR_PERC14 (*((volatile unsigned int*)(0x423101B8UL))) +#define bM4_TMR63_PERCR_PERC15 (*((volatile unsigned int*)(0x423101BCUL))) +#define bM4_TMR63_GCMAR_GCMA0 (*((volatile unsigned int*)(0x42310200UL))) +#define bM4_TMR63_GCMAR_GCMA1 (*((volatile unsigned int*)(0x42310204UL))) +#define bM4_TMR63_GCMAR_GCMA2 (*((volatile unsigned int*)(0x42310208UL))) +#define bM4_TMR63_GCMAR_GCMA3 (*((volatile unsigned int*)(0x4231020CUL))) +#define bM4_TMR63_GCMAR_GCMA4 (*((volatile unsigned int*)(0x42310210UL))) +#define bM4_TMR63_GCMAR_GCMA5 (*((volatile unsigned int*)(0x42310214UL))) +#define bM4_TMR63_GCMAR_GCMA6 (*((volatile unsigned int*)(0x42310218UL))) +#define bM4_TMR63_GCMAR_GCMA7 (*((volatile unsigned int*)(0x4231021CUL))) +#define bM4_TMR63_GCMAR_GCMA8 (*((volatile unsigned int*)(0x42310220UL))) +#define bM4_TMR63_GCMAR_GCMA9 (*((volatile unsigned int*)(0x42310224UL))) +#define bM4_TMR63_GCMAR_GCMA10 (*((volatile unsigned int*)(0x42310228UL))) +#define bM4_TMR63_GCMAR_GCMA11 (*((volatile unsigned int*)(0x4231022CUL))) +#define bM4_TMR63_GCMAR_GCMA12 (*((volatile unsigned int*)(0x42310230UL))) +#define bM4_TMR63_GCMAR_GCMA13 (*((volatile unsigned int*)(0x42310234UL))) +#define bM4_TMR63_GCMAR_GCMA14 (*((volatile unsigned int*)(0x42310238UL))) +#define bM4_TMR63_GCMAR_GCMA15 (*((volatile unsigned int*)(0x4231023CUL))) +#define bM4_TMR63_GCMBR_GCMB0 (*((volatile unsigned int*)(0x42310280UL))) +#define bM4_TMR63_GCMBR_GCMB1 (*((volatile unsigned int*)(0x42310284UL))) +#define bM4_TMR63_GCMBR_GCMB2 (*((volatile unsigned int*)(0x42310288UL))) +#define bM4_TMR63_GCMBR_GCMB3 (*((volatile unsigned int*)(0x4231028CUL))) +#define bM4_TMR63_GCMBR_GCMB4 (*((volatile unsigned int*)(0x42310290UL))) +#define bM4_TMR63_GCMBR_GCMB5 (*((volatile unsigned int*)(0x42310294UL))) +#define bM4_TMR63_GCMBR_GCMB6 (*((volatile unsigned int*)(0x42310298UL))) +#define bM4_TMR63_GCMBR_GCMB7 (*((volatile unsigned int*)(0x4231029CUL))) +#define bM4_TMR63_GCMBR_GCMB8 (*((volatile unsigned int*)(0x423102A0UL))) +#define bM4_TMR63_GCMBR_GCMB9 (*((volatile unsigned int*)(0x423102A4UL))) +#define bM4_TMR63_GCMBR_GCMB10 (*((volatile unsigned int*)(0x423102A8UL))) +#define bM4_TMR63_GCMBR_GCMB11 (*((volatile unsigned int*)(0x423102ACUL))) +#define bM4_TMR63_GCMBR_GCMB12 (*((volatile unsigned int*)(0x423102B0UL))) +#define bM4_TMR63_GCMBR_GCMB13 (*((volatile unsigned int*)(0x423102B4UL))) +#define bM4_TMR63_GCMBR_GCMB14 (*((volatile unsigned int*)(0x423102B8UL))) +#define bM4_TMR63_GCMBR_GCMB15 (*((volatile unsigned int*)(0x423102BCUL))) +#define bM4_TMR63_GCMCR_GCMC0 (*((volatile unsigned int*)(0x42310300UL))) +#define bM4_TMR63_GCMCR_GCMC1 (*((volatile unsigned int*)(0x42310304UL))) +#define bM4_TMR63_GCMCR_GCMC2 (*((volatile unsigned int*)(0x42310308UL))) +#define bM4_TMR63_GCMCR_GCMC3 (*((volatile unsigned int*)(0x4231030CUL))) +#define bM4_TMR63_GCMCR_GCMC4 (*((volatile unsigned int*)(0x42310310UL))) +#define bM4_TMR63_GCMCR_GCMC5 (*((volatile unsigned int*)(0x42310314UL))) +#define bM4_TMR63_GCMCR_GCMC6 (*((volatile unsigned int*)(0x42310318UL))) +#define bM4_TMR63_GCMCR_GCMC7 (*((volatile unsigned int*)(0x4231031CUL))) +#define bM4_TMR63_GCMCR_GCMC8 (*((volatile unsigned int*)(0x42310320UL))) +#define bM4_TMR63_GCMCR_GCMC9 (*((volatile unsigned int*)(0x42310324UL))) +#define bM4_TMR63_GCMCR_GCMC10 (*((volatile unsigned int*)(0x42310328UL))) +#define bM4_TMR63_GCMCR_GCMC11 (*((volatile unsigned int*)(0x4231032CUL))) +#define bM4_TMR63_GCMCR_GCMC12 (*((volatile unsigned int*)(0x42310330UL))) +#define bM4_TMR63_GCMCR_GCMC13 (*((volatile unsigned int*)(0x42310334UL))) +#define bM4_TMR63_GCMCR_GCMC14 (*((volatile unsigned int*)(0x42310338UL))) +#define bM4_TMR63_GCMCR_GCMC15 (*((volatile unsigned int*)(0x4231033CUL))) +#define bM4_TMR63_GCMDR_GCMD0 (*((volatile unsigned int*)(0x42310380UL))) +#define bM4_TMR63_GCMDR_GCMD1 (*((volatile unsigned int*)(0x42310384UL))) +#define bM4_TMR63_GCMDR_GCMD2 (*((volatile unsigned int*)(0x42310388UL))) +#define bM4_TMR63_GCMDR_GCMD3 (*((volatile unsigned int*)(0x4231038CUL))) +#define bM4_TMR63_GCMDR_GCMD4 (*((volatile unsigned int*)(0x42310390UL))) +#define bM4_TMR63_GCMDR_GCMD5 (*((volatile unsigned int*)(0x42310394UL))) +#define bM4_TMR63_GCMDR_GCMD6 (*((volatile unsigned int*)(0x42310398UL))) +#define bM4_TMR63_GCMDR_GCMD7 (*((volatile unsigned int*)(0x4231039CUL))) +#define bM4_TMR63_GCMDR_GCMD8 (*((volatile unsigned int*)(0x423103A0UL))) +#define bM4_TMR63_GCMDR_GCMD9 (*((volatile unsigned int*)(0x423103A4UL))) +#define bM4_TMR63_GCMDR_GCMD10 (*((volatile unsigned int*)(0x423103A8UL))) +#define bM4_TMR63_GCMDR_GCMD11 (*((volatile unsigned int*)(0x423103ACUL))) +#define bM4_TMR63_GCMDR_GCMD12 (*((volatile unsigned int*)(0x423103B0UL))) +#define bM4_TMR63_GCMDR_GCMD13 (*((volatile unsigned int*)(0x423103B4UL))) +#define bM4_TMR63_GCMDR_GCMD14 (*((volatile unsigned int*)(0x423103B8UL))) +#define bM4_TMR63_GCMDR_GCMD15 (*((volatile unsigned int*)(0x423103BCUL))) +#define bM4_TMR63_GCMER_GCME0 (*((volatile unsigned int*)(0x42310400UL))) +#define bM4_TMR63_GCMER_GCME1 (*((volatile unsigned int*)(0x42310404UL))) +#define bM4_TMR63_GCMER_GCME2 (*((volatile unsigned int*)(0x42310408UL))) +#define bM4_TMR63_GCMER_GCME3 (*((volatile unsigned int*)(0x4231040CUL))) +#define bM4_TMR63_GCMER_GCME4 (*((volatile unsigned int*)(0x42310410UL))) +#define bM4_TMR63_GCMER_GCME5 (*((volatile unsigned int*)(0x42310414UL))) +#define bM4_TMR63_GCMER_GCME6 (*((volatile unsigned int*)(0x42310418UL))) +#define bM4_TMR63_GCMER_GCME7 (*((volatile unsigned int*)(0x4231041CUL))) +#define bM4_TMR63_GCMER_GCME8 (*((volatile unsigned int*)(0x42310420UL))) +#define bM4_TMR63_GCMER_GCME9 (*((volatile unsigned int*)(0x42310424UL))) +#define bM4_TMR63_GCMER_GCME10 (*((volatile unsigned int*)(0x42310428UL))) +#define bM4_TMR63_GCMER_GCME11 (*((volatile unsigned int*)(0x4231042CUL))) +#define bM4_TMR63_GCMER_GCME12 (*((volatile unsigned int*)(0x42310430UL))) +#define bM4_TMR63_GCMER_GCME13 (*((volatile unsigned int*)(0x42310434UL))) +#define bM4_TMR63_GCMER_GCME14 (*((volatile unsigned int*)(0x42310438UL))) +#define bM4_TMR63_GCMER_GCME15 (*((volatile unsigned int*)(0x4231043CUL))) +#define bM4_TMR63_GCMFR_GCMF0 (*((volatile unsigned int*)(0x42310480UL))) +#define bM4_TMR63_GCMFR_GCMF1 (*((volatile unsigned int*)(0x42310484UL))) +#define bM4_TMR63_GCMFR_GCMF2 (*((volatile unsigned int*)(0x42310488UL))) +#define bM4_TMR63_GCMFR_GCMF3 (*((volatile unsigned int*)(0x4231048CUL))) +#define bM4_TMR63_GCMFR_GCMF4 (*((volatile unsigned int*)(0x42310490UL))) +#define bM4_TMR63_GCMFR_GCMF5 (*((volatile unsigned int*)(0x42310494UL))) +#define bM4_TMR63_GCMFR_GCMF6 (*((volatile unsigned int*)(0x42310498UL))) +#define bM4_TMR63_GCMFR_GCMF7 (*((volatile unsigned int*)(0x4231049CUL))) +#define bM4_TMR63_GCMFR_GCMF8 (*((volatile unsigned int*)(0x423104A0UL))) +#define bM4_TMR63_GCMFR_GCMF9 (*((volatile unsigned int*)(0x423104A4UL))) +#define bM4_TMR63_GCMFR_GCMF10 (*((volatile unsigned int*)(0x423104A8UL))) +#define bM4_TMR63_GCMFR_GCMF11 (*((volatile unsigned int*)(0x423104ACUL))) +#define bM4_TMR63_GCMFR_GCMF12 (*((volatile unsigned int*)(0x423104B0UL))) +#define bM4_TMR63_GCMFR_GCMF13 (*((volatile unsigned int*)(0x423104B4UL))) +#define bM4_TMR63_GCMFR_GCMF14 (*((volatile unsigned int*)(0x423104B8UL))) +#define bM4_TMR63_GCMFR_GCMF15 (*((volatile unsigned int*)(0x423104BCUL))) +#define bM4_TMR63_SCMAR_SCMA0 (*((volatile unsigned int*)(0x42310500UL))) +#define bM4_TMR63_SCMAR_SCMA1 (*((volatile unsigned int*)(0x42310504UL))) +#define bM4_TMR63_SCMAR_SCMA2 (*((volatile unsigned int*)(0x42310508UL))) +#define bM4_TMR63_SCMAR_SCMA3 (*((volatile unsigned int*)(0x4231050CUL))) +#define bM4_TMR63_SCMAR_SCMA4 (*((volatile unsigned int*)(0x42310510UL))) +#define bM4_TMR63_SCMAR_SCMA5 (*((volatile unsigned int*)(0x42310514UL))) +#define bM4_TMR63_SCMAR_SCMA6 (*((volatile unsigned int*)(0x42310518UL))) +#define bM4_TMR63_SCMAR_SCMA7 (*((volatile unsigned int*)(0x4231051CUL))) +#define bM4_TMR63_SCMAR_SCMA8 (*((volatile unsigned int*)(0x42310520UL))) +#define bM4_TMR63_SCMAR_SCMA9 (*((volatile unsigned int*)(0x42310524UL))) +#define bM4_TMR63_SCMAR_SCMA10 (*((volatile unsigned int*)(0x42310528UL))) +#define bM4_TMR63_SCMAR_SCMA11 (*((volatile unsigned int*)(0x4231052CUL))) +#define bM4_TMR63_SCMAR_SCMA12 (*((volatile unsigned int*)(0x42310530UL))) +#define bM4_TMR63_SCMAR_SCMA13 (*((volatile unsigned int*)(0x42310534UL))) +#define bM4_TMR63_SCMAR_SCMA14 (*((volatile unsigned int*)(0x42310538UL))) +#define bM4_TMR63_SCMAR_SCMA15 (*((volatile unsigned int*)(0x4231053CUL))) +#define bM4_TMR63_SCMBR_SCMB0 (*((volatile unsigned int*)(0x42310580UL))) +#define bM4_TMR63_SCMBR_SCMB1 (*((volatile unsigned int*)(0x42310584UL))) +#define bM4_TMR63_SCMBR_SCMB2 (*((volatile unsigned int*)(0x42310588UL))) +#define bM4_TMR63_SCMBR_SCMB3 (*((volatile unsigned int*)(0x4231058CUL))) +#define bM4_TMR63_SCMBR_SCMB4 (*((volatile unsigned int*)(0x42310590UL))) +#define bM4_TMR63_SCMBR_SCMB5 (*((volatile unsigned int*)(0x42310594UL))) +#define bM4_TMR63_SCMBR_SCMB6 (*((volatile unsigned int*)(0x42310598UL))) +#define bM4_TMR63_SCMBR_SCMB7 (*((volatile unsigned int*)(0x4231059CUL))) +#define bM4_TMR63_SCMBR_SCMB8 (*((volatile unsigned int*)(0x423105A0UL))) +#define bM4_TMR63_SCMBR_SCMB9 (*((volatile unsigned int*)(0x423105A4UL))) +#define bM4_TMR63_SCMBR_SCMB10 (*((volatile unsigned int*)(0x423105A8UL))) +#define bM4_TMR63_SCMBR_SCMB11 (*((volatile unsigned int*)(0x423105ACUL))) +#define bM4_TMR63_SCMBR_SCMB12 (*((volatile unsigned int*)(0x423105B0UL))) +#define bM4_TMR63_SCMBR_SCMB13 (*((volatile unsigned int*)(0x423105B4UL))) +#define bM4_TMR63_SCMBR_SCMB14 (*((volatile unsigned int*)(0x423105B8UL))) +#define bM4_TMR63_SCMBR_SCMB15 (*((volatile unsigned int*)(0x423105BCUL))) +#define bM4_TMR63_SCMCR_SCMC0 (*((volatile unsigned int*)(0x42310600UL))) +#define bM4_TMR63_SCMCR_SCMC1 (*((volatile unsigned int*)(0x42310604UL))) +#define bM4_TMR63_SCMCR_SCMC2 (*((volatile unsigned int*)(0x42310608UL))) +#define bM4_TMR63_SCMCR_SCMC3 (*((volatile unsigned int*)(0x4231060CUL))) +#define bM4_TMR63_SCMCR_SCMC4 (*((volatile unsigned int*)(0x42310610UL))) +#define bM4_TMR63_SCMCR_SCMC5 (*((volatile unsigned int*)(0x42310614UL))) +#define bM4_TMR63_SCMCR_SCMC6 (*((volatile unsigned int*)(0x42310618UL))) +#define bM4_TMR63_SCMCR_SCMC7 (*((volatile unsigned int*)(0x4231061CUL))) +#define bM4_TMR63_SCMCR_SCMC8 (*((volatile unsigned int*)(0x42310620UL))) +#define bM4_TMR63_SCMCR_SCMC9 (*((volatile unsigned int*)(0x42310624UL))) +#define bM4_TMR63_SCMCR_SCMC10 (*((volatile unsigned int*)(0x42310628UL))) +#define bM4_TMR63_SCMCR_SCMC11 (*((volatile unsigned int*)(0x4231062CUL))) +#define bM4_TMR63_SCMCR_SCMC12 (*((volatile unsigned int*)(0x42310630UL))) +#define bM4_TMR63_SCMCR_SCMC13 (*((volatile unsigned int*)(0x42310634UL))) +#define bM4_TMR63_SCMCR_SCMC14 (*((volatile unsigned int*)(0x42310638UL))) +#define bM4_TMR63_SCMCR_SCMC15 (*((volatile unsigned int*)(0x4231063CUL))) +#define bM4_TMR63_SCMDR_SCMD0 (*((volatile unsigned int*)(0x42310680UL))) +#define bM4_TMR63_SCMDR_SCMD1 (*((volatile unsigned int*)(0x42310684UL))) +#define bM4_TMR63_SCMDR_SCMD2 (*((volatile unsigned int*)(0x42310688UL))) +#define bM4_TMR63_SCMDR_SCMD3 (*((volatile unsigned int*)(0x4231068CUL))) +#define bM4_TMR63_SCMDR_SCMD4 (*((volatile unsigned int*)(0x42310690UL))) +#define bM4_TMR63_SCMDR_SCMD5 (*((volatile unsigned int*)(0x42310694UL))) +#define bM4_TMR63_SCMDR_SCMD6 (*((volatile unsigned int*)(0x42310698UL))) +#define bM4_TMR63_SCMDR_SCMD7 (*((volatile unsigned int*)(0x4231069CUL))) +#define bM4_TMR63_SCMDR_SCMD8 (*((volatile unsigned int*)(0x423106A0UL))) +#define bM4_TMR63_SCMDR_SCMD9 (*((volatile unsigned int*)(0x423106A4UL))) +#define bM4_TMR63_SCMDR_SCMD10 (*((volatile unsigned int*)(0x423106A8UL))) +#define bM4_TMR63_SCMDR_SCMD11 (*((volatile unsigned int*)(0x423106ACUL))) +#define bM4_TMR63_SCMDR_SCMD12 (*((volatile unsigned int*)(0x423106B0UL))) +#define bM4_TMR63_SCMDR_SCMD13 (*((volatile unsigned int*)(0x423106B4UL))) +#define bM4_TMR63_SCMDR_SCMD14 (*((volatile unsigned int*)(0x423106B8UL))) +#define bM4_TMR63_SCMDR_SCMD15 (*((volatile unsigned int*)(0x423106BCUL))) +#define bM4_TMR63_SCMER_SCME0 (*((volatile unsigned int*)(0x42310700UL))) +#define bM4_TMR63_SCMER_SCME1 (*((volatile unsigned int*)(0x42310704UL))) +#define bM4_TMR63_SCMER_SCME2 (*((volatile unsigned int*)(0x42310708UL))) +#define bM4_TMR63_SCMER_SCME3 (*((volatile unsigned int*)(0x4231070CUL))) +#define bM4_TMR63_SCMER_SCME4 (*((volatile unsigned int*)(0x42310710UL))) +#define bM4_TMR63_SCMER_SCME5 (*((volatile unsigned int*)(0x42310714UL))) +#define bM4_TMR63_SCMER_SCME6 (*((volatile unsigned int*)(0x42310718UL))) +#define bM4_TMR63_SCMER_SCME7 (*((volatile unsigned int*)(0x4231071CUL))) +#define bM4_TMR63_SCMER_SCME8 (*((volatile unsigned int*)(0x42310720UL))) +#define bM4_TMR63_SCMER_SCME9 (*((volatile unsigned int*)(0x42310724UL))) +#define bM4_TMR63_SCMER_SCME10 (*((volatile unsigned int*)(0x42310728UL))) +#define bM4_TMR63_SCMER_SCME11 (*((volatile unsigned int*)(0x4231072CUL))) +#define bM4_TMR63_SCMER_SCME12 (*((volatile unsigned int*)(0x42310730UL))) +#define bM4_TMR63_SCMER_SCME13 (*((volatile unsigned int*)(0x42310734UL))) +#define bM4_TMR63_SCMER_SCME14 (*((volatile unsigned int*)(0x42310738UL))) +#define bM4_TMR63_SCMER_SCME15 (*((volatile unsigned int*)(0x4231073CUL))) +#define bM4_TMR63_SCMFR_SCMF0 (*((volatile unsigned int*)(0x42310780UL))) +#define bM4_TMR63_SCMFR_SCMF1 (*((volatile unsigned int*)(0x42310784UL))) +#define bM4_TMR63_SCMFR_SCMF2 (*((volatile unsigned int*)(0x42310788UL))) +#define bM4_TMR63_SCMFR_SCMF3 (*((volatile unsigned int*)(0x4231078CUL))) +#define bM4_TMR63_SCMFR_SCMF4 (*((volatile unsigned int*)(0x42310790UL))) +#define bM4_TMR63_SCMFR_SCMF5 (*((volatile unsigned int*)(0x42310794UL))) +#define bM4_TMR63_SCMFR_SCMF6 (*((volatile unsigned int*)(0x42310798UL))) +#define bM4_TMR63_SCMFR_SCMF7 (*((volatile unsigned int*)(0x4231079CUL))) +#define bM4_TMR63_SCMFR_SCMF8 (*((volatile unsigned int*)(0x423107A0UL))) +#define bM4_TMR63_SCMFR_SCMF9 (*((volatile unsigned int*)(0x423107A4UL))) +#define bM4_TMR63_SCMFR_SCMF10 (*((volatile unsigned int*)(0x423107A8UL))) +#define bM4_TMR63_SCMFR_SCMF11 (*((volatile unsigned int*)(0x423107ACUL))) +#define bM4_TMR63_SCMFR_SCMF12 (*((volatile unsigned int*)(0x423107B0UL))) +#define bM4_TMR63_SCMFR_SCMF13 (*((volatile unsigned int*)(0x423107B4UL))) +#define bM4_TMR63_SCMFR_SCMF14 (*((volatile unsigned int*)(0x423107B8UL))) +#define bM4_TMR63_SCMFR_SCMF15 (*((volatile unsigned int*)(0x423107BCUL))) +#define bM4_TMR63_DTUAR_DTUA0 (*((volatile unsigned int*)(0x42310800UL))) +#define bM4_TMR63_DTUAR_DTUA1 (*((volatile unsigned int*)(0x42310804UL))) +#define bM4_TMR63_DTUAR_DTUA2 (*((volatile unsigned int*)(0x42310808UL))) +#define bM4_TMR63_DTUAR_DTUA3 (*((volatile unsigned int*)(0x4231080CUL))) +#define bM4_TMR63_DTUAR_DTUA4 (*((volatile unsigned int*)(0x42310810UL))) +#define bM4_TMR63_DTUAR_DTUA5 (*((volatile unsigned int*)(0x42310814UL))) +#define bM4_TMR63_DTUAR_DTUA6 (*((volatile unsigned int*)(0x42310818UL))) +#define bM4_TMR63_DTUAR_DTUA7 (*((volatile unsigned int*)(0x4231081CUL))) +#define bM4_TMR63_DTUAR_DTUA8 (*((volatile unsigned int*)(0x42310820UL))) +#define bM4_TMR63_DTUAR_DTUA9 (*((volatile unsigned int*)(0x42310824UL))) +#define bM4_TMR63_DTUAR_DTUA10 (*((volatile unsigned int*)(0x42310828UL))) +#define bM4_TMR63_DTUAR_DTUA11 (*((volatile unsigned int*)(0x4231082CUL))) +#define bM4_TMR63_DTUAR_DTUA12 (*((volatile unsigned int*)(0x42310830UL))) +#define bM4_TMR63_DTUAR_DTUA13 (*((volatile unsigned int*)(0x42310834UL))) +#define bM4_TMR63_DTUAR_DTUA14 (*((volatile unsigned int*)(0x42310838UL))) +#define bM4_TMR63_DTUAR_DTUA15 (*((volatile unsigned int*)(0x4231083CUL))) +#define bM4_TMR63_DTDAR_DTDA0 (*((volatile unsigned int*)(0x42310880UL))) +#define bM4_TMR63_DTDAR_DTDA1 (*((volatile unsigned int*)(0x42310884UL))) +#define bM4_TMR63_DTDAR_DTDA2 (*((volatile unsigned int*)(0x42310888UL))) +#define bM4_TMR63_DTDAR_DTDA3 (*((volatile unsigned int*)(0x4231088CUL))) +#define bM4_TMR63_DTDAR_DTDA4 (*((volatile unsigned int*)(0x42310890UL))) +#define bM4_TMR63_DTDAR_DTDA5 (*((volatile unsigned int*)(0x42310894UL))) +#define bM4_TMR63_DTDAR_DTDA6 (*((volatile unsigned int*)(0x42310898UL))) +#define bM4_TMR63_DTDAR_DTDA7 (*((volatile unsigned int*)(0x4231089CUL))) +#define bM4_TMR63_DTDAR_DTDA8 (*((volatile unsigned int*)(0x423108A0UL))) +#define bM4_TMR63_DTDAR_DTDA9 (*((volatile unsigned int*)(0x423108A4UL))) +#define bM4_TMR63_DTDAR_DTDA10 (*((volatile unsigned int*)(0x423108A8UL))) +#define bM4_TMR63_DTDAR_DTDA11 (*((volatile unsigned int*)(0x423108ACUL))) +#define bM4_TMR63_DTDAR_DTDA12 (*((volatile unsigned int*)(0x423108B0UL))) +#define bM4_TMR63_DTDAR_DTDA13 (*((volatile unsigned int*)(0x423108B4UL))) +#define bM4_TMR63_DTDAR_DTDA14 (*((volatile unsigned int*)(0x423108B8UL))) +#define bM4_TMR63_DTDAR_DTDA15 (*((volatile unsigned int*)(0x423108BCUL))) +#define bM4_TMR63_DTUBR_DTUB0 (*((volatile unsigned int*)(0x42310900UL))) +#define bM4_TMR63_DTUBR_DTUB1 (*((volatile unsigned int*)(0x42310904UL))) +#define bM4_TMR63_DTUBR_DTUB2 (*((volatile unsigned int*)(0x42310908UL))) +#define bM4_TMR63_DTUBR_DTUB3 (*((volatile unsigned int*)(0x4231090CUL))) +#define bM4_TMR63_DTUBR_DTUB4 (*((volatile unsigned int*)(0x42310910UL))) +#define bM4_TMR63_DTUBR_DTUB5 (*((volatile unsigned int*)(0x42310914UL))) +#define bM4_TMR63_DTUBR_DTUB6 (*((volatile unsigned int*)(0x42310918UL))) +#define bM4_TMR63_DTUBR_DTUB7 (*((volatile unsigned int*)(0x4231091CUL))) +#define bM4_TMR63_DTUBR_DTUB8 (*((volatile unsigned int*)(0x42310920UL))) +#define bM4_TMR63_DTUBR_DTUB9 (*((volatile unsigned int*)(0x42310924UL))) +#define bM4_TMR63_DTUBR_DTUB10 (*((volatile unsigned int*)(0x42310928UL))) +#define bM4_TMR63_DTUBR_DTUB11 (*((volatile unsigned int*)(0x4231092CUL))) +#define bM4_TMR63_DTUBR_DTUB12 (*((volatile unsigned int*)(0x42310930UL))) +#define bM4_TMR63_DTUBR_DTUB13 (*((volatile unsigned int*)(0x42310934UL))) +#define bM4_TMR63_DTUBR_DTUB14 (*((volatile unsigned int*)(0x42310938UL))) +#define bM4_TMR63_DTUBR_DTUB15 (*((volatile unsigned int*)(0x4231093CUL))) +#define bM4_TMR63_DTDBR_DTDB0 (*((volatile unsigned int*)(0x42310980UL))) +#define bM4_TMR63_DTDBR_DTDB1 (*((volatile unsigned int*)(0x42310984UL))) +#define bM4_TMR63_DTDBR_DTDB2 (*((volatile unsigned int*)(0x42310988UL))) +#define bM4_TMR63_DTDBR_DTDB3 (*((volatile unsigned int*)(0x4231098CUL))) +#define bM4_TMR63_DTDBR_DTDB4 (*((volatile unsigned int*)(0x42310990UL))) +#define bM4_TMR63_DTDBR_DTDB5 (*((volatile unsigned int*)(0x42310994UL))) +#define bM4_TMR63_DTDBR_DTDB6 (*((volatile unsigned int*)(0x42310998UL))) +#define bM4_TMR63_DTDBR_DTDB7 (*((volatile unsigned int*)(0x4231099CUL))) +#define bM4_TMR63_DTDBR_DTDB8 (*((volatile unsigned int*)(0x423109A0UL))) +#define bM4_TMR63_DTDBR_DTDB9 (*((volatile unsigned int*)(0x423109A4UL))) +#define bM4_TMR63_DTDBR_DTDB10 (*((volatile unsigned int*)(0x423109A8UL))) +#define bM4_TMR63_DTDBR_DTDB11 (*((volatile unsigned int*)(0x423109ACUL))) +#define bM4_TMR63_DTDBR_DTDB12 (*((volatile unsigned int*)(0x423109B0UL))) +#define bM4_TMR63_DTDBR_DTDB13 (*((volatile unsigned int*)(0x423109B4UL))) +#define bM4_TMR63_DTDBR_DTDB14 (*((volatile unsigned int*)(0x423109B8UL))) +#define bM4_TMR63_DTDBR_DTDB15 (*((volatile unsigned int*)(0x423109BCUL))) +#define bM4_TMR63_GCONR_START (*((volatile unsigned int*)(0x42310A00UL))) +#define bM4_TMR63_GCONR_MODE0 (*((volatile unsigned int*)(0x42310A04UL))) +#define bM4_TMR63_GCONR_MODE1 (*((volatile unsigned int*)(0x42310A08UL))) +#define bM4_TMR63_GCONR_MODE2 (*((volatile unsigned int*)(0x42310A0CUL))) +#define bM4_TMR63_GCONR_CKDIV0 (*((volatile unsigned int*)(0x42310A10UL))) +#define bM4_TMR63_GCONR_CKDIV1 (*((volatile unsigned int*)(0x42310A14UL))) +#define bM4_TMR63_GCONR_CKDIV2 (*((volatile unsigned int*)(0x42310A18UL))) +#define bM4_TMR63_GCONR_DIR (*((volatile unsigned int*)(0x42310A20UL))) +#define bM4_TMR63_GCONR_ZMSKREV (*((volatile unsigned int*)(0x42310A40UL))) +#define bM4_TMR63_GCONR_ZMSKPOS (*((volatile unsigned int*)(0x42310A44UL))) +#define bM4_TMR63_GCONR_ZMSKVAL0 (*((volatile unsigned int*)(0x42310A48UL))) +#define bM4_TMR63_GCONR_ZMSKVAL1 (*((volatile unsigned int*)(0x42310A4CUL))) +#define bM4_TMR63_ICONR_INTENA (*((volatile unsigned int*)(0x42310A80UL))) +#define bM4_TMR63_ICONR_INTENB (*((volatile unsigned int*)(0x42310A84UL))) +#define bM4_TMR63_ICONR_INTENC (*((volatile unsigned int*)(0x42310A88UL))) +#define bM4_TMR63_ICONR_INTEND (*((volatile unsigned int*)(0x42310A8CUL))) +#define bM4_TMR63_ICONR_INTENE (*((volatile unsigned int*)(0x42310A90UL))) +#define bM4_TMR63_ICONR_INTENF (*((volatile unsigned int*)(0x42310A94UL))) +#define bM4_TMR63_ICONR_INTENOVF (*((volatile unsigned int*)(0x42310A98UL))) +#define bM4_TMR63_ICONR_INTENUDF (*((volatile unsigned int*)(0x42310A9CUL))) +#define bM4_TMR63_ICONR_INTENDTE (*((volatile unsigned int*)(0x42310AA0UL))) +#define bM4_TMR63_ICONR_INTENSAU (*((volatile unsigned int*)(0x42310AC0UL))) +#define bM4_TMR63_ICONR_INTENSAD (*((volatile unsigned int*)(0x42310AC4UL))) +#define bM4_TMR63_ICONR_INTENSBU (*((volatile unsigned int*)(0x42310AC8UL))) +#define bM4_TMR63_ICONR_INTENSBD (*((volatile unsigned int*)(0x42310ACCUL))) +#define bM4_TMR63_PCONR_CAPMDA (*((volatile unsigned int*)(0x42310B00UL))) +#define bM4_TMR63_PCONR_STACA (*((volatile unsigned int*)(0x42310B04UL))) +#define bM4_TMR63_PCONR_STPCA (*((volatile unsigned int*)(0x42310B08UL))) +#define bM4_TMR63_PCONR_STASTPSA (*((volatile unsigned int*)(0x42310B0CUL))) +#define bM4_TMR63_PCONR_CMPCA0 (*((volatile unsigned int*)(0x42310B10UL))) +#define bM4_TMR63_PCONR_CMPCA1 (*((volatile unsigned int*)(0x42310B14UL))) +#define bM4_TMR63_PCONR_PERCA0 (*((volatile unsigned int*)(0x42310B18UL))) +#define bM4_TMR63_PCONR_PERCA1 (*((volatile unsigned int*)(0x42310B1CUL))) +#define bM4_TMR63_PCONR_OUTENA (*((volatile unsigned int*)(0x42310B20UL))) +#define bM4_TMR63_PCONR_EMBVALA0 (*((volatile unsigned int*)(0x42310B2CUL))) +#define bM4_TMR63_PCONR_EMBVALA1 (*((volatile unsigned int*)(0x42310B30UL))) +#define bM4_TMR63_PCONR_CAPMDB (*((volatile unsigned int*)(0x42310B40UL))) +#define bM4_TMR63_PCONR_STACB (*((volatile unsigned int*)(0x42310B44UL))) +#define bM4_TMR63_PCONR_STPCB (*((volatile unsigned int*)(0x42310B48UL))) +#define bM4_TMR63_PCONR_STASTPSB (*((volatile unsigned int*)(0x42310B4CUL))) +#define bM4_TMR63_PCONR_CMPCB0 (*((volatile unsigned int*)(0x42310B50UL))) +#define bM4_TMR63_PCONR_CMPCB1 (*((volatile unsigned int*)(0x42310B54UL))) +#define bM4_TMR63_PCONR_PERCB0 (*((volatile unsigned int*)(0x42310B58UL))) +#define bM4_TMR63_PCONR_PERCB1 (*((volatile unsigned int*)(0x42310B5CUL))) +#define bM4_TMR63_PCONR_OUTENB (*((volatile unsigned int*)(0x42310B60UL))) +#define bM4_TMR63_PCONR_EMBVALB0 (*((volatile unsigned int*)(0x42310B6CUL))) +#define bM4_TMR63_PCONR_EMBVALB1 (*((volatile unsigned int*)(0x42310B70UL))) +#define bM4_TMR63_BCONR_BENA (*((volatile unsigned int*)(0x42310B80UL))) +#define bM4_TMR63_BCONR_BSEA (*((volatile unsigned int*)(0x42310B84UL))) +#define bM4_TMR63_BCONR_BENB (*((volatile unsigned int*)(0x42310B88UL))) +#define bM4_TMR63_BCONR_BSEB (*((volatile unsigned int*)(0x42310B8CUL))) +#define bM4_TMR63_BCONR_BENP (*((volatile unsigned int*)(0x42310BA0UL))) +#define bM4_TMR63_BCONR_BSEP (*((volatile unsigned int*)(0x42310BA4UL))) +#define bM4_TMR63_BCONR_BENSPA (*((volatile unsigned int*)(0x42310BC0UL))) +#define bM4_TMR63_BCONR_BSESPA (*((volatile unsigned int*)(0x42310BC4UL))) +#define bM4_TMR63_BCONR_BTRSPA0 (*((volatile unsigned int*)(0x42310BD0UL))) +#define bM4_TMR63_BCONR_BTRSPA1 (*((volatile unsigned int*)(0x42310BD4UL))) +#define bM4_TMR63_BCONR_BENSPB (*((volatile unsigned int*)(0x42310BE0UL))) +#define bM4_TMR63_BCONR_BSESPB (*((volatile unsigned int*)(0x42310BE4UL))) +#define bM4_TMR63_BCONR_BTRSPB0 (*((volatile unsigned int*)(0x42310BF0UL))) +#define bM4_TMR63_BCONR_BTRSPB1 (*((volatile unsigned int*)(0x42310BF4UL))) +#define bM4_TMR63_DCONR_DTCEN (*((volatile unsigned int*)(0x42310C00UL))) +#define bM4_TMR63_DCONR_DTBENU (*((volatile unsigned int*)(0x42310C10UL))) +#define bM4_TMR63_DCONR_DTBEND (*((volatile unsigned int*)(0x42310C14UL))) +#define bM4_TMR63_DCONR_SEPA (*((volatile unsigned int*)(0x42310C20UL))) +#define bM4_TMR63_FCONR_NOFIENGA (*((volatile unsigned int*)(0x42310D00UL))) +#define bM4_TMR63_FCONR_NOFICKGA0 (*((volatile unsigned int*)(0x42310D04UL))) +#define bM4_TMR63_FCONR_NOFICKGA1 (*((volatile unsigned int*)(0x42310D08UL))) +#define bM4_TMR63_FCONR_NOFIENGB (*((volatile unsigned int*)(0x42310D10UL))) +#define bM4_TMR63_FCONR_NOFICKGB0 (*((volatile unsigned int*)(0x42310D14UL))) +#define bM4_TMR63_FCONR_NOFICKGB1 (*((volatile unsigned int*)(0x42310D18UL))) +#define bM4_TMR63_FCONR_NOFIENTA (*((volatile unsigned int*)(0x42310D40UL))) +#define bM4_TMR63_FCONR_NOFICKTA0 (*((volatile unsigned int*)(0x42310D44UL))) +#define bM4_TMR63_FCONR_NOFICKTA1 (*((volatile unsigned int*)(0x42310D48UL))) +#define bM4_TMR63_FCONR_NOFIENTB (*((volatile unsigned int*)(0x42310D50UL))) +#define bM4_TMR63_FCONR_NOFICKTB0 (*((volatile unsigned int*)(0x42310D54UL))) +#define bM4_TMR63_FCONR_NOFICKTB1 (*((volatile unsigned int*)(0x42310D58UL))) +#define bM4_TMR63_VPERR_SPPERIA (*((volatile unsigned int*)(0x42310DA0UL))) +#define bM4_TMR63_VPERR_SPPERIB (*((volatile unsigned int*)(0x42310DA4UL))) +#define bM4_TMR63_VPERR_PCNTE0 (*((volatile unsigned int*)(0x42310DC0UL))) +#define bM4_TMR63_VPERR_PCNTE1 (*((volatile unsigned int*)(0x42310DC4UL))) +#define bM4_TMR63_VPERR_PCNTS0 (*((volatile unsigned int*)(0x42310DC8UL))) +#define bM4_TMR63_VPERR_PCNTS1 (*((volatile unsigned int*)(0x42310DCCUL))) +#define bM4_TMR63_VPERR_PCNTS2 (*((volatile unsigned int*)(0x42310DD0UL))) +#define bM4_TMR63_STFLR_CMAF (*((volatile unsigned int*)(0x42310E00UL))) +#define bM4_TMR63_STFLR_CMBF (*((volatile unsigned int*)(0x42310E04UL))) +#define bM4_TMR63_STFLR_CMCF (*((volatile unsigned int*)(0x42310E08UL))) +#define bM4_TMR63_STFLR_CMDF (*((volatile unsigned int*)(0x42310E0CUL))) +#define bM4_TMR63_STFLR_CMEF (*((volatile unsigned int*)(0x42310E10UL))) +#define bM4_TMR63_STFLR_CMFF (*((volatile unsigned int*)(0x42310E14UL))) +#define bM4_TMR63_STFLR_OVFF (*((volatile unsigned int*)(0x42310E18UL))) +#define bM4_TMR63_STFLR_UDFF (*((volatile unsigned int*)(0x42310E1CUL))) +#define bM4_TMR63_STFLR_DTEF (*((volatile unsigned int*)(0x42310E20UL))) +#define bM4_TMR63_STFLR_CMSAUF (*((volatile unsigned int*)(0x42310E24UL))) +#define bM4_TMR63_STFLR_CMSADF (*((volatile unsigned int*)(0x42310E28UL))) +#define bM4_TMR63_STFLR_CMSBUF (*((volatile unsigned int*)(0x42310E2CUL))) +#define bM4_TMR63_STFLR_CMSBDF (*((volatile unsigned int*)(0x42310E30UL))) +#define bM4_TMR63_STFLR_VPERNUM0 (*((volatile unsigned int*)(0x42310E54UL))) +#define bM4_TMR63_STFLR_VPERNUM1 (*((volatile unsigned int*)(0x42310E58UL))) +#define bM4_TMR63_STFLR_VPERNUM2 (*((volatile unsigned int*)(0x42310E5CUL))) +#define bM4_TMR63_STFLR_DIRF (*((volatile unsigned int*)(0x42310E7CUL))) +#define bM4_TMR63_HSTAR_HSTA0 (*((volatile unsigned int*)(0x42310E80UL))) +#define bM4_TMR63_HSTAR_HSTA1 (*((volatile unsigned int*)(0x42310E84UL))) +#define bM4_TMR63_HSTAR_HSTA4 (*((volatile unsigned int*)(0x42310E90UL))) +#define bM4_TMR63_HSTAR_HSTA5 (*((volatile unsigned int*)(0x42310E94UL))) +#define bM4_TMR63_HSTAR_HSTA6 (*((volatile unsigned int*)(0x42310E98UL))) +#define bM4_TMR63_HSTAR_HSTA7 (*((volatile unsigned int*)(0x42310E9CUL))) +#define bM4_TMR63_HSTAR_HSTA8 (*((volatile unsigned int*)(0x42310EA0UL))) +#define bM4_TMR63_HSTAR_HSTA9 (*((volatile unsigned int*)(0x42310EA4UL))) +#define bM4_TMR63_HSTAR_HSTA10 (*((volatile unsigned int*)(0x42310EA8UL))) +#define bM4_TMR63_HSTAR_HSTA11 (*((volatile unsigned int*)(0x42310EACUL))) +#define bM4_TMR63_HSTAR_STARTS (*((volatile unsigned int*)(0x42310EFCUL))) +#define bM4_TMR63_HSTPR_HSTP0 (*((volatile unsigned int*)(0x42310F00UL))) +#define bM4_TMR63_HSTPR_HSTP1 (*((volatile unsigned int*)(0x42310F04UL))) +#define bM4_TMR63_HSTPR_HSTP4 (*((volatile unsigned int*)(0x42310F10UL))) +#define bM4_TMR63_HSTPR_HSTP5 (*((volatile unsigned int*)(0x42310F14UL))) +#define bM4_TMR63_HSTPR_HSTP6 (*((volatile unsigned int*)(0x42310F18UL))) +#define bM4_TMR63_HSTPR_HSTP7 (*((volatile unsigned int*)(0x42310F1CUL))) +#define bM4_TMR63_HSTPR_HSTP8 (*((volatile unsigned int*)(0x42310F20UL))) +#define bM4_TMR63_HSTPR_HSTP9 (*((volatile unsigned int*)(0x42310F24UL))) +#define bM4_TMR63_HSTPR_HSTP10 (*((volatile unsigned int*)(0x42310F28UL))) +#define bM4_TMR63_HSTPR_HSTP11 (*((volatile unsigned int*)(0x42310F2CUL))) +#define bM4_TMR63_HSTPR_STOPS (*((volatile unsigned int*)(0x42310F7CUL))) +#define bM4_TMR63_HCLRR_HCLE0 (*((volatile unsigned int*)(0x42310F80UL))) +#define bM4_TMR63_HCLRR_HCLE1 (*((volatile unsigned int*)(0x42310F84UL))) +#define bM4_TMR63_HCLRR_HCLE4 (*((volatile unsigned int*)(0x42310F90UL))) +#define bM4_TMR63_HCLRR_HCLE5 (*((volatile unsigned int*)(0x42310F94UL))) +#define bM4_TMR63_HCLRR_HCLE6 (*((volatile unsigned int*)(0x42310F98UL))) +#define bM4_TMR63_HCLRR_HCLE7 (*((volatile unsigned int*)(0x42310F9CUL))) +#define bM4_TMR63_HCLRR_HCLE8 (*((volatile unsigned int*)(0x42310FA0UL))) +#define bM4_TMR63_HCLRR_HCLE9 (*((volatile unsigned int*)(0x42310FA4UL))) +#define bM4_TMR63_HCLRR_HCLE10 (*((volatile unsigned int*)(0x42310FA8UL))) +#define bM4_TMR63_HCLRR_HCLE11 (*((volatile unsigned int*)(0x42310FACUL))) +#define bM4_TMR63_HCLRR_CLEARS (*((volatile unsigned int*)(0x42310FFCUL))) +#define bM4_TMR63_HCPAR_HCPA0 (*((volatile unsigned int*)(0x42311000UL))) +#define bM4_TMR63_HCPAR_HCPA1 (*((volatile unsigned int*)(0x42311004UL))) +#define bM4_TMR63_HCPAR_HCPA4 (*((volatile unsigned int*)(0x42311010UL))) +#define bM4_TMR63_HCPAR_HCPA5 (*((volatile unsigned int*)(0x42311014UL))) +#define bM4_TMR63_HCPAR_HCPA6 (*((volatile unsigned int*)(0x42311018UL))) +#define bM4_TMR63_HCPAR_HCPA7 (*((volatile unsigned int*)(0x4231101CUL))) +#define bM4_TMR63_HCPAR_HCPA8 (*((volatile unsigned int*)(0x42311020UL))) +#define bM4_TMR63_HCPAR_HCPA9 (*((volatile unsigned int*)(0x42311024UL))) +#define bM4_TMR63_HCPAR_HCPA10 (*((volatile unsigned int*)(0x42311028UL))) +#define bM4_TMR63_HCPAR_HCPA11 (*((volatile unsigned int*)(0x4231102CUL))) +#define bM4_TMR63_HCPBR_HCPB0 (*((volatile unsigned int*)(0x42311080UL))) +#define bM4_TMR63_HCPBR_HCPB1 (*((volatile unsigned int*)(0x42311084UL))) +#define bM4_TMR63_HCPBR_HCPB4 (*((volatile unsigned int*)(0x42311090UL))) +#define bM4_TMR63_HCPBR_HCPB5 (*((volatile unsigned int*)(0x42311094UL))) +#define bM4_TMR63_HCPBR_HCPB6 (*((volatile unsigned int*)(0x42311098UL))) +#define bM4_TMR63_HCPBR_HCPB7 (*((volatile unsigned int*)(0x4231109CUL))) +#define bM4_TMR63_HCPBR_HCPB8 (*((volatile unsigned int*)(0x423110A0UL))) +#define bM4_TMR63_HCPBR_HCPB9 (*((volatile unsigned int*)(0x423110A4UL))) +#define bM4_TMR63_HCPBR_HCPB10 (*((volatile unsigned int*)(0x423110A8UL))) +#define bM4_TMR63_HCPBR_HCPB11 (*((volatile unsigned int*)(0x423110ACUL))) +#define bM4_TMR63_HCUPR_HCUP0 (*((volatile unsigned int*)(0x42311100UL))) +#define bM4_TMR63_HCUPR_HCUP1 (*((volatile unsigned int*)(0x42311104UL))) +#define bM4_TMR63_HCUPR_HCUP2 (*((volatile unsigned int*)(0x42311108UL))) +#define bM4_TMR63_HCUPR_HCUP3 (*((volatile unsigned int*)(0x4231110CUL))) +#define bM4_TMR63_HCUPR_HCUP4 (*((volatile unsigned int*)(0x42311110UL))) +#define bM4_TMR63_HCUPR_HCUP5 (*((volatile unsigned int*)(0x42311114UL))) +#define bM4_TMR63_HCUPR_HCUP6 (*((volatile unsigned int*)(0x42311118UL))) +#define bM4_TMR63_HCUPR_HCUP7 (*((volatile unsigned int*)(0x4231111CUL))) +#define bM4_TMR63_HCUPR_HCUP8 (*((volatile unsigned int*)(0x42311120UL))) +#define bM4_TMR63_HCUPR_HCUP9 (*((volatile unsigned int*)(0x42311124UL))) +#define bM4_TMR63_HCUPR_HCUP10 (*((volatile unsigned int*)(0x42311128UL))) +#define bM4_TMR63_HCUPR_HCUP11 (*((volatile unsigned int*)(0x4231112CUL))) +#define bM4_TMR63_HCUPR_HCUP16 (*((volatile unsigned int*)(0x42311140UL))) +#define bM4_TMR63_HCUPR_HCUP17 (*((volatile unsigned int*)(0x42311144UL))) +#define bM4_TMR63_HCDOR_HCDO0 (*((volatile unsigned int*)(0x42311180UL))) +#define bM4_TMR63_HCDOR_HCDO1 (*((volatile unsigned int*)(0x42311184UL))) +#define bM4_TMR63_HCDOR_HCDO2 (*((volatile unsigned int*)(0x42311188UL))) +#define bM4_TMR63_HCDOR_HCDO3 (*((volatile unsigned int*)(0x4231118CUL))) +#define bM4_TMR63_HCDOR_HCDO4 (*((volatile unsigned int*)(0x42311190UL))) +#define bM4_TMR63_HCDOR_HCDO5 (*((volatile unsigned int*)(0x42311194UL))) +#define bM4_TMR63_HCDOR_HCDO6 (*((volatile unsigned int*)(0x42311198UL))) +#define bM4_TMR63_HCDOR_HCDO7 (*((volatile unsigned int*)(0x4231119CUL))) +#define bM4_TMR63_HCDOR_HCDO8 (*((volatile unsigned int*)(0x423111A0UL))) +#define bM4_TMR63_HCDOR_HCDO9 (*((volatile unsigned int*)(0x423111A4UL))) +#define bM4_TMR63_HCDOR_HCDO10 (*((volatile unsigned int*)(0x423111A8UL))) +#define bM4_TMR63_HCDOR_HCDO11 (*((volatile unsigned int*)(0x423111ACUL))) +#define bM4_TMR63_HCDOR_HCDO16 (*((volatile unsigned int*)(0x423111C0UL))) +#define bM4_TMR63_HCDOR_HCDO17 (*((volatile unsigned int*)(0x423111C4UL))) +#define bM4_TMR6_CR_SSTAR_SSTA1 (*((volatile unsigned int*)(0x42307E80UL))) +#define bM4_TMR6_CR_SSTAR_SSTA2 (*((volatile unsigned int*)(0x42307E84UL))) +#define bM4_TMR6_CR_SSTAR_SSTA3 (*((volatile unsigned int*)(0x42307E88UL))) +#define bM4_TMR6_CR_SSTAR_RESV0 (*((volatile unsigned int*)(0x42307EC0UL))) +#define bM4_TMR6_CR_SSTAR_RESV (*((volatile unsigned int*)(0x42307EE0UL))) +#define bM4_TMR6_CR_SSTPR_SSTP1 (*((volatile unsigned int*)(0x42307F00UL))) +#define bM4_TMR6_CR_SSTPR_SSTP2 (*((volatile unsigned int*)(0x42307F04UL))) +#define bM4_TMR6_CR_SSTPR_SSTP3 (*((volatile unsigned int*)(0x42307F08UL))) +#define bM4_TMR6_CR_SCLRR_SCLE1 (*((volatile unsigned int*)(0x42307F80UL))) +#define bM4_TMR6_CR_SCLRR_SCLE2 (*((volatile unsigned int*)(0x42307F84UL))) +#define bM4_TMR6_CR_SCLRR_SCLE3 (*((volatile unsigned int*)(0x42307F88UL))) +#define bM4_TMRA1_CNTER_CNT0 (*((volatile unsigned int*)(0x422A0000UL))) +#define bM4_TMRA1_CNTER_CNT1 (*((volatile unsigned int*)(0x422A0004UL))) +#define bM4_TMRA1_CNTER_CNT2 (*((volatile unsigned int*)(0x422A0008UL))) +#define bM4_TMRA1_CNTER_CNT3 (*((volatile unsigned int*)(0x422A000CUL))) +#define bM4_TMRA1_CNTER_CNT4 (*((volatile unsigned int*)(0x422A0010UL))) +#define bM4_TMRA1_CNTER_CNT5 (*((volatile unsigned int*)(0x422A0014UL))) +#define bM4_TMRA1_CNTER_CNT6 (*((volatile unsigned int*)(0x422A0018UL))) +#define bM4_TMRA1_CNTER_CNT7 (*((volatile unsigned int*)(0x422A001CUL))) +#define bM4_TMRA1_CNTER_CNT8 (*((volatile unsigned int*)(0x422A0020UL))) +#define bM4_TMRA1_CNTER_CNT9 (*((volatile unsigned int*)(0x422A0024UL))) +#define bM4_TMRA1_CNTER_CNT10 (*((volatile unsigned int*)(0x422A0028UL))) +#define bM4_TMRA1_CNTER_CNT11 (*((volatile unsigned int*)(0x422A002CUL))) +#define bM4_TMRA1_CNTER_CNT12 (*((volatile unsigned int*)(0x422A0030UL))) +#define bM4_TMRA1_CNTER_CNT13 (*((volatile unsigned int*)(0x422A0034UL))) +#define bM4_TMRA1_CNTER_CNT14 (*((volatile unsigned int*)(0x422A0038UL))) +#define bM4_TMRA1_CNTER_CNT15 (*((volatile unsigned int*)(0x422A003CUL))) +#define bM4_TMRA1_PERAR_PER0 (*((volatile unsigned int*)(0x422A0080UL))) +#define bM4_TMRA1_PERAR_PER1 (*((volatile unsigned int*)(0x422A0084UL))) +#define bM4_TMRA1_PERAR_PER2 (*((volatile unsigned int*)(0x422A0088UL))) +#define bM4_TMRA1_PERAR_PER3 (*((volatile unsigned int*)(0x422A008CUL))) +#define bM4_TMRA1_PERAR_PER4 (*((volatile unsigned int*)(0x422A0090UL))) +#define bM4_TMRA1_PERAR_PER5 (*((volatile unsigned int*)(0x422A0094UL))) +#define bM4_TMRA1_PERAR_PER6 (*((volatile unsigned int*)(0x422A0098UL))) +#define bM4_TMRA1_PERAR_PER7 (*((volatile unsigned int*)(0x422A009CUL))) +#define bM4_TMRA1_PERAR_PER8 (*((volatile unsigned int*)(0x422A00A0UL))) +#define bM4_TMRA1_PERAR_PER9 (*((volatile unsigned int*)(0x422A00A4UL))) +#define bM4_TMRA1_PERAR_PER10 (*((volatile unsigned int*)(0x422A00A8UL))) +#define bM4_TMRA1_PERAR_PER11 (*((volatile unsigned int*)(0x422A00ACUL))) +#define bM4_TMRA1_PERAR_PER12 (*((volatile unsigned int*)(0x422A00B0UL))) +#define bM4_TMRA1_PERAR_PER13 (*((volatile unsigned int*)(0x422A00B4UL))) +#define bM4_TMRA1_PERAR_PER14 (*((volatile unsigned int*)(0x422A00B8UL))) +#define bM4_TMRA1_PERAR_PER15 (*((volatile unsigned int*)(0x422A00BCUL))) +#define bM4_TMRA1_CMPAR1_CMP0 (*((volatile unsigned int*)(0x422A0800UL))) +#define bM4_TMRA1_CMPAR1_CMP1 (*((volatile unsigned int*)(0x422A0804UL))) +#define bM4_TMRA1_CMPAR1_CMP2 (*((volatile unsigned int*)(0x422A0808UL))) +#define bM4_TMRA1_CMPAR1_CMP3 (*((volatile unsigned int*)(0x422A080CUL))) +#define bM4_TMRA1_CMPAR1_CMP4 (*((volatile unsigned int*)(0x422A0810UL))) +#define bM4_TMRA1_CMPAR1_CMP5 (*((volatile unsigned int*)(0x422A0814UL))) +#define bM4_TMRA1_CMPAR1_CMP6 (*((volatile unsigned int*)(0x422A0818UL))) +#define bM4_TMRA1_CMPAR1_CMP7 (*((volatile unsigned int*)(0x422A081CUL))) +#define bM4_TMRA1_CMPAR1_CMP8 (*((volatile unsigned int*)(0x422A0820UL))) +#define bM4_TMRA1_CMPAR1_CMP9 (*((volatile unsigned int*)(0x422A0824UL))) +#define bM4_TMRA1_CMPAR1_CMP10 (*((volatile unsigned int*)(0x422A0828UL))) +#define bM4_TMRA1_CMPAR1_CMP11 (*((volatile unsigned int*)(0x422A082CUL))) +#define bM4_TMRA1_CMPAR1_CMP12 (*((volatile unsigned int*)(0x422A0830UL))) +#define bM4_TMRA1_CMPAR1_CMP13 (*((volatile unsigned int*)(0x422A0834UL))) +#define bM4_TMRA1_CMPAR1_CMP14 (*((volatile unsigned int*)(0x422A0838UL))) +#define bM4_TMRA1_CMPAR1_CMP15 (*((volatile unsigned int*)(0x422A083CUL))) +#define bM4_TMRA1_CMPAR2_CMP0 (*((volatile unsigned int*)(0x422A0880UL))) +#define bM4_TMRA1_CMPAR2_CMP1 (*((volatile unsigned int*)(0x422A0884UL))) +#define bM4_TMRA1_CMPAR2_CMP2 (*((volatile unsigned int*)(0x422A0888UL))) +#define bM4_TMRA1_CMPAR2_CMP3 (*((volatile unsigned int*)(0x422A088CUL))) +#define bM4_TMRA1_CMPAR2_CMP4 (*((volatile unsigned int*)(0x422A0890UL))) +#define bM4_TMRA1_CMPAR2_CMP5 (*((volatile unsigned int*)(0x422A0894UL))) +#define bM4_TMRA1_CMPAR2_CMP6 (*((volatile unsigned int*)(0x422A0898UL))) +#define bM4_TMRA1_CMPAR2_CMP7 (*((volatile unsigned int*)(0x422A089CUL))) +#define bM4_TMRA1_CMPAR2_CMP8 (*((volatile unsigned int*)(0x422A08A0UL))) +#define bM4_TMRA1_CMPAR2_CMP9 (*((volatile unsigned int*)(0x422A08A4UL))) +#define bM4_TMRA1_CMPAR2_CMP10 (*((volatile unsigned int*)(0x422A08A8UL))) +#define bM4_TMRA1_CMPAR2_CMP11 (*((volatile unsigned int*)(0x422A08ACUL))) +#define bM4_TMRA1_CMPAR2_CMP12 (*((volatile unsigned int*)(0x422A08B0UL))) +#define bM4_TMRA1_CMPAR2_CMP13 (*((volatile unsigned int*)(0x422A08B4UL))) +#define bM4_TMRA1_CMPAR2_CMP14 (*((volatile unsigned int*)(0x422A08B8UL))) +#define bM4_TMRA1_CMPAR2_CMP15 (*((volatile unsigned int*)(0x422A08BCUL))) +#define bM4_TMRA1_CMPAR3_CMP0 (*((volatile unsigned int*)(0x422A0900UL))) +#define bM4_TMRA1_CMPAR3_CMP1 (*((volatile unsigned int*)(0x422A0904UL))) +#define bM4_TMRA1_CMPAR3_CMP2 (*((volatile unsigned int*)(0x422A0908UL))) +#define bM4_TMRA1_CMPAR3_CMP3 (*((volatile unsigned int*)(0x422A090CUL))) +#define bM4_TMRA1_CMPAR3_CMP4 (*((volatile unsigned int*)(0x422A0910UL))) +#define bM4_TMRA1_CMPAR3_CMP5 (*((volatile unsigned int*)(0x422A0914UL))) +#define bM4_TMRA1_CMPAR3_CMP6 (*((volatile unsigned int*)(0x422A0918UL))) +#define bM4_TMRA1_CMPAR3_CMP7 (*((volatile unsigned int*)(0x422A091CUL))) +#define bM4_TMRA1_CMPAR3_CMP8 (*((volatile unsigned int*)(0x422A0920UL))) +#define bM4_TMRA1_CMPAR3_CMP9 (*((volatile unsigned int*)(0x422A0924UL))) +#define bM4_TMRA1_CMPAR3_CMP10 (*((volatile unsigned int*)(0x422A0928UL))) +#define bM4_TMRA1_CMPAR3_CMP11 (*((volatile unsigned int*)(0x422A092CUL))) +#define bM4_TMRA1_CMPAR3_CMP12 (*((volatile unsigned int*)(0x422A0930UL))) +#define bM4_TMRA1_CMPAR3_CMP13 (*((volatile unsigned int*)(0x422A0934UL))) +#define bM4_TMRA1_CMPAR3_CMP14 (*((volatile unsigned int*)(0x422A0938UL))) +#define bM4_TMRA1_CMPAR3_CMP15 (*((volatile unsigned int*)(0x422A093CUL))) +#define bM4_TMRA1_CMPAR4_CMP0 (*((volatile unsigned int*)(0x422A0980UL))) +#define bM4_TMRA1_CMPAR4_CMP1 (*((volatile unsigned int*)(0x422A0984UL))) +#define bM4_TMRA1_CMPAR4_CMP2 (*((volatile unsigned int*)(0x422A0988UL))) +#define bM4_TMRA1_CMPAR4_CMP3 (*((volatile unsigned int*)(0x422A098CUL))) +#define bM4_TMRA1_CMPAR4_CMP4 (*((volatile unsigned int*)(0x422A0990UL))) +#define bM4_TMRA1_CMPAR4_CMP5 (*((volatile unsigned int*)(0x422A0994UL))) +#define bM4_TMRA1_CMPAR4_CMP6 (*((volatile unsigned int*)(0x422A0998UL))) +#define bM4_TMRA1_CMPAR4_CMP7 (*((volatile unsigned int*)(0x422A099CUL))) +#define bM4_TMRA1_CMPAR4_CMP8 (*((volatile unsigned int*)(0x422A09A0UL))) +#define bM4_TMRA1_CMPAR4_CMP9 (*((volatile unsigned int*)(0x422A09A4UL))) +#define bM4_TMRA1_CMPAR4_CMP10 (*((volatile unsigned int*)(0x422A09A8UL))) +#define bM4_TMRA1_CMPAR4_CMP11 (*((volatile unsigned int*)(0x422A09ACUL))) +#define bM4_TMRA1_CMPAR4_CMP12 (*((volatile unsigned int*)(0x422A09B0UL))) +#define bM4_TMRA1_CMPAR4_CMP13 (*((volatile unsigned int*)(0x422A09B4UL))) +#define bM4_TMRA1_CMPAR4_CMP14 (*((volatile unsigned int*)(0x422A09B8UL))) +#define bM4_TMRA1_CMPAR4_CMP15 (*((volatile unsigned int*)(0x422A09BCUL))) +#define bM4_TMRA1_CMPAR5_CMP0 (*((volatile unsigned int*)(0x422A0A00UL))) +#define bM4_TMRA1_CMPAR5_CMP1 (*((volatile unsigned int*)(0x422A0A04UL))) +#define bM4_TMRA1_CMPAR5_CMP2 (*((volatile unsigned int*)(0x422A0A08UL))) +#define bM4_TMRA1_CMPAR5_CMP3 (*((volatile unsigned int*)(0x422A0A0CUL))) +#define bM4_TMRA1_CMPAR5_CMP4 (*((volatile unsigned int*)(0x422A0A10UL))) +#define bM4_TMRA1_CMPAR5_CMP5 (*((volatile unsigned int*)(0x422A0A14UL))) +#define bM4_TMRA1_CMPAR5_CMP6 (*((volatile unsigned int*)(0x422A0A18UL))) +#define bM4_TMRA1_CMPAR5_CMP7 (*((volatile unsigned int*)(0x422A0A1CUL))) +#define bM4_TMRA1_CMPAR5_CMP8 (*((volatile unsigned int*)(0x422A0A20UL))) +#define bM4_TMRA1_CMPAR5_CMP9 (*((volatile unsigned int*)(0x422A0A24UL))) +#define bM4_TMRA1_CMPAR5_CMP10 (*((volatile unsigned int*)(0x422A0A28UL))) +#define bM4_TMRA1_CMPAR5_CMP11 (*((volatile unsigned int*)(0x422A0A2CUL))) +#define bM4_TMRA1_CMPAR5_CMP12 (*((volatile unsigned int*)(0x422A0A30UL))) +#define bM4_TMRA1_CMPAR5_CMP13 (*((volatile unsigned int*)(0x422A0A34UL))) +#define bM4_TMRA1_CMPAR5_CMP14 (*((volatile unsigned int*)(0x422A0A38UL))) +#define bM4_TMRA1_CMPAR5_CMP15 (*((volatile unsigned int*)(0x422A0A3CUL))) +#define bM4_TMRA1_CMPAR6_CMP0 (*((volatile unsigned int*)(0x422A0A80UL))) +#define bM4_TMRA1_CMPAR6_CMP1 (*((volatile unsigned int*)(0x422A0A84UL))) +#define bM4_TMRA1_CMPAR6_CMP2 (*((volatile unsigned int*)(0x422A0A88UL))) +#define bM4_TMRA1_CMPAR6_CMP3 (*((volatile unsigned int*)(0x422A0A8CUL))) +#define bM4_TMRA1_CMPAR6_CMP4 (*((volatile unsigned int*)(0x422A0A90UL))) +#define bM4_TMRA1_CMPAR6_CMP5 (*((volatile unsigned int*)(0x422A0A94UL))) +#define bM4_TMRA1_CMPAR6_CMP6 (*((volatile unsigned int*)(0x422A0A98UL))) +#define bM4_TMRA1_CMPAR6_CMP7 (*((volatile unsigned int*)(0x422A0A9CUL))) +#define bM4_TMRA1_CMPAR6_CMP8 (*((volatile unsigned int*)(0x422A0AA0UL))) +#define bM4_TMRA1_CMPAR6_CMP9 (*((volatile unsigned int*)(0x422A0AA4UL))) +#define bM4_TMRA1_CMPAR6_CMP10 (*((volatile unsigned int*)(0x422A0AA8UL))) +#define bM4_TMRA1_CMPAR6_CMP11 (*((volatile unsigned int*)(0x422A0AACUL))) +#define bM4_TMRA1_CMPAR6_CMP12 (*((volatile unsigned int*)(0x422A0AB0UL))) +#define bM4_TMRA1_CMPAR6_CMP13 (*((volatile unsigned int*)(0x422A0AB4UL))) +#define bM4_TMRA1_CMPAR6_CMP14 (*((volatile unsigned int*)(0x422A0AB8UL))) +#define bM4_TMRA1_CMPAR6_CMP15 (*((volatile unsigned int*)(0x422A0ABCUL))) +#define bM4_TMRA1_CMPAR7_CMP0 (*((volatile unsigned int*)(0x422A0B00UL))) +#define bM4_TMRA1_CMPAR7_CMP1 (*((volatile unsigned int*)(0x422A0B04UL))) +#define bM4_TMRA1_CMPAR7_CMP2 (*((volatile unsigned int*)(0x422A0B08UL))) +#define bM4_TMRA1_CMPAR7_CMP3 (*((volatile unsigned int*)(0x422A0B0CUL))) +#define bM4_TMRA1_CMPAR7_CMP4 (*((volatile unsigned int*)(0x422A0B10UL))) +#define bM4_TMRA1_CMPAR7_CMP5 (*((volatile unsigned int*)(0x422A0B14UL))) +#define bM4_TMRA1_CMPAR7_CMP6 (*((volatile unsigned int*)(0x422A0B18UL))) +#define bM4_TMRA1_CMPAR7_CMP7 (*((volatile unsigned int*)(0x422A0B1CUL))) +#define bM4_TMRA1_CMPAR7_CMP8 (*((volatile unsigned int*)(0x422A0B20UL))) +#define bM4_TMRA1_CMPAR7_CMP9 (*((volatile unsigned int*)(0x422A0B24UL))) +#define bM4_TMRA1_CMPAR7_CMP10 (*((volatile unsigned int*)(0x422A0B28UL))) +#define bM4_TMRA1_CMPAR7_CMP11 (*((volatile unsigned int*)(0x422A0B2CUL))) +#define bM4_TMRA1_CMPAR7_CMP12 (*((volatile unsigned int*)(0x422A0B30UL))) +#define bM4_TMRA1_CMPAR7_CMP13 (*((volatile unsigned int*)(0x422A0B34UL))) +#define bM4_TMRA1_CMPAR7_CMP14 (*((volatile unsigned int*)(0x422A0B38UL))) +#define bM4_TMRA1_CMPAR7_CMP15 (*((volatile unsigned int*)(0x422A0B3CUL))) +#define bM4_TMRA1_CMPAR8_CMP0 (*((volatile unsigned int*)(0x422A0B80UL))) +#define bM4_TMRA1_CMPAR8_CMP1 (*((volatile unsigned int*)(0x422A0B84UL))) +#define bM4_TMRA1_CMPAR8_CMP2 (*((volatile unsigned int*)(0x422A0B88UL))) +#define bM4_TMRA1_CMPAR8_CMP3 (*((volatile unsigned int*)(0x422A0B8CUL))) +#define bM4_TMRA1_CMPAR8_CMP4 (*((volatile unsigned int*)(0x422A0B90UL))) +#define bM4_TMRA1_CMPAR8_CMP5 (*((volatile unsigned int*)(0x422A0B94UL))) +#define bM4_TMRA1_CMPAR8_CMP6 (*((volatile unsigned int*)(0x422A0B98UL))) +#define bM4_TMRA1_CMPAR8_CMP7 (*((volatile unsigned int*)(0x422A0B9CUL))) +#define bM4_TMRA1_CMPAR8_CMP8 (*((volatile unsigned int*)(0x422A0BA0UL))) +#define bM4_TMRA1_CMPAR8_CMP9 (*((volatile unsigned int*)(0x422A0BA4UL))) +#define bM4_TMRA1_CMPAR8_CMP10 (*((volatile unsigned int*)(0x422A0BA8UL))) +#define bM4_TMRA1_CMPAR8_CMP11 (*((volatile unsigned int*)(0x422A0BACUL))) +#define bM4_TMRA1_CMPAR8_CMP12 (*((volatile unsigned int*)(0x422A0BB0UL))) +#define bM4_TMRA1_CMPAR8_CMP13 (*((volatile unsigned int*)(0x422A0BB4UL))) +#define bM4_TMRA1_CMPAR8_CMP14 (*((volatile unsigned int*)(0x422A0BB8UL))) +#define bM4_TMRA1_CMPAR8_CMP15 (*((volatile unsigned int*)(0x422A0BBCUL))) +#define bM4_TMRA1_BCSTR_START (*((volatile unsigned int*)(0x422A1000UL))) +#define bM4_TMRA1_BCSTR_DIR (*((volatile unsigned int*)(0x422A1004UL))) +#define bM4_TMRA1_BCSTR_MODE (*((volatile unsigned int*)(0x422A1008UL))) +#define bM4_TMRA1_BCSTR_SYNST (*((volatile unsigned int*)(0x422A100CUL))) +#define bM4_TMRA1_BCSTR_CKDIV0 (*((volatile unsigned int*)(0x422A1010UL))) +#define bM4_TMRA1_BCSTR_CKDIV1 (*((volatile unsigned int*)(0x422A1014UL))) +#define bM4_TMRA1_BCSTR_CKDIV2 (*((volatile unsigned int*)(0x422A1018UL))) +#define bM4_TMRA1_BCSTR_CKDIV3 (*((volatile unsigned int*)(0x422A101CUL))) +#define bM4_TMRA1_BCSTR_ITENOVF (*((volatile unsigned int*)(0x422A1030UL))) +#define bM4_TMRA1_BCSTR_ITENUDF (*((volatile unsigned int*)(0x422A1034UL))) +#define bM4_TMRA1_BCSTR_OVFF (*((volatile unsigned int*)(0x422A1038UL))) +#define bM4_TMRA1_BCSTR_UDFF (*((volatile unsigned int*)(0x422A103CUL))) +#define bM4_TMRA1_HCONR_HSTA0 (*((volatile unsigned int*)(0x422A1080UL))) +#define bM4_TMRA1_HCONR_HSTA1 (*((volatile unsigned int*)(0x422A1084UL))) +#define bM4_TMRA1_HCONR_HSTA2 (*((volatile unsigned int*)(0x422A1088UL))) +#define bM4_TMRA1_HCONR_HSTP0 (*((volatile unsigned int*)(0x422A1090UL))) +#define bM4_TMRA1_HCONR_HSTP1 (*((volatile unsigned int*)(0x422A1094UL))) +#define bM4_TMRA1_HCONR_HSTP2 (*((volatile unsigned int*)(0x422A1098UL))) +#define bM4_TMRA1_HCONR_HCLE0 (*((volatile unsigned int*)(0x422A10A0UL))) +#define bM4_TMRA1_HCONR_HCLE1 (*((volatile unsigned int*)(0x422A10A4UL))) +#define bM4_TMRA1_HCONR_HCLE2 (*((volatile unsigned int*)(0x422A10A8UL))) +#define bM4_TMRA1_HCONR_HCLE3 (*((volatile unsigned int*)(0x422A10B0UL))) +#define bM4_TMRA1_HCONR_HCLE4 (*((volatile unsigned int*)(0x422A10B4UL))) +#define bM4_TMRA1_HCONR_HCLE5 (*((volatile unsigned int*)(0x422A10B8UL))) +#define bM4_TMRA1_HCONR_HCLE6 (*((volatile unsigned int*)(0x422A10BCUL))) +#define bM4_TMRA1_HCUPR_HCUP0 (*((volatile unsigned int*)(0x422A1100UL))) +#define bM4_TMRA1_HCUPR_HCUP1 (*((volatile unsigned int*)(0x422A1104UL))) +#define bM4_TMRA1_HCUPR_HCUP2 (*((volatile unsigned int*)(0x422A1108UL))) +#define bM4_TMRA1_HCUPR_HCUP3 (*((volatile unsigned int*)(0x422A110CUL))) +#define bM4_TMRA1_HCUPR_HCUP4 (*((volatile unsigned int*)(0x422A1110UL))) +#define bM4_TMRA1_HCUPR_HCUP5 (*((volatile unsigned int*)(0x422A1114UL))) +#define bM4_TMRA1_HCUPR_HCUP6 (*((volatile unsigned int*)(0x422A1118UL))) +#define bM4_TMRA1_HCUPR_HCUP7 (*((volatile unsigned int*)(0x422A111CUL))) +#define bM4_TMRA1_HCUPR_HCUP8 (*((volatile unsigned int*)(0x422A1120UL))) +#define bM4_TMRA1_HCUPR_HCUP9 (*((volatile unsigned int*)(0x422A1124UL))) +#define bM4_TMRA1_HCUPR_HCUP10 (*((volatile unsigned int*)(0x422A1128UL))) +#define bM4_TMRA1_HCUPR_HCUP11 (*((volatile unsigned int*)(0x422A112CUL))) +#define bM4_TMRA1_HCUPR_HCUP12 (*((volatile unsigned int*)(0x422A1130UL))) +#define bM4_TMRA1_HCDOR_HCDO0 (*((volatile unsigned int*)(0x422A1180UL))) +#define bM4_TMRA1_HCDOR_HCDO1 (*((volatile unsigned int*)(0x422A1184UL))) +#define bM4_TMRA1_HCDOR_HCDO2 (*((volatile unsigned int*)(0x422A1188UL))) +#define bM4_TMRA1_HCDOR_HCDO3 (*((volatile unsigned int*)(0x422A118CUL))) +#define bM4_TMRA1_HCDOR_HCDO4 (*((volatile unsigned int*)(0x422A1190UL))) +#define bM4_TMRA1_HCDOR_HCDO5 (*((volatile unsigned int*)(0x422A1194UL))) +#define bM4_TMRA1_HCDOR_HCDO6 (*((volatile unsigned int*)(0x422A1198UL))) +#define bM4_TMRA1_HCDOR_HCDO7 (*((volatile unsigned int*)(0x422A119CUL))) +#define bM4_TMRA1_HCDOR_HCDO8 (*((volatile unsigned int*)(0x422A11A0UL))) +#define bM4_TMRA1_HCDOR_HCDO9 (*((volatile unsigned int*)(0x422A11A4UL))) +#define bM4_TMRA1_HCDOR_HCDO10 (*((volatile unsigned int*)(0x422A11A8UL))) +#define bM4_TMRA1_HCDOR_HCDO11 (*((volatile unsigned int*)(0x422A11ACUL))) +#define bM4_TMRA1_HCDOR_HCDO12 (*((volatile unsigned int*)(0x422A11B0UL))) +#define bM4_TMRA1_ICONR_ITEN1 (*((volatile unsigned int*)(0x422A1200UL))) +#define bM4_TMRA1_ICONR_ITEN2 (*((volatile unsigned int*)(0x422A1204UL))) +#define bM4_TMRA1_ICONR_ITEN3 (*((volatile unsigned int*)(0x422A1208UL))) +#define bM4_TMRA1_ICONR_ITEN4 (*((volatile unsigned int*)(0x422A120CUL))) +#define bM4_TMRA1_ICONR_ITEN5 (*((volatile unsigned int*)(0x422A1210UL))) +#define bM4_TMRA1_ICONR_ITEN6 (*((volatile unsigned int*)(0x422A1214UL))) +#define bM4_TMRA1_ICONR_ITEN7 (*((volatile unsigned int*)(0x422A1218UL))) +#define bM4_TMRA1_ICONR_ITEN8 (*((volatile unsigned int*)(0x422A121CUL))) +#define bM4_TMRA1_ECONR_ETEN1 (*((volatile unsigned int*)(0x422A1280UL))) +#define bM4_TMRA1_ECONR_ETEN2 (*((volatile unsigned int*)(0x422A1284UL))) +#define bM4_TMRA1_ECONR_ETEN3 (*((volatile unsigned int*)(0x422A1288UL))) +#define bM4_TMRA1_ECONR_ETEN4 (*((volatile unsigned int*)(0x422A128CUL))) +#define bM4_TMRA1_ECONR_ETEN5 (*((volatile unsigned int*)(0x422A1290UL))) +#define bM4_TMRA1_ECONR_ETEN6 (*((volatile unsigned int*)(0x422A1294UL))) +#define bM4_TMRA1_ECONR_ETEN7 (*((volatile unsigned int*)(0x422A1298UL))) +#define bM4_TMRA1_ECONR_ETEN8 (*((volatile unsigned int*)(0x422A129CUL))) +#define bM4_TMRA1_FCONR_NOFIENTG (*((volatile unsigned int*)(0x422A1300UL))) +#define bM4_TMRA1_FCONR_NOFICKTG0 (*((volatile unsigned int*)(0x422A1304UL))) +#define bM4_TMRA1_FCONR_NOFICKTG1 (*((volatile unsigned int*)(0x422A1308UL))) +#define bM4_TMRA1_FCONR_NOFIENCA (*((volatile unsigned int*)(0x422A1320UL))) +#define bM4_TMRA1_FCONR_NOFICKCA0 (*((volatile unsigned int*)(0x422A1324UL))) +#define bM4_TMRA1_FCONR_NOFICKCA1 (*((volatile unsigned int*)(0x422A1328UL))) +#define bM4_TMRA1_FCONR_NOFIENCB (*((volatile unsigned int*)(0x422A1330UL))) +#define bM4_TMRA1_FCONR_NOFICKCB0 (*((volatile unsigned int*)(0x422A1334UL))) +#define bM4_TMRA1_FCONR_NOFICKCB1 (*((volatile unsigned int*)(0x422A1338UL))) +#define bM4_TMRA1_STFLR_CMPF1 (*((volatile unsigned int*)(0x422A1380UL))) +#define bM4_TMRA1_STFLR_CMPF2 (*((volatile unsigned int*)(0x422A1384UL))) +#define bM4_TMRA1_STFLR_CMPF3 (*((volatile unsigned int*)(0x422A1388UL))) +#define bM4_TMRA1_STFLR_CMPF4 (*((volatile unsigned int*)(0x422A138CUL))) +#define bM4_TMRA1_STFLR_CMPF5 (*((volatile unsigned int*)(0x422A1390UL))) +#define bM4_TMRA1_STFLR_CMPF6 (*((volatile unsigned int*)(0x422A1394UL))) +#define bM4_TMRA1_STFLR_CMPF7 (*((volatile unsigned int*)(0x422A1398UL))) +#define bM4_TMRA1_STFLR_CMPF8 (*((volatile unsigned int*)(0x422A139CUL))) +#define bM4_TMRA1_BCONR1_BEN (*((volatile unsigned int*)(0x422A1800UL))) +#define bM4_TMRA1_BCONR1_BSE0 (*((volatile unsigned int*)(0x422A1804UL))) +#define bM4_TMRA1_BCONR1_BSE1 (*((volatile unsigned int*)(0x422A1808UL))) +#define bM4_TMRA1_BCONR2_BEN (*((volatile unsigned int*)(0x422A1900UL))) +#define bM4_TMRA1_BCONR2_BSE0 (*((volatile unsigned int*)(0x422A1904UL))) +#define bM4_TMRA1_BCONR2_BSE1 (*((volatile unsigned int*)(0x422A1908UL))) +#define bM4_TMRA1_BCONR3_BEN (*((volatile unsigned int*)(0x422A1A00UL))) +#define bM4_TMRA1_BCONR3_BSE0 (*((volatile unsigned int*)(0x422A1A04UL))) +#define bM4_TMRA1_BCONR3_BSE1 (*((volatile unsigned int*)(0x422A1A08UL))) +#define bM4_TMRA1_BCONR4_BEN (*((volatile unsigned int*)(0x422A1B00UL))) +#define bM4_TMRA1_BCONR4_BSE0 (*((volatile unsigned int*)(0x422A1B04UL))) +#define bM4_TMRA1_BCONR4_BSE1 (*((volatile unsigned int*)(0x422A1B08UL))) +#define bM4_TMRA1_CCONR1_CAPMD (*((volatile unsigned int*)(0x422A2000UL))) +#define bM4_TMRA1_CCONR1_HICP0 (*((volatile unsigned int*)(0x422A2010UL))) +#define bM4_TMRA1_CCONR1_HICP1 (*((volatile unsigned int*)(0x422A2014UL))) +#define bM4_TMRA1_CCONR1_HICP2 (*((volatile unsigned int*)(0x422A2018UL))) +#define bM4_TMRA1_CCONR1_HICP3 (*((volatile unsigned int*)(0x422A2020UL))) +#define bM4_TMRA1_CCONR1_HICP4 (*((volatile unsigned int*)(0x422A2024UL))) +#define bM4_TMRA1_CCONR1_NOFIENCP (*((volatile unsigned int*)(0x422A2030UL))) +#define bM4_TMRA1_CCONR1_NOFICKCP0 (*((volatile unsigned int*)(0x422A2034UL))) +#define bM4_TMRA1_CCONR1_NOFICKCP1 (*((volatile unsigned int*)(0x422A2038UL))) +#define bM4_TMRA1_CCONR2_CAPMD (*((volatile unsigned int*)(0x422A2080UL))) +#define bM4_TMRA1_CCONR2_HICP0 (*((volatile unsigned int*)(0x422A2090UL))) +#define bM4_TMRA1_CCONR2_HICP1 (*((volatile unsigned int*)(0x422A2094UL))) +#define bM4_TMRA1_CCONR2_HICP2 (*((volatile unsigned int*)(0x422A2098UL))) +#define bM4_TMRA1_CCONR2_HICP3 (*((volatile unsigned int*)(0x422A20A0UL))) +#define bM4_TMRA1_CCONR2_HICP4 (*((volatile unsigned int*)(0x422A20A4UL))) +#define bM4_TMRA1_CCONR2_NOFIENCP (*((volatile unsigned int*)(0x422A20B0UL))) +#define bM4_TMRA1_CCONR2_NOFICKCP0 (*((volatile unsigned int*)(0x422A20B4UL))) +#define bM4_TMRA1_CCONR2_NOFICKCP1 (*((volatile unsigned int*)(0x422A20B8UL))) +#define bM4_TMRA1_CCONR3_CAPMD (*((volatile unsigned int*)(0x422A2100UL))) +#define bM4_TMRA1_CCONR3_HICP0 (*((volatile unsigned int*)(0x422A2110UL))) +#define bM4_TMRA1_CCONR3_HICP1 (*((volatile unsigned int*)(0x422A2114UL))) +#define bM4_TMRA1_CCONR3_HICP2 (*((volatile unsigned int*)(0x422A2118UL))) +#define bM4_TMRA1_CCONR3_HICP3 (*((volatile unsigned int*)(0x422A2120UL))) +#define bM4_TMRA1_CCONR3_HICP4 (*((volatile unsigned int*)(0x422A2124UL))) +#define bM4_TMRA1_CCONR3_NOFIENCP (*((volatile unsigned int*)(0x422A2130UL))) +#define bM4_TMRA1_CCONR3_NOFICKCP0 (*((volatile unsigned int*)(0x422A2134UL))) +#define bM4_TMRA1_CCONR3_NOFICKCP1 (*((volatile unsigned int*)(0x422A2138UL))) +#define bM4_TMRA1_CCONR4_CAPMD (*((volatile unsigned int*)(0x422A2180UL))) +#define bM4_TMRA1_CCONR4_HICP0 (*((volatile unsigned int*)(0x422A2190UL))) +#define bM4_TMRA1_CCONR4_HICP1 (*((volatile unsigned int*)(0x422A2194UL))) +#define bM4_TMRA1_CCONR4_HICP2 (*((volatile unsigned int*)(0x422A2198UL))) +#define bM4_TMRA1_CCONR4_HICP3 (*((volatile unsigned int*)(0x422A21A0UL))) +#define bM4_TMRA1_CCONR4_HICP4 (*((volatile unsigned int*)(0x422A21A4UL))) +#define bM4_TMRA1_CCONR4_NOFIENCP (*((volatile unsigned int*)(0x422A21B0UL))) +#define bM4_TMRA1_CCONR4_NOFICKCP0 (*((volatile unsigned int*)(0x422A21B4UL))) +#define bM4_TMRA1_CCONR4_NOFICKCP1 (*((volatile unsigned int*)(0x422A21B8UL))) +#define bM4_TMRA1_CCONR5_CAPMD (*((volatile unsigned int*)(0x422A2200UL))) +#define bM4_TMRA1_CCONR5_HICP0 (*((volatile unsigned int*)(0x422A2210UL))) +#define bM4_TMRA1_CCONR5_HICP1 (*((volatile unsigned int*)(0x422A2214UL))) +#define bM4_TMRA1_CCONR5_HICP2 (*((volatile unsigned int*)(0x422A2218UL))) +#define bM4_TMRA1_CCONR5_HICP3 (*((volatile unsigned int*)(0x422A2220UL))) +#define bM4_TMRA1_CCONR5_HICP4 (*((volatile unsigned int*)(0x422A2224UL))) +#define bM4_TMRA1_CCONR5_NOFIENCP (*((volatile unsigned int*)(0x422A2230UL))) +#define bM4_TMRA1_CCONR5_NOFICKCP0 (*((volatile unsigned int*)(0x422A2234UL))) +#define bM4_TMRA1_CCONR5_NOFICKCP1 (*((volatile unsigned int*)(0x422A2238UL))) +#define bM4_TMRA1_CCONR6_CAPMD (*((volatile unsigned int*)(0x422A2280UL))) +#define bM4_TMRA1_CCONR6_HICP0 (*((volatile unsigned int*)(0x422A2290UL))) +#define bM4_TMRA1_CCONR6_HICP1 (*((volatile unsigned int*)(0x422A2294UL))) +#define bM4_TMRA1_CCONR6_HICP2 (*((volatile unsigned int*)(0x422A2298UL))) +#define bM4_TMRA1_CCONR6_HICP3 (*((volatile unsigned int*)(0x422A22A0UL))) +#define bM4_TMRA1_CCONR6_HICP4 (*((volatile unsigned int*)(0x422A22A4UL))) +#define bM4_TMRA1_CCONR6_NOFIENCP (*((volatile unsigned int*)(0x422A22B0UL))) +#define bM4_TMRA1_CCONR6_NOFICKCP0 (*((volatile unsigned int*)(0x422A22B4UL))) +#define bM4_TMRA1_CCONR6_NOFICKCP1 (*((volatile unsigned int*)(0x422A22B8UL))) +#define bM4_TMRA1_CCONR7_CAPMD (*((volatile unsigned int*)(0x422A2300UL))) +#define bM4_TMRA1_CCONR7_HICP0 (*((volatile unsigned int*)(0x422A2310UL))) +#define bM4_TMRA1_CCONR7_HICP1 (*((volatile unsigned int*)(0x422A2314UL))) +#define bM4_TMRA1_CCONR7_HICP2 (*((volatile unsigned int*)(0x422A2318UL))) +#define bM4_TMRA1_CCONR7_HICP3 (*((volatile unsigned int*)(0x422A2320UL))) +#define bM4_TMRA1_CCONR7_HICP4 (*((volatile unsigned int*)(0x422A2324UL))) +#define bM4_TMRA1_CCONR7_NOFIENCP (*((volatile unsigned int*)(0x422A2330UL))) +#define bM4_TMRA1_CCONR7_NOFICKCP0 (*((volatile unsigned int*)(0x422A2334UL))) +#define bM4_TMRA1_CCONR7_NOFICKCP1 (*((volatile unsigned int*)(0x422A2338UL))) +#define bM4_TMRA1_CCONR8_CAPMD (*((volatile unsigned int*)(0x422A2380UL))) +#define bM4_TMRA1_CCONR8_HICP0 (*((volatile unsigned int*)(0x422A2390UL))) +#define bM4_TMRA1_CCONR8_HICP1 (*((volatile unsigned int*)(0x422A2394UL))) +#define bM4_TMRA1_CCONR8_HICP2 (*((volatile unsigned int*)(0x422A2398UL))) +#define bM4_TMRA1_CCONR8_HICP3 (*((volatile unsigned int*)(0x422A23A0UL))) +#define bM4_TMRA1_CCONR8_HICP4 (*((volatile unsigned int*)(0x422A23A4UL))) +#define bM4_TMRA1_CCONR8_NOFIENCP (*((volatile unsigned int*)(0x422A23B0UL))) +#define bM4_TMRA1_CCONR8_NOFICKCP0 (*((volatile unsigned int*)(0x422A23B4UL))) +#define bM4_TMRA1_CCONR8_NOFICKCP1 (*((volatile unsigned int*)(0x422A23B8UL))) +#define bM4_TMRA1_PCONR1_STAC0 (*((volatile unsigned int*)(0x422A2800UL))) +#define bM4_TMRA1_PCONR1_STAC1 (*((volatile unsigned int*)(0x422A2804UL))) +#define bM4_TMRA1_PCONR1_STPC0 (*((volatile unsigned int*)(0x422A2808UL))) +#define bM4_TMRA1_PCONR1_STPC1 (*((volatile unsigned int*)(0x422A280CUL))) +#define bM4_TMRA1_PCONR1_CMPC0 (*((volatile unsigned int*)(0x422A2810UL))) +#define bM4_TMRA1_PCONR1_CMPC1 (*((volatile unsigned int*)(0x422A2814UL))) +#define bM4_TMRA1_PCONR1_PERC0 (*((volatile unsigned int*)(0x422A2818UL))) +#define bM4_TMRA1_PCONR1_PERC1 (*((volatile unsigned int*)(0x422A281CUL))) +#define bM4_TMRA1_PCONR1_FORC0 (*((volatile unsigned int*)(0x422A2820UL))) +#define bM4_TMRA1_PCONR1_FORC1 (*((volatile unsigned int*)(0x422A2824UL))) +#define bM4_TMRA1_PCONR1_OUTEN (*((volatile unsigned int*)(0x422A2830UL))) +#define bM4_TMRA1_PCONR2_STAC0 (*((volatile unsigned int*)(0x422A2880UL))) +#define bM4_TMRA1_PCONR2_STAC1 (*((volatile unsigned int*)(0x422A2884UL))) +#define bM4_TMRA1_PCONR2_STPC0 (*((volatile unsigned int*)(0x422A2888UL))) +#define bM4_TMRA1_PCONR2_STPC1 (*((volatile unsigned int*)(0x422A288CUL))) +#define bM4_TMRA1_PCONR2_CMPC0 (*((volatile unsigned int*)(0x422A2890UL))) +#define bM4_TMRA1_PCONR2_CMPC1 (*((volatile unsigned int*)(0x422A2894UL))) +#define bM4_TMRA1_PCONR2_PERC0 (*((volatile unsigned int*)(0x422A2898UL))) +#define bM4_TMRA1_PCONR2_PERC1 (*((volatile unsigned int*)(0x422A289CUL))) +#define bM4_TMRA1_PCONR2_FORC0 (*((volatile unsigned int*)(0x422A28A0UL))) +#define bM4_TMRA1_PCONR2_FORC1 (*((volatile unsigned int*)(0x422A28A4UL))) +#define bM4_TMRA1_PCONR2_OUTEN (*((volatile unsigned int*)(0x422A28B0UL))) +#define bM4_TMRA1_PCONR3_STAC0 (*((volatile unsigned int*)(0x422A2900UL))) +#define bM4_TMRA1_PCONR3_STAC1 (*((volatile unsigned int*)(0x422A2904UL))) +#define bM4_TMRA1_PCONR3_STPC0 (*((volatile unsigned int*)(0x422A2908UL))) +#define bM4_TMRA1_PCONR3_STPC1 (*((volatile unsigned int*)(0x422A290CUL))) +#define bM4_TMRA1_PCONR3_CMPC0 (*((volatile unsigned int*)(0x422A2910UL))) +#define bM4_TMRA1_PCONR3_CMPC1 (*((volatile unsigned int*)(0x422A2914UL))) +#define bM4_TMRA1_PCONR3_PERC0 (*((volatile unsigned int*)(0x422A2918UL))) +#define bM4_TMRA1_PCONR3_PERC1 (*((volatile unsigned int*)(0x422A291CUL))) +#define bM4_TMRA1_PCONR3_FORC0 (*((volatile unsigned int*)(0x422A2920UL))) +#define bM4_TMRA1_PCONR3_FORC1 (*((volatile unsigned int*)(0x422A2924UL))) +#define bM4_TMRA1_PCONR3_OUTEN (*((volatile unsigned int*)(0x422A2930UL))) +#define bM4_TMRA1_PCONR4_STAC0 (*((volatile unsigned int*)(0x422A2980UL))) +#define bM4_TMRA1_PCONR4_STAC1 (*((volatile unsigned int*)(0x422A2984UL))) +#define bM4_TMRA1_PCONR4_STPC0 (*((volatile unsigned int*)(0x422A2988UL))) +#define bM4_TMRA1_PCONR4_STPC1 (*((volatile unsigned int*)(0x422A298CUL))) +#define bM4_TMRA1_PCONR4_CMPC0 (*((volatile unsigned int*)(0x422A2990UL))) +#define bM4_TMRA1_PCONR4_CMPC1 (*((volatile unsigned int*)(0x422A2994UL))) +#define bM4_TMRA1_PCONR4_PERC0 (*((volatile unsigned int*)(0x422A2998UL))) +#define bM4_TMRA1_PCONR4_PERC1 (*((volatile unsigned int*)(0x422A299CUL))) +#define bM4_TMRA1_PCONR4_FORC0 (*((volatile unsigned int*)(0x422A29A0UL))) +#define bM4_TMRA1_PCONR4_FORC1 (*((volatile unsigned int*)(0x422A29A4UL))) +#define bM4_TMRA1_PCONR4_OUTEN (*((volatile unsigned int*)(0x422A29B0UL))) +#define bM4_TMRA1_PCONR5_STAC0 (*((volatile unsigned int*)(0x422A2A00UL))) +#define bM4_TMRA1_PCONR5_STAC1 (*((volatile unsigned int*)(0x422A2A04UL))) +#define bM4_TMRA1_PCONR5_STPC0 (*((volatile unsigned int*)(0x422A2A08UL))) +#define bM4_TMRA1_PCONR5_STPC1 (*((volatile unsigned int*)(0x422A2A0CUL))) +#define bM4_TMRA1_PCONR5_CMPC0 (*((volatile unsigned int*)(0x422A2A10UL))) +#define bM4_TMRA1_PCONR5_CMPC1 (*((volatile unsigned int*)(0x422A2A14UL))) +#define bM4_TMRA1_PCONR5_PERC0 (*((volatile unsigned int*)(0x422A2A18UL))) +#define bM4_TMRA1_PCONR5_PERC1 (*((volatile unsigned int*)(0x422A2A1CUL))) +#define bM4_TMRA1_PCONR5_FORC0 (*((volatile unsigned int*)(0x422A2A20UL))) +#define bM4_TMRA1_PCONR5_FORC1 (*((volatile unsigned int*)(0x422A2A24UL))) +#define bM4_TMRA1_PCONR5_OUTEN (*((volatile unsigned int*)(0x422A2A30UL))) +#define bM4_TMRA1_PCONR6_STAC0 (*((volatile unsigned int*)(0x422A2A80UL))) +#define bM4_TMRA1_PCONR6_STAC1 (*((volatile unsigned int*)(0x422A2A84UL))) +#define bM4_TMRA1_PCONR6_STPC0 (*((volatile unsigned int*)(0x422A2A88UL))) +#define bM4_TMRA1_PCONR6_STPC1 (*((volatile unsigned int*)(0x422A2A8CUL))) +#define bM4_TMRA1_PCONR6_CMPC0 (*((volatile unsigned int*)(0x422A2A90UL))) +#define bM4_TMRA1_PCONR6_CMPC1 (*((volatile unsigned int*)(0x422A2A94UL))) +#define bM4_TMRA1_PCONR6_PERC0 (*((volatile unsigned int*)(0x422A2A98UL))) +#define bM4_TMRA1_PCONR6_PERC1 (*((volatile unsigned int*)(0x422A2A9CUL))) +#define bM4_TMRA1_PCONR6_FORC0 (*((volatile unsigned int*)(0x422A2AA0UL))) +#define bM4_TMRA1_PCONR6_FORC1 (*((volatile unsigned int*)(0x422A2AA4UL))) +#define bM4_TMRA1_PCONR6_OUTEN (*((volatile unsigned int*)(0x422A2AB0UL))) +#define bM4_TMRA1_PCONR7_STAC0 (*((volatile unsigned int*)(0x422A2B00UL))) +#define bM4_TMRA1_PCONR7_STAC1 (*((volatile unsigned int*)(0x422A2B04UL))) +#define bM4_TMRA1_PCONR7_STPC0 (*((volatile unsigned int*)(0x422A2B08UL))) +#define bM4_TMRA1_PCONR7_STPC1 (*((volatile unsigned int*)(0x422A2B0CUL))) +#define bM4_TMRA1_PCONR7_CMPC0 (*((volatile unsigned int*)(0x422A2B10UL))) +#define bM4_TMRA1_PCONR7_CMPC1 (*((volatile unsigned int*)(0x422A2B14UL))) +#define bM4_TMRA1_PCONR7_PERC0 (*((volatile unsigned int*)(0x422A2B18UL))) +#define bM4_TMRA1_PCONR7_PERC1 (*((volatile unsigned int*)(0x422A2B1CUL))) +#define bM4_TMRA1_PCONR7_FORC0 (*((volatile unsigned int*)(0x422A2B20UL))) +#define bM4_TMRA1_PCONR7_FORC1 (*((volatile unsigned int*)(0x422A2B24UL))) +#define bM4_TMRA1_PCONR7_OUTEN (*((volatile unsigned int*)(0x422A2B30UL))) +#define bM4_TMRA1_PCONR8_STAC0 (*((volatile unsigned int*)(0x422A2B80UL))) +#define bM4_TMRA1_PCONR8_STAC1 (*((volatile unsigned int*)(0x422A2B84UL))) +#define bM4_TMRA1_PCONR8_STPC0 (*((volatile unsigned int*)(0x422A2B88UL))) +#define bM4_TMRA1_PCONR8_STPC1 (*((volatile unsigned int*)(0x422A2B8CUL))) +#define bM4_TMRA1_PCONR8_CMPC0 (*((volatile unsigned int*)(0x422A2B90UL))) +#define bM4_TMRA1_PCONR8_CMPC1 (*((volatile unsigned int*)(0x422A2B94UL))) +#define bM4_TMRA1_PCONR8_PERC0 (*((volatile unsigned int*)(0x422A2B98UL))) +#define bM4_TMRA1_PCONR8_PERC1 (*((volatile unsigned int*)(0x422A2B9CUL))) +#define bM4_TMRA1_PCONR8_FORC0 (*((volatile unsigned int*)(0x422A2BA0UL))) +#define bM4_TMRA1_PCONR8_FORC1 (*((volatile unsigned int*)(0x422A2BA4UL))) +#define bM4_TMRA1_PCONR8_OUTEN (*((volatile unsigned int*)(0x422A2BB0UL))) +#define bM4_TMRA2_CNTER_CNT0 (*((volatile unsigned int*)(0x422A8000UL))) +#define bM4_TMRA2_CNTER_CNT1 (*((volatile unsigned int*)(0x422A8004UL))) +#define bM4_TMRA2_CNTER_CNT2 (*((volatile unsigned int*)(0x422A8008UL))) +#define bM4_TMRA2_CNTER_CNT3 (*((volatile unsigned int*)(0x422A800CUL))) +#define bM4_TMRA2_CNTER_CNT4 (*((volatile unsigned int*)(0x422A8010UL))) +#define bM4_TMRA2_CNTER_CNT5 (*((volatile unsigned int*)(0x422A8014UL))) +#define bM4_TMRA2_CNTER_CNT6 (*((volatile unsigned int*)(0x422A8018UL))) +#define bM4_TMRA2_CNTER_CNT7 (*((volatile unsigned int*)(0x422A801CUL))) +#define bM4_TMRA2_CNTER_CNT8 (*((volatile unsigned int*)(0x422A8020UL))) +#define bM4_TMRA2_CNTER_CNT9 (*((volatile unsigned int*)(0x422A8024UL))) +#define bM4_TMRA2_CNTER_CNT10 (*((volatile unsigned int*)(0x422A8028UL))) +#define bM4_TMRA2_CNTER_CNT11 (*((volatile unsigned int*)(0x422A802CUL))) +#define bM4_TMRA2_CNTER_CNT12 (*((volatile unsigned int*)(0x422A8030UL))) +#define bM4_TMRA2_CNTER_CNT13 (*((volatile unsigned int*)(0x422A8034UL))) +#define bM4_TMRA2_CNTER_CNT14 (*((volatile unsigned int*)(0x422A8038UL))) +#define bM4_TMRA2_CNTER_CNT15 (*((volatile unsigned int*)(0x422A803CUL))) +#define bM4_TMRA2_PERAR_PER0 (*((volatile unsigned int*)(0x422A8080UL))) +#define bM4_TMRA2_PERAR_PER1 (*((volatile unsigned int*)(0x422A8084UL))) +#define bM4_TMRA2_PERAR_PER2 (*((volatile unsigned int*)(0x422A8088UL))) +#define bM4_TMRA2_PERAR_PER3 (*((volatile unsigned int*)(0x422A808CUL))) +#define bM4_TMRA2_PERAR_PER4 (*((volatile unsigned int*)(0x422A8090UL))) +#define bM4_TMRA2_PERAR_PER5 (*((volatile unsigned int*)(0x422A8094UL))) +#define bM4_TMRA2_PERAR_PER6 (*((volatile unsigned int*)(0x422A8098UL))) +#define bM4_TMRA2_PERAR_PER7 (*((volatile unsigned int*)(0x422A809CUL))) +#define bM4_TMRA2_PERAR_PER8 (*((volatile unsigned int*)(0x422A80A0UL))) +#define bM4_TMRA2_PERAR_PER9 (*((volatile unsigned int*)(0x422A80A4UL))) +#define bM4_TMRA2_PERAR_PER10 (*((volatile unsigned int*)(0x422A80A8UL))) +#define bM4_TMRA2_PERAR_PER11 (*((volatile unsigned int*)(0x422A80ACUL))) +#define bM4_TMRA2_PERAR_PER12 (*((volatile unsigned int*)(0x422A80B0UL))) +#define bM4_TMRA2_PERAR_PER13 (*((volatile unsigned int*)(0x422A80B4UL))) +#define bM4_TMRA2_PERAR_PER14 (*((volatile unsigned int*)(0x422A80B8UL))) +#define bM4_TMRA2_PERAR_PER15 (*((volatile unsigned int*)(0x422A80BCUL))) +#define bM4_TMRA2_CMPAR1_CMP0 (*((volatile unsigned int*)(0x422A8800UL))) +#define bM4_TMRA2_CMPAR1_CMP1 (*((volatile unsigned int*)(0x422A8804UL))) +#define bM4_TMRA2_CMPAR1_CMP2 (*((volatile unsigned int*)(0x422A8808UL))) +#define bM4_TMRA2_CMPAR1_CMP3 (*((volatile unsigned int*)(0x422A880CUL))) +#define bM4_TMRA2_CMPAR1_CMP4 (*((volatile unsigned int*)(0x422A8810UL))) +#define bM4_TMRA2_CMPAR1_CMP5 (*((volatile unsigned int*)(0x422A8814UL))) +#define bM4_TMRA2_CMPAR1_CMP6 (*((volatile unsigned int*)(0x422A8818UL))) +#define bM4_TMRA2_CMPAR1_CMP7 (*((volatile unsigned int*)(0x422A881CUL))) +#define bM4_TMRA2_CMPAR1_CMP8 (*((volatile unsigned int*)(0x422A8820UL))) +#define bM4_TMRA2_CMPAR1_CMP9 (*((volatile unsigned int*)(0x422A8824UL))) +#define bM4_TMRA2_CMPAR1_CMP10 (*((volatile unsigned int*)(0x422A8828UL))) +#define bM4_TMRA2_CMPAR1_CMP11 (*((volatile unsigned int*)(0x422A882CUL))) +#define bM4_TMRA2_CMPAR1_CMP12 (*((volatile unsigned int*)(0x422A8830UL))) +#define bM4_TMRA2_CMPAR1_CMP13 (*((volatile unsigned int*)(0x422A8834UL))) +#define bM4_TMRA2_CMPAR1_CMP14 (*((volatile unsigned int*)(0x422A8838UL))) +#define bM4_TMRA2_CMPAR1_CMP15 (*((volatile unsigned int*)(0x422A883CUL))) +#define bM4_TMRA2_CMPAR2_CMP0 (*((volatile unsigned int*)(0x422A8880UL))) +#define bM4_TMRA2_CMPAR2_CMP1 (*((volatile unsigned int*)(0x422A8884UL))) +#define bM4_TMRA2_CMPAR2_CMP2 (*((volatile unsigned int*)(0x422A8888UL))) +#define bM4_TMRA2_CMPAR2_CMP3 (*((volatile unsigned int*)(0x422A888CUL))) +#define bM4_TMRA2_CMPAR2_CMP4 (*((volatile unsigned int*)(0x422A8890UL))) +#define bM4_TMRA2_CMPAR2_CMP5 (*((volatile unsigned int*)(0x422A8894UL))) +#define bM4_TMRA2_CMPAR2_CMP6 (*((volatile unsigned int*)(0x422A8898UL))) +#define bM4_TMRA2_CMPAR2_CMP7 (*((volatile unsigned int*)(0x422A889CUL))) +#define bM4_TMRA2_CMPAR2_CMP8 (*((volatile unsigned int*)(0x422A88A0UL))) +#define bM4_TMRA2_CMPAR2_CMP9 (*((volatile unsigned int*)(0x422A88A4UL))) +#define bM4_TMRA2_CMPAR2_CMP10 (*((volatile unsigned int*)(0x422A88A8UL))) +#define bM4_TMRA2_CMPAR2_CMP11 (*((volatile unsigned int*)(0x422A88ACUL))) +#define bM4_TMRA2_CMPAR2_CMP12 (*((volatile unsigned int*)(0x422A88B0UL))) +#define bM4_TMRA2_CMPAR2_CMP13 (*((volatile unsigned int*)(0x422A88B4UL))) +#define bM4_TMRA2_CMPAR2_CMP14 (*((volatile unsigned int*)(0x422A88B8UL))) +#define bM4_TMRA2_CMPAR2_CMP15 (*((volatile unsigned int*)(0x422A88BCUL))) +#define bM4_TMRA2_CMPAR3_CMP0 (*((volatile unsigned int*)(0x422A8900UL))) +#define bM4_TMRA2_CMPAR3_CMP1 (*((volatile unsigned int*)(0x422A8904UL))) +#define bM4_TMRA2_CMPAR3_CMP2 (*((volatile unsigned int*)(0x422A8908UL))) +#define bM4_TMRA2_CMPAR3_CMP3 (*((volatile unsigned int*)(0x422A890CUL))) +#define bM4_TMRA2_CMPAR3_CMP4 (*((volatile unsigned int*)(0x422A8910UL))) +#define bM4_TMRA2_CMPAR3_CMP5 (*((volatile unsigned int*)(0x422A8914UL))) +#define bM4_TMRA2_CMPAR3_CMP6 (*((volatile unsigned int*)(0x422A8918UL))) +#define bM4_TMRA2_CMPAR3_CMP7 (*((volatile unsigned int*)(0x422A891CUL))) +#define bM4_TMRA2_CMPAR3_CMP8 (*((volatile unsigned int*)(0x422A8920UL))) +#define bM4_TMRA2_CMPAR3_CMP9 (*((volatile unsigned int*)(0x422A8924UL))) +#define bM4_TMRA2_CMPAR3_CMP10 (*((volatile unsigned int*)(0x422A8928UL))) +#define bM4_TMRA2_CMPAR3_CMP11 (*((volatile unsigned int*)(0x422A892CUL))) +#define bM4_TMRA2_CMPAR3_CMP12 (*((volatile unsigned int*)(0x422A8930UL))) +#define bM4_TMRA2_CMPAR3_CMP13 (*((volatile unsigned int*)(0x422A8934UL))) +#define bM4_TMRA2_CMPAR3_CMP14 (*((volatile unsigned int*)(0x422A8938UL))) +#define bM4_TMRA2_CMPAR3_CMP15 (*((volatile unsigned int*)(0x422A893CUL))) +#define bM4_TMRA2_CMPAR4_CMP0 (*((volatile unsigned int*)(0x422A8980UL))) +#define bM4_TMRA2_CMPAR4_CMP1 (*((volatile unsigned int*)(0x422A8984UL))) +#define bM4_TMRA2_CMPAR4_CMP2 (*((volatile unsigned int*)(0x422A8988UL))) +#define bM4_TMRA2_CMPAR4_CMP3 (*((volatile unsigned int*)(0x422A898CUL))) +#define bM4_TMRA2_CMPAR4_CMP4 (*((volatile unsigned int*)(0x422A8990UL))) +#define bM4_TMRA2_CMPAR4_CMP5 (*((volatile unsigned int*)(0x422A8994UL))) +#define bM4_TMRA2_CMPAR4_CMP6 (*((volatile unsigned int*)(0x422A8998UL))) +#define bM4_TMRA2_CMPAR4_CMP7 (*((volatile unsigned int*)(0x422A899CUL))) +#define bM4_TMRA2_CMPAR4_CMP8 (*((volatile unsigned int*)(0x422A89A0UL))) +#define bM4_TMRA2_CMPAR4_CMP9 (*((volatile unsigned int*)(0x422A89A4UL))) +#define bM4_TMRA2_CMPAR4_CMP10 (*((volatile unsigned int*)(0x422A89A8UL))) +#define bM4_TMRA2_CMPAR4_CMP11 (*((volatile unsigned int*)(0x422A89ACUL))) +#define bM4_TMRA2_CMPAR4_CMP12 (*((volatile unsigned int*)(0x422A89B0UL))) +#define bM4_TMRA2_CMPAR4_CMP13 (*((volatile unsigned int*)(0x422A89B4UL))) +#define bM4_TMRA2_CMPAR4_CMP14 (*((volatile unsigned int*)(0x422A89B8UL))) +#define bM4_TMRA2_CMPAR4_CMP15 (*((volatile unsigned int*)(0x422A89BCUL))) +#define bM4_TMRA2_CMPAR5_CMP0 (*((volatile unsigned int*)(0x422A8A00UL))) +#define bM4_TMRA2_CMPAR5_CMP1 (*((volatile unsigned int*)(0x422A8A04UL))) +#define bM4_TMRA2_CMPAR5_CMP2 (*((volatile unsigned int*)(0x422A8A08UL))) +#define bM4_TMRA2_CMPAR5_CMP3 (*((volatile unsigned int*)(0x422A8A0CUL))) +#define bM4_TMRA2_CMPAR5_CMP4 (*((volatile unsigned int*)(0x422A8A10UL))) +#define bM4_TMRA2_CMPAR5_CMP5 (*((volatile unsigned int*)(0x422A8A14UL))) +#define bM4_TMRA2_CMPAR5_CMP6 (*((volatile unsigned int*)(0x422A8A18UL))) +#define bM4_TMRA2_CMPAR5_CMP7 (*((volatile unsigned int*)(0x422A8A1CUL))) +#define bM4_TMRA2_CMPAR5_CMP8 (*((volatile unsigned int*)(0x422A8A20UL))) +#define bM4_TMRA2_CMPAR5_CMP9 (*((volatile unsigned int*)(0x422A8A24UL))) +#define bM4_TMRA2_CMPAR5_CMP10 (*((volatile unsigned int*)(0x422A8A28UL))) +#define bM4_TMRA2_CMPAR5_CMP11 (*((volatile unsigned int*)(0x422A8A2CUL))) +#define bM4_TMRA2_CMPAR5_CMP12 (*((volatile unsigned int*)(0x422A8A30UL))) +#define bM4_TMRA2_CMPAR5_CMP13 (*((volatile unsigned int*)(0x422A8A34UL))) +#define bM4_TMRA2_CMPAR5_CMP14 (*((volatile unsigned int*)(0x422A8A38UL))) +#define bM4_TMRA2_CMPAR5_CMP15 (*((volatile unsigned int*)(0x422A8A3CUL))) +#define bM4_TMRA2_CMPAR6_CMP0 (*((volatile unsigned int*)(0x422A8A80UL))) +#define bM4_TMRA2_CMPAR6_CMP1 (*((volatile unsigned int*)(0x422A8A84UL))) +#define bM4_TMRA2_CMPAR6_CMP2 (*((volatile unsigned int*)(0x422A8A88UL))) +#define bM4_TMRA2_CMPAR6_CMP3 (*((volatile unsigned int*)(0x422A8A8CUL))) +#define bM4_TMRA2_CMPAR6_CMP4 (*((volatile unsigned int*)(0x422A8A90UL))) +#define bM4_TMRA2_CMPAR6_CMP5 (*((volatile unsigned int*)(0x422A8A94UL))) +#define bM4_TMRA2_CMPAR6_CMP6 (*((volatile unsigned int*)(0x422A8A98UL))) +#define bM4_TMRA2_CMPAR6_CMP7 (*((volatile unsigned int*)(0x422A8A9CUL))) +#define bM4_TMRA2_CMPAR6_CMP8 (*((volatile unsigned int*)(0x422A8AA0UL))) +#define bM4_TMRA2_CMPAR6_CMP9 (*((volatile unsigned int*)(0x422A8AA4UL))) +#define bM4_TMRA2_CMPAR6_CMP10 (*((volatile unsigned int*)(0x422A8AA8UL))) +#define bM4_TMRA2_CMPAR6_CMP11 (*((volatile unsigned int*)(0x422A8AACUL))) +#define bM4_TMRA2_CMPAR6_CMP12 (*((volatile unsigned int*)(0x422A8AB0UL))) +#define bM4_TMRA2_CMPAR6_CMP13 (*((volatile unsigned int*)(0x422A8AB4UL))) +#define bM4_TMRA2_CMPAR6_CMP14 (*((volatile unsigned int*)(0x422A8AB8UL))) +#define bM4_TMRA2_CMPAR6_CMP15 (*((volatile unsigned int*)(0x422A8ABCUL))) +#define bM4_TMRA2_CMPAR7_CMP0 (*((volatile unsigned int*)(0x422A8B00UL))) +#define bM4_TMRA2_CMPAR7_CMP1 (*((volatile unsigned int*)(0x422A8B04UL))) +#define bM4_TMRA2_CMPAR7_CMP2 (*((volatile unsigned int*)(0x422A8B08UL))) +#define bM4_TMRA2_CMPAR7_CMP3 (*((volatile unsigned int*)(0x422A8B0CUL))) +#define bM4_TMRA2_CMPAR7_CMP4 (*((volatile unsigned int*)(0x422A8B10UL))) +#define bM4_TMRA2_CMPAR7_CMP5 (*((volatile unsigned int*)(0x422A8B14UL))) +#define bM4_TMRA2_CMPAR7_CMP6 (*((volatile unsigned int*)(0x422A8B18UL))) +#define bM4_TMRA2_CMPAR7_CMP7 (*((volatile unsigned int*)(0x422A8B1CUL))) +#define bM4_TMRA2_CMPAR7_CMP8 (*((volatile unsigned int*)(0x422A8B20UL))) +#define bM4_TMRA2_CMPAR7_CMP9 (*((volatile unsigned int*)(0x422A8B24UL))) +#define bM4_TMRA2_CMPAR7_CMP10 (*((volatile unsigned int*)(0x422A8B28UL))) +#define bM4_TMRA2_CMPAR7_CMP11 (*((volatile unsigned int*)(0x422A8B2CUL))) +#define bM4_TMRA2_CMPAR7_CMP12 (*((volatile unsigned int*)(0x422A8B30UL))) +#define bM4_TMRA2_CMPAR7_CMP13 (*((volatile unsigned int*)(0x422A8B34UL))) +#define bM4_TMRA2_CMPAR7_CMP14 (*((volatile unsigned int*)(0x422A8B38UL))) +#define bM4_TMRA2_CMPAR7_CMP15 (*((volatile unsigned int*)(0x422A8B3CUL))) +#define bM4_TMRA2_CMPAR8_CMP0 (*((volatile unsigned int*)(0x422A8B80UL))) +#define bM4_TMRA2_CMPAR8_CMP1 (*((volatile unsigned int*)(0x422A8B84UL))) +#define bM4_TMRA2_CMPAR8_CMP2 (*((volatile unsigned int*)(0x422A8B88UL))) +#define bM4_TMRA2_CMPAR8_CMP3 (*((volatile unsigned int*)(0x422A8B8CUL))) +#define bM4_TMRA2_CMPAR8_CMP4 (*((volatile unsigned int*)(0x422A8B90UL))) +#define bM4_TMRA2_CMPAR8_CMP5 (*((volatile unsigned int*)(0x422A8B94UL))) +#define bM4_TMRA2_CMPAR8_CMP6 (*((volatile unsigned int*)(0x422A8B98UL))) +#define bM4_TMRA2_CMPAR8_CMP7 (*((volatile unsigned int*)(0x422A8B9CUL))) +#define bM4_TMRA2_CMPAR8_CMP8 (*((volatile unsigned int*)(0x422A8BA0UL))) +#define bM4_TMRA2_CMPAR8_CMP9 (*((volatile unsigned int*)(0x422A8BA4UL))) +#define bM4_TMRA2_CMPAR8_CMP10 (*((volatile unsigned int*)(0x422A8BA8UL))) +#define bM4_TMRA2_CMPAR8_CMP11 (*((volatile unsigned int*)(0x422A8BACUL))) +#define bM4_TMRA2_CMPAR8_CMP12 (*((volatile unsigned int*)(0x422A8BB0UL))) +#define bM4_TMRA2_CMPAR8_CMP13 (*((volatile unsigned int*)(0x422A8BB4UL))) +#define bM4_TMRA2_CMPAR8_CMP14 (*((volatile unsigned int*)(0x422A8BB8UL))) +#define bM4_TMRA2_CMPAR8_CMP15 (*((volatile unsigned int*)(0x422A8BBCUL))) +#define bM4_TMRA2_BCSTR_START (*((volatile unsigned int*)(0x422A9000UL))) +#define bM4_TMRA2_BCSTR_DIR (*((volatile unsigned int*)(0x422A9004UL))) +#define bM4_TMRA2_BCSTR_MODE (*((volatile unsigned int*)(0x422A9008UL))) +#define bM4_TMRA2_BCSTR_SYNST (*((volatile unsigned int*)(0x422A900CUL))) +#define bM4_TMRA2_BCSTR_CKDIV0 (*((volatile unsigned int*)(0x422A9010UL))) +#define bM4_TMRA2_BCSTR_CKDIV1 (*((volatile unsigned int*)(0x422A9014UL))) +#define bM4_TMRA2_BCSTR_CKDIV2 (*((volatile unsigned int*)(0x422A9018UL))) +#define bM4_TMRA2_BCSTR_CKDIV3 (*((volatile unsigned int*)(0x422A901CUL))) +#define bM4_TMRA2_BCSTR_ITENOVF (*((volatile unsigned int*)(0x422A9030UL))) +#define bM4_TMRA2_BCSTR_ITENUDF (*((volatile unsigned int*)(0x422A9034UL))) +#define bM4_TMRA2_BCSTR_OVFF (*((volatile unsigned int*)(0x422A9038UL))) +#define bM4_TMRA2_BCSTR_UDFF (*((volatile unsigned int*)(0x422A903CUL))) +#define bM4_TMRA2_HCONR_HSTA0 (*((volatile unsigned int*)(0x422A9080UL))) +#define bM4_TMRA2_HCONR_HSTA1 (*((volatile unsigned int*)(0x422A9084UL))) +#define bM4_TMRA2_HCONR_HSTA2 (*((volatile unsigned int*)(0x422A9088UL))) +#define bM4_TMRA2_HCONR_HSTP0 (*((volatile unsigned int*)(0x422A9090UL))) +#define bM4_TMRA2_HCONR_HSTP1 (*((volatile unsigned int*)(0x422A9094UL))) +#define bM4_TMRA2_HCONR_HSTP2 (*((volatile unsigned int*)(0x422A9098UL))) +#define bM4_TMRA2_HCONR_HCLE0 (*((volatile unsigned int*)(0x422A90A0UL))) +#define bM4_TMRA2_HCONR_HCLE1 (*((volatile unsigned int*)(0x422A90A4UL))) +#define bM4_TMRA2_HCONR_HCLE2 (*((volatile unsigned int*)(0x422A90A8UL))) +#define bM4_TMRA2_HCONR_HCLE3 (*((volatile unsigned int*)(0x422A90B0UL))) +#define bM4_TMRA2_HCONR_HCLE4 (*((volatile unsigned int*)(0x422A90B4UL))) +#define bM4_TMRA2_HCONR_HCLE5 (*((volatile unsigned int*)(0x422A90B8UL))) +#define bM4_TMRA2_HCONR_HCLE6 (*((volatile unsigned int*)(0x422A90BCUL))) +#define bM4_TMRA2_HCUPR_HCUP0 (*((volatile unsigned int*)(0x422A9100UL))) +#define bM4_TMRA2_HCUPR_HCUP1 (*((volatile unsigned int*)(0x422A9104UL))) +#define bM4_TMRA2_HCUPR_HCUP2 (*((volatile unsigned int*)(0x422A9108UL))) +#define bM4_TMRA2_HCUPR_HCUP3 (*((volatile unsigned int*)(0x422A910CUL))) +#define bM4_TMRA2_HCUPR_HCUP4 (*((volatile unsigned int*)(0x422A9110UL))) +#define bM4_TMRA2_HCUPR_HCUP5 (*((volatile unsigned int*)(0x422A9114UL))) +#define bM4_TMRA2_HCUPR_HCUP6 (*((volatile unsigned int*)(0x422A9118UL))) +#define bM4_TMRA2_HCUPR_HCUP7 (*((volatile unsigned int*)(0x422A911CUL))) +#define bM4_TMRA2_HCUPR_HCUP8 (*((volatile unsigned int*)(0x422A9120UL))) +#define bM4_TMRA2_HCUPR_HCUP9 (*((volatile unsigned int*)(0x422A9124UL))) +#define bM4_TMRA2_HCUPR_HCUP10 (*((volatile unsigned int*)(0x422A9128UL))) +#define bM4_TMRA2_HCUPR_HCUP11 (*((volatile unsigned int*)(0x422A912CUL))) +#define bM4_TMRA2_HCUPR_HCUP12 (*((volatile unsigned int*)(0x422A9130UL))) +#define bM4_TMRA2_HCDOR_HCDO0 (*((volatile unsigned int*)(0x422A9180UL))) +#define bM4_TMRA2_HCDOR_HCDO1 (*((volatile unsigned int*)(0x422A9184UL))) +#define bM4_TMRA2_HCDOR_HCDO2 (*((volatile unsigned int*)(0x422A9188UL))) +#define bM4_TMRA2_HCDOR_HCDO3 (*((volatile unsigned int*)(0x422A918CUL))) +#define bM4_TMRA2_HCDOR_HCDO4 (*((volatile unsigned int*)(0x422A9190UL))) +#define bM4_TMRA2_HCDOR_HCDO5 (*((volatile unsigned int*)(0x422A9194UL))) +#define bM4_TMRA2_HCDOR_HCDO6 (*((volatile unsigned int*)(0x422A9198UL))) +#define bM4_TMRA2_HCDOR_HCDO7 (*((volatile unsigned int*)(0x422A919CUL))) +#define bM4_TMRA2_HCDOR_HCDO8 (*((volatile unsigned int*)(0x422A91A0UL))) +#define bM4_TMRA2_HCDOR_HCDO9 (*((volatile unsigned int*)(0x422A91A4UL))) +#define bM4_TMRA2_HCDOR_HCDO10 (*((volatile unsigned int*)(0x422A91A8UL))) +#define bM4_TMRA2_HCDOR_HCDO11 (*((volatile unsigned int*)(0x422A91ACUL))) +#define bM4_TMRA2_HCDOR_HCDO12 (*((volatile unsigned int*)(0x422A91B0UL))) +#define bM4_TMRA2_ICONR_ITEN1 (*((volatile unsigned int*)(0x422A9200UL))) +#define bM4_TMRA2_ICONR_ITEN2 (*((volatile unsigned int*)(0x422A9204UL))) +#define bM4_TMRA2_ICONR_ITEN3 (*((volatile unsigned int*)(0x422A9208UL))) +#define bM4_TMRA2_ICONR_ITEN4 (*((volatile unsigned int*)(0x422A920CUL))) +#define bM4_TMRA2_ICONR_ITEN5 (*((volatile unsigned int*)(0x422A9210UL))) +#define bM4_TMRA2_ICONR_ITEN6 (*((volatile unsigned int*)(0x422A9214UL))) +#define bM4_TMRA2_ICONR_ITEN7 (*((volatile unsigned int*)(0x422A9218UL))) +#define bM4_TMRA2_ICONR_ITEN8 (*((volatile unsigned int*)(0x422A921CUL))) +#define bM4_TMRA2_ECONR_ETEN1 (*((volatile unsigned int*)(0x422A9280UL))) +#define bM4_TMRA2_ECONR_ETEN2 (*((volatile unsigned int*)(0x422A9284UL))) +#define bM4_TMRA2_ECONR_ETEN3 (*((volatile unsigned int*)(0x422A9288UL))) +#define bM4_TMRA2_ECONR_ETEN4 (*((volatile unsigned int*)(0x422A928CUL))) +#define bM4_TMRA2_ECONR_ETEN5 (*((volatile unsigned int*)(0x422A9290UL))) +#define bM4_TMRA2_ECONR_ETEN6 (*((volatile unsigned int*)(0x422A9294UL))) +#define bM4_TMRA2_ECONR_ETEN7 (*((volatile unsigned int*)(0x422A9298UL))) +#define bM4_TMRA2_ECONR_ETEN8 (*((volatile unsigned int*)(0x422A929CUL))) +#define bM4_TMRA2_FCONR_NOFIENTG (*((volatile unsigned int*)(0x422A9300UL))) +#define bM4_TMRA2_FCONR_NOFICKTG0 (*((volatile unsigned int*)(0x422A9304UL))) +#define bM4_TMRA2_FCONR_NOFICKTG1 (*((volatile unsigned int*)(0x422A9308UL))) +#define bM4_TMRA2_FCONR_NOFIENCA (*((volatile unsigned int*)(0x422A9320UL))) +#define bM4_TMRA2_FCONR_NOFICKCA0 (*((volatile unsigned int*)(0x422A9324UL))) +#define bM4_TMRA2_FCONR_NOFICKCA1 (*((volatile unsigned int*)(0x422A9328UL))) +#define bM4_TMRA2_FCONR_NOFIENCB (*((volatile unsigned int*)(0x422A9330UL))) +#define bM4_TMRA2_FCONR_NOFICKCB0 (*((volatile unsigned int*)(0x422A9334UL))) +#define bM4_TMRA2_FCONR_NOFICKCB1 (*((volatile unsigned int*)(0x422A9338UL))) +#define bM4_TMRA2_STFLR_CMPF1 (*((volatile unsigned int*)(0x422A9380UL))) +#define bM4_TMRA2_STFLR_CMPF2 (*((volatile unsigned int*)(0x422A9384UL))) +#define bM4_TMRA2_STFLR_CMPF3 (*((volatile unsigned int*)(0x422A9388UL))) +#define bM4_TMRA2_STFLR_CMPF4 (*((volatile unsigned int*)(0x422A938CUL))) +#define bM4_TMRA2_STFLR_CMPF5 (*((volatile unsigned int*)(0x422A9390UL))) +#define bM4_TMRA2_STFLR_CMPF6 (*((volatile unsigned int*)(0x422A9394UL))) +#define bM4_TMRA2_STFLR_CMPF7 (*((volatile unsigned int*)(0x422A9398UL))) +#define bM4_TMRA2_STFLR_CMPF8 (*((volatile unsigned int*)(0x422A939CUL))) +#define bM4_TMRA2_BCONR1_BEN (*((volatile unsigned int*)(0x422A9800UL))) +#define bM4_TMRA2_BCONR1_BSE0 (*((volatile unsigned int*)(0x422A9804UL))) +#define bM4_TMRA2_BCONR1_BSE1 (*((volatile unsigned int*)(0x422A9808UL))) +#define bM4_TMRA2_BCONR2_BEN (*((volatile unsigned int*)(0x422A9900UL))) +#define bM4_TMRA2_BCONR2_BSE0 (*((volatile unsigned int*)(0x422A9904UL))) +#define bM4_TMRA2_BCONR2_BSE1 (*((volatile unsigned int*)(0x422A9908UL))) +#define bM4_TMRA2_BCONR3_BEN (*((volatile unsigned int*)(0x422A9A00UL))) +#define bM4_TMRA2_BCONR3_BSE0 (*((volatile unsigned int*)(0x422A9A04UL))) +#define bM4_TMRA2_BCONR3_BSE1 (*((volatile unsigned int*)(0x422A9A08UL))) +#define bM4_TMRA2_BCONR4_BEN (*((volatile unsigned int*)(0x422A9B00UL))) +#define bM4_TMRA2_BCONR4_BSE0 (*((volatile unsigned int*)(0x422A9B04UL))) +#define bM4_TMRA2_BCONR4_BSE1 (*((volatile unsigned int*)(0x422A9B08UL))) +#define bM4_TMRA2_CCONR1_CAPMD (*((volatile unsigned int*)(0x422AA000UL))) +#define bM4_TMRA2_CCONR1_HICP0 (*((volatile unsigned int*)(0x422AA010UL))) +#define bM4_TMRA2_CCONR1_HICP1 (*((volatile unsigned int*)(0x422AA014UL))) +#define bM4_TMRA2_CCONR1_HICP2 (*((volatile unsigned int*)(0x422AA018UL))) +#define bM4_TMRA2_CCONR1_HICP3 (*((volatile unsigned int*)(0x422AA020UL))) +#define bM4_TMRA2_CCONR1_HICP4 (*((volatile unsigned int*)(0x422AA024UL))) +#define bM4_TMRA2_CCONR1_NOFIENCP (*((volatile unsigned int*)(0x422AA030UL))) +#define bM4_TMRA2_CCONR1_NOFICKCP0 (*((volatile unsigned int*)(0x422AA034UL))) +#define bM4_TMRA2_CCONR1_NOFICKCP1 (*((volatile unsigned int*)(0x422AA038UL))) +#define bM4_TMRA2_CCONR2_CAPMD (*((volatile unsigned int*)(0x422AA080UL))) +#define bM4_TMRA2_CCONR2_HICP0 (*((volatile unsigned int*)(0x422AA090UL))) +#define bM4_TMRA2_CCONR2_HICP1 (*((volatile unsigned int*)(0x422AA094UL))) +#define bM4_TMRA2_CCONR2_HICP2 (*((volatile unsigned int*)(0x422AA098UL))) +#define bM4_TMRA2_CCONR2_HICP3 (*((volatile unsigned int*)(0x422AA0A0UL))) +#define bM4_TMRA2_CCONR2_HICP4 (*((volatile unsigned int*)(0x422AA0A4UL))) +#define bM4_TMRA2_CCONR2_NOFIENCP (*((volatile unsigned int*)(0x422AA0B0UL))) +#define bM4_TMRA2_CCONR2_NOFICKCP0 (*((volatile unsigned int*)(0x422AA0B4UL))) +#define bM4_TMRA2_CCONR2_NOFICKCP1 (*((volatile unsigned int*)(0x422AA0B8UL))) +#define bM4_TMRA2_CCONR3_CAPMD (*((volatile unsigned int*)(0x422AA100UL))) +#define bM4_TMRA2_CCONR3_HICP0 (*((volatile unsigned int*)(0x422AA110UL))) +#define bM4_TMRA2_CCONR3_HICP1 (*((volatile unsigned int*)(0x422AA114UL))) +#define bM4_TMRA2_CCONR3_HICP2 (*((volatile unsigned int*)(0x422AA118UL))) +#define bM4_TMRA2_CCONR3_HICP3 (*((volatile unsigned int*)(0x422AA120UL))) +#define bM4_TMRA2_CCONR3_HICP4 (*((volatile unsigned int*)(0x422AA124UL))) +#define bM4_TMRA2_CCONR3_NOFIENCP (*((volatile unsigned int*)(0x422AA130UL))) +#define bM4_TMRA2_CCONR3_NOFICKCP0 (*((volatile unsigned int*)(0x422AA134UL))) +#define bM4_TMRA2_CCONR3_NOFICKCP1 (*((volatile unsigned int*)(0x422AA138UL))) +#define bM4_TMRA2_CCONR4_CAPMD (*((volatile unsigned int*)(0x422AA180UL))) +#define bM4_TMRA2_CCONR4_HICP0 (*((volatile unsigned int*)(0x422AA190UL))) +#define bM4_TMRA2_CCONR4_HICP1 (*((volatile unsigned int*)(0x422AA194UL))) +#define bM4_TMRA2_CCONR4_HICP2 (*((volatile unsigned int*)(0x422AA198UL))) +#define bM4_TMRA2_CCONR4_HICP3 (*((volatile unsigned int*)(0x422AA1A0UL))) +#define bM4_TMRA2_CCONR4_HICP4 (*((volatile unsigned int*)(0x422AA1A4UL))) +#define bM4_TMRA2_CCONR4_NOFIENCP (*((volatile unsigned int*)(0x422AA1B0UL))) +#define bM4_TMRA2_CCONR4_NOFICKCP0 (*((volatile unsigned int*)(0x422AA1B4UL))) +#define bM4_TMRA2_CCONR4_NOFICKCP1 (*((volatile unsigned int*)(0x422AA1B8UL))) +#define bM4_TMRA2_CCONR5_CAPMD (*((volatile unsigned int*)(0x422AA200UL))) +#define bM4_TMRA2_CCONR5_HICP0 (*((volatile unsigned int*)(0x422AA210UL))) +#define bM4_TMRA2_CCONR5_HICP1 (*((volatile unsigned int*)(0x422AA214UL))) +#define bM4_TMRA2_CCONR5_HICP2 (*((volatile unsigned int*)(0x422AA218UL))) +#define bM4_TMRA2_CCONR5_HICP3 (*((volatile unsigned int*)(0x422AA220UL))) +#define bM4_TMRA2_CCONR5_HICP4 (*((volatile unsigned int*)(0x422AA224UL))) +#define bM4_TMRA2_CCONR5_NOFIENCP (*((volatile unsigned int*)(0x422AA230UL))) +#define bM4_TMRA2_CCONR5_NOFICKCP0 (*((volatile unsigned int*)(0x422AA234UL))) +#define bM4_TMRA2_CCONR5_NOFICKCP1 (*((volatile unsigned int*)(0x422AA238UL))) +#define bM4_TMRA2_CCONR6_CAPMD (*((volatile unsigned int*)(0x422AA280UL))) +#define bM4_TMRA2_CCONR6_HICP0 (*((volatile unsigned int*)(0x422AA290UL))) +#define bM4_TMRA2_CCONR6_HICP1 (*((volatile unsigned int*)(0x422AA294UL))) +#define bM4_TMRA2_CCONR6_HICP2 (*((volatile unsigned int*)(0x422AA298UL))) +#define bM4_TMRA2_CCONR6_HICP3 (*((volatile unsigned int*)(0x422AA2A0UL))) +#define bM4_TMRA2_CCONR6_HICP4 (*((volatile unsigned int*)(0x422AA2A4UL))) +#define bM4_TMRA2_CCONR6_NOFIENCP (*((volatile unsigned int*)(0x422AA2B0UL))) +#define bM4_TMRA2_CCONR6_NOFICKCP0 (*((volatile unsigned int*)(0x422AA2B4UL))) +#define bM4_TMRA2_CCONR6_NOFICKCP1 (*((volatile unsigned int*)(0x422AA2B8UL))) +#define bM4_TMRA2_CCONR7_CAPMD (*((volatile unsigned int*)(0x422AA300UL))) +#define bM4_TMRA2_CCONR7_HICP0 (*((volatile unsigned int*)(0x422AA310UL))) +#define bM4_TMRA2_CCONR7_HICP1 (*((volatile unsigned int*)(0x422AA314UL))) +#define bM4_TMRA2_CCONR7_HICP2 (*((volatile unsigned int*)(0x422AA318UL))) +#define bM4_TMRA2_CCONR7_HICP3 (*((volatile unsigned int*)(0x422AA320UL))) +#define bM4_TMRA2_CCONR7_HICP4 (*((volatile unsigned int*)(0x422AA324UL))) +#define bM4_TMRA2_CCONR7_NOFIENCP (*((volatile unsigned int*)(0x422AA330UL))) +#define bM4_TMRA2_CCONR7_NOFICKCP0 (*((volatile unsigned int*)(0x422AA334UL))) +#define bM4_TMRA2_CCONR7_NOFICKCP1 (*((volatile unsigned int*)(0x422AA338UL))) +#define bM4_TMRA2_CCONR8_CAPMD (*((volatile unsigned int*)(0x422AA380UL))) +#define bM4_TMRA2_CCONR8_HICP0 (*((volatile unsigned int*)(0x422AA390UL))) +#define bM4_TMRA2_CCONR8_HICP1 (*((volatile unsigned int*)(0x422AA394UL))) +#define bM4_TMRA2_CCONR8_HICP2 (*((volatile unsigned int*)(0x422AA398UL))) +#define bM4_TMRA2_CCONR8_HICP3 (*((volatile unsigned int*)(0x422AA3A0UL))) +#define bM4_TMRA2_CCONR8_HICP4 (*((volatile unsigned int*)(0x422AA3A4UL))) +#define bM4_TMRA2_CCONR8_NOFIENCP (*((volatile unsigned int*)(0x422AA3B0UL))) +#define bM4_TMRA2_CCONR8_NOFICKCP0 (*((volatile unsigned int*)(0x422AA3B4UL))) +#define bM4_TMRA2_CCONR8_NOFICKCP1 (*((volatile unsigned int*)(0x422AA3B8UL))) +#define bM4_TMRA2_PCONR1_STAC0 (*((volatile unsigned int*)(0x422AA800UL))) +#define bM4_TMRA2_PCONR1_STAC1 (*((volatile unsigned int*)(0x422AA804UL))) +#define bM4_TMRA2_PCONR1_STPC0 (*((volatile unsigned int*)(0x422AA808UL))) +#define bM4_TMRA2_PCONR1_STPC1 (*((volatile unsigned int*)(0x422AA80CUL))) +#define bM4_TMRA2_PCONR1_CMPC0 (*((volatile unsigned int*)(0x422AA810UL))) +#define bM4_TMRA2_PCONR1_CMPC1 (*((volatile unsigned int*)(0x422AA814UL))) +#define bM4_TMRA2_PCONR1_PERC0 (*((volatile unsigned int*)(0x422AA818UL))) +#define bM4_TMRA2_PCONR1_PERC1 (*((volatile unsigned int*)(0x422AA81CUL))) +#define bM4_TMRA2_PCONR1_FORC0 (*((volatile unsigned int*)(0x422AA820UL))) +#define bM4_TMRA2_PCONR1_FORC1 (*((volatile unsigned int*)(0x422AA824UL))) +#define bM4_TMRA2_PCONR1_OUTEN (*((volatile unsigned int*)(0x422AA830UL))) +#define bM4_TMRA2_PCONR2_STAC0 (*((volatile unsigned int*)(0x422AA880UL))) +#define bM4_TMRA2_PCONR2_STAC1 (*((volatile unsigned int*)(0x422AA884UL))) +#define bM4_TMRA2_PCONR2_STPC0 (*((volatile unsigned int*)(0x422AA888UL))) +#define bM4_TMRA2_PCONR2_STPC1 (*((volatile unsigned int*)(0x422AA88CUL))) +#define bM4_TMRA2_PCONR2_CMPC0 (*((volatile unsigned int*)(0x422AA890UL))) +#define bM4_TMRA2_PCONR2_CMPC1 (*((volatile unsigned int*)(0x422AA894UL))) +#define bM4_TMRA2_PCONR2_PERC0 (*((volatile unsigned int*)(0x422AA898UL))) +#define bM4_TMRA2_PCONR2_PERC1 (*((volatile unsigned int*)(0x422AA89CUL))) +#define bM4_TMRA2_PCONR2_FORC0 (*((volatile unsigned int*)(0x422AA8A0UL))) +#define bM4_TMRA2_PCONR2_FORC1 (*((volatile unsigned int*)(0x422AA8A4UL))) +#define bM4_TMRA2_PCONR2_OUTEN (*((volatile unsigned int*)(0x422AA8B0UL))) +#define bM4_TMRA2_PCONR3_STAC0 (*((volatile unsigned int*)(0x422AA900UL))) +#define bM4_TMRA2_PCONR3_STAC1 (*((volatile unsigned int*)(0x422AA904UL))) +#define bM4_TMRA2_PCONR3_STPC0 (*((volatile unsigned int*)(0x422AA908UL))) +#define bM4_TMRA2_PCONR3_STPC1 (*((volatile unsigned int*)(0x422AA90CUL))) +#define bM4_TMRA2_PCONR3_CMPC0 (*((volatile unsigned int*)(0x422AA910UL))) +#define bM4_TMRA2_PCONR3_CMPC1 (*((volatile unsigned int*)(0x422AA914UL))) +#define bM4_TMRA2_PCONR3_PERC0 (*((volatile unsigned int*)(0x422AA918UL))) +#define bM4_TMRA2_PCONR3_PERC1 (*((volatile unsigned int*)(0x422AA91CUL))) +#define bM4_TMRA2_PCONR3_FORC0 (*((volatile unsigned int*)(0x422AA920UL))) +#define bM4_TMRA2_PCONR3_FORC1 (*((volatile unsigned int*)(0x422AA924UL))) +#define bM4_TMRA2_PCONR3_OUTEN (*((volatile unsigned int*)(0x422AA930UL))) +#define bM4_TMRA2_PCONR4_STAC0 (*((volatile unsigned int*)(0x422AA980UL))) +#define bM4_TMRA2_PCONR4_STAC1 (*((volatile unsigned int*)(0x422AA984UL))) +#define bM4_TMRA2_PCONR4_STPC0 (*((volatile unsigned int*)(0x422AA988UL))) +#define bM4_TMRA2_PCONR4_STPC1 (*((volatile unsigned int*)(0x422AA98CUL))) +#define bM4_TMRA2_PCONR4_CMPC0 (*((volatile unsigned int*)(0x422AA990UL))) +#define bM4_TMRA2_PCONR4_CMPC1 (*((volatile unsigned int*)(0x422AA994UL))) +#define bM4_TMRA2_PCONR4_PERC0 (*((volatile unsigned int*)(0x422AA998UL))) +#define bM4_TMRA2_PCONR4_PERC1 (*((volatile unsigned int*)(0x422AA99CUL))) +#define bM4_TMRA2_PCONR4_FORC0 (*((volatile unsigned int*)(0x422AA9A0UL))) +#define bM4_TMRA2_PCONR4_FORC1 (*((volatile unsigned int*)(0x422AA9A4UL))) +#define bM4_TMRA2_PCONR4_OUTEN (*((volatile unsigned int*)(0x422AA9B0UL))) +#define bM4_TMRA2_PCONR5_STAC0 (*((volatile unsigned int*)(0x422AAA00UL))) +#define bM4_TMRA2_PCONR5_STAC1 (*((volatile unsigned int*)(0x422AAA04UL))) +#define bM4_TMRA2_PCONR5_STPC0 (*((volatile unsigned int*)(0x422AAA08UL))) +#define bM4_TMRA2_PCONR5_STPC1 (*((volatile unsigned int*)(0x422AAA0CUL))) +#define bM4_TMRA2_PCONR5_CMPC0 (*((volatile unsigned int*)(0x422AAA10UL))) +#define bM4_TMRA2_PCONR5_CMPC1 (*((volatile unsigned int*)(0x422AAA14UL))) +#define bM4_TMRA2_PCONR5_PERC0 (*((volatile unsigned int*)(0x422AAA18UL))) +#define bM4_TMRA2_PCONR5_PERC1 (*((volatile unsigned int*)(0x422AAA1CUL))) +#define bM4_TMRA2_PCONR5_FORC0 (*((volatile unsigned int*)(0x422AAA20UL))) +#define bM4_TMRA2_PCONR5_FORC1 (*((volatile unsigned int*)(0x422AAA24UL))) +#define bM4_TMRA2_PCONR5_OUTEN (*((volatile unsigned int*)(0x422AAA30UL))) +#define bM4_TMRA2_PCONR6_STAC0 (*((volatile unsigned int*)(0x422AAA80UL))) +#define bM4_TMRA2_PCONR6_STAC1 (*((volatile unsigned int*)(0x422AAA84UL))) +#define bM4_TMRA2_PCONR6_STPC0 (*((volatile unsigned int*)(0x422AAA88UL))) +#define bM4_TMRA2_PCONR6_STPC1 (*((volatile unsigned int*)(0x422AAA8CUL))) +#define bM4_TMRA2_PCONR6_CMPC0 (*((volatile unsigned int*)(0x422AAA90UL))) +#define bM4_TMRA2_PCONR6_CMPC1 (*((volatile unsigned int*)(0x422AAA94UL))) +#define bM4_TMRA2_PCONR6_PERC0 (*((volatile unsigned int*)(0x422AAA98UL))) +#define bM4_TMRA2_PCONR6_PERC1 (*((volatile unsigned int*)(0x422AAA9CUL))) +#define bM4_TMRA2_PCONR6_FORC0 (*((volatile unsigned int*)(0x422AAAA0UL))) +#define bM4_TMRA2_PCONR6_FORC1 (*((volatile unsigned int*)(0x422AAAA4UL))) +#define bM4_TMRA2_PCONR6_OUTEN (*((volatile unsigned int*)(0x422AAAB0UL))) +#define bM4_TMRA2_PCONR7_STAC0 (*((volatile unsigned int*)(0x422AAB00UL))) +#define bM4_TMRA2_PCONR7_STAC1 (*((volatile unsigned int*)(0x422AAB04UL))) +#define bM4_TMRA2_PCONR7_STPC0 (*((volatile unsigned int*)(0x422AAB08UL))) +#define bM4_TMRA2_PCONR7_STPC1 (*((volatile unsigned int*)(0x422AAB0CUL))) +#define bM4_TMRA2_PCONR7_CMPC0 (*((volatile unsigned int*)(0x422AAB10UL))) +#define bM4_TMRA2_PCONR7_CMPC1 (*((volatile unsigned int*)(0x422AAB14UL))) +#define bM4_TMRA2_PCONR7_PERC0 (*((volatile unsigned int*)(0x422AAB18UL))) +#define bM4_TMRA2_PCONR7_PERC1 (*((volatile unsigned int*)(0x422AAB1CUL))) +#define bM4_TMRA2_PCONR7_FORC0 (*((volatile unsigned int*)(0x422AAB20UL))) +#define bM4_TMRA2_PCONR7_FORC1 (*((volatile unsigned int*)(0x422AAB24UL))) +#define bM4_TMRA2_PCONR7_OUTEN (*((volatile unsigned int*)(0x422AAB30UL))) +#define bM4_TMRA2_PCONR8_STAC0 (*((volatile unsigned int*)(0x422AAB80UL))) +#define bM4_TMRA2_PCONR8_STAC1 (*((volatile unsigned int*)(0x422AAB84UL))) +#define bM4_TMRA2_PCONR8_STPC0 (*((volatile unsigned int*)(0x422AAB88UL))) +#define bM4_TMRA2_PCONR8_STPC1 (*((volatile unsigned int*)(0x422AAB8CUL))) +#define bM4_TMRA2_PCONR8_CMPC0 (*((volatile unsigned int*)(0x422AAB90UL))) +#define bM4_TMRA2_PCONR8_CMPC1 (*((volatile unsigned int*)(0x422AAB94UL))) +#define bM4_TMRA2_PCONR8_PERC0 (*((volatile unsigned int*)(0x422AAB98UL))) +#define bM4_TMRA2_PCONR8_PERC1 (*((volatile unsigned int*)(0x422AAB9CUL))) +#define bM4_TMRA2_PCONR8_FORC0 (*((volatile unsigned int*)(0x422AABA0UL))) +#define bM4_TMRA2_PCONR8_FORC1 (*((volatile unsigned int*)(0x422AABA4UL))) +#define bM4_TMRA2_PCONR8_OUTEN (*((volatile unsigned int*)(0x422AABB0UL))) +#define bM4_TMRA3_CNTER_CNT0 (*((volatile unsigned int*)(0x422B0000UL))) +#define bM4_TMRA3_CNTER_CNT1 (*((volatile unsigned int*)(0x422B0004UL))) +#define bM4_TMRA3_CNTER_CNT2 (*((volatile unsigned int*)(0x422B0008UL))) +#define bM4_TMRA3_CNTER_CNT3 (*((volatile unsigned int*)(0x422B000CUL))) +#define bM4_TMRA3_CNTER_CNT4 (*((volatile unsigned int*)(0x422B0010UL))) +#define bM4_TMRA3_CNTER_CNT5 (*((volatile unsigned int*)(0x422B0014UL))) +#define bM4_TMRA3_CNTER_CNT6 (*((volatile unsigned int*)(0x422B0018UL))) +#define bM4_TMRA3_CNTER_CNT7 (*((volatile unsigned int*)(0x422B001CUL))) +#define bM4_TMRA3_CNTER_CNT8 (*((volatile unsigned int*)(0x422B0020UL))) +#define bM4_TMRA3_CNTER_CNT9 (*((volatile unsigned int*)(0x422B0024UL))) +#define bM4_TMRA3_CNTER_CNT10 (*((volatile unsigned int*)(0x422B0028UL))) +#define bM4_TMRA3_CNTER_CNT11 (*((volatile unsigned int*)(0x422B002CUL))) +#define bM4_TMRA3_CNTER_CNT12 (*((volatile unsigned int*)(0x422B0030UL))) +#define bM4_TMRA3_CNTER_CNT13 (*((volatile unsigned int*)(0x422B0034UL))) +#define bM4_TMRA3_CNTER_CNT14 (*((volatile unsigned int*)(0x422B0038UL))) +#define bM4_TMRA3_CNTER_CNT15 (*((volatile unsigned int*)(0x422B003CUL))) +#define bM4_TMRA3_PERAR_PER0 (*((volatile unsigned int*)(0x422B0080UL))) +#define bM4_TMRA3_PERAR_PER1 (*((volatile unsigned int*)(0x422B0084UL))) +#define bM4_TMRA3_PERAR_PER2 (*((volatile unsigned int*)(0x422B0088UL))) +#define bM4_TMRA3_PERAR_PER3 (*((volatile unsigned int*)(0x422B008CUL))) +#define bM4_TMRA3_PERAR_PER4 (*((volatile unsigned int*)(0x422B0090UL))) +#define bM4_TMRA3_PERAR_PER5 (*((volatile unsigned int*)(0x422B0094UL))) +#define bM4_TMRA3_PERAR_PER6 (*((volatile unsigned int*)(0x422B0098UL))) +#define bM4_TMRA3_PERAR_PER7 (*((volatile unsigned int*)(0x422B009CUL))) +#define bM4_TMRA3_PERAR_PER8 (*((volatile unsigned int*)(0x422B00A0UL))) +#define bM4_TMRA3_PERAR_PER9 (*((volatile unsigned int*)(0x422B00A4UL))) +#define bM4_TMRA3_PERAR_PER10 (*((volatile unsigned int*)(0x422B00A8UL))) +#define bM4_TMRA3_PERAR_PER11 (*((volatile unsigned int*)(0x422B00ACUL))) +#define bM4_TMRA3_PERAR_PER12 (*((volatile unsigned int*)(0x422B00B0UL))) +#define bM4_TMRA3_PERAR_PER13 (*((volatile unsigned int*)(0x422B00B4UL))) +#define bM4_TMRA3_PERAR_PER14 (*((volatile unsigned int*)(0x422B00B8UL))) +#define bM4_TMRA3_PERAR_PER15 (*((volatile unsigned int*)(0x422B00BCUL))) +#define bM4_TMRA3_CMPAR1_CMP0 (*((volatile unsigned int*)(0x422B0800UL))) +#define bM4_TMRA3_CMPAR1_CMP1 (*((volatile unsigned int*)(0x422B0804UL))) +#define bM4_TMRA3_CMPAR1_CMP2 (*((volatile unsigned int*)(0x422B0808UL))) +#define bM4_TMRA3_CMPAR1_CMP3 (*((volatile unsigned int*)(0x422B080CUL))) +#define bM4_TMRA3_CMPAR1_CMP4 (*((volatile unsigned int*)(0x422B0810UL))) +#define bM4_TMRA3_CMPAR1_CMP5 (*((volatile unsigned int*)(0x422B0814UL))) +#define bM4_TMRA3_CMPAR1_CMP6 (*((volatile unsigned int*)(0x422B0818UL))) +#define bM4_TMRA3_CMPAR1_CMP7 (*((volatile unsigned int*)(0x422B081CUL))) +#define bM4_TMRA3_CMPAR1_CMP8 (*((volatile unsigned int*)(0x422B0820UL))) +#define bM4_TMRA3_CMPAR1_CMP9 (*((volatile unsigned int*)(0x422B0824UL))) +#define bM4_TMRA3_CMPAR1_CMP10 (*((volatile unsigned int*)(0x422B0828UL))) +#define bM4_TMRA3_CMPAR1_CMP11 (*((volatile unsigned int*)(0x422B082CUL))) +#define bM4_TMRA3_CMPAR1_CMP12 (*((volatile unsigned int*)(0x422B0830UL))) +#define bM4_TMRA3_CMPAR1_CMP13 (*((volatile unsigned int*)(0x422B0834UL))) +#define bM4_TMRA3_CMPAR1_CMP14 (*((volatile unsigned int*)(0x422B0838UL))) +#define bM4_TMRA3_CMPAR1_CMP15 (*((volatile unsigned int*)(0x422B083CUL))) +#define bM4_TMRA3_CMPAR2_CMP0 (*((volatile unsigned int*)(0x422B0880UL))) +#define bM4_TMRA3_CMPAR2_CMP1 (*((volatile unsigned int*)(0x422B0884UL))) +#define bM4_TMRA3_CMPAR2_CMP2 (*((volatile unsigned int*)(0x422B0888UL))) +#define bM4_TMRA3_CMPAR2_CMP3 (*((volatile unsigned int*)(0x422B088CUL))) +#define bM4_TMRA3_CMPAR2_CMP4 (*((volatile unsigned int*)(0x422B0890UL))) +#define bM4_TMRA3_CMPAR2_CMP5 (*((volatile unsigned int*)(0x422B0894UL))) +#define bM4_TMRA3_CMPAR2_CMP6 (*((volatile unsigned int*)(0x422B0898UL))) +#define bM4_TMRA3_CMPAR2_CMP7 (*((volatile unsigned int*)(0x422B089CUL))) +#define bM4_TMRA3_CMPAR2_CMP8 (*((volatile unsigned int*)(0x422B08A0UL))) +#define bM4_TMRA3_CMPAR2_CMP9 (*((volatile unsigned int*)(0x422B08A4UL))) +#define bM4_TMRA3_CMPAR2_CMP10 (*((volatile unsigned int*)(0x422B08A8UL))) +#define bM4_TMRA3_CMPAR2_CMP11 (*((volatile unsigned int*)(0x422B08ACUL))) +#define bM4_TMRA3_CMPAR2_CMP12 (*((volatile unsigned int*)(0x422B08B0UL))) +#define bM4_TMRA3_CMPAR2_CMP13 (*((volatile unsigned int*)(0x422B08B4UL))) +#define bM4_TMRA3_CMPAR2_CMP14 (*((volatile unsigned int*)(0x422B08B8UL))) +#define bM4_TMRA3_CMPAR2_CMP15 (*((volatile unsigned int*)(0x422B08BCUL))) +#define bM4_TMRA3_CMPAR3_CMP0 (*((volatile unsigned int*)(0x422B0900UL))) +#define bM4_TMRA3_CMPAR3_CMP1 (*((volatile unsigned int*)(0x422B0904UL))) +#define bM4_TMRA3_CMPAR3_CMP2 (*((volatile unsigned int*)(0x422B0908UL))) +#define bM4_TMRA3_CMPAR3_CMP3 (*((volatile unsigned int*)(0x422B090CUL))) +#define bM4_TMRA3_CMPAR3_CMP4 (*((volatile unsigned int*)(0x422B0910UL))) +#define bM4_TMRA3_CMPAR3_CMP5 (*((volatile unsigned int*)(0x422B0914UL))) +#define bM4_TMRA3_CMPAR3_CMP6 (*((volatile unsigned int*)(0x422B0918UL))) +#define bM4_TMRA3_CMPAR3_CMP7 (*((volatile unsigned int*)(0x422B091CUL))) +#define bM4_TMRA3_CMPAR3_CMP8 (*((volatile unsigned int*)(0x422B0920UL))) +#define bM4_TMRA3_CMPAR3_CMP9 (*((volatile unsigned int*)(0x422B0924UL))) +#define bM4_TMRA3_CMPAR3_CMP10 (*((volatile unsigned int*)(0x422B0928UL))) +#define bM4_TMRA3_CMPAR3_CMP11 (*((volatile unsigned int*)(0x422B092CUL))) +#define bM4_TMRA3_CMPAR3_CMP12 (*((volatile unsigned int*)(0x422B0930UL))) +#define bM4_TMRA3_CMPAR3_CMP13 (*((volatile unsigned int*)(0x422B0934UL))) +#define bM4_TMRA3_CMPAR3_CMP14 (*((volatile unsigned int*)(0x422B0938UL))) +#define bM4_TMRA3_CMPAR3_CMP15 (*((volatile unsigned int*)(0x422B093CUL))) +#define bM4_TMRA3_CMPAR4_CMP0 (*((volatile unsigned int*)(0x422B0980UL))) +#define bM4_TMRA3_CMPAR4_CMP1 (*((volatile unsigned int*)(0x422B0984UL))) +#define bM4_TMRA3_CMPAR4_CMP2 (*((volatile unsigned int*)(0x422B0988UL))) +#define bM4_TMRA3_CMPAR4_CMP3 (*((volatile unsigned int*)(0x422B098CUL))) +#define bM4_TMRA3_CMPAR4_CMP4 (*((volatile unsigned int*)(0x422B0990UL))) +#define bM4_TMRA3_CMPAR4_CMP5 (*((volatile unsigned int*)(0x422B0994UL))) +#define bM4_TMRA3_CMPAR4_CMP6 (*((volatile unsigned int*)(0x422B0998UL))) +#define bM4_TMRA3_CMPAR4_CMP7 (*((volatile unsigned int*)(0x422B099CUL))) +#define bM4_TMRA3_CMPAR4_CMP8 (*((volatile unsigned int*)(0x422B09A0UL))) +#define bM4_TMRA3_CMPAR4_CMP9 (*((volatile unsigned int*)(0x422B09A4UL))) +#define bM4_TMRA3_CMPAR4_CMP10 (*((volatile unsigned int*)(0x422B09A8UL))) +#define bM4_TMRA3_CMPAR4_CMP11 (*((volatile unsigned int*)(0x422B09ACUL))) +#define bM4_TMRA3_CMPAR4_CMP12 (*((volatile unsigned int*)(0x422B09B0UL))) +#define bM4_TMRA3_CMPAR4_CMP13 (*((volatile unsigned int*)(0x422B09B4UL))) +#define bM4_TMRA3_CMPAR4_CMP14 (*((volatile unsigned int*)(0x422B09B8UL))) +#define bM4_TMRA3_CMPAR4_CMP15 (*((volatile unsigned int*)(0x422B09BCUL))) +#define bM4_TMRA3_CMPAR5_CMP0 (*((volatile unsigned int*)(0x422B0A00UL))) +#define bM4_TMRA3_CMPAR5_CMP1 (*((volatile unsigned int*)(0x422B0A04UL))) +#define bM4_TMRA3_CMPAR5_CMP2 (*((volatile unsigned int*)(0x422B0A08UL))) +#define bM4_TMRA3_CMPAR5_CMP3 (*((volatile unsigned int*)(0x422B0A0CUL))) +#define bM4_TMRA3_CMPAR5_CMP4 (*((volatile unsigned int*)(0x422B0A10UL))) +#define bM4_TMRA3_CMPAR5_CMP5 (*((volatile unsigned int*)(0x422B0A14UL))) +#define bM4_TMRA3_CMPAR5_CMP6 (*((volatile unsigned int*)(0x422B0A18UL))) +#define bM4_TMRA3_CMPAR5_CMP7 (*((volatile unsigned int*)(0x422B0A1CUL))) +#define bM4_TMRA3_CMPAR5_CMP8 (*((volatile unsigned int*)(0x422B0A20UL))) +#define bM4_TMRA3_CMPAR5_CMP9 (*((volatile unsigned int*)(0x422B0A24UL))) +#define bM4_TMRA3_CMPAR5_CMP10 (*((volatile unsigned int*)(0x422B0A28UL))) +#define bM4_TMRA3_CMPAR5_CMP11 (*((volatile unsigned int*)(0x422B0A2CUL))) +#define bM4_TMRA3_CMPAR5_CMP12 (*((volatile unsigned int*)(0x422B0A30UL))) +#define bM4_TMRA3_CMPAR5_CMP13 (*((volatile unsigned int*)(0x422B0A34UL))) +#define bM4_TMRA3_CMPAR5_CMP14 (*((volatile unsigned int*)(0x422B0A38UL))) +#define bM4_TMRA3_CMPAR5_CMP15 (*((volatile unsigned int*)(0x422B0A3CUL))) +#define bM4_TMRA3_CMPAR6_CMP0 (*((volatile unsigned int*)(0x422B0A80UL))) +#define bM4_TMRA3_CMPAR6_CMP1 (*((volatile unsigned int*)(0x422B0A84UL))) +#define bM4_TMRA3_CMPAR6_CMP2 (*((volatile unsigned int*)(0x422B0A88UL))) +#define bM4_TMRA3_CMPAR6_CMP3 (*((volatile unsigned int*)(0x422B0A8CUL))) +#define bM4_TMRA3_CMPAR6_CMP4 (*((volatile unsigned int*)(0x422B0A90UL))) +#define bM4_TMRA3_CMPAR6_CMP5 (*((volatile unsigned int*)(0x422B0A94UL))) +#define bM4_TMRA3_CMPAR6_CMP6 (*((volatile unsigned int*)(0x422B0A98UL))) +#define bM4_TMRA3_CMPAR6_CMP7 (*((volatile unsigned int*)(0x422B0A9CUL))) +#define bM4_TMRA3_CMPAR6_CMP8 (*((volatile unsigned int*)(0x422B0AA0UL))) +#define bM4_TMRA3_CMPAR6_CMP9 (*((volatile unsigned int*)(0x422B0AA4UL))) +#define bM4_TMRA3_CMPAR6_CMP10 (*((volatile unsigned int*)(0x422B0AA8UL))) +#define bM4_TMRA3_CMPAR6_CMP11 (*((volatile unsigned int*)(0x422B0AACUL))) +#define bM4_TMRA3_CMPAR6_CMP12 (*((volatile unsigned int*)(0x422B0AB0UL))) +#define bM4_TMRA3_CMPAR6_CMP13 (*((volatile unsigned int*)(0x422B0AB4UL))) +#define bM4_TMRA3_CMPAR6_CMP14 (*((volatile unsigned int*)(0x422B0AB8UL))) +#define bM4_TMRA3_CMPAR6_CMP15 (*((volatile unsigned int*)(0x422B0ABCUL))) +#define bM4_TMRA3_CMPAR7_CMP0 (*((volatile unsigned int*)(0x422B0B00UL))) +#define bM4_TMRA3_CMPAR7_CMP1 (*((volatile unsigned int*)(0x422B0B04UL))) +#define bM4_TMRA3_CMPAR7_CMP2 (*((volatile unsigned int*)(0x422B0B08UL))) +#define bM4_TMRA3_CMPAR7_CMP3 (*((volatile unsigned int*)(0x422B0B0CUL))) +#define bM4_TMRA3_CMPAR7_CMP4 (*((volatile unsigned int*)(0x422B0B10UL))) +#define bM4_TMRA3_CMPAR7_CMP5 (*((volatile unsigned int*)(0x422B0B14UL))) +#define bM4_TMRA3_CMPAR7_CMP6 (*((volatile unsigned int*)(0x422B0B18UL))) +#define bM4_TMRA3_CMPAR7_CMP7 (*((volatile unsigned int*)(0x422B0B1CUL))) +#define bM4_TMRA3_CMPAR7_CMP8 (*((volatile unsigned int*)(0x422B0B20UL))) +#define bM4_TMRA3_CMPAR7_CMP9 (*((volatile unsigned int*)(0x422B0B24UL))) +#define bM4_TMRA3_CMPAR7_CMP10 (*((volatile unsigned int*)(0x422B0B28UL))) +#define bM4_TMRA3_CMPAR7_CMP11 (*((volatile unsigned int*)(0x422B0B2CUL))) +#define bM4_TMRA3_CMPAR7_CMP12 (*((volatile unsigned int*)(0x422B0B30UL))) +#define bM4_TMRA3_CMPAR7_CMP13 (*((volatile unsigned int*)(0x422B0B34UL))) +#define bM4_TMRA3_CMPAR7_CMP14 (*((volatile unsigned int*)(0x422B0B38UL))) +#define bM4_TMRA3_CMPAR7_CMP15 (*((volatile unsigned int*)(0x422B0B3CUL))) +#define bM4_TMRA3_CMPAR8_CMP0 (*((volatile unsigned int*)(0x422B0B80UL))) +#define bM4_TMRA3_CMPAR8_CMP1 (*((volatile unsigned int*)(0x422B0B84UL))) +#define bM4_TMRA3_CMPAR8_CMP2 (*((volatile unsigned int*)(0x422B0B88UL))) +#define bM4_TMRA3_CMPAR8_CMP3 (*((volatile unsigned int*)(0x422B0B8CUL))) +#define bM4_TMRA3_CMPAR8_CMP4 (*((volatile unsigned int*)(0x422B0B90UL))) +#define bM4_TMRA3_CMPAR8_CMP5 (*((volatile unsigned int*)(0x422B0B94UL))) +#define bM4_TMRA3_CMPAR8_CMP6 (*((volatile unsigned int*)(0x422B0B98UL))) +#define bM4_TMRA3_CMPAR8_CMP7 (*((volatile unsigned int*)(0x422B0B9CUL))) +#define bM4_TMRA3_CMPAR8_CMP8 (*((volatile unsigned int*)(0x422B0BA0UL))) +#define bM4_TMRA3_CMPAR8_CMP9 (*((volatile unsigned int*)(0x422B0BA4UL))) +#define bM4_TMRA3_CMPAR8_CMP10 (*((volatile unsigned int*)(0x422B0BA8UL))) +#define bM4_TMRA3_CMPAR8_CMP11 (*((volatile unsigned int*)(0x422B0BACUL))) +#define bM4_TMRA3_CMPAR8_CMP12 (*((volatile unsigned int*)(0x422B0BB0UL))) +#define bM4_TMRA3_CMPAR8_CMP13 (*((volatile unsigned int*)(0x422B0BB4UL))) +#define bM4_TMRA3_CMPAR8_CMP14 (*((volatile unsigned int*)(0x422B0BB8UL))) +#define bM4_TMRA3_CMPAR8_CMP15 (*((volatile unsigned int*)(0x422B0BBCUL))) +#define bM4_TMRA3_BCSTR_START (*((volatile unsigned int*)(0x422B1000UL))) +#define bM4_TMRA3_BCSTR_DIR (*((volatile unsigned int*)(0x422B1004UL))) +#define bM4_TMRA3_BCSTR_MODE (*((volatile unsigned int*)(0x422B1008UL))) +#define bM4_TMRA3_BCSTR_SYNST (*((volatile unsigned int*)(0x422B100CUL))) +#define bM4_TMRA3_BCSTR_CKDIV0 (*((volatile unsigned int*)(0x422B1010UL))) +#define bM4_TMRA3_BCSTR_CKDIV1 (*((volatile unsigned int*)(0x422B1014UL))) +#define bM4_TMRA3_BCSTR_CKDIV2 (*((volatile unsigned int*)(0x422B1018UL))) +#define bM4_TMRA3_BCSTR_CKDIV3 (*((volatile unsigned int*)(0x422B101CUL))) +#define bM4_TMRA3_BCSTR_ITENOVF (*((volatile unsigned int*)(0x422B1030UL))) +#define bM4_TMRA3_BCSTR_ITENUDF (*((volatile unsigned int*)(0x422B1034UL))) +#define bM4_TMRA3_BCSTR_OVFF (*((volatile unsigned int*)(0x422B1038UL))) +#define bM4_TMRA3_BCSTR_UDFF (*((volatile unsigned int*)(0x422B103CUL))) +#define bM4_TMRA3_HCONR_HSTA0 (*((volatile unsigned int*)(0x422B1080UL))) +#define bM4_TMRA3_HCONR_HSTA1 (*((volatile unsigned int*)(0x422B1084UL))) +#define bM4_TMRA3_HCONR_HSTA2 (*((volatile unsigned int*)(0x422B1088UL))) +#define bM4_TMRA3_HCONR_HSTP0 (*((volatile unsigned int*)(0x422B1090UL))) +#define bM4_TMRA3_HCONR_HSTP1 (*((volatile unsigned int*)(0x422B1094UL))) +#define bM4_TMRA3_HCONR_HSTP2 (*((volatile unsigned int*)(0x422B1098UL))) +#define bM4_TMRA3_HCONR_HCLE0 (*((volatile unsigned int*)(0x422B10A0UL))) +#define bM4_TMRA3_HCONR_HCLE1 (*((volatile unsigned int*)(0x422B10A4UL))) +#define bM4_TMRA3_HCONR_HCLE2 (*((volatile unsigned int*)(0x422B10A8UL))) +#define bM4_TMRA3_HCONR_HCLE3 (*((volatile unsigned int*)(0x422B10B0UL))) +#define bM4_TMRA3_HCONR_HCLE4 (*((volatile unsigned int*)(0x422B10B4UL))) +#define bM4_TMRA3_HCONR_HCLE5 (*((volatile unsigned int*)(0x422B10B8UL))) +#define bM4_TMRA3_HCONR_HCLE6 (*((volatile unsigned int*)(0x422B10BCUL))) +#define bM4_TMRA3_HCUPR_HCUP0 (*((volatile unsigned int*)(0x422B1100UL))) +#define bM4_TMRA3_HCUPR_HCUP1 (*((volatile unsigned int*)(0x422B1104UL))) +#define bM4_TMRA3_HCUPR_HCUP2 (*((volatile unsigned int*)(0x422B1108UL))) +#define bM4_TMRA3_HCUPR_HCUP3 (*((volatile unsigned int*)(0x422B110CUL))) +#define bM4_TMRA3_HCUPR_HCUP4 (*((volatile unsigned int*)(0x422B1110UL))) +#define bM4_TMRA3_HCUPR_HCUP5 (*((volatile unsigned int*)(0x422B1114UL))) +#define bM4_TMRA3_HCUPR_HCUP6 (*((volatile unsigned int*)(0x422B1118UL))) +#define bM4_TMRA3_HCUPR_HCUP7 (*((volatile unsigned int*)(0x422B111CUL))) +#define bM4_TMRA3_HCUPR_HCUP8 (*((volatile unsigned int*)(0x422B1120UL))) +#define bM4_TMRA3_HCUPR_HCUP9 (*((volatile unsigned int*)(0x422B1124UL))) +#define bM4_TMRA3_HCUPR_HCUP10 (*((volatile unsigned int*)(0x422B1128UL))) +#define bM4_TMRA3_HCUPR_HCUP11 (*((volatile unsigned int*)(0x422B112CUL))) +#define bM4_TMRA3_HCUPR_HCUP12 (*((volatile unsigned int*)(0x422B1130UL))) +#define bM4_TMRA3_HCDOR_HCDO0 (*((volatile unsigned int*)(0x422B1180UL))) +#define bM4_TMRA3_HCDOR_HCDO1 (*((volatile unsigned int*)(0x422B1184UL))) +#define bM4_TMRA3_HCDOR_HCDO2 (*((volatile unsigned int*)(0x422B1188UL))) +#define bM4_TMRA3_HCDOR_HCDO3 (*((volatile unsigned int*)(0x422B118CUL))) +#define bM4_TMRA3_HCDOR_HCDO4 (*((volatile unsigned int*)(0x422B1190UL))) +#define bM4_TMRA3_HCDOR_HCDO5 (*((volatile unsigned int*)(0x422B1194UL))) +#define bM4_TMRA3_HCDOR_HCDO6 (*((volatile unsigned int*)(0x422B1198UL))) +#define bM4_TMRA3_HCDOR_HCDO7 (*((volatile unsigned int*)(0x422B119CUL))) +#define bM4_TMRA3_HCDOR_HCDO8 (*((volatile unsigned int*)(0x422B11A0UL))) +#define bM4_TMRA3_HCDOR_HCDO9 (*((volatile unsigned int*)(0x422B11A4UL))) +#define bM4_TMRA3_HCDOR_HCDO10 (*((volatile unsigned int*)(0x422B11A8UL))) +#define bM4_TMRA3_HCDOR_HCDO11 (*((volatile unsigned int*)(0x422B11ACUL))) +#define bM4_TMRA3_HCDOR_HCDO12 (*((volatile unsigned int*)(0x422B11B0UL))) +#define bM4_TMRA3_ICONR_ITEN1 (*((volatile unsigned int*)(0x422B1200UL))) +#define bM4_TMRA3_ICONR_ITEN2 (*((volatile unsigned int*)(0x422B1204UL))) +#define bM4_TMRA3_ICONR_ITEN3 (*((volatile unsigned int*)(0x422B1208UL))) +#define bM4_TMRA3_ICONR_ITEN4 (*((volatile unsigned int*)(0x422B120CUL))) +#define bM4_TMRA3_ICONR_ITEN5 (*((volatile unsigned int*)(0x422B1210UL))) +#define bM4_TMRA3_ICONR_ITEN6 (*((volatile unsigned int*)(0x422B1214UL))) +#define bM4_TMRA3_ICONR_ITEN7 (*((volatile unsigned int*)(0x422B1218UL))) +#define bM4_TMRA3_ICONR_ITEN8 (*((volatile unsigned int*)(0x422B121CUL))) +#define bM4_TMRA3_ECONR_ETEN1 (*((volatile unsigned int*)(0x422B1280UL))) +#define bM4_TMRA3_ECONR_ETEN2 (*((volatile unsigned int*)(0x422B1284UL))) +#define bM4_TMRA3_ECONR_ETEN3 (*((volatile unsigned int*)(0x422B1288UL))) +#define bM4_TMRA3_ECONR_ETEN4 (*((volatile unsigned int*)(0x422B128CUL))) +#define bM4_TMRA3_ECONR_ETEN5 (*((volatile unsigned int*)(0x422B1290UL))) +#define bM4_TMRA3_ECONR_ETEN6 (*((volatile unsigned int*)(0x422B1294UL))) +#define bM4_TMRA3_ECONR_ETEN7 (*((volatile unsigned int*)(0x422B1298UL))) +#define bM4_TMRA3_ECONR_ETEN8 (*((volatile unsigned int*)(0x422B129CUL))) +#define bM4_TMRA3_FCONR_NOFIENTG (*((volatile unsigned int*)(0x422B1300UL))) +#define bM4_TMRA3_FCONR_NOFICKTG0 (*((volatile unsigned int*)(0x422B1304UL))) +#define bM4_TMRA3_FCONR_NOFICKTG1 (*((volatile unsigned int*)(0x422B1308UL))) +#define bM4_TMRA3_FCONR_NOFIENCA (*((volatile unsigned int*)(0x422B1320UL))) +#define bM4_TMRA3_FCONR_NOFICKCA0 (*((volatile unsigned int*)(0x422B1324UL))) +#define bM4_TMRA3_FCONR_NOFICKCA1 (*((volatile unsigned int*)(0x422B1328UL))) +#define bM4_TMRA3_FCONR_NOFIENCB (*((volatile unsigned int*)(0x422B1330UL))) +#define bM4_TMRA3_FCONR_NOFICKCB0 (*((volatile unsigned int*)(0x422B1334UL))) +#define bM4_TMRA3_FCONR_NOFICKCB1 (*((volatile unsigned int*)(0x422B1338UL))) +#define bM4_TMRA3_STFLR_CMPF1 (*((volatile unsigned int*)(0x422B1380UL))) +#define bM4_TMRA3_STFLR_CMPF2 (*((volatile unsigned int*)(0x422B1384UL))) +#define bM4_TMRA3_STFLR_CMPF3 (*((volatile unsigned int*)(0x422B1388UL))) +#define bM4_TMRA3_STFLR_CMPF4 (*((volatile unsigned int*)(0x422B138CUL))) +#define bM4_TMRA3_STFLR_CMPF5 (*((volatile unsigned int*)(0x422B1390UL))) +#define bM4_TMRA3_STFLR_CMPF6 (*((volatile unsigned int*)(0x422B1394UL))) +#define bM4_TMRA3_STFLR_CMPF7 (*((volatile unsigned int*)(0x422B1398UL))) +#define bM4_TMRA3_STFLR_CMPF8 (*((volatile unsigned int*)(0x422B139CUL))) +#define bM4_TMRA3_BCONR1_BEN (*((volatile unsigned int*)(0x422B1800UL))) +#define bM4_TMRA3_BCONR1_BSE0 (*((volatile unsigned int*)(0x422B1804UL))) +#define bM4_TMRA3_BCONR1_BSE1 (*((volatile unsigned int*)(0x422B1808UL))) +#define bM4_TMRA3_BCONR2_BEN (*((volatile unsigned int*)(0x422B1900UL))) +#define bM4_TMRA3_BCONR2_BSE0 (*((volatile unsigned int*)(0x422B1904UL))) +#define bM4_TMRA3_BCONR2_BSE1 (*((volatile unsigned int*)(0x422B1908UL))) +#define bM4_TMRA3_BCONR3_BEN (*((volatile unsigned int*)(0x422B1A00UL))) +#define bM4_TMRA3_BCONR3_BSE0 (*((volatile unsigned int*)(0x422B1A04UL))) +#define bM4_TMRA3_BCONR3_BSE1 (*((volatile unsigned int*)(0x422B1A08UL))) +#define bM4_TMRA3_BCONR4_BEN (*((volatile unsigned int*)(0x422B1B00UL))) +#define bM4_TMRA3_BCONR4_BSE0 (*((volatile unsigned int*)(0x422B1B04UL))) +#define bM4_TMRA3_BCONR4_BSE1 (*((volatile unsigned int*)(0x422B1B08UL))) +#define bM4_TMRA3_CCONR1_CAPMD (*((volatile unsigned int*)(0x422B2000UL))) +#define bM4_TMRA3_CCONR1_HICP0 (*((volatile unsigned int*)(0x422B2010UL))) +#define bM4_TMRA3_CCONR1_HICP1 (*((volatile unsigned int*)(0x422B2014UL))) +#define bM4_TMRA3_CCONR1_HICP2 (*((volatile unsigned int*)(0x422B2018UL))) +#define bM4_TMRA3_CCONR1_HICP3 (*((volatile unsigned int*)(0x422B2020UL))) +#define bM4_TMRA3_CCONR1_HICP4 (*((volatile unsigned int*)(0x422B2024UL))) +#define bM4_TMRA3_CCONR1_NOFIENCP (*((volatile unsigned int*)(0x422B2030UL))) +#define bM4_TMRA3_CCONR1_NOFICKCP0 (*((volatile unsigned int*)(0x422B2034UL))) +#define bM4_TMRA3_CCONR1_NOFICKCP1 (*((volatile unsigned int*)(0x422B2038UL))) +#define bM4_TMRA3_CCONR2_CAPMD (*((volatile unsigned int*)(0x422B2080UL))) +#define bM4_TMRA3_CCONR2_HICP0 (*((volatile unsigned int*)(0x422B2090UL))) +#define bM4_TMRA3_CCONR2_HICP1 (*((volatile unsigned int*)(0x422B2094UL))) +#define bM4_TMRA3_CCONR2_HICP2 (*((volatile unsigned int*)(0x422B2098UL))) +#define bM4_TMRA3_CCONR2_HICP3 (*((volatile unsigned int*)(0x422B20A0UL))) +#define bM4_TMRA3_CCONR2_HICP4 (*((volatile unsigned int*)(0x422B20A4UL))) +#define bM4_TMRA3_CCONR2_NOFIENCP (*((volatile unsigned int*)(0x422B20B0UL))) +#define bM4_TMRA3_CCONR2_NOFICKCP0 (*((volatile unsigned int*)(0x422B20B4UL))) +#define bM4_TMRA3_CCONR2_NOFICKCP1 (*((volatile unsigned int*)(0x422B20B8UL))) +#define bM4_TMRA3_CCONR3_CAPMD (*((volatile unsigned int*)(0x422B2100UL))) +#define bM4_TMRA3_CCONR3_HICP0 (*((volatile unsigned int*)(0x422B2110UL))) +#define bM4_TMRA3_CCONR3_HICP1 (*((volatile unsigned int*)(0x422B2114UL))) +#define bM4_TMRA3_CCONR3_HICP2 (*((volatile unsigned int*)(0x422B2118UL))) +#define bM4_TMRA3_CCONR3_HICP3 (*((volatile unsigned int*)(0x422B2120UL))) +#define bM4_TMRA3_CCONR3_HICP4 (*((volatile unsigned int*)(0x422B2124UL))) +#define bM4_TMRA3_CCONR3_NOFIENCP (*((volatile unsigned int*)(0x422B2130UL))) +#define bM4_TMRA3_CCONR3_NOFICKCP0 (*((volatile unsigned int*)(0x422B2134UL))) +#define bM4_TMRA3_CCONR3_NOFICKCP1 (*((volatile unsigned int*)(0x422B2138UL))) +#define bM4_TMRA3_CCONR4_CAPMD (*((volatile unsigned int*)(0x422B2180UL))) +#define bM4_TMRA3_CCONR4_HICP0 (*((volatile unsigned int*)(0x422B2190UL))) +#define bM4_TMRA3_CCONR4_HICP1 (*((volatile unsigned int*)(0x422B2194UL))) +#define bM4_TMRA3_CCONR4_HICP2 (*((volatile unsigned int*)(0x422B2198UL))) +#define bM4_TMRA3_CCONR4_HICP3 (*((volatile unsigned int*)(0x422B21A0UL))) +#define bM4_TMRA3_CCONR4_HICP4 (*((volatile unsigned int*)(0x422B21A4UL))) +#define bM4_TMRA3_CCONR4_NOFIENCP (*((volatile unsigned int*)(0x422B21B0UL))) +#define bM4_TMRA3_CCONR4_NOFICKCP0 (*((volatile unsigned int*)(0x422B21B4UL))) +#define bM4_TMRA3_CCONR4_NOFICKCP1 (*((volatile unsigned int*)(0x422B21B8UL))) +#define bM4_TMRA3_CCONR5_CAPMD (*((volatile unsigned int*)(0x422B2200UL))) +#define bM4_TMRA3_CCONR5_HICP0 (*((volatile unsigned int*)(0x422B2210UL))) +#define bM4_TMRA3_CCONR5_HICP1 (*((volatile unsigned int*)(0x422B2214UL))) +#define bM4_TMRA3_CCONR5_HICP2 (*((volatile unsigned int*)(0x422B2218UL))) +#define bM4_TMRA3_CCONR5_HICP3 (*((volatile unsigned int*)(0x422B2220UL))) +#define bM4_TMRA3_CCONR5_HICP4 (*((volatile unsigned int*)(0x422B2224UL))) +#define bM4_TMRA3_CCONR5_NOFIENCP (*((volatile unsigned int*)(0x422B2230UL))) +#define bM4_TMRA3_CCONR5_NOFICKCP0 (*((volatile unsigned int*)(0x422B2234UL))) +#define bM4_TMRA3_CCONR5_NOFICKCP1 (*((volatile unsigned int*)(0x422B2238UL))) +#define bM4_TMRA3_CCONR6_CAPMD (*((volatile unsigned int*)(0x422B2280UL))) +#define bM4_TMRA3_CCONR6_HICP0 (*((volatile unsigned int*)(0x422B2290UL))) +#define bM4_TMRA3_CCONR6_HICP1 (*((volatile unsigned int*)(0x422B2294UL))) +#define bM4_TMRA3_CCONR6_HICP2 (*((volatile unsigned int*)(0x422B2298UL))) +#define bM4_TMRA3_CCONR6_HICP3 (*((volatile unsigned int*)(0x422B22A0UL))) +#define bM4_TMRA3_CCONR6_HICP4 (*((volatile unsigned int*)(0x422B22A4UL))) +#define bM4_TMRA3_CCONR6_NOFIENCP (*((volatile unsigned int*)(0x422B22B0UL))) +#define bM4_TMRA3_CCONR6_NOFICKCP0 (*((volatile unsigned int*)(0x422B22B4UL))) +#define bM4_TMRA3_CCONR6_NOFICKCP1 (*((volatile unsigned int*)(0x422B22B8UL))) +#define bM4_TMRA3_CCONR7_CAPMD (*((volatile unsigned int*)(0x422B2300UL))) +#define bM4_TMRA3_CCONR7_HICP0 (*((volatile unsigned int*)(0x422B2310UL))) +#define bM4_TMRA3_CCONR7_HICP1 (*((volatile unsigned int*)(0x422B2314UL))) +#define bM4_TMRA3_CCONR7_HICP2 (*((volatile unsigned int*)(0x422B2318UL))) +#define bM4_TMRA3_CCONR7_HICP3 (*((volatile unsigned int*)(0x422B2320UL))) +#define bM4_TMRA3_CCONR7_HICP4 (*((volatile unsigned int*)(0x422B2324UL))) +#define bM4_TMRA3_CCONR7_NOFIENCP (*((volatile unsigned int*)(0x422B2330UL))) +#define bM4_TMRA3_CCONR7_NOFICKCP0 (*((volatile unsigned int*)(0x422B2334UL))) +#define bM4_TMRA3_CCONR7_NOFICKCP1 (*((volatile unsigned int*)(0x422B2338UL))) +#define bM4_TMRA3_CCONR8_CAPMD (*((volatile unsigned int*)(0x422B2380UL))) +#define bM4_TMRA3_CCONR8_HICP0 (*((volatile unsigned int*)(0x422B2390UL))) +#define bM4_TMRA3_CCONR8_HICP1 (*((volatile unsigned int*)(0x422B2394UL))) +#define bM4_TMRA3_CCONR8_HICP2 (*((volatile unsigned int*)(0x422B2398UL))) +#define bM4_TMRA3_CCONR8_HICP3 (*((volatile unsigned int*)(0x422B23A0UL))) +#define bM4_TMRA3_CCONR8_HICP4 (*((volatile unsigned int*)(0x422B23A4UL))) +#define bM4_TMRA3_CCONR8_NOFIENCP (*((volatile unsigned int*)(0x422B23B0UL))) +#define bM4_TMRA3_CCONR8_NOFICKCP0 (*((volatile unsigned int*)(0x422B23B4UL))) +#define bM4_TMRA3_CCONR8_NOFICKCP1 (*((volatile unsigned int*)(0x422B23B8UL))) +#define bM4_TMRA3_PCONR1_STAC0 (*((volatile unsigned int*)(0x422B2800UL))) +#define bM4_TMRA3_PCONR1_STAC1 (*((volatile unsigned int*)(0x422B2804UL))) +#define bM4_TMRA3_PCONR1_STPC0 (*((volatile unsigned int*)(0x422B2808UL))) +#define bM4_TMRA3_PCONR1_STPC1 (*((volatile unsigned int*)(0x422B280CUL))) +#define bM4_TMRA3_PCONR1_CMPC0 (*((volatile unsigned int*)(0x422B2810UL))) +#define bM4_TMRA3_PCONR1_CMPC1 (*((volatile unsigned int*)(0x422B2814UL))) +#define bM4_TMRA3_PCONR1_PERC0 (*((volatile unsigned int*)(0x422B2818UL))) +#define bM4_TMRA3_PCONR1_PERC1 (*((volatile unsigned int*)(0x422B281CUL))) +#define bM4_TMRA3_PCONR1_FORC0 (*((volatile unsigned int*)(0x422B2820UL))) +#define bM4_TMRA3_PCONR1_FORC1 (*((volatile unsigned int*)(0x422B2824UL))) +#define bM4_TMRA3_PCONR1_OUTEN (*((volatile unsigned int*)(0x422B2830UL))) +#define bM4_TMRA3_PCONR2_STAC0 (*((volatile unsigned int*)(0x422B2880UL))) +#define bM4_TMRA3_PCONR2_STAC1 (*((volatile unsigned int*)(0x422B2884UL))) +#define bM4_TMRA3_PCONR2_STPC0 (*((volatile unsigned int*)(0x422B2888UL))) +#define bM4_TMRA3_PCONR2_STPC1 (*((volatile unsigned int*)(0x422B288CUL))) +#define bM4_TMRA3_PCONR2_CMPC0 (*((volatile unsigned int*)(0x422B2890UL))) +#define bM4_TMRA3_PCONR2_CMPC1 (*((volatile unsigned int*)(0x422B2894UL))) +#define bM4_TMRA3_PCONR2_PERC0 (*((volatile unsigned int*)(0x422B2898UL))) +#define bM4_TMRA3_PCONR2_PERC1 (*((volatile unsigned int*)(0x422B289CUL))) +#define bM4_TMRA3_PCONR2_FORC0 (*((volatile unsigned int*)(0x422B28A0UL))) +#define bM4_TMRA3_PCONR2_FORC1 (*((volatile unsigned int*)(0x422B28A4UL))) +#define bM4_TMRA3_PCONR2_OUTEN (*((volatile unsigned int*)(0x422B28B0UL))) +#define bM4_TMRA3_PCONR3_STAC0 (*((volatile unsigned int*)(0x422B2900UL))) +#define bM4_TMRA3_PCONR3_STAC1 (*((volatile unsigned int*)(0x422B2904UL))) +#define bM4_TMRA3_PCONR3_STPC0 (*((volatile unsigned int*)(0x422B2908UL))) +#define bM4_TMRA3_PCONR3_STPC1 (*((volatile unsigned int*)(0x422B290CUL))) +#define bM4_TMRA3_PCONR3_CMPC0 (*((volatile unsigned int*)(0x422B2910UL))) +#define bM4_TMRA3_PCONR3_CMPC1 (*((volatile unsigned int*)(0x422B2914UL))) +#define bM4_TMRA3_PCONR3_PERC0 (*((volatile unsigned int*)(0x422B2918UL))) +#define bM4_TMRA3_PCONR3_PERC1 (*((volatile unsigned int*)(0x422B291CUL))) +#define bM4_TMRA3_PCONR3_FORC0 (*((volatile unsigned int*)(0x422B2920UL))) +#define bM4_TMRA3_PCONR3_FORC1 (*((volatile unsigned int*)(0x422B2924UL))) +#define bM4_TMRA3_PCONR3_OUTEN (*((volatile unsigned int*)(0x422B2930UL))) +#define bM4_TMRA3_PCONR4_STAC0 (*((volatile unsigned int*)(0x422B2980UL))) +#define bM4_TMRA3_PCONR4_STAC1 (*((volatile unsigned int*)(0x422B2984UL))) +#define bM4_TMRA3_PCONR4_STPC0 (*((volatile unsigned int*)(0x422B2988UL))) +#define bM4_TMRA3_PCONR4_STPC1 (*((volatile unsigned int*)(0x422B298CUL))) +#define bM4_TMRA3_PCONR4_CMPC0 (*((volatile unsigned int*)(0x422B2990UL))) +#define bM4_TMRA3_PCONR4_CMPC1 (*((volatile unsigned int*)(0x422B2994UL))) +#define bM4_TMRA3_PCONR4_PERC0 (*((volatile unsigned int*)(0x422B2998UL))) +#define bM4_TMRA3_PCONR4_PERC1 (*((volatile unsigned int*)(0x422B299CUL))) +#define bM4_TMRA3_PCONR4_FORC0 (*((volatile unsigned int*)(0x422B29A0UL))) +#define bM4_TMRA3_PCONR4_FORC1 (*((volatile unsigned int*)(0x422B29A4UL))) +#define bM4_TMRA3_PCONR4_OUTEN (*((volatile unsigned int*)(0x422B29B0UL))) +#define bM4_TMRA3_PCONR5_STAC0 (*((volatile unsigned int*)(0x422B2A00UL))) +#define bM4_TMRA3_PCONR5_STAC1 (*((volatile unsigned int*)(0x422B2A04UL))) +#define bM4_TMRA3_PCONR5_STPC0 (*((volatile unsigned int*)(0x422B2A08UL))) +#define bM4_TMRA3_PCONR5_STPC1 (*((volatile unsigned int*)(0x422B2A0CUL))) +#define bM4_TMRA3_PCONR5_CMPC0 (*((volatile unsigned int*)(0x422B2A10UL))) +#define bM4_TMRA3_PCONR5_CMPC1 (*((volatile unsigned int*)(0x422B2A14UL))) +#define bM4_TMRA3_PCONR5_PERC0 (*((volatile unsigned int*)(0x422B2A18UL))) +#define bM4_TMRA3_PCONR5_PERC1 (*((volatile unsigned int*)(0x422B2A1CUL))) +#define bM4_TMRA3_PCONR5_FORC0 (*((volatile unsigned int*)(0x422B2A20UL))) +#define bM4_TMRA3_PCONR5_FORC1 (*((volatile unsigned int*)(0x422B2A24UL))) +#define bM4_TMRA3_PCONR5_OUTEN (*((volatile unsigned int*)(0x422B2A30UL))) +#define bM4_TMRA3_PCONR6_STAC0 (*((volatile unsigned int*)(0x422B2A80UL))) +#define bM4_TMRA3_PCONR6_STAC1 (*((volatile unsigned int*)(0x422B2A84UL))) +#define bM4_TMRA3_PCONR6_STPC0 (*((volatile unsigned int*)(0x422B2A88UL))) +#define bM4_TMRA3_PCONR6_STPC1 (*((volatile unsigned int*)(0x422B2A8CUL))) +#define bM4_TMRA3_PCONR6_CMPC0 (*((volatile unsigned int*)(0x422B2A90UL))) +#define bM4_TMRA3_PCONR6_CMPC1 (*((volatile unsigned int*)(0x422B2A94UL))) +#define bM4_TMRA3_PCONR6_PERC0 (*((volatile unsigned int*)(0x422B2A98UL))) +#define bM4_TMRA3_PCONR6_PERC1 (*((volatile unsigned int*)(0x422B2A9CUL))) +#define bM4_TMRA3_PCONR6_FORC0 (*((volatile unsigned int*)(0x422B2AA0UL))) +#define bM4_TMRA3_PCONR6_FORC1 (*((volatile unsigned int*)(0x422B2AA4UL))) +#define bM4_TMRA3_PCONR6_OUTEN (*((volatile unsigned int*)(0x422B2AB0UL))) +#define bM4_TMRA3_PCONR7_STAC0 (*((volatile unsigned int*)(0x422B2B00UL))) +#define bM4_TMRA3_PCONR7_STAC1 (*((volatile unsigned int*)(0x422B2B04UL))) +#define bM4_TMRA3_PCONR7_STPC0 (*((volatile unsigned int*)(0x422B2B08UL))) +#define bM4_TMRA3_PCONR7_STPC1 (*((volatile unsigned int*)(0x422B2B0CUL))) +#define bM4_TMRA3_PCONR7_CMPC0 (*((volatile unsigned int*)(0x422B2B10UL))) +#define bM4_TMRA3_PCONR7_CMPC1 (*((volatile unsigned int*)(0x422B2B14UL))) +#define bM4_TMRA3_PCONR7_PERC0 (*((volatile unsigned int*)(0x422B2B18UL))) +#define bM4_TMRA3_PCONR7_PERC1 (*((volatile unsigned int*)(0x422B2B1CUL))) +#define bM4_TMRA3_PCONR7_FORC0 (*((volatile unsigned int*)(0x422B2B20UL))) +#define bM4_TMRA3_PCONR7_FORC1 (*((volatile unsigned int*)(0x422B2B24UL))) +#define bM4_TMRA3_PCONR7_OUTEN (*((volatile unsigned int*)(0x422B2B30UL))) +#define bM4_TMRA3_PCONR8_STAC0 (*((volatile unsigned int*)(0x422B2B80UL))) +#define bM4_TMRA3_PCONR8_STAC1 (*((volatile unsigned int*)(0x422B2B84UL))) +#define bM4_TMRA3_PCONR8_STPC0 (*((volatile unsigned int*)(0x422B2B88UL))) +#define bM4_TMRA3_PCONR8_STPC1 (*((volatile unsigned int*)(0x422B2B8CUL))) +#define bM4_TMRA3_PCONR8_CMPC0 (*((volatile unsigned int*)(0x422B2B90UL))) +#define bM4_TMRA3_PCONR8_CMPC1 (*((volatile unsigned int*)(0x422B2B94UL))) +#define bM4_TMRA3_PCONR8_PERC0 (*((volatile unsigned int*)(0x422B2B98UL))) +#define bM4_TMRA3_PCONR8_PERC1 (*((volatile unsigned int*)(0x422B2B9CUL))) +#define bM4_TMRA3_PCONR8_FORC0 (*((volatile unsigned int*)(0x422B2BA0UL))) +#define bM4_TMRA3_PCONR8_FORC1 (*((volatile unsigned int*)(0x422B2BA4UL))) +#define bM4_TMRA3_PCONR8_OUTEN (*((volatile unsigned int*)(0x422B2BB0UL))) +#define bM4_TMRA4_CNTER_CNT0 (*((volatile unsigned int*)(0x422B8000UL))) +#define bM4_TMRA4_CNTER_CNT1 (*((volatile unsigned int*)(0x422B8004UL))) +#define bM4_TMRA4_CNTER_CNT2 (*((volatile unsigned int*)(0x422B8008UL))) +#define bM4_TMRA4_CNTER_CNT3 (*((volatile unsigned int*)(0x422B800CUL))) +#define bM4_TMRA4_CNTER_CNT4 (*((volatile unsigned int*)(0x422B8010UL))) +#define bM4_TMRA4_CNTER_CNT5 (*((volatile unsigned int*)(0x422B8014UL))) +#define bM4_TMRA4_CNTER_CNT6 (*((volatile unsigned int*)(0x422B8018UL))) +#define bM4_TMRA4_CNTER_CNT7 (*((volatile unsigned int*)(0x422B801CUL))) +#define bM4_TMRA4_CNTER_CNT8 (*((volatile unsigned int*)(0x422B8020UL))) +#define bM4_TMRA4_CNTER_CNT9 (*((volatile unsigned int*)(0x422B8024UL))) +#define bM4_TMRA4_CNTER_CNT10 (*((volatile unsigned int*)(0x422B8028UL))) +#define bM4_TMRA4_CNTER_CNT11 (*((volatile unsigned int*)(0x422B802CUL))) +#define bM4_TMRA4_CNTER_CNT12 (*((volatile unsigned int*)(0x422B8030UL))) +#define bM4_TMRA4_CNTER_CNT13 (*((volatile unsigned int*)(0x422B8034UL))) +#define bM4_TMRA4_CNTER_CNT14 (*((volatile unsigned int*)(0x422B8038UL))) +#define bM4_TMRA4_CNTER_CNT15 (*((volatile unsigned int*)(0x422B803CUL))) +#define bM4_TMRA4_PERAR_PER0 (*((volatile unsigned int*)(0x422B8080UL))) +#define bM4_TMRA4_PERAR_PER1 (*((volatile unsigned int*)(0x422B8084UL))) +#define bM4_TMRA4_PERAR_PER2 (*((volatile unsigned int*)(0x422B8088UL))) +#define bM4_TMRA4_PERAR_PER3 (*((volatile unsigned int*)(0x422B808CUL))) +#define bM4_TMRA4_PERAR_PER4 (*((volatile unsigned int*)(0x422B8090UL))) +#define bM4_TMRA4_PERAR_PER5 (*((volatile unsigned int*)(0x422B8094UL))) +#define bM4_TMRA4_PERAR_PER6 (*((volatile unsigned int*)(0x422B8098UL))) +#define bM4_TMRA4_PERAR_PER7 (*((volatile unsigned int*)(0x422B809CUL))) +#define bM4_TMRA4_PERAR_PER8 (*((volatile unsigned int*)(0x422B80A0UL))) +#define bM4_TMRA4_PERAR_PER9 (*((volatile unsigned int*)(0x422B80A4UL))) +#define bM4_TMRA4_PERAR_PER10 (*((volatile unsigned int*)(0x422B80A8UL))) +#define bM4_TMRA4_PERAR_PER11 (*((volatile unsigned int*)(0x422B80ACUL))) +#define bM4_TMRA4_PERAR_PER12 (*((volatile unsigned int*)(0x422B80B0UL))) +#define bM4_TMRA4_PERAR_PER13 (*((volatile unsigned int*)(0x422B80B4UL))) +#define bM4_TMRA4_PERAR_PER14 (*((volatile unsigned int*)(0x422B80B8UL))) +#define bM4_TMRA4_PERAR_PER15 (*((volatile unsigned int*)(0x422B80BCUL))) +#define bM4_TMRA4_CMPAR1_CMP0 (*((volatile unsigned int*)(0x422B8800UL))) +#define bM4_TMRA4_CMPAR1_CMP1 (*((volatile unsigned int*)(0x422B8804UL))) +#define bM4_TMRA4_CMPAR1_CMP2 (*((volatile unsigned int*)(0x422B8808UL))) +#define bM4_TMRA4_CMPAR1_CMP3 (*((volatile unsigned int*)(0x422B880CUL))) +#define bM4_TMRA4_CMPAR1_CMP4 (*((volatile unsigned int*)(0x422B8810UL))) +#define bM4_TMRA4_CMPAR1_CMP5 (*((volatile unsigned int*)(0x422B8814UL))) +#define bM4_TMRA4_CMPAR1_CMP6 (*((volatile unsigned int*)(0x422B8818UL))) +#define bM4_TMRA4_CMPAR1_CMP7 (*((volatile unsigned int*)(0x422B881CUL))) +#define bM4_TMRA4_CMPAR1_CMP8 (*((volatile unsigned int*)(0x422B8820UL))) +#define bM4_TMRA4_CMPAR1_CMP9 (*((volatile unsigned int*)(0x422B8824UL))) +#define bM4_TMRA4_CMPAR1_CMP10 (*((volatile unsigned int*)(0x422B8828UL))) +#define bM4_TMRA4_CMPAR1_CMP11 (*((volatile unsigned int*)(0x422B882CUL))) +#define bM4_TMRA4_CMPAR1_CMP12 (*((volatile unsigned int*)(0x422B8830UL))) +#define bM4_TMRA4_CMPAR1_CMP13 (*((volatile unsigned int*)(0x422B8834UL))) +#define bM4_TMRA4_CMPAR1_CMP14 (*((volatile unsigned int*)(0x422B8838UL))) +#define bM4_TMRA4_CMPAR1_CMP15 (*((volatile unsigned int*)(0x422B883CUL))) +#define bM4_TMRA4_CMPAR2_CMP0 (*((volatile unsigned int*)(0x422B8880UL))) +#define bM4_TMRA4_CMPAR2_CMP1 (*((volatile unsigned int*)(0x422B8884UL))) +#define bM4_TMRA4_CMPAR2_CMP2 (*((volatile unsigned int*)(0x422B8888UL))) +#define bM4_TMRA4_CMPAR2_CMP3 (*((volatile unsigned int*)(0x422B888CUL))) +#define bM4_TMRA4_CMPAR2_CMP4 (*((volatile unsigned int*)(0x422B8890UL))) +#define bM4_TMRA4_CMPAR2_CMP5 (*((volatile unsigned int*)(0x422B8894UL))) +#define bM4_TMRA4_CMPAR2_CMP6 (*((volatile unsigned int*)(0x422B8898UL))) +#define bM4_TMRA4_CMPAR2_CMP7 (*((volatile unsigned int*)(0x422B889CUL))) +#define bM4_TMRA4_CMPAR2_CMP8 (*((volatile unsigned int*)(0x422B88A0UL))) +#define bM4_TMRA4_CMPAR2_CMP9 (*((volatile unsigned int*)(0x422B88A4UL))) +#define bM4_TMRA4_CMPAR2_CMP10 (*((volatile unsigned int*)(0x422B88A8UL))) +#define bM4_TMRA4_CMPAR2_CMP11 (*((volatile unsigned int*)(0x422B88ACUL))) +#define bM4_TMRA4_CMPAR2_CMP12 (*((volatile unsigned int*)(0x422B88B0UL))) +#define bM4_TMRA4_CMPAR2_CMP13 (*((volatile unsigned int*)(0x422B88B4UL))) +#define bM4_TMRA4_CMPAR2_CMP14 (*((volatile unsigned int*)(0x422B88B8UL))) +#define bM4_TMRA4_CMPAR2_CMP15 (*((volatile unsigned int*)(0x422B88BCUL))) +#define bM4_TMRA4_CMPAR3_CMP0 (*((volatile unsigned int*)(0x422B8900UL))) +#define bM4_TMRA4_CMPAR3_CMP1 (*((volatile unsigned int*)(0x422B8904UL))) +#define bM4_TMRA4_CMPAR3_CMP2 (*((volatile unsigned int*)(0x422B8908UL))) +#define bM4_TMRA4_CMPAR3_CMP3 (*((volatile unsigned int*)(0x422B890CUL))) +#define bM4_TMRA4_CMPAR3_CMP4 (*((volatile unsigned int*)(0x422B8910UL))) +#define bM4_TMRA4_CMPAR3_CMP5 (*((volatile unsigned int*)(0x422B8914UL))) +#define bM4_TMRA4_CMPAR3_CMP6 (*((volatile unsigned int*)(0x422B8918UL))) +#define bM4_TMRA4_CMPAR3_CMP7 (*((volatile unsigned int*)(0x422B891CUL))) +#define bM4_TMRA4_CMPAR3_CMP8 (*((volatile unsigned int*)(0x422B8920UL))) +#define bM4_TMRA4_CMPAR3_CMP9 (*((volatile unsigned int*)(0x422B8924UL))) +#define bM4_TMRA4_CMPAR3_CMP10 (*((volatile unsigned int*)(0x422B8928UL))) +#define bM4_TMRA4_CMPAR3_CMP11 (*((volatile unsigned int*)(0x422B892CUL))) +#define bM4_TMRA4_CMPAR3_CMP12 (*((volatile unsigned int*)(0x422B8930UL))) +#define bM4_TMRA4_CMPAR3_CMP13 (*((volatile unsigned int*)(0x422B8934UL))) +#define bM4_TMRA4_CMPAR3_CMP14 (*((volatile unsigned int*)(0x422B8938UL))) +#define bM4_TMRA4_CMPAR3_CMP15 (*((volatile unsigned int*)(0x422B893CUL))) +#define bM4_TMRA4_CMPAR4_CMP0 (*((volatile unsigned int*)(0x422B8980UL))) +#define bM4_TMRA4_CMPAR4_CMP1 (*((volatile unsigned int*)(0x422B8984UL))) +#define bM4_TMRA4_CMPAR4_CMP2 (*((volatile unsigned int*)(0x422B8988UL))) +#define bM4_TMRA4_CMPAR4_CMP3 (*((volatile unsigned int*)(0x422B898CUL))) +#define bM4_TMRA4_CMPAR4_CMP4 (*((volatile unsigned int*)(0x422B8990UL))) +#define bM4_TMRA4_CMPAR4_CMP5 (*((volatile unsigned int*)(0x422B8994UL))) +#define bM4_TMRA4_CMPAR4_CMP6 (*((volatile unsigned int*)(0x422B8998UL))) +#define bM4_TMRA4_CMPAR4_CMP7 (*((volatile unsigned int*)(0x422B899CUL))) +#define bM4_TMRA4_CMPAR4_CMP8 (*((volatile unsigned int*)(0x422B89A0UL))) +#define bM4_TMRA4_CMPAR4_CMP9 (*((volatile unsigned int*)(0x422B89A4UL))) +#define bM4_TMRA4_CMPAR4_CMP10 (*((volatile unsigned int*)(0x422B89A8UL))) +#define bM4_TMRA4_CMPAR4_CMP11 (*((volatile unsigned int*)(0x422B89ACUL))) +#define bM4_TMRA4_CMPAR4_CMP12 (*((volatile unsigned int*)(0x422B89B0UL))) +#define bM4_TMRA4_CMPAR4_CMP13 (*((volatile unsigned int*)(0x422B89B4UL))) +#define bM4_TMRA4_CMPAR4_CMP14 (*((volatile unsigned int*)(0x422B89B8UL))) +#define bM4_TMRA4_CMPAR4_CMP15 (*((volatile unsigned int*)(0x422B89BCUL))) +#define bM4_TMRA4_CMPAR5_CMP0 (*((volatile unsigned int*)(0x422B8A00UL))) +#define bM4_TMRA4_CMPAR5_CMP1 (*((volatile unsigned int*)(0x422B8A04UL))) +#define bM4_TMRA4_CMPAR5_CMP2 (*((volatile unsigned int*)(0x422B8A08UL))) +#define bM4_TMRA4_CMPAR5_CMP3 (*((volatile unsigned int*)(0x422B8A0CUL))) +#define bM4_TMRA4_CMPAR5_CMP4 (*((volatile unsigned int*)(0x422B8A10UL))) +#define bM4_TMRA4_CMPAR5_CMP5 (*((volatile unsigned int*)(0x422B8A14UL))) +#define bM4_TMRA4_CMPAR5_CMP6 (*((volatile unsigned int*)(0x422B8A18UL))) +#define bM4_TMRA4_CMPAR5_CMP7 (*((volatile unsigned int*)(0x422B8A1CUL))) +#define bM4_TMRA4_CMPAR5_CMP8 (*((volatile unsigned int*)(0x422B8A20UL))) +#define bM4_TMRA4_CMPAR5_CMP9 (*((volatile unsigned int*)(0x422B8A24UL))) +#define bM4_TMRA4_CMPAR5_CMP10 (*((volatile unsigned int*)(0x422B8A28UL))) +#define bM4_TMRA4_CMPAR5_CMP11 (*((volatile unsigned int*)(0x422B8A2CUL))) +#define bM4_TMRA4_CMPAR5_CMP12 (*((volatile unsigned int*)(0x422B8A30UL))) +#define bM4_TMRA4_CMPAR5_CMP13 (*((volatile unsigned int*)(0x422B8A34UL))) +#define bM4_TMRA4_CMPAR5_CMP14 (*((volatile unsigned int*)(0x422B8A38UL))) +#define bM4_TMRA4_CMPAR5_CMP15 (*((volatile unsigned int*)(0x422B8A3CUL))) +#define bM4_TMRA4_CMPAR6_CMP0 (*((volatile unsigned int*)(0x422B8A80UL))) +#define bM4_TMRA4_CMPAR6_CMP1 (*((volatile unsigned int*)(0x422B8A84UL))) +#define bM4_TMRA4_CMPAR6_CMP2 (*((volatile unsigned int*)(0x422B8A88UL))) +#define bM4_TMRA4_CMPAR6_CMP3 (*((volatile unsigned int*)(0x422B8A8CUL))) +#define bM4_TMRA4_CMPAR6_CMP4 (*((volatile unsigned int*)(0x422B8A90UL))) +#define bM4_TMRA4_CMPAR6_CMP5 (*((volatile unsigned int*)(0x422B8A94UL))) +#define bM4_TMRA4_CMPAR6_CMP6 (*((volatile unsigned int*)(0x422B8A98UL))) +#define bM4_TMRA4_CMPAR6_CMP7 (*((volatile unsigned int*)(0x422B8A9CUL))) +#define bM4_TMRA4_CMPAR6_CMP8 (*((volatile unsigned int*)(0x422B8AA0UL))) +#define bM4_TMRA4_CMPAR6_CMP9 (*((volatile unsigned int*)(0x422B8AA4UL))) +#define bM4_TMRA4_CMPAR6_CMP10 (*((volatile unsigned int*)(0x422B8AA8UL))) +#define bM4_TMRA4_CMPAR6_CMP11 (*((volatile unsigned int*)(0x422B8AACUL))) +#define bM4_TMRA4_CMPAR6_CMP12 (*((volatile unsigned int*)(0x422B8AB0UL))) +#define bM4_TMRA4_CMPAR6_CMP13 (*((volatile unsigned int*)(0x422B8AB4UL))) +#define bM4_TMRA4_CMPAR6_CMP14 (*((volatile unsigned int*)(0x422B8AB8UL))) +#define bM4_TMRA4_CMPAR6_CMP15 (*((volatile unsigned int*)(0x422B8ABCUL))) +#define bM4_TMRA4_CMPAR7_CMP0 (*((volatile unsigned int*)(0x422B8B00UL))) +#define bM4_TMRA4_CMPAR7_CMP1 (*((volatile unsigned int*)(0x422B8B04UL))) +#define bM4_TMRA4_CMPAR7_CMP2 (*((volatile unsigned int*)(0x422B8B08UL))) +#define bM4_TMRA4_CMPAR7_CMP3 (*((volatile unsigned int*)(0x422B8B0CUL))) +#define bM4_TMRA4_CMPAR7_CMP4 (*((volatile unsigned int*)(0x422B8B10UL))) +#define bM4_TMRA4_CMPAR7_CMP5 (*((volatile unsigned int*)(0x422B8B14UL))) +#define bM4_TMRA4_CMPAR7_CMP6 (*((volatile unsigned int*)(0x422B8B18UL))) +#define bM4_TMRA4_CMPAR7_CMP7 (*((volatile unsigned int*)(0x422B8B1CUL))) +#define bM4_TMRA4_CMPAR7_CMP8 (*((volatile unsigned int*)(0x422B8B20UL))) +#define bM4_TMRA4_CMPAR7_CMP9 (*((volatile unsigned int*)(0x422B8B24UL))) +#define bM4_TMRA4_CMPAR7_CMP10 (*((volatile unsigned int*)(0x422B8B28UL))) +#define bM4_TMRA4_CMPAR7_CMP11 (*((volatile unsigned int*)(0x422B8B2CUL))) +#define bM4_TMRA4_CMPAR7_CMP12 (*((volatile unsigned int*)(0x422B8B30UL))) +#define bM4_TMRA4_CMPAR7_CMP13 (*((volatile unsigned int*)(0x422B8B34UL))) +#define bM4_TMRA4_CMPAR7_CMP14 (*((volatile unsigned int*)(0x422B8B38UL))) +#define bM4_TMRA4_CMPAR7_CMP15 (*((volatile unsigned int*)(0x422B8B3CUL))) +#define bM4_TMRA4_CMPAR8_CMP0 (*((volatile unsigned int*)(0x422B8B80UL))) +#define bM4_TMRA4_CMPAR8_CMP1 (*((volatile unsigned int*)(0x422B8B84UL))) +#define bM4_TMRA4_CMPAR8_CMP2 (*((volatile unsigned int*)(0x422B8B88UL))) +#define bM4_TMRA4_CMPAR8_CMP3 (*((volatile unsigned int*)(0x422B8B8CUL))) +#define bM4_TMRA4_CMPAR8_CMP4 (*((volatile unsigned int*)(0x422B8B90UL))) +#define bM4_TMRA4_CMPAR8_CMP5 (*((volatile unsigned int*)(0x422B8B94UL))) +#define bM4_TMRA4_CMPAR8_CMP6 (*((volatile unsigned int*)(0x422B8B98UL))) +#define bM4_TMRA4_CMPAR8_CMP7 (*((volatile unsigned int*)(0x422B8B9CUL))) +#define bM4_TMRA4_CMPAR8_CMP8 (*((volatile unsigned int*)(0x422B8BA0UL))) +#define bM4_TMRA4_CMPAR8_CMP9 (*((volatile unsigned int*)(0x422B8BA4UL))) +#define bM4_TMRA4_CMPAR8_CMP10 (*((volatile unsigned int*)(0x422B8BA8UL))) +#define bM4_TMRA4_CMPAR8_CMP11 (*((volatile unsigned int*)(0x422B8BACUL))) +#define bM4_TMRA4_CMPAR8_CMP12 (*((volatile unsigned int*)(0x422B8BB0UL))) +#define bM4_TMRA4_CMPAR8_CMP13 (*((volatile unsigned int*)(0x422B8BB4UL))) +#define bM4_TMRA4_CMPAR8_CMP14 (*((volatile unsigned int*)(0x422B8BB8UL))) +#define bM4_TMRA4_CMPAR8_CMP15 (*((volatile unsigned int*)(0x422B8BBCUL))) +#define bM4_TMRA4_BCSTR_START (*((volatile unsigned int*)(0x422B9000UL))) +#define bM4_TMRA4_BCSTR_DIR (*((volatile unsigned int*)(0x422B9004UL))) +#define bM4_TMRA4_BCSTR_MODE (*((volatile unsigned int*)(0x422B9008UL))) +#define bM4_TMRA4_BCSTR_SYNST (*((volatile unsigned int*)(0x422B900CUL))) +#define bM4_TMRA4_BCSTR_CKDIV0 (*((volatile unsigned int*)(0x422B9010UL))) +#define bM4_TMRA4_BCSTR_CKDIV1 (*((volatile unsigned int*)(0x422B9014UL))) +#define bM4_TMRA4_BCSTR_CKDIV2 (*((volatile unsigned int*)(0x422B9018UL))) +#define bM4_TMRA4_BCSTR_CKDIV3 (*((volatile unsigned int*)(0x422B901CUL))) +#define bM4_TMRA4_BCSTR_ITENOVF (*((volatile unsigned int*)(0x422B9030UL))) +#define bM4_TMRA4_BCSTR_ITENUDF (*((volatile unsigned int*)(0x422B9034UL))) +#define bM4_TMRA4_BCSTR_OVFF (*((volatile unsigned int*)(0x422B9038UL))) +#define bM4_TMRA4_BCSTR_UDFF (*((volatile unsigned int*)(0x422B903CUL))) +#define bM4_TMRA4_HCONR_HSTA0 (*((volatile unsigned int*)(0x422B9080UL))) +#define bM4_TMRA4_HCONR_HSTA1 (*((volatile unsigned int*)(0x422B9084UL))) +#define bM4_TMRA4_HCONR_HSTA2 (*((volatile unsigned int*)(0x422B9088UL))) +#define bM4_TMRA4_HCONR_HSTP0 (*((volatile unsigned int*)(0x422B9090UL))) +#define bM4_TMRA4_HCONR_HSTP1 (*((volatile unsigned int*)(0x422B9094UL))) +#define bM4_TMRA4_HCONR_HSTP2 (*((volatile unsigned int*)(0x422B9098UL))) +#define bM4_TMRA4_HCONR_HCLE0 (*((volatile unsigned int*)(0x422B90A0UL))) +#define bM4_TMRA4_HCONR_HCLE1 (*((volatile unsigned int*)(0x422B90A4UL))) +#define bM4_TMRA4_HCONR_HCLE2 (*((volatile unsigned int*)(0x422B90A8UL))) +#define bM4_TMRA4_HCONR_HCLE3 (*((volatile unsigned int*)(0x422B90B0UL))) +#define bM4_TMRA4_HCONR_HCLE4 (*((volatile unsigned int*)(0x422B90B4UL))) +#define bM4_TMRA4_HCONR_HCLE5 (*((volatile unsigned int*)(0x422B90B8UL))) +#define bM4_TMRA4_HCONR_HCLE6 (*((volatile unsigned int*)(0x422B90BCUL))) +#define bM4_TMRA4_HCUPR_HCUP0 (*((volatile unsigned int*)(0x422B9100UL))) +#define bM4_TMRA4_HCUPR_HCUP1 (*((volatile unsigned int*)(0x422B9104UL))) +#define bM4_TMRA4_HCUPR_HCUP2 (*((volatile unsigned int*)(0x422B9108UL))) +#define bM4_TMRA4_HCUPR_HCUP3 (*((volatile unsigned int*)(0x422B910CUL))) +#define bM4_TMRA4_HCUPR_HCUP4 (*((volatile unsigned int*)(0x422B9110UL))) +#define bM4_TMRA4_HCUPR_HCUP5 (*((volatile unsigned int*)(0x422B9114UL))) +#define bM4_TMRA4_HCUPR_HCUP6 (*((volatile unsigned int*)(0x422B9118UL))) +#define bM4_TMRA4_HCUPR_HCUP7 (*((volatile unsigned int*)(0x422B911CUL))) +#define bM4_TMRA4_HCUPR_HCUP8 (*((volatile unsigned int*)(0x422B9120UL))) +#define bM4_TMRA4_HCUPR_HCUP9 (*((volatile unsigned int*)(0x422B9124UL))) +#define bM4_TMRA4_HCUPR_HCUP10 (*((volatile unsigned int*)(0x422B9128UL))) +#define bM4_TMRA4_HCUPR_HCUP11 (*((volatile unsigned int*)(0x422B912CUL))) +#define bM4_TMRA4_HCUPR_HCUP12 (*((volatile unsigned int*)(0x422B9130UL))) +#define bM4_TMRA4_HCDOR_HCDO0 (*((volatile unsigned int*)(0x422B9180UL))) +#define bM4_TMRA4_HCDOR_HCDO1 (*((volatile unsigned int*)(0x422B9184UL))) +#define bM4_TMRA4_HCDOR_HCDO2 (*((volatile unsigned int*)(0x422B9188UL))) +#define bM4_TMRA4_HCDOR_HCDO3 (*((volatile unsigned int*)(0x422B918CUL))) +#define bM4_TMRA4_HCDOR_HCDO4 (*((volatile unsigned int*)(0x422B9190UL))) +#define bM4_TMRA4_HCDOR_HCDO5 (*((volatile unsigned int*)(0x422B9194UL))) +#define bM4_TMRA4_HCDOR_HCDO6 (*((volatile unsigned int*)(0x422B9198UL))) +#define bM4_TMRA4_HCDOR_HCDO7 (*((volatile unsigned int*)(0x422B919CUL))) +#define bM4_TMRA4_HCDOR_HCDO8 (*((volatile unsigned int*)(0x422B91A0UL))) +#define bM4_TMRA4_HCDOR_HCDO9 (*((volatile unsigned int*)(0x422B91A4UL))) +#define bM4_TMRA4_HCDOR_HCDO10 (*((volatile unsigned int*)(0x422B91A8UL))) +#define bM4_TMRA4_HCDOR_HCDO11 (*((volatile unsigned int*)(0x422B91ACUL))) +#define bM4_TMRA4_HCDOR_HCDO12 (*((volatile unsigned int*)(0x422B91B0UL))) +#define bM4_TMRA4_ICONR_ITEN1 (*((volatile unsigned int*)(0x422B9200UL))) +#define bM4_TMRA4_ICONR_ITEN2 (*((volatile unsigned int*)(0x422B9204UL))) +#define bM4_TMRA4_ICONR_ITEN3 (*((volatile unsigned int*)(0x422B9208UL))) +#define bM4_TMRA4_ICONR_ITEN4 (*((volatile unsigned int*)(0x422B920CUL))) +#define bM4_TMRA4_ICONR_ITEN5 (*((volatile unsigned int*)(0x422B9210UL))) +#define bM4_TMRA4_ICONR_ITEN6 (*((volatile unsigned int*)(0x422B9214UL))) +#define bM4_TMRA4_ICONR_ITEN7 (*((volatile unsigned int*)(0x422B9218UL))) +#define bM4_TMRA4_ICONR_ITEN8 (*((volatile unsigned int*)(0x422B921CUL))) +#define bM4_TMRA4_ECONR_ETEN1 (*((volatile unsigned int*)(0x422B9280UL))) +#define bM4_TMRA4_ECONR_ETEN2 (*((volatile unsigned int*)(0x422B9284UL))) +#define bM4_TMRA4_ECONR_ETEN3 (*((volatile unsigned int*)(0x422B9288UL))) +#define bM4_TMRA4_ECONR_ETEN4 (*((volatile unsigned int*)(0x422B928CUL))) +#define bM4_TMRA4_ECONR_ETEN5 (*((volatile unsigned int*)(0x422B9290UL))) +#define bM4_TMRA4_ECONR_ETEN6 (*((volatile unsigned int*)(0x422B9294UL))) +#define bM4_TMRA4_ECONR_ETEN7 (*((volatile unsigned int*)(0x422B9298UL))) +#define bM4_TMRA4_ECONR_ETEN8 (*((volatile unsigned int*)(0x422B929CUL))) +#define bM4_TMRA4_FCONR_NOFIENTG (*((volatile unsigned int*)(0x422B9300UL))) +#define bM4_TMRA4_FCONR_NOFICKTG0 (*((volatile unsigned int*)(0x422B9304UL))) +#define bM4_TMRA4_FCONR_NOFICKTG1 (*((volatile unsigned int*)(0x422B9308UL))) +#define bM4_TMRA4_FCONR_NOFIENCA (*((volatile unsigned int*)(0x422B9320UL))) +#define bM4_TMRA4_FCONR_NOFICKCA0 (*((volatile unsigned int*)(0x422B9324UL))) +#define bM4_TMRA4_FCONR_NOFICKCA1 (*((volatile unsigned int*)(0x422B9328UL))) +#define bM4_TMRA4_FCONR_NOFIENCB (*((volatile unsigned int*)(0x422B9330UL))) +#define bM4_TMRA4_FCONR_NOFICKCB0 (*((volatile unsigned int*)(0x422B9334UL))) +#define bM4_TMRA4_FCONR_NOFICKCB1 (*((volatile unsigned int*)(0x422B9338UL))) +#define bM4_TMRA4_STFLR_CMPF1 (*((volatile unsigned int*)(0x422B9380UL))) +#define bM4_TMRA4_STFLR_CMPF2 (*((volatile unsigned int*)(0x422B9384UL))) +#define bM4_TMRA4_STFLR_CMPF3 (*((volatile unsigned int*)(0x422B9388UL))) +#define bM4_TMRA4_STFLR_CMPF4 (*((volatile unsigned int*)(0x422B938CUL))) +#define bM4_TMRA4_STFLR_CMPF5 (*((volatile unsigned int*)(0x422B9390UL))) +#define bM4_TMRA4_STFLR_CMPF6 (*((volatile unsigned int*)(0x422B9394UL))) +#define bM4_TMRA4_STFLR_CMPF7 (*((volatile unsigned int*)(0x422B9398UL))) +#define bM4_TMRA4_STFLR_CMPF8 (*((volatile unsigned int*)(0x422B939CUL))) +#define bM4_TMRA4_BCONR1_BEN (*((volatile unsigned int*)(0x422B9800UL))) +#define bM4_TMRA4_BCONR1_BSE0 (*((volatile unsigned int*)(0x422B9804UL))) +#define bM4_TMRA4_BCONR1_BSE1 (*((volatile unsigned int*)(0x422B9808UL))) +#define bM4_TMRA4_BCONR2_BEN (*((volatile unsigned int*)(0x422B9900UL))) +#define bM4_TMRA4_BCONR2_BSE0 (*((volatile unsigned int*)(0x422B9904UL))) +#define bM4_TMRA4_BCONR2_BSE1 (*((volatile unsigned int*)(0x422B9908UL))) +#define bM4_TMRA4_BCONR3_BEN (*((volatile unsigned int*)(0x422B9A00UL))) +#define bM4_TMRA4_BCONR3_BSE0 (*((volatile unsigned int*)(0x422B9A04UL))) +#define bM4_TMRA4_BCONR3_BSE1 (*((volatile unsigned int*)(0x422B9A08UL))) +#define bM4_TMRA4_BCONR4_BEN (*((volatile unsigned int*)(0x422B9B00UL))) +#define bM4_TMRA4_BCONR4_BSE0 (*((volatile unsigned int*)(0x422B9B04UL))) +#define bM4_TMRA4_BCONR4_BSE1 (*((volatile unsigned int*)(0x422B9B08UL))) +#define bM4_TMRA4_CCONR1_CAPMD (*((volatile unsigned int*)(0x422BA000UL))) +#define bM4_TMRA4_CCONR1_HICP0 (*((volatile unsigned int*)(0x422BA010UL))) +#define bM4_TMRA4_CCONR1_HICP1 (*((volatile unsigned int*)(0x422BA014UL))) +#define bM4_TMRA4_CCONR1_HICP2 (*((volatile unsigned int*)(0x422BA018UL))) +#define bM4_TMRA4_CCONR1_HICP3 (*((volatile unsigned int*)(0x422BA020UL))) +#define bM4_TMRA4_CCONR1_HICP4 (*((volatile unsigned int*)(0x422BA024UL))) +#define bM4_TMRA4_CCONR1_NOFIENCP (*((volatile unsigned int*)(0x422BA030UL))) +#define bM4_TMRA4_CCONR1_NOFICKCP0 (*((volatile unsigned int*)(0x422BA034UL))) +#define bM4_TMRA4_CCONR1_NOFICKCP1 (*((volatile unsigned int*)(0x422BA038UL))) +#define bM4_TMRA4_CCONR2_CAPMD (*((volatile unsigned int*)(0x422BA080UL))) +#define bM4_TMRA4_CCONR2_HICP0 (*((volatile unsigned int*)(0x422BA090UL))) +#define bM4_TMRA4_CCONR2_HICP1 (*((volatile unsigned int*)(0x422BA094UL))) +#define bM4_TMRA4_CCONR2_HICP2 (*((volatile unsigned int*)(0x422BA098UL))) +#define bM4_TMRA4_CCONR2_HICP3 (*((volatile unsigned int*)(0x422BA0A0UL))) +#define bM4_TMRA4_CCONR2_HICP4 (*((volatile unsigned int*)(0x422BA0A4UL))) +#define bM4_TMRA4_CCONR2_NOFIENCP (*((volatile unsigned int*)(0x422BA0B0UL))) +#define bM4_TMRA4_CCONR2_NOFICKCP0 (*((volatile unsigned int*)(0x422BA0B4UL))) +#define bM4_TMRA4_CCONR2_NOFICKCP1 (*((volatile unsigned int*)(0x422BA0B8UL))) +#define bM4_TMRA4_CCONR3_CAPMD (*((volatile unsigned int*)(0x422BA100UL))) +#define bM4_TMRA4_CCONR3_HICP0 (*((volatile unsigned int*)(0x422BA110UL))) +#define bM4_TMRA4_CCONR3_HICP1 (*((volatile unsigned int*)(0x422BA114UL))) +#define bM4_TMRA4_CCONR3_HICP2 (*((volatile unsigned int*)(0x422BA118UL))) +#define bM4_TMRA4_CCONR3_HICP3 (*((volatile unsigned int*)(0x422BA120UL))) +#define bM4_TMRA4_CCONR3_HICP4 (*((volatile unsigned int*)(0x422BA124UL))) +#define bM4_TMRA4_CCONR3_NOFIENCP (*((volatile unsigned int*)(0x422BA130UL))) +#define bM4_TMRA4_CCONR3_NOFICKCP0 (*((volatile unsigned int*)(0x422BA134UL))) +#define bM4_TMRA4_CCONR3_NOFICKCP1 (*((volatile unsigned int*)(0x422BA138UL))) +#define bM4_TMRA4_CCONR4_CAPMD (*((volatile unsigned int*)(0x422BA180UL))) +#define bM4_TMRA4_CCONR4_HICP0 (*((volatile unsigned int*)(0x422BA190UL))) +#define bM4_TMRA4_CCONR4_HICP1 (*((volatile unsigned int*)(0x422BA194UL))) +#define bM4_TMRA4_CCONR4_HICP2 (*((volatile unsigned int*)(0x422BA198UL))) +#define bM4_TMRA4_CCONR4_HICP3 (*((volatile unsigned int*)(0x422BA1A0UL))) +#define bM4_TMRA4_CCONR4_HICP4 (*((volatile unsigned int*)(0x422BA1A4UL))) +#define bM4_TMRA4_CCONR4_NOFIENCP (*((volatile unsigned int*)(0x422BA1B0UL))) +#define bM4_TMRA4_CCONR4_NOFICKCP0 (*((volatile unsigned int*)(0x422BA1B4UL))) +#define bM4_TMRA4_CCONR4_NOFICKCP1 (*((volatile unsigned int*)(0x422BA1B8UL))) +#define bM4_TMRA4_CCONR5_CAPMD (*((volatile unsigned int*)(0x422BA200UL))) +#define bM4_TMRA4_CCONR5_HICP0 (*((volatile unsigned int*)(0x422BA210UL))) +#define bM4_TMRA4_CCONR5_HICP1 (*((volatile unsigned int*)(0x422BA214UL))) +#define bM4_TMRA4_CCONR5_HICP2 (*((volatile unsigned int*)(0x422BA218UL))) +#define bM4_TMRA4_CCONR5_HICP3 (*((volatile unsigned int*)(0x422BA220UL))) +#define bM4_TMRA4_CCONR5_HICP4 (*((volatile unsigned int*)(0x422BA224UL))) +#define bM4_TMRA4_CCONR5_NOFIENCP (*((volatile unsigned int*)(0x422BA230UL))) +#define bM4_TMRA4_CCONR5_NOFICKCP0 (*((volatile unsigned int*)(0x422BA234UL))) +#define bM4_TMRA4_CCONR5_NOFICKCP1 (*((volatile unsigned int*)(0x422BA238UL))) +#define bM4_TMRA4_CCONR6_CAPMD (*((volatile unsigned int*)(0x422BA280UL))) +#define bM4_TMRA4_CCONR6_HICP0 (*((volatile unsigned int*)(0x422BA290UL))) +#define bM4_TMRA4_CCONR6_HICP1 (*((volatile unsigned int*)(0x422BA294UL))) +#define bM4_TMRA4_CCONR6_HICP2 (*((volatile unsigned int*)(0x422BA298UL))) +#define bM4_TMRA4_CCONR6_HICP3 (*((volatile unsigned int*)(0x422BA2A0UL))) +#define bM4_TMRA4_CCONR6_HICP4 (*((volatile unsigned int*)(0x422BA2A4UL))) +#define bM4_TMRA4_CCONR6_NOFIENCP (*((volatile unsigned int*)(0x422BA2B0UL))) +#define bM4_TMRA4_CCONR6_NOFICKCP0 (*((volatile unsigned int*)(0x422BA2B4UL))) +#define bM4_TMRA4_CCONR6_NOFICKCP1 (*((volatile unsigned int*)(0x422BA2B8UL))) +#define bM4_TMRA4_CCONR7_CAPMD (*((volatile unsigned int*)(0x422BA300UL))) +#define bM4_TMRA4_CCONR7_HICP0 (*((volatile unsigned int*)(0x422BA310UL))) +#define bM4_TMRA4_CCONR7_HICP1 (*((volatile unsigned int*)(0x422BA314UL))) +#define bM4_TMRA4_CCONR7_HICP2 (*((volatile unsigned int*)(0x422BA318UL))) +#define bM4_TMRA4_CCONR7_HICP3 (*((volatile unsigned int*)(0x422BA320UL))) +#define bM4_TMRA4_CCONR7_HICP4 (*((volatile unsigned int*)(0x422BA324UL))) +#define bM4_TMRA4_CCONR7_NOFIENCP (*((volatile unsigned int*)(0x422BA330UL))) +#define bM4_TMRA4_CCONR7_NOFICKCP0 (*((volatile unsigned int*)(0x422BA334UL))) +#define bM4_TMRA4_CCONR7_NOFICKCP1 (*((volatile unsigned int*)(0x422BA338UL))) +#define bM4_TMRA4_CCONR8_CAPMD (*((volatile unsigned int*)(0x422BA380UL))) +#define bM4_TMRA4_CCONR8_HICP0 (*((volatile unsigned int*)(0x422BA390UL))) +#define bM4_TMRA4_CCONR8_HICP1 (*((volatile unsigned int*)(0x422BA394UL))) +#define bM4_TMRA4_CCONR8_HICP2 (*((volatile unsigned int*)(0x422BA398UL))) +#define bM4_TMRA4_CCONR8_HICP3 (*((volatile unsigned int*)(0x422BA3A0UL))) +#define bM4_TMRA4_CCONR8_HICP4 (*((volatile unsigned int*)(0x422BA3A4UL))) +#define bM4_TMRA4_CCONR8_NOFIENCP (*((volatile unsigned int*)(0x422BA3B0UL))) +#define bM4_TMRA4_CCONR8_NOFICKCP0 (*((volatile unsigned int*)(0x422BA3B4UL))) +#define bM4_TMRA4_CCONR8_NOFICKCP1 (*((volatile unsigned int*)(0x422BA3B8UL))) +#define bM4_TMRA4_PCONR1_STAC0 (*((volatile unsigned int*)(0x422BA800UL))) +#define bM4_TMRA4_PCONR1_STAC1 (*((volatile unsigned int*)(0x422BA804UL))) +#define bM4_TMRA4_PCONR1_STPC0 (*((volatile unsigned int*)(0x422BA808UL))) +#define bM4_TMRA4_PCONR1_STPC1 (*((volatile unsigned int*)(0x422BA80CUL))) +#define bM4_TMRA4_PCONR1_CMPC0 (*((volatile unsigned int*)(0x422BA810UL))) +#define bM4_TMRA4_PCONR1_CMPC1 (*((volatile unsigned int*)(0x422BA814UL))) +#define bM4_TMRA4_PCONR1_PERC0 (*((volatile unsigned int*)(0x422BA818UL))) +#define bM4_TMRA4_PCONR1_PERC1 (*((volatile unsigned int*)(0x422BA81CUL))) +#define bM4_TMRA4_PCONR1_FORC0 (*((volatile unsigned int*)(0x422BA820UL))) +#define bM4_TMRA4_PCONR1_FORC1 (*((volatile unsigned int*)(0x422BA824UL))) +#define bM4_TMRA4_PCONR1_OUTEN (*((volatile unsigned int*)(0x422BA830UL))) +#define bM4_TMRA4_PCONR2_STAC0 (*((volatile unsigned int*)(0x422BA880UL))) +#define bM4_TMRA4_PCONR2_STAC1 (*((volatile unsigned int*)(0x422BA884UL))) +#define bM4_TMRA4_PCONR2_STPC0 (*((volatile unsigned int*)(0x422BA888UL))) +#define bM4_TMRA4_PCONR2_STPC1 (*((volatile unsigned int*)(0x422BA88CUL))) +#define bM4_TMRA4_PCONR2_CMPC0 (*((volatile unsigned int*)(0x422BA890UL))) +#define bM4_TMRA4_PCONR2_CMPC1 (*((volatile unsigned int*)(0x422BA894UL))) +#define bM4_TMRA4_PCONR2_PERC0 (*((volatile unsigned int*)(0x422BA898UL))) +#define bM4_TMRA4_PCONR2_PERC1 (*((volatile unsigned int*)(0x422BA89CUL))) +#define bM4_TMRA4_PCONR2_FORC0 (*((volatile unsigned int*)(0x422BA8A0UL))) +#define bM4_TMRA4_PCONR2_FORC1 (*((volatile unsigned int*)(0x422BA8A4UL))) +#define bM4_TMRA4_PCONR2_OUTEN (*((volatile unsigned int*)(0x422BA8B0UL))) +#define bM4_TMRA4_PCONR3_STAC0 (*((volatile unsigned int*)(0x422BA900UL))) +#define bM4_TMRA4_PCONR3_STAC1 (*((volatile unsigned int*)(0x422BA904UL))) +#define bM4_TMRA4_PCONR3_STPC0 (*((volatile unsigned int*)(0x422BA908UL))) +#define bM4_TMRA4_PCONR3_STPC1 (*((volatile unsigned int*)(0x422BA90CUL))) +#define bM4_TMRA4_PCONR3_CMPC0 (*((volatile unsigned int*)(0x422BA910UL))) +#define bM4_TMRA4_PCONR3_CMPC1 (*((volatile unsigned int*)(0x422BA914UL))) +#define bM4_TMRA4_PCONR3_PERC0 (*((volatile unsigned int*)(0x422BA918UL))) +#define bM4_TMRA4_PCONR3_PERC1 (*((volatile unsigned int*)(0x422BA91CUL))) +#define bM4_TMRA4_PCONR3_FORC0 (*((volatile unsigned int*)(0x422BA920UL))) +#define bM4_TMRA4_PCONR3_FORC1 (*((volatile unsigned int*)(0x422BA924UL))) +#define bM4_TMRA4_PCONR3_OUTEN (*((volatile unsigned int*)(0x422BA930UL))) +#define bM4_TMRA4_PCONR4_STAC0 (*((volatile unsigned int*)(0x422BA980UL))) +#define bM4_TMRA4_PCONR4_STAC1 (*((volatile unsigned int*)(0x422BA984UL))) +#define bM4_TMRA4_PCONR4_STPC0 (*((volatile unsigned int*)(0x422BA988UL))) +#define bM4_TMRA4_PCONR4_STPC1 (*((volatile unsigned int*)(0x422BA98CUL))) +#define bM4_TMRA4_PCONR4_CMPC0 (*((volatile unsigned int*)(0x422BA990UL))) +#define bM4_TMRA4_PCONR4_CMPC1 (*((volatile unsigned int*)(0x422BA994UL))) +#define bM4_TMRA4_PCONR4_PERC0 (*((volatile unsigned int*)(0x422BA998UL))) +#define bM4_TMRA4_PCONR4_PERC1 (*((volatile unsigned int*)(0x422BA99CUL))) +#define bM4_TMRA4_PCONR4_FORC0 (*((volatile unsigned int*)(0x422BA9A0UL))) +#define bM4_TMRA4_PCONR4_FORC1 (*((volatile unsigned int*)(0x422BA9A4UL))) +#define bM4_TMRA4_PCONR4_OUTEN (*((volatile unsigned int*)(0x422BA9B0UL))) +#define bM4_TMRA4_PCONR5_STAC0 (*((volatile unsigned int*)(0x422BAA00UL))) +#define bM4_TMRA4_PCONR5_STAC1 (*((volatile unsigned int*)(0x422BAA04UL))) +#define bM4_TMRA4_PCONR5_STPC0 (*((volatile unsigned int*)(0x422BAA08UL))) +#define bM4_TMRA4_PCONR5_STPC1 (*((volatile unsigned int*)(0x422BAA0CUL))) +#define bM4_TMRA4_PCONR5_CMPC0 (*((volatile unsigned int*)(0x422BAA10UL))) +#define bM4_TMRA4_PCONR5_CMPC1 (*((volatile unsigned int*)(0x422BAA14UL))) +#define bM4_TMRA4_PCONR5_PERC0 (*((volatile unsigned int*)(0x422BAA18UL))) +#define bM4_TMRA4_PCONR5_PERC1 (*((volatile unsigned int*)(0x422BAA1CUL))) +#define bM4_TMRA4_PCONR5_FORC0 (*((volatile unsigned int*)(0x422BAA20UL))) +#define bM4_TMRA4_PCONR5_FORC1 (*((volatile unsigned int*)(0x422BAA24UL))) +#define bM4_TMRA4_PCONR5_OUTEN (*((volatile unsigned int*)(0x422BAA30UL))) +#define bM4_TMRA4_PCONR6_STAC0 (*((volatile unsigned int*)(0x422BAA80UL))) +#define bM4_TMRA4_PCONR6_STAC1 (*((volatile unsigned int*)(0x422BAA84UL))) +#define bM4_TMRA4_PCONR6_STPC0 (*((volatile unsigned int*)(0x422BAA88UL))) +#define bM4_TMRA4_PCONR6_STPC1 (*((volatile unsigned int*)(0x422BAA8CUL))) +#define bM4_TMRA4_PCONR6_CMPC0 (*((volatile unsigned int*)(0x422BAA90UL))) +#define bM4_TMRA4_PCONR6_CMPC1 (*((volatile unsigned int*)(0x422BAA94UL))) +#define bM4_TMRA4_PCONR6_PERC0 (*((volatile unsigned int*)(0x422BAA98UL))) +#define bM4_TMRA4_PCONR6_PERC1 (*((volatile unsigned int*)(0x422BAA9CUL))) +#define bM4_TMRA4_PCONR6_FORC0 (*((volatile unsigned int*)(0x422BAAA0UL))) +#define bM4_TMRA4_PCONR6_FORC1 (*((volatile unsigned int*)(0x422BAAA4UL))) +#define bM4_TMRA4_PCONR6_OUTEN (*((volatile unsigned int*)(0x422BAAB0UL))) +#define bM4_TMRA4_PCONR7_STAC0 (*((volatile unsigned int*)(0x422BAB00UL))) +#define bM4_TMRA4_PCONR7_STAC1 (*((volatile unsigned int*)(0x422BAB04UL))) +#define bM4_TMRA4_PCONR7_STPC0 (*((volatile unsigned int*)(0x422BAB08UL))) +#define bM4_TMRA4_PCONR7_STPC1 (*((volatile unsigned int*)(0x422BAB0CUL))) +#define bM4_TMRA4_PCONR7_CMPC0 (*((volatile unsigned int*)(0x422BAB10UL))) +#define bM4_TMRA4_PCONR7_CMPC1 (*((volatile unsigned int*)(0x422BAB14UL))) +#define bM4_TMRA4_PCONR7_PERC0 (*((volatile unsigned int*)(0x422BAB18UL))) +#define bM4_TMRA4_PCONR7_PERC1 (*((volatile unsigned int*)(0x422BAB1CUL))) +#define bM4_TMRA4_PCONR7_FORC0 (*((volatile unsigned int*)(0x422BAB20UL))) +#define bM4_TMRA4_PCONR7_FORC1 (*((volatile unsigned int*)(0x422BAB24UL))) +#define bM4_TMRA4_PCONR7_OUTEN (*((volatile unsigned int*)(0x422BAB30UL))) +#define bM4_TMRA4_PCONR8_STAC0 (*((volatile unsigned int*)(0x422BAB80UL))) +#define bM4_TMRA4_PCONR8_STAC1 (*((volatile unsigned int*)(0x422BAB84UL))) +#define bM4_TMRA4_PCONR8_STPC0 (*((volatile unsigned int*)(0x422BAB88UL))) +#define bM4_TMRA4_PCONR8_STPC1 (*((volatile unsigned int*)(0x422BAB8CUL))) +#define bM4_TMRA4_PCONR8_CMPC0 (*((volatile unsigned int*)(0x422BAB90UL))) +#define bM4_TMRA4_PCONR8_CMPC1 (*((volatile unsigned int*)(0x422BAB94UL))) +#define bM4_TMRA4_PCONR8_PERC0 (*((volatile unsigned int*)(0x422BAB98UL))) +#define bM4_TMRA4_PCONR8_PERC1 (*((volatile unsigned int*)(0x422BAB9CUL))) +#define bM4_TMRA4_PCONR8_FORC0 (*((volatile unsigned int*)(0x422BABA0UL))) +#define bM4_TMRA4_PCONR8_FORC1 (*((volatile unsigned int*)(0x422BABA4UL))) +#define bM4_TMRA4_PCONR8_OUTEN (*((volatile unsigned int*)(0x422BABB0UL))) +#define bM4_TMRA5_CNTER_CNT0 (*((volatile unsigned int*)(0x422C0000UL))) +#define bM4_TMRA5_CNTER_CNT1 (*((volatile unsigned int*)(0x422C0004UL))) +#define bM4_TMRA5_CNTER_CNT2 (*((volatile unsigned int*)(0x422C0008UL))) +#define bM4_TMRA5_CNTER_CNT3 (*((volatile unsigned int*)(0x422C000CUL))) +#define bM4_TMRA5_CNTER_CNT4 (*((volatile unsigned int*)(0x422C0010UL))) +#define bM4_TMRA5_CNTER_CNT5 (*((volatile unsigned int*)(0x422C0014UL))) +#define bM4_TMRA5_CNTER_CNT6 (*((volatile unsigned int*)(0x422C0018UL))) +#define bM4_TMRA5_CNTER_CNT7 (*((volatile unsigned int*)(0x422C001CUL))) +#define bM4_TMRA5_CNTER_CNT8 (*((volatile unsigned int*)(0x422C0020UL))) +#define bM4_TMRA5_CNTER_CNT9 (*((volatile unsigned int*)(0x422C0024UL))) +#define bM4_TMRA5_CNTER_CNT10 (*((volatile unsigned int*)(0x422C0028UL))) +#define bM4_TMRA5_CNTER_CNT11 (*((volatile unsigned int*)(0x422C002CUL))) +#define bM4_TMRA5_CNTER_CNT12 (*((volatile unsigned int*)(0x422C0030UL))) +#define bM4_TMRA5_CNTER_CNT13 (*((volatile unsigned int*)(0x422C0034UL))) +#define bM4_TMRA5_CNTER_CNT14 (*((volatile unsigned int*)(0x422C0038UL))) +#define bM4_TMRA5_CNTER_CNT15 (*((volatile unsigned int*)(0x422C003CUL))) +#define bM4_TMRA5_PERAR_PER0 (*((volatile unsigned int*)(0x422C0080UL))) +#define bM4_TMRA5_PERAR_PER1 (*((volatile unsigned int*)(0x422C0084UL))) +#define bM4_TMRA5_PERAR_PER2 (*((volatile unsigned int*)(0x422C0088UL))) +#define bM4_TMRA5_PERAR_PER3 (*((volatile unsigned int*)(0x422C008CUL))) +#define bM4_TMRA5_PERAR_PER4 (*((volatile unsigned int*)(0x422C0090UL))) +#define bM4_TMRA5_PERAR_PER5 (*((volatile unsigned int*)(0x422C0094UL))) +#define bM4_TMRA5_PERAR_PER6 (*((volatile unsigned int*)(0x422C0098UL))) +#define bM4_TMRA5_PERAR_PER7 (*((volatile unsigned int*)(0x422C009CUL))) +#define bM4_TMRA5_PERAR_PER8 (*((volatile unsigned int*)(0x422C00A0UL))) +#define bM4_TMRA5_PERAR_PER9 (*((volatile unsigned int*)(0x422C00A4UL))) +#define bM4_TMRA5_PERAR_PER10 (*((volatile unsigned int*)(0x422C00A8UL))) +#define bM4_TMRA5_PERAR_PER11 (*((volatile unsigned int*)(0x422C00ACUL))) +#define bM4_TMRA5_PERAR_PER12 (*((volatile unsigned int*)(0x422C00B0UL))) +#define bM4_TMRA5_PERAR_PER13 (*((volatile unsigned int*)(0x422C00B4UL))) +#define bM4_TMRA5_PERAR_PER14 (*((volatile unsigned int*)(0x422C00B8UL))) +#define bM4_TMRA5_PERAR_PER15 (*((volatile unsigned int*)(0x422C00BCUL))) +#define bM4_TMRA5_CMPAR1_CMP0 (*((volatile unsigned int*)(0x422C0800UL))) +#define bM4_TMRA5_CMPAR1_CMP1 (*((volatile unsigned int*)(0x422C0804UL))) +#define bM4_TMRA5_CMPAR1_CMP2 (*((volatile unsigned int*)(0x422C0808UL))) +#define bM4_TMRA5_CMPAR1_CMP3 (*((volatile unsigned int*)(0x422C080CUL))) +#define bM4_TMRA5_CMPAR1_CMP4 (*((volatile unsigned int*)(0x422C0810UL))) +#define bM4_TMRA5_CMPAR1_CMP5 (*((volatile unsigned int*)(0x422C0814UL))) +#define bM4_TMRA5_CMPAR1_CMP6 (*((volatile unsigned int*)(0x422C0818UL))) +#define bM4_TMRA5_CMPAR1_CMP7 (*((volatile unsigned int*)(0x422C081CUL))) +#define bM4_TMRA5_CMPAR1_CMP8 (*((volatile unsigned int*)(0x422C0820UL))) +#define bM4_TMRA5_CMPAR1_CMP9 (*((volatile unsigned int*)(0x422C0824UL))) +#define bM4_TMRA5_CMPAR1_CMP10 (*((volatile unsigned int*)(0x422C0828UL))) +#define bM4_TMRA5_CMPAR1_CMP11 (*((volatile unsigned int*)(0x422C082CUL))) +#define bM4_TMRA5_CMPAR1_CMP12 (*((volatile unsigned int*)(0x422C0830UL))) +#define bM4_TMRA5_CMPAR1_CMP13 (*((volatile unsigned int*)(0x422C0834UL))) +#define bM4_TMRA5_CMPAR1_CMP14 (*((volatile unsigned int*)(0x422C0838UL))) +#define bM4_TMRA5_CMPAR1_CMP15 (*((volatile unsigned int*)(0x422C083CUL))) +#define bM4_TMRA5_CMPAR2_CMP0 (*((volatile unsigned int*)(0x422C0880UL))) +#define bM4_TMRA5_CMPAR2_CMP1 (*((volatile unsigned int*)(0x422C0884UL))) +#define bM4_TMRA5_CMPAR2_CMP2 (*((volatile unsigned int*)(0x422C0888UL))) +#define bM4_TMRA5_CMPAR2_CMP3 (*((volatile unsigned int*)(0x422C088CUL))) +#define bM4_TMRA5_CMPAR2_CMP4 (*((volatile unsigned int*)(0x422C0890UL))) +#define bM4_TMRA5_CMPAR2_CMP5 (*((volatile unsigned int*)(0x422C0894UL))) +#define bM4_TMRA5_CMPAR2_CMP6 (*((volatile unsigned int*)(0x422C0898UL))) +#define bM4_TMRA5_CMPAR2_CMP7 (*((volatile unsigned int*)(0x422C089CUL))) +#define bM4_TMRA5_CMPAR2_CMP8 (*((volatile unsigned int*)(0x422C08A0UL))) +#define bM4_TMRA5_CMPAR2_CMP9 (*((volatile unsigned int*)(0x422C08A4UL))) +#define bM4_TMRA5_CMPAR2_CMP10 (*((volatile unsigned int*)(0x422C08A8UL))) +#define bM4_TMRA5_CMPAR2_CMP11 (*((volatile unsigned int*)(0x422C08ACUL))) +#define bM4_TMRA5_CMPAR2_CMP12 (*((volatile unsigned int*)(0x422C08B0UL))) +#define bM4_TMRA5_CMPAR2_CMP13 (*((volatile unsigned int*)(0x422C08B4UL))) +#define bM4_TMRA5_CMPAR2_CMP14 (*((volatile unsigned int*)(0x422C08B8UL))) +#define bM4_TMRA5_CMPAR2_CMP15 (*((volatile unsigned int*)(0x422C08BCUL))) +#define bM4_TMRA5_CMPAR3_CMP0 (*((volatile unsigned int*)(0x422C0900UL))) +#define bM4_TMRA5_CMPAR3_CMP1 (*((volatile unsigned int*)(0x422C0904UL))) +#define bM4_TMRA5_CMPAR3_CMP2 (*((volatile unsigned int*)(0x422C0908UL))) +#define bM4_TMRA5_CMPAR3_CMP3 (*((volatile unsigned int*)(0x422C090CUL))) +#define bM4_TMRA5_CMPAR3_CMP4 (*((volatile unsigned int*)(0x422C0910UL))) +#define bM4_TMRA5_CMPAR3_CMP5 (*((volatile unsigned int*)(0x422C0914UL))) +#define bM4_TMRA5_CMPAR3_CMP6 (*((volatile unsigned int*)(0x422C0918UL))) +#define bM4_TMRA5_CMPAR3_CMP7 (*((volatile unsigned int*)(0x422C091CUL))) +#define bM4_TMRA5_CMPAR3_CMP8 (*((volatile unsigned int*)(0x422C0920UL))) +#define bM4_TMRA5_CMPAR3_CMP9 (*((volatile unsigned int*)(0x422C0924UL))) +#define bM4_TMRA5_CMPAR3_CMP10 (*((volatile unsigned int*)(0x422C0928UL))) +#define bM4_TMRA5_CMPAR3_CMP11 (*((volatile unsigned int*)(0x422C092CUL))) +#define bM4_TMRA5_CMPAR3_CMP12 (*((volatile unsigned int*)(0x422C0930UL))) +#define bM4_TMRA5_CMPAR3_CMP13 (*((volatile unsigned int*)(0x422C0934UL))) +#define bM4_TMRA5_CMPAR3_CMP14 (*((volatile unsigned int*)(0x422C0938UL))) +#define bM4_TMRA5_CMPAR3_CMP15 (*((volatile unsigned int*)(0x422C093CUL))) +#define bM4_TMRA5_CMPAR4_CMP0 (*((volatile unsigned int*)(0x422C0980UL))) +#define bM4_TMRA5_CMPAR4_CMP1 (*((volatile unsigned int*)(0x422C0984UL))) +#define bM4_TMRA5_CMPAR4_CMP2 (*((volatile unsigned int*)(0x422C0988UL))) +#define bM4_TMRA5_CMPAR4_CMP3 (*((volatile unsigned int*)(0x422C098CUL))) +#define bM4_TMRA5_CMPAR4_CMP4 (*((volatile unsigned int*)(0x422C0990UL))) +#define bM4_TMRA5_CMPAR4_CMP5 (*((volatile unsigned int*)(0x422C0994UL))) +#define bM4_TMRA5_CMPAR4_CMP6 (*((volatile unsigned int*)(0x422C0998UL))) +#define bM4_TMRA5_CMPAR4_CMP7 (*((volatile unsigned int*)(0x422C099CUL))) +#define bM4_TMRA5_CMPAR4_CMP8 (*((volatile unsigned int*)(0x422C09A0UL))) +#define bM4_TMRA5_CMPAR4_CMP9 (*((volatile unsigned int*)(0x422C09A4UL))) +#define bM4_TMRA5_CMPAR4_CMP10 (*((volatile unsigned int*)(0x422C09A8UL))) +#define bM4_TMRA5_CMPAR4_CMP11 (*((volatile unsigned int*)(0x422C09ACUL))) +#define bM4_TMRA5_CMPAR4_CMP12 (*((volatile unsigned int*)(0x422C09B0UL))) +#define bM4_TMRA5_CMPAR4_CMP13 (*((volatile unsigned int*)(0x422C09B4UL))) +#define bM4_TMRA5_CMPAR4_CMP14 (*((volatile unsigned int*)(0x422C09B8UL))) +#define bM4_TMRA5_CMPAR4_CMP15 (*((volatile unsigned int*)(0x422C09BCUL))) +#define bM4_TMRA5_CMPAR5_CMP0 (*((volatile unsigned int*)(0x422C0A00UL))) +#define bM4_TMRA5_CMPAR5_CMP1 (*((volatile unsigned int*)(0x422C0A04UL))) +#define bM4_TMRA5_CMPAR5_CMP2 (*((volatile unsigned int*)(0x422C0A08UL))) +#define bM4_TMRA5_CMPAR5_CMP3 (*((volatile unsigned int*)(0x422C0A0CUL))) +#define bM4_TMRA5_CMPAR5_CMP4 (*((volatile unsigned int*)(0x422C0A10UL))) +#define bM4_TMRA5_CMPAR5_CMP5 (*((volatile unsigned int*)(0x422C0A14UL))) +#define bM4_TMRA5_CMPAR5_CMP6 (*((volatile unsigned int*)(0x422C0A18UL))) +#define bM4_TMRA5_CMPAR5_CMP7 (*((volatile unsigned int*)(0x422C0A1CUL))) +#define bM4_TMRA5_CMPAR5_CMP8 (*((volatile unsigned int*)(0x422C0A20UL))) +#define bM4_TMRA5_CMPAR5_CMP9 (*((volatile unsigned int*)(0x422C0A24UL))) +#define bM4_TMRA5_CMPAR5_CMP10 (*((volatile unsigned int*)(0x422C0A28UL))) +#define bM4_TMRA5_CMPAR5_CMP11 (*((volatile unsigned int*)(0x422C0A2CUL))) +#define bM4_TMRA5_CMPAR5_CMP12 (*((volatile unsigned int*)(0x422C0A30UL))) +#define bM4_TMRA5_CMPAR5_CMP13 (*((volatile unsigned int*)(0x422C0A34UL))) +#define bM4_TMRA5_CMPAR5_CMP14 (*((volatile unsigned int*)(0x422C0A38UL))) +#define bM4_TMRA5_CMPAR5_CMP15 (*((volatile unsigned int*)(0x422C0A3CUL))) +#define bM4_TMRA5_CMPAR6_CMP0 (*((volatile unsigned int*)(0x422C0A80UL))) +#define bM4_TMRA5_CMPAR6_CMP1 (*((volatile unsigned int*)(0x422C0A84UL))) +#define bM4_TMRA5_CMPAR6_CMP2 (*((volatile unsigned int*)(0x422C0A88UL))) +#define bM4_TMRA5_CMPAR6_CMP3 (*((volatile unsigned int*)(0x422C0A8CUL))) +#define bM4_TMRA5_CMPAR6_CMP4 (*((volatile unsigned int*)(0x422C0A90UL))) +#define bM4_TMRA5_CMPAR6_CMP5 (*((volatile unsigned int*)(0x422C0A94UL))) +#define bM4_TMRA5_CMPAR6_CMP6 (*((volatile unsigned int*)(0x422C0A98UL))) +#define bM4_TMRA5_CMPAR6_CMP7 (*((volatile unsigned int*)(0x422C0A9CUL))) +#define bM4_TMRA5_CMPAR6_CMP8 (*((volatile unsigned int*)(0x422C0AA0UL))) +#define bM4_TMRA5_CMPAR6_CMP9 (*((volatile unsigned int*)(0x422C0AA4UL))) +#define bM4_TMRA5_CMPAR6_CMP10 (*((volatile unsigned int*)(0x422C0AA8UL))) +#define bM4_TMRA5_CMPAR6_CMP11 (*((volatile unsigned int*)(0x422C0AACUL))) +#define bM4_TMRA5_CMPAR6_CMP12 (*((volatile unsigned int*)(0x422C0AB0UL))) +#define bM4_TMRA5_CMPAR6_CMP13 (*((volatile unsigned int*)(0x422C0AB4UL))) +#define bM4_TMRA5_CMPAR6_CMP14 (*((volatile unsigned int*)(0x422C0AB8UL))) +#define bM4_TMRA5_CMPAR6_CMP15 (*((volatile unsigned int*)(0x422C0ABCUL))) +#define bM4_TMRA5_CMPAR7_CMP0 (*((volatile unsigned int*)(0x422C0B00UL))) +#define bM4_TMRA5_CMPAR7_CMP1 (*((volatile unsigned int*)(0x422C0B04UL))) +#define bM4_TMRA5_CMPAR7_CMP2 (*((volatile unsigned int*)(0x422C0B08UL))) +#define bM4_TMRA5_CMPAR7_CMP3 (*((volatile unsigned int*)(0x422C0B0CUL))) +#define bM4_TMRA5_CMPAR7_CMP4 (*((volatile unsigned int*)(0x422C0B10UL))) +#define bM4_TMRA5_CMPAR7_CMP5 (*((volatile unsigned int*)(0x422C0B14UL))) +#define bM4_TMRA5_CMPAR7_CMP6 (*((volatile unsigned int*)(0x422C0B18UL))) +#define bM4_TMRA5_CMPAR7_CMP7 (*((volatile unsigned int*)(0x422C0B1CUL))) +#define bM4_TMRA5_CMPAR7_CMP8 (*((volatile unsigned int*)(0x422C0B20UL))) +#define bM4_TMRA5_CMPAR7_CMP9 (*((volatile unsigned int*)(0x422C0B24UL))) +#define bM4_TMRA5_CMPAR7_CMP10 (*((volatile unsigned int*)(0x422C0B28UL))) +#define bM4_TMRA5_CMPAR7_CMP11 (*((volatile unsigned int*)(0x422C0B2CUL))) +#define bM4_TMRA5_CMPAR7_CMP12 (*((volatile unsigned int*)(0x422C0B30UL))) +#define bM4_TMRA5_CMPAR7_CMP13 (*((volatile unsigned int*)(0x422C0B34UL))) +#define bM4_TMRA5_CMPAR7_CMP14 (*((volatile unsigned int*)(0x422C0B38UL))) +#define bM4_TMRA5_CMPAR7_CMP15 (*((volatile unsigned int*)(0x422C0B3CUL))) +#define bM4_TMRA5_CMPAR8_CMP0 (*((volatile unsigned int*)(0x422C0B80UL))) +#define bM4_TMRA5_CMPAR8_CMP1 (*((volatile unsigned int*)(0x422C0B84UL))) +#define bM4_TMRA5_CMPAR8_CMP2 (*((volatile unsigned int*)(0x422C0B88UL))) +#define bM4_TMRA5_CMPAR8_CMP3 (*((volatile unsigned int*)(0x422C0B8CUL))) +#define bM4_TMRA5_CMPAR8_CMP4 (*((volatile unsigned int*)(0x422C0B90UL))) +#define bM4_TMRA5_CMPAR8_CMP5 (*((volatile unsigned int*)(0x422C0B94UL))) +#define bM4_TMRA5_CMPAR8_CMP6 (*((volatile unsigned int*)(0x422C0B98UL))) +#define bM4_TMRA5_CMPAR8_CMP7 (*((volatile unsigned int*)(0x422C0B9CUL))) +#define bM4_TMRA5_CMPAR8_CMP8 (*((volatile unsigned int*)(0x422C0BA0UL))) +#define bM4_TMRA5_CMPAR8_CMP9 (*((volatile unsigned int*)(0x422C0BA4UL))) +#define bM4_TMRA5_CMPAR8_CMP10 (*((volatile unsigned int*)(0x422C0BA8UL))) +#define bM4_TMRA5_CMPAR8_CMP11 (*((volatile unsigned int*)(0x422C0BACUL))) +#define bM4_TMRA5_CMPAR8_CMP12 (*((volatile unsigned int*)(0x422C0BB0UL))) +#define bM4_TMRA5_CMPAR8_CMP13 (*((volatile unsigned int*)(0x422C0BB4UL))) +#define bM4_TMRA5_CMPAR8_CMP14 (*((volatile unsigned int*)(0x422C0BB8UL))) +#define bM4_TMRA5_CMPAR8_CMP15 (*((volatile unsigned int*)(0x422C0BBCUL))) +#define bM4_TMRA5_BCSTR_START (*((volatile unsigned int*)(0x422C1000UL))) +#define bM4_TMRA5_BCSTR_DIR (*((volatile unsigned int*)(0x422C1004UL))) +#define bM4_TMRA5_BCSTR_MODE (*((volatile unsigned int*)(0x422C1008UL))) +#define bM4_TMRA5_BCSTR_SYNST (*((volatile unsigned int*)(0x422C100CUL))) +#define bM4_TMRA5_BCSTR_CKDIV0 (*((volatile unsigned int*)(0x422C1010UL))) +#define bM4_TMRA5_BCSTR_CKDIV1 (*((volatile unsigned int*)(0x422C1014UL))) +#define bM4_TMRA5_BCSTR_CKDIV2 (*((volatile unsigned int*)(0x422C1018UL))) +#define bM4_TMRA5_BCSTR_CKDIV3 (*((volatile unsigned int*)(0x422C101CUL))) +#define bM4_TMRA5_BCSTR_ITENOVF (*((volatile unsigned int*)(0x422C1030UL))) +#define bM4_TMRA5_BCSTR_ITENUDF (*((volatile unsigned int*)(0x422C1034UL))) +#define bM4_TMRA5_BCSTR_OVFF (*((volatile unsigned int*)(0x422C1038UL))) +#define bM4_TMRA5_BCSTR_UDFF (*((volatile unsigned int*)(0x422C103CUL))) +#define bM4_TMRA5_HCONR_HSTA0 (*((volatile unsigned int*)(0x422C1080UL))) +#define bM4_TMRA5_HCONR_HSTA1 (*((volatile unsigned int*)(0x422C1084UL))) +#define bM4_TMRA5_HCONR_HSTA2 (*((volatile unsigned int*)(0x422C1088UL))) +#define bM4_TMRA5_HCONR_HSTP0 (*((volatile unsigned int*)(0x422C1090UL))) +#define bM4_TMRA5_HCONR_HSTP1 (*((volatile unsigned int*)(0x422C1094UL))) +#define bM4_TMRA5_HCONR_HSTP2 (*((volatile unsigned int*)(0x422C1098UL))) +#define bM4_TMRA5_HCONR_HCLE0 (*((volatile unsigned int*)(0x422C10A0UL))) +#define bM4_TMRA5_HCONR_HCLE1 (*((volatile unsigned int*)(0x422C10A4UL))) +#define bM4_TMRA5_HCONR_HCLE2 (*((volatile unsigned int*)(0x422C10A8UL))) +#define bM4_TMRA5_HCONR_HCLE3 (*((volatile unsigned int*)(0x422C10B0UL))) +#define bM4_TMRA5_HCONR_HCLE4 (*((volatile unsigned int*)(0x422C10B4UL))) +#define bM4_TMRA5_HCONR_HCLE5 (*((volatile unsigned int*)(0x422C10B8UL))) +#define bM4_TMRA5_HCONR_HCLE6 (*((volatile unsigned int*)(0x422C10BCUL))) +#define bM4_TMRA5_HCUPR_HCUP0 (*((volatile unsigned int*)(0x422C1100UL))) +#define bM4_TMRA5_HCUPR_HCUP1 (*((volatile unsigned int*)(0x422C1104UL))) +#define bM4_TMRA5_HCUPR_HCUP2 (*((volatile unsigned int*)(0x422C1108UL))) +#define bM4_TMRA5_HCUPR_HCUP3 (*((volatile unsigned int*)(0x422C110CUL))) +#define bM4_TMRA5_HCUPR_HCUP4 (*((volatile unsigned int*)(0x422C1110UL))) +#define bM4_TMRA5_HCUPR_HCUP5 (*((volatile unsigned int*)(0x422C1114UL))) +#define bM4_TMRA5_HCUPR_HCUP6 (*((volatile unsigned int*)(0x422C1118UL))) +#define bM4_TMRA5_HCUPR_HCUP7 (*((volatile unsigned int*)(0x422C111CUL))) +#define bM4_TMRA5_HCUPR_HCUP8 (*((volatile unsigned int*)(0x422C1120UL))) +#define bM4_TMRA5_HCUPR_HCUP9 (*((volatile unsigned int*)(0x422C1124UL))) +#define bM4_TMRA5_HCUPR_HCUP10 (*((volatile unsigned int*)(0x422C1128UL))) +#define bM4_TMRA5_HCUPR_HCUP11 (*((volatile unsigned int*)(0x422C112CUL))) +#define bM4_TMRA5_HCUPR_HCUP12 (*((volatile unsigned int*)(0x422C1130UL))) +#define bM4_TMRA5_HCDOR_HCDO0 (*((volatile unsigned int*)(0x422C1180UL))) +#define bM4_TMRA5_HCDOR_HCDO1 (*((volatile unsigned int*)(0x422C1184UL))) +#define bM4_TMRA5_HCDOR_HCDO2 (*((volatile unsigned int*)(0x422C1188UL))) +#define bM4_TMRA5_HCDOR_HCDO3 (*((volatile unsigned int*)(0x422C118CUL))) +#define bM4_TMRA5_HCDOR_HCDO4 (*((volatile unsigned int*)(0x422C1190UL))) +#define bM4_TMRA5_HCDOR_HCDO5 (*((volatile unsigned int*)(0x422C1194UL))) +#define bM4_TMRA5_HCDOR_HCDO6 (*((volatile unsigned int*)(0x422C1198UL))) +#define bM4_TMRA5_HCDOR_HCDO7 (*((volatile unsigned int*)(0x422C119CUL))) +#define bM4_TMRA5_HCDOR_HCDO8 (*((volatile unsigned int*)(0x422C11A0UL))) +#define bM4_TMRA5_HCDOR_HCDO9 (*((volatile unsigned int*)(0x422C11A4UL))) +#define bM4_TMRA5_HCDOR_HCDO10 (*((volatile unsigned int*)(0x422C11A8UL))) +#define bM4_TMRA5_HCDOR_HCDO11 (*((volatile unsigned int*)(0x422C11ACUL))) +#define bM4_TMRA5_HCDOR_HCDO12 (*((volatile unsigned int*)(0x422C11B0UL))) +#define bM4_TMRA5_ICONR_ITEN1 (*((volatile unsigned int*)(0x422C1200UL))) +#define bM4_TMRA5_ICONR_ITEN2 (*((volatile unsigned int*)(0x422C1204UL))) +#define bM4_TMRA5_ICONR_ITEN3 (*((volatile unsigned int*)(0x422C1208UL))) +#define bM4_TMRA5_ICONR_ITEN4 (*((volatile unsigned int*)(0x422C120CUL))) +#define bM4_TMRA5_ICONR_ITEN5 (*((volatile unsigned int*)(0x422C1210UL))) +#define bM4_TMRA5_ICONR_ITEN6 (*((volatile unsigned int*)(0x422C1214UL))) +#define bM4_TMRA5_ICONR_ITEN7 (*((volatile unsigned int*)(0x422C1218UL))) +#define bM4_TMRA5_ICONR_ITEN8 (*((volatile unsigned int*)(0x422C121CUL))) +#define bM4_TMRA5_ECONR_ETEN1 (*((volatile unsigned int*)(0x422C1280UL))) +#define bM4_TMRA5_ECONR_ETEN2 (*((volatile unsigned int*)(0x422C1284UL))) +#define bM4_TMRA5_ECONR_ETEN3 (*((volatile unsigned int*)(0x422C1288UL))) +#define bM4_TMRA5_ECONR_ETEN4 (*((volatile unsigned int*)(0x422C128CUL))) +#define bM4_TMRA5_ECONR_ETEN5 (*((volatile unsigned int*)(0x422C1290UL))) +#define bM4_TMRA5_ECONR_ETEN6 (*((volatile unsigned int*)(0x422C1294UL))) +#define bM4_TMRA5_ECONR_ETEN7 (*((volatile unsigned int*)(0x422C1298UL))) +#define bM4_TMRA5_ECONR_ETEN8 (*((volatile unsigned int*)(0x422C129CUL))) +#define bM4_TMRA5_FCONR_NOFIENTG (*((volatile unsigned int*)(0x422C1300UL))) +#define bM4_TMRA5_FCONR_NOFICKTG0 (*((volatile unsigned int*)(0x422C1304UL))) +#define bM4_TMRA5_FCONR_NOFICKTG1 (*((volatile unsigned int*)(0x422C1308UL))) +#define bM4_TMRA5_FCONR_NOFIENCA (*((volatile unsigned int*)(0x422C1320UL))) +#define bM4_TMRA5_FCONR_NOFICKCA0 (*((volatile unsigned int*)(0x422C1324UL))) +#define bM4_TMRA5_FCONR_NOFICKCA1 (*((volatile unsigned int*)(0x422C1328UL))) +#define bM4_TMRA5_FCONR_NOFIENCB (*((volatile unsigned int*)(0x422C1330UL))) +#define bM4_TMRA5_FCONR_NOFICKCB0 (*((volatile unsigned int*)(0x422C1334UL))) +#define bM4_TMRA5_FCONR_NOFICKCB1 (*((volatile unsigned int*)(0x422C1338UL))) +#define bM4_TMRA5_STFLR_CMPF1 (*((volatile unsigned int*)(0x422C1380UL))) +#define bM4_TMRA5_STFLR_CMPF2 (*((volatile unsigned int*)(0x422C1384UL))) +#define bM4_TMRA5_STFLR_CMPF3 (*((volatile unsigned int*)(0x422C1388UL))) +#define bM4_TMRA5_STFLR_CMPF4 (*((volatile unsigned int*)(0x422C138CUL))) +#define bM4_TMRA5_STFLR_CMPF5 (*((volatile unsigned int*)(0x422C1390UL))) +#define bM4_TMRA5_STFLR_CMPF6 (*((volatile unsigned int*)(0x422C1394UL))) +#define bM4_TMRA5_STFLR_CMPF7 (*((volatile unsigned int*)(0x422C1398UL))) +#define bM4_TMRA5_STFLR_CMPF8 (*((volatile unsigned int*)(0x422C139CUL))) +#define bM4_TMRA5_BCONR1_BEN (*((volatile unsigned int*)(0x422C1800UL))) +#define bM4_TMRA5_BCONR1_BSE0 (*((volatile unsigned int*)(0x422C1804UL))) +#define bM4_TMRA5_BCONR1_BSE1 (*((volatile unsigned int*)(0x422C1808UL))) +#define bM4_TMRA5_BCONR2_BEN (*((volatile unsigned int*)(0x422C1900UL))) +#define bM4_TMRA5_BCONR2_BSE0 (*((volatile unsigned int*)(0x422C1904UL))) +#define bM4_TMRA5_BCONR2_BSE1 (*((volatile unsigned int*)(0x422C1908UL))) +#define bM4_TMRA5_BCONR3_BEN (*((volatile unsigned int*)(0x422C1A00UL))) +#define bM4_TMRA5_BCONR3_BSE0 (*((volatile unsigned int*)(0x422C1A04UL))) +#define bM4_TMRA5_BCONR3_BSE1 (*((volatile unsigned int*)(0x422C1A08UL))) +#define bM4_TMRA5_BCONR4_BEN (*((volatile unsigned int*)(0x422C1B00UL))) +#define bM4_TMRA5_BCONR4_BSE0 (*((volatile unsigned int*)(0x422C1B04UL))) +#define bM4_TMRA5_BCONR4_BSE1 (*((volatile unsigned int*)(0x422C1B08UL))) +#define bM4_TMRA5_CCONR1_CAPMD (*((volatile unsigned int*)(0x422C2000UL))) +#define bM4_TMRA5_CCONR1_HICP0 (*((volatile unsigned int*)(0x422C2010UL))) +#define bM4_TMRA5_CCONR1_HICP1 (*((volatile unsigned int*)(0x422C2014UL))) +#define bM4_TMRA5_CCONR1_HICP2 (*((volatile unsigned int*)(0x422C2018UL))) +#define bM4_TMRA5_CCONR1_HICP3 (*((volatile unsigned int*)(0x422C2020UL))) +#define bM4_TMRA5_CCONR1_HICP4 (*((volatile unsigned int*)(0x422C2024UL))) +#define bM4_TMRA5_CCONR1_NOFIENCP (*((volatile unsigned int*)(0x422C2030UL))) +#define bM4_TMRA5_CCONR1_NOFICKCP0 (*((volatile unsigned int*)(0x422C2034UL))) +#define bM4_TMRA5_CCONR1_NOFICKCP1 (*((volatile unsigned int*)(0x422C2038UL))) +#define bM4_TMRA5_CCONR2_CAPMD (*((volatile unsigned int*)(0x422C2080UL))) +#define bM4_TMRA5_CCONR2_HICP0 (*((volatile unsigned int*)(0x422C2090UL))) +#define bM4_TMRA5_CCONR2_HICP1 (*((volatile unsigned int*)(0x422C2094UL))) +#define bM4_TMRA5_CCONR2_HICP2 (*((volatile unsigned int*)(0x422C2098UL))) +#define bM4_TMRA5_CCONR2_HICP3 (*((volatile unsigned int*)(0x422C20A0UL))) +#define bM4_TMRA5_CCONR2_HICP4 (*((volatile unsigned int*)(0x422C20A4UL))) +#define bM4_TMRA5_CCONR2_NOFIENCP (*((volatile unsigned int*)(0x422C20B0UL))) +#define bM4_TMRA5_CCONR2_NOFICKCP0 (*((volatile unsigned int*)(0x422C20B4UL))) +#define bM4_TMRA5_CCONR2_NOFICKCP1 (*((volatile unsigned int*)(0x422C20B8UL))) +#define bM4_TMRA5_CCONR3_CAPMD (*((volatile unsigned int*)(0x422C2100UL))) +#define bM4_TMRA5_CCONR3_HICP0 (*((volatile unsigned int*)(0x422C2110UL))) +#define bM4_TMRA5_CCONR3_HICP1 (*((volatile unsigned int*)(0x422C2114UL))) +#define bM4_TMRA5_CCONR3_HICP2 (*((volatile unsigned int*)(0x422C2118UL))) +#define bM4_TMRA5_CCONR3_HICP3 (*((volatile unsigned int*)(0x422C2120UL))) +#define bM4_TMRA5_CCONR3_HICP4 (*((volatile unsigned int*)(0x422C2124UL))) +#define bM4_TMRA5_CCONR3_NOFIENCP (*((volatile unsigned int*)(0x422C2130UL))) +#define bM4_TMRA5_CCONR3_NOFICKCP0 (*((volatile unsigned int*)(0x422C2134UL))) +#define bM4_TMRA5_CCONR3_NOFICKCP1 (*((volatile unsigned int*)(0x422C2138UL))) +#define bM4_TMRA5_CCONR4_CAPMD (*((volatile unsigned int*)(0x422C2180UL))) +#define bM4_TMRA5_CCONR4_HICP0 (*((volatile unsigned int*)(0x422C2190UL))) +#define bM4_TMRA5_CCONR4_HICP1 (*((volatile unsigned int*)(0x422C2194UL))) +#define bM4_TMRA5_CCONR4_HICP2 (*((volatile unsigned int*)(0x422C2198UL))) +#define bM4_TMRA5_CCONR4_HICP3 (*((volatile unsigned int*)(0x422C21A0UL))) +#define bM4_TMRA5_CCONR4_HICP4 (*((volatile unsigned int*)(0x422C21A4UL))) +#define bM4_TMRA5_CCONR4_NOFIENCP (*((volatile unsigned int*)(0x422C21B0UL))) +#define bM4_TMRA5_CCONR4_NOFICKCP0 (*((volatile unsigned int*)(0x422C21B4UL))) +#define bM4_TMRA5_CCONR4_NOFICKCP1 (*((volatile unsigned int*)(0x422C21B8UL))) +#define bM4_TMRA5_CCONR5_CAPMD (*((volatile unsigned int*)(0x422C2200UL))) +#define bM4_TMRA5_CCONR5_HICP0 (*((volatile unsigned int*)(0x422C2210UL))) +#define bM4_TMRA5_CCONR5_HICP1 (*((volatile unsigned int*)(0x422C2214UL))) +#define bM4_TMRA5_CCONR5_HICP2 (*((volatile unsigned int*)(0x422C2218UL))) +#define bM4_TMRA5_CCONR5_HICP3 (*((volatile unsigned int*)(0x422C2220UL))) +#define bM4_TMRA5_CCONR5_HICP4 (*((volatile unsigned int*)(0x422C2224UL))) +#define bM4_TMRA5_CCONR5_NOFIENCP (*((volatile unsigned int*)(0x422C2230UL))) +#define bM4_TMRA5_CCONR5_NOFICKCP0 (*((volatile unsigned int*)(0x422C2234UL))) +#define bM4_TMRA5_CCONR5_NOFICKCP1 (*((volatile unsigned int*)(0x422C2238UL))) +#define bM4_TMRA5_CCONR6_CAPMD (*((volatile unsigned int*)(0x422C2280UL))) +#define bM4_TMRA5_CCONR6_HICP0 (*((volatile unsigned int*)(0x422C2290UL))) +#define bM4_TMRA5_CCONR6_HICP1 (*((volatile unsigned int*)(0x422C2294UL))) +#define bM4_TMRA5_CCONR6_HICP2 (*((volatile unsigned int*)(0x422C2298UL))) +#define bM4_TMRA5_CCONR6_HICP3 (*((volatile unsigned int*)(0x422C22A0UL))) +#define bM4_TMRA5_CCONR6_HICP4 (*((volatile unsigned int*)(0x422C22A4UL))) +#define bM4_TMRA5_CCONR6_NOFIENCP (*((volatile unsigned int*)(0x422C22B0UL))) +#define bM4_TMRA5_CCONR6_NOFICKCP0 (*((volatile unsigned int*)(0x422C22B4UL))) +#define bM4_TMRA5_CCONR6_NOFICKCP1 (*((volatile unsigned int*)(0x422C22B8UL))) +#define bM4_TMRA5_CCONR7_CAPMD (*((volatile unsigned int*)(0x422C2300UL))) +#define bM4_TMRA5_CCONR7_HICP0 (*((volatile unsigned int*)(0x422C2310UL))) +#define bM4_TMRA5_CCONR7_HICP1 (*((volatile unsigned int*)(0x422C2314UL))) +#define bM4_TMRA5_CCONR7_HICP2 (*((volatile unsigned int*)(0x422C2318UL))) +#define bM4_TMRA5_CCONR7_HICP3 (*((volatile unsigned int*)(0x422C2320UL))) +#define bM4_TMRA5_CCONR7_HICP4 (*((volatile unsigned int*)(0x422C2324UL))) +#define bM4_TMRA5_CCONR7_NOFIENCP (*((volatile unsigned int*)(0x422C2330UL))) +#define bM4_TMRA5_CCONR7_NOFICKCP0 (*((volatile unsigned int*)(0x422C2334UL))) +#define bM4_TMRA5_CCONR7_NOFICKCP1 (*((volatile unsigned int*)(0x422C2338UL))) +#define bM4_TMRA5_CCONR8_CAPMD (*((volatile unsigned int*)(0x422C2380UL))) +#define bM4_TMRA5_CCONR8_HICP0 (*((volatile unsigned int*)(0x422C2390UL))) +#define bM4_TMRA5_CCONR8_HICP1 (*((volatile unsigned int*)(0x422C2394UL))) +#define bM4_TMRA5_CCONR8_HICP2 (*((volatile unsigned int*)(0x422C2398UL))) +#define bM4_TMRA5_CCONR8_HICP3 (*((volatile unsigned int*)(0x422C23A0UL))) +#define bM4_TMRA5_CCONR8_HICP4 (*((volatile unsigned int*)(0x422C23A4UL))) +#define bM4_TMRA5_CCONR8_NOFIENCP (*((volatile unsigned int*)(0x422C23B0UL))) +#define bM4_TMRA5_CCONR8_NOFICKCP0 (*((volatile unsigned int*)(0x422C23B4UL))) +#define bM4_TMRA5_CCONR8_NOFICKCP1 (*((volatile unsigned int*)(0x422C23B8UL))) +#define bM4_TMRA5_PCONR1_STAC0 (*((volatile unsigned int*)(0x422C2800UL))) +#define bM4_TMRA5_PCONR1_STAC1 (*((volatile unsigned int*)(0x422C2804UL))) +#define bM4_TMRA5_PCONR1_STPC0 (*((volatile unsigned int*)(0x422C2808UL))) +#define bM4_TMRA5_PCONR1_STPC1 (*((volatile unsigned int*)(0x422C280CUL))) +#define bM4_TMRA5_PCONR1_CMPC0 (*((volatile unsigned int*)(0x422C2810UL))) +#define bM4_TMRA5_PCONR1_CMPC1 (*((volatile unsigned int*)(0x422C2814UL))) +#define bM4_TMRA5_PCONR1_PERC0 (*((volatile unsigned int*)(0x422C2818UL))) +#define bM4_TMRA5_PCONR1_PERC1 (*((volatile unsigned int*)(0x422C281CUL))) +#define bM4_TMRA5_PCONR1_FORC0 (*((volatile unsigned int*)(0x422C2820UL))) +#define bM4_TMRA5_PCONR1_FORC1 (*((volatile unsigned int*)(0x422C2824UL))) +#define bM4_TMRA5_PCONR1_OUTEN (*((volatile unsigned int*)(0x422C2830UL))) +#define bM4_TMRA5_PCONR2_STAC0 (*((volatile unsigned int*)(0x422C2880UL))) +#define bM4_TMRA5_PCONR2_STAC1 (*((volatile unsigned int*)(0x422C2884UL))) +#define bM4_TMRA5_PCONR2_STPC0 (*((volatile unsigned int*)(0x422C2888UL))) +#define bM4_TMRA5_PCONR2_STPC1 (*((volatile unsigned int*)(0x422C288CUL))) +#define bM4_TMRA5_PCONR2_CMPC0 (*((volatile unsigned int*)(0x422C2890UL))) +#define bM4_TMRA5_PCONR2_CMPC1 (*((volatile unsigned int*)(0x422C2894UL))) +#define bM4_TMRA5_PCONR2_PERC0 (*((volatile unsigned int*)(0x422C2898UL))) +#define bM4_TMRA5_PCONR2_PERC1 (*((volatile unsigned int*)(0x422C289CUL))) +#define bM4_TMRA5_PCONR2_FORC0 (*((volatile unsigned int*)(0x422C28A0UL))) +#define bM4_TMRA5_PCONR2_FORC1 (*((volatile unsigned int*)(0x422C28A4UL))) +#define bM4_TMRA5_PCONR2_OUTEN (*((volatile unsigned int*)(0x422C28B0UL))) +#define bM4_TMRA5_PCONR3_STAC0 (*((volatile unsigned int*)(0x422C2900UL))) +#define bM4_TMRA5_PCONR3_STAC1 (*((volatile unsigned int*)(0x422C2904UL))) +#define bM4_TMRA5_PCONR3_STPC0 (*((volatile unsigned int*)(0x422C2908UL))) +#define bM4_TMRA5_PCONR3_STPC1 (*((volatile unsigned int*)(0x422C290CUL))) +#define bM4_TMRA5_PCONR3_CMPC0 (*((volatile unsigned int*)(0x422C2910UL))) +#define bM4_TMRA5_PCONR3_CMPC1 (*((volatile unsigned int*)(0x422C2914UL))) +#define bM4_TMRA5_PCONR3_PERC0 (*((volatile unsigned int*)(0x422C2918UL))) +#define bM4_TMRA5_PCONR3_PERC1 (*((volatile unsigned int*)(0x422C291CUL))) +#define bM4_TMRA5_PCONR3_FORC0 (*((volatile unsigned int*)(0x422C2920UL))) +#define bM4_TMRA5_PCONR3_FORC1 (*((volatile unsigned int*)(0x422C2924UL))) +#define bM4_TMRA5_PCONR3_OUTEN (*((volatile unsigned int*)(0x422C2930UL))) +#define bM4_TMRA5_PCONR4_STAC0 (*((volatile unsigned int*)(0x422C2980UL))) +#define bM4_TMRA5_PCONR4_STAC1 (*((volatile unsigned int*)(0x422C2984UL))) +#define bM4_TMRA5_PCONR4_STPC0 (*((volatile unsigned int*)(0x422C2988UL))) +#define bM4_TMRA5_PCONR4_STPC1 (*((volatile unsigned int*)(0x422C298CUL))) +#define bM4_TMRA5_PCONR4_CMPC0 (*((volatile unsigned int*)(0x422C2990UL))) +#define bM4_TMRA5_PCONR4_CMPC1 (*((volatile unsigned int*)(0x422C2994UL))) +#define bM4_TMRA5_PCONR4_PERC0 (*((volatile unsigned int*)(0x422C2998UL))) +#define bM4_TMRA5_PCONR4_PERC1 (*((volatile unsigned int*)(0x422C299CUL))) +#define bM4_TMRA5_PCONR4_FORC0 (*((volatile unsigned int*)(0x422C29A0UL))) +#define bM4_TMRA5_PCONR4_FORC1 (*((volatile unsigned int*)(0x422C29A4UL))) +#define bM4_TMRA5_PCONR4_OUTEN (*((volatile unsigned int*)(0x422C29B0UL))) +#define bM4_TMRA5_PCONR5_STAC0 (*((volatile unsigned int*)(0x422C2A00UL))) +#define bM4_TMRA5_PCONR5_STAC1 (*((volatile unsigned int*)(0x422C2A04UL))) +#define bM4_TMRA5_PCONR5_STPC0 (*((volatile unsigned int*)(0x422C2A08UL))) +#define bM4_TMRA5_PCONR5_STPC1 (*((volatile unsigned int*)(0x422C2A0CUL))) +#define bM4_TMRA5_PCONR5_CMPC0 (*((volatile unsigned int*)(0x422C2A10UL))) +#define bM4_TMRA5_PCONR5_CMPC1 (*((volatile unsigned int*)(0x422C2A14UL))) +#define bM4_TMRA5_PCONR5_PERC0 (*((volatile unsigned int*)(0x422C2A18UL))) +#define bM4_TMRA5_PCONR5_PERC1 (*((volatile unsigned int*)(0x422C2A1CUL))) +#define bM4_TMRA5_PCONR5_FORC0 (*((volatile unsigned int*)(0x422C2A20UL))) +#define bM4_TMRA5_PCONR5_FORC1 (*((volatile unsigned int*)(0x422C2A24UL))) +#define bM4_TMRA5_PCONR5_OUTEN (*((volatile unsigned int*)(0x422C2A30UL))) +#define bM4_TMRA5_PCONR6_STAC0 (*((volatile unsigned int*)(0x422C2A80UL))) +#define bM4_TMRA5_PCONR6_STAC1 (*((volatile unsigned int*)(0x422C2A84UL))) +#define bM4_TMRA5_PCONR6_STPC0 (*((volatile unsigned int*)(0x422C2A88UL))) +#define bM4_TMRA5_PCONR6_STPC1 (*((volatile unsigned int*)(0x422C2A8CUL))) +#define bM4_TMRA5_PCONR6_CMPC0 (*((volatile unsigned int*)(0x422C2A90UL))) +#define bM4_TMRA5_PCONR6_CMPC1 (*((volatile unsigned int*)(0x422C2A94UL))) +#define bM4_TMRA5_PCONR6_PERC0 (*((volatile unsigned int*)(0x422C2A98UL))) +#define bM4_TMRA5_PCONR6_PERC1 (*((volatile unsigned int*)(0x422C2A9CUL))) +#define bM4_TMRA5_PCONR6_FORC0 (*((volatile unsigned int*)(0x422C2AA0UL))) +#define bM4_TMRA5_PCONR6_FORC1 (*((volatile unsigned int*)(0x422C2AA4UL))) +#define bM4_TMRA5_PCONR6_OUTEN (*((volatile unsigned int*)(0x422C2AB0UL))) +#define bM4_TMRA5_PCONR7_STAC0 (*((volatile unsigned int*)(0x422C2B00UL))) +#define bM4_TMRA5_PCONR7_STAC1 (*((volatile unsigned int*)(0x422C2B04UL))) +#define bM4_TMRA5_PCONR7_STPC0 (*((volatile unsigned int*)(0x422C2B08UL))) +#define bM4_TMRA5_PCONR7_STPC1 (*((volatile unsigned int*)(0x422C2B0CUL))) +#define bM4_TMRA5_PCONR7_CMPC0 (*((volatile unsigned int*)(0x422C2B10UL))) +#define bM4_TMRA5_PCONR7_CMPC1 (*((volatile unsigned int*)(0x422C2B14UL))) +#define bM4_TMRA5_PCONR7_PERC0 (*((volatile unsigned int*)(0x422C2B18UL))) +#define bM4_TMRA5_PCONR7_PERC1 (*((volatile unsigned int*)(0x422C2B1CUL))) +#define bM4_TMRA5_PCONR7_FORC0 (*((volatile unsigned int*)(0x422C2B20UL))) +#define bM4_TMRA5_PCONR7_FORC1 (*((volatile unsigned int*)(0x422C2B24UL))) +#define bM4_TMRA5_PCONR7_OUTEN (*((volatile unsigned int*)(0x422C2B30UL))) +#define bM4_TMRA5_PCONR8_STAC0 (*((volatile unsigned int*)(0x422C2B80UL))) +#define bM4_TMRA5_PCONR8_STAC1 (*((volatile unsigned int*)(0x422C2B84UL))) +#define bM4_TMRA5_PCONR8_STPC0 (*((volatile unsigned int*)(0x422C2B88UL))) +#define bM4_TMRA5_PCONR8_STPC1 (*((volatile unsigned int*)(0x422C2B8CUL))) +#define bM4_TMRA5_PCONR8_CMPC0 (*((volatile unsigned int*)(0x422C2B90UL))) +#define bM4_TMRA5_PCONR8_CMPC1 (*((volatile unsigned int*)(0x422C2B94UL))) +#define bM4_TMRA5_PCONR8_PERC0 (*((volatile unsigned int*)(0x422C2B98UL))) +#define bM4_TMRA5_PCONR8_PERC1 (*((volatile unsigned int*)(0x422C2B9CUL))) +#define bM4_TMRA5_PCONR8_FORC0 (*((volatile unsigned int*)(0x422C2BA0UL))) +#define bM4_TMRA5_PCONR8_FORC1 (*((volatile unsigned int*)(0x422C2BA4UL))) +#define bM4_TMRA5_PCONR8_OUTEN (*((volatile unsigned int*)(0x422C2BB0UL))) +#define bM4_TMRA6_CNTER_CNT0 (*((volatile unsigned int*)(0x422C8000UL))) +#define bM4_TMRA6_CNTER_CNT1 (*((volatile unsigned int*)(0x422C8004UL))) +#define bM4_TMRA6_CNTER_CNT2 (*((volatile unsigned int*)(0x422C8008UL))) +#define bM4_TMRA6_CNTER_CNT3 (*((volatile unsigned int*)(0x422C800CUL))) +#define bM4_TMRA6_CNTER_CNT4 (*((volatile unsigned int*)(0x422C8010UL))) +#define bM4_TMRA6_CNTER_CNT5 (*((volatile unsigned int*)(0x422C8014UL))) +#define bM4_TMRA6_CNTER_CNT6 (*((volatile unsigned int*)(0x422C8018UL))) +#define bM4_TMRA6_CNTER_CNT7 (*((volatile unsigned int*)(0x422C801CUL))) +#define bM4_TMRA6_CNTER_CNT8 (*((volatile unsigned int*)(0x422C8020UL))) +#define bM4_TMRA6_CNTER_CNT9 (*((volatile unsigned int*)(0x422C8024UL))) +#define bM4_TMRA6_CNTER_CNT10 (*((volatile unsigned int*)(0x422C8028UL))) +#define bM4_TMRA6_CNTER_CNT11 (*((volatile unsigned int*)(0x422C802CUL))) +#define bM4_TMRA6_CNTER_CNT12 (*((volatile unsigned int*)(0x422C8030UL))) +#define bM4_TMRA6_CNTER_CNT13 (*((volatile unsigned int*)(0x422C8034UL))) +#define bM4_TMRA6_CNTER_CNT14 (*((volatile unsigned int*)(0x422C8038UL))) +#define bM4_TMRA6_CNTER_CNT15 (*((volatile unsigned int*)(0x422C803CUL))) +#define bM4_TMRA6_PERAR_PER0 (*((volatile unsigned int*)(0x422C8080UL))) +#define bM4_TMRA6_PERAR_PER1 (*((volatile unsigned int*)(0x422C8084UL))) +#define bM4_TMRA6_PERAR_PER2 (*((volatile unsigned int*)(0x422C8088UL))) +#define bM4_TMRA6_PERAR_PER3 (*((volatile unsigned int*)(0x422C808CUL))) +#define bM4_TMRA6_PERAR_PER4 (*((volatile unsigned int*)(0x422C8090UL))) +#define bM4_TMRA6_PERAR_PER5 (*((volatile unsigned int*)(0x422C8094UL))) +#define bM4_TMRA6_PERAR_PER6 (*((volatile unsigned int*)(0x422C8098UL))) +#define bM4_TMRA6_PERAR_PER7 (*((volatile unsigned int*)(0x422C809CUL))) +#define bM4_TMRA6_PERAR_PER8 (*((volatile unsigned int*)(0x422C80A0UL))) +#define bM4_TMRA6_PERAR_PER9 (*((volatile unsigned int*)(0x422C80A4UL))) +#define bM4_TMRA6_PERAR_PER10 (*((volatile unsigned int*)(0x422C80A8UL))) +#define bM4_TMRA6_PERAR_PER11 (*((volatile unsigned int*)(0x422C80ACUL))) +#define bM4_TMRA6_PERAR_PER12 (*((volatile unsigned int*)(0x422C80B0UL))) +#define bM4_TMRA6_PERAR_PER13 (*((volatile unsigned int*)(0x422C80B4UL))) +#define bM4_TMRA6_PERAR_PER14 (*((volatile unsigned int*)(0x422C80B8UL))) +#define bM4_TMRA6_PERAR_PER15 (*((volatile unsigned int*)(0x422C80BCUL))) +#define bM4_TMRA6_CMPAR1_CMP0 (*((volatile unsigned int*)(0x422C8800UL))) +#define bM4_TMRA6_CMPAR1_CMP1 (*((volatile unsigned int*)(0x422C8804UL))) +#define bM4_TMRA6_CMPAR1_CMP2 (*((volatile unsigned int*)(0x422C8808UL))) +#define bM4_TMRA6_CMPAR1_CMP3 (*((volatile unsigned int*)(0x422C880CUL))) +#define bM4_TMRA6_CMPAR1_CMP4 (*((volatile unsigned int*)(0x422C8810UL))) +#define bM4_TMRA6_CMPAR1_CMP5 (*((volatile unsigned int*)(0x422C8814UL))) +#define bM4_TMRA6_CMPAR1_CMP6 (*((volatile unsigned int*)(0x422C8818UL))) +#define bM4_TMRA6_CMPAR1_CMP7 (*((volatile unsigned int*)(0x422C881CUL))) +#define bM4_TMRA6_CMPAR1_CMP8 (*((volatile unsigned int*)(0x422C8820UL))) +#define bM4_TMRA6_CMPAR1_CMP9 (*((volatile unsigned int*)(0x422C8824UL))) +#define bM4_TMRA6_CMPAR1_CMP10 (*((volatile unsigned int*)(0x422C8828UL))) +#define bM4_TMRA6_CMPAR1_CMP11 (*((volatile unsigned int*)(0x422C882CUL))) +#define bM4_TMRA6_CMPAR1_CMP12 (*((volatile unsigned int*)(0x422C8830UL))) +#define bM4_TMRA6_CMPAR1_CMP13 (*((volatile unsigned int*)(0x422C8834UL))) +#define bM4_TMRA6_CMPAR1_CMP14 (*((volatile unsigned int*)(0x422C8838UL))) +#define bM4_TMRA6_CMPAR1_CMP15 (*((volatile unsigned int*)(0x422C883CUL))) +#define bM4_TMRA6_CMPAR2_CMP0 (*((volatile unsigned int*)(0x422C8880UL))) +#define bM4_TMRA6_CMPAR2_CMP1 (*((volatile unsigned int*)(0x422C8884UL))) +#define bM4_TMRA6_CMPAR2_CMP2 (*((volatile unsigned int*)(0x422C8888UL))) +#define bM4_TMRA6_CMPAR2_CMP3 (*((volatile unsigned int*)(0x422C888CUL))) +#define bM4_TMRA6_CMPAR2_CMP4 (*((volatile unsigned int*)(0x422C8890UL))) +#define bM4_TMRA6_CMPAR2_CMP5 (*((volatile unsigned int*)(0x422C8894UL))) +#define bM4_TMRA6_CMPAR2_CMP6 (*((volatile unsigned int*)(0x422C8898UL))) +#define bM4_TMRA6_CMPAR2_CMP7 (*((volatile unsigned int*)(0x422C889CUL))) +#define bM4_TMRA6_CMPAR2_CMP8 (*((volatile unsigned int*)(0x422C88A0UL))) +#define bM4_TMRA6_CMPAR2_CMP9 (*((volatile unsigned int*)(0x422C88A4UL))) +#define bM4_TMRA6_CMPAR2_CMP10 (*((volatile unsigned int*)(0x422C88A8UL))) +#define bM4_TMRA6_CMPAR2_CMP11 (*((volatile unsigned int*)(0x422C88ACUL))) +#define bM4_TMRA6_CMPAR2_CMP12 (*((volatile unsigned int*)(0x422C88B0UL))) +#define bM4_TMRA6_CMPAR2_CMP13 (*((volatile unsigned int*)(0x422C88B4UL))) +#define bM4_TMRA6_CMPAR2_CMP14 (*((volatile unsigned int*)(0x422C88B8UL))) +#define bM4_TMRA6_CMPAR2_CMP15 (*((volatile unsigned int*)(0x422C88BCUL))) +#define bM4_TMRA6_CMPAR3_CMP0 (*((volatile unsigned int*)(0x422C8900UL))) +#define bM4_TMRA6_CMPAR3_CMP1 (*((volatile unsigned int*)(0x422C8904UL))) +#define bM4_TMRA6_CMPAR3_CMP2 (*((volatile unsigned int*)(0x422C8908UL))) +#define bM4_TMRA6_CMPAR3_CMP3 (*((volatile unsigned int*)(0x422C890CUL))) +#define bM4_TMRA6_CMPAR3_CMP4 (*((volatile unsigned int*)(0x422C8910UL))) +#define bM4_TMRA6_CMPAR3_CMP5 (*((volatile unsigned int*)(0x422C8914UL))) +#define bM4_TMRA6_CMPAR3_CMP6 (*((volatile unsigned int*)(0x422C8918UL))) +#define bM4_TMRA6_CMPAR3_CMP7 (*((volatile unsigned int*)(0x422C891CUL))) +#define bM4_TMRA6_CMPAR3_CMP8 (*((volatile unsigned int*)(0x422C8920UL))) +#define bM4_TMRA6_CMPAR3_CMP9 (*((volatile unsigned int*)(0x422C8924UL))) +#define bM4_TMRA6_CMPAR3_CMP10 (*((volatile unsigned int*)(0x422C8928UL))) +#define bM4_TMRA6_CMPAR3_CMP11 (*((volatile unsigned int*)(0x422C892CUL))) +#define bM4_TMRA6_CMPAR3_CMP12 (*((volatile unsigned int*)(0x422C8930UL))) +#define bM4_TMRA6_CMPAR3_CMP13 (*((volatile unsigned int*)(0x422C8934UL))) +#define bM4_TMRA6_CMPAR3_CMP14 (*((volatile unsigned int*)(0x422C8938UL))) +#define bM4_TMRA6_CMPAR3_CMP15 (*((volatile unsigned int*)(0x422C893CUL))) +#define bM4_TMRA6_CMPAR4_CMP0 (*((volatile unsigned int*)(0x422C8980UL))) +#define bM4_TMRA6_CMPAR4_CMP1 (*((volatile unsigned int*)(0x422C8984UL))) +#define bM4_TMRA6_CMPAR4_CMP2 (*((volatile unsigned int*)(0x422C8988UL))) +#define bM4_TMRA6_CMPAR4_CMP3 (*((volatile unsigned int*)(0x422C898CUL))) +#define bM4_TMRA6_CMPAR4_CMP4 (*((volatile unsigned int*)(0x422C8990UL))) +#define bM4_TMRA6_CMPAR4_CMP5 (*((volatile unsigned int*)(0x422C8994UL))) +#define bM4_TMRA6_CMPAR4_CMP6 (*((volatile unsigned int*)(0x422C8998UL))) +#define bM4_TMRA6_CMPAR4_CMP7 (*((volatile unsigned int*)(0x422C899CUL))) +#define bM4_TMRA6_CMPAR4_CMP8 (*((volatile unsigned int*)(0x422C89A0UL))) +#define bM4_TMRA6_CMPAR4_CMP9 (*((volatile unsigned int*)(0x422C89A4UL))) +#define bM4_TMRA6_CMPAR4_CMP10 (*((volatile unsigned int*)(0x422C89A8UL))) +#define bM4_TMRA6_CMPAR4_CMP11 (*((volatile unsigned int*)(0x422C89ACUL))) +#define bM4_TMRA6_CMPAR4_CMP12 (*((volatile unsigned int*)(0x422C89B0UL))) +#define bM4_TMRA6_CMPAR4_CMP13 (*((volatile unsigned int*)(0x422C89B4UL))) +#define bM4_TMRA6_CMPAR4_CMP14 (*((volatile unsigned int*)(0x422C89B8UL))) +#define bM4_TMRA6_CMPAR4_CMP15 (*((volatile unsigned int*)(0x422C89BCUL))) +#define bM4_TMRA6_CMPAR5_CMP0 (*((volatile unsigned int*)(0x422C8A00UL))) +#define bM4_TMRA6_CMPAR5_CMP1 (*((volatile unsigned int*)(0x422C8A04UL))) +#define bM4_TMRA6_CMPAR5_CMP2 (*((volatile unsigned int*)(0x422C8A08UL))) +#define bM4_TMRA6_CMPAR5_CMP3 (*((volatile unsigned int*)(0x422C8A0CUL))) +#define bM4_TMRA6_CMPAR5_CMP4 (*((volatile unsigned int*)(0x422C8A10UL))) +#define bM4_TMRA6_CMPAR5_CMP5 (*((volatile unsigned int*)(0x422C8A14UL))) +#define bM4_TMRA6_CMPAR5_CMP6 (*((volatile unsigned int*)(0x422C8A18UL))) +#define bM4_TMRA6_CMPAR5_CMP7 (*((volatile unsigned int*)(0x422C8A1CUL))) +#define bM4_TMRA6_CMPAR5_CMP8 (*((volatile unsigned int*)(0x422C8A20UL))) +#define bM4_TMRA6_CMPAR5_CMP9 (*((volatile unsigned int*)(0x422C8A24UL))) +#define bM4_TMRA6_CMPAR5_CMP10 (*((volatile unsigned int*)(0x422C8A28UL))) +#define bM4_TMRA6_CMPAR5_CMP11 (*((volatile unsigned int*)(0x422C8A2CUL))) +#define bM4_TMRA6_CMPAR5_CMP12 (*((volatile unsigned int*)(0x422C8A30UL))) +#define bM4_TMRA6_CMPAR5_CMP13 (*((volatile unsigned int*)(0x422C8A34UL))) +#define bM4_TMRA6_CMPAR5_CMP14 (*((volatile unsigned int*)(0x422C8A38UL))) +#define bM4_TMRA6_CMPAR5_CMP15 (*((volatile unsigned int*)(0x422C8A3CUL))) +#define bM4_TMRA6_CMPAR6_CMP0 (*((volatile unsigned int*)(0x422C8A80UL))) +#define bM4_TMRA6_CMPAR6_CMP1 (*((volatile unsigned int*)(0x422C8A84UL))) +#define bM4_TMRA6_CMPAR6_CMP2 (*((volatile unsigned int*)(0x422C8A88UL))) +#define bM4_TMRA6_CMPAR6_CMP3 (*((volatile unsigned int*)(0x422C8A8CUL))) +#define bM4_TMRA6_CMPAR6_CMP4 (*((volatile unsigned int*)(0x422C8A90UL))) +#define bM4_TMRA6_CMPAR6_CMP5 (*((volatile unsigned int*)(0x422C8A94UL))) +#define bM4_TMRA6_CMPAR6_CMP6 (*((volatile unsigned int*)(0x422C8A98UL))) +#define bM4_TMRA6_CMPAR6_CMP7 (*((volatile unsigned int*)(0x422C8A9CUL))) +#define bM4_TMRA6_CMPAR6_CMP8 (*((volatile unsigned int*)(0x422C8AA0UL))) +#define bM4_TMRA6_CMPAR6_CMP9 (*((volatile unsigned int*)(0x422C8AA4UL))) +#define bM4_TMRA6_CMPAR6_CMP10 (*((volatile unsigned int*)(0x422C8AA8UL))) +#define bM4_TMRA6_CMPAR6_CMP11 (*((volatile unsigned int*)(0x422C8AACUL))) +#define bM4_TMRA6_CMPAR6_CMP12 (*((volatile unsigned int*)(0x422C8AB0UL))) +#define bM4_TMRA6_CMPAR6_CMP13 (*((volatile unsigned int*)(0x422C8AB4UL))) +#define bM4_TMRA6_CMPAR6_CMP14 (*((volatile unsigned int*)(0x422C8AB8UL))) +#define bM4_TMRA6_CMPAR6_CMP15 (*((volatile unsigned int*)(0x422C8ABCUL))) +#define bM4_TMRA6_CMPAR7_CMP0 (*((volatile unsigned int*)(0x422C8B00UL))) +#define bM4_TMRA6_CMPAR7_CMP1 (*((volatile unsigned int*)(0x422C8B04UL))) +#define bM4_TMRA6_CMPAR7_CMP2 (*((volatile unsigned int*)(0x422C8B08UL))) +#define bM4_TMRA6_CMPAR7_CMP3 (*((volatile unsigned int*)(0x422C8B0CUL))) +#define bM4_TMRA6_CMPAR7_CMP4 (*((volatile unsigned int*)(0x422C8B10UL))) +#define bM4_TMRA6_CMPAR7_CMP5 (*((volatile unsigned int*)(0x422C8B14UL))) +#define bM4_TMRA6_CMPAR7_CMP6 (*((volatile unsigned int*)(0x422C8B18UL))) +#define bM4_TMRA6_CMPAR7_CMP7 (*((volatile unsigned int*)(0x422C8B1CUL))) +#define bM4_TMRA6_CMPAR7_CMP8 (*((volatile unsigned int*)(0x422C8B20UL))) +#define bM4_TMRA6_CMPAR7_CMP9 (*((volatile unsigned int*)(0x422C8B24UL))) +#define bM4_TMRA6_CMPAR7_CMP10 (*((volatile unsigned int*)(0x422C8B28UL))) +#define bM4_TMRA6_CMPAR7_CMP11 (*((volatile unsigned int*)(0x422C8B2CUL))) +#define bM4_TMRA6_CMPAR7_CMP12 (*((volatile unsigned int*)(0x422C8B30UL))) +#define bM4_TMRA6_CMPAR7_CMP13 (*((volatile unsigned int*)(0x422C8B34UL))) +#define bM4_TMRA6_CMPAR7_CMP14 (*((volatile unsigned int*)(0x422C8B38UL))) +#define bM4_TMRA6_CMPAR7_CMP15 (*((volatile unsigned int*)(0x422C8B3CUL))) +#define bM4_TMRA6_CMPAR8_CMP0 (*((volatile unsigned int*)(0x422C8B80UL))) +#define bM4_TMRA6_CMPAR8_CMP1 (*((volatile unsigned int*)(0x422C8B84UL))) +#define bM4_TMRA6_CMPAR8_CMP2 (*((volatile unsigned int*)(0x422C8B88UL))) +#define bM4_TMRA6_CMPAR8_CMP3 (*((volatile unsigned int*)(0x422C8B8CUL))) +#define bM4_TMRA6_CMPAR8_CMP4 (*((volatile unsigned int*)(0x422C8B90UL))) +#define bM4_TMRA6_CMPAR8_CMP5 (*((volatile unsigned int*)(0x422C8B94UL))) +#define bM4_TMRA6_CMPAR8_CMP6 (*((volatile unsigned int*)(0x422C8B98UL))) +#define bM4_TMRA6_CMPAR8_CMP7 (*((volatile unsigned int*)(0x422C8B9CUL))) +#define bM4_TMRA6_CMPAR8_CMP8 (*((volatile unsigned int*)(0x422C8BA0UL))) +#define bM4_TMRA6_CMPAR8_CMP9 (*((volatile unsigned int*)(0x422C8BA4UL))) +#define bM4_TMRA6_CMPAR8_CMP10 (*((volatile unsigned int*)(0x422C8BA8UL))) +#define bM4_TMRA6_CMPAR8_CMP11 (*((volatile unsigned int*)(0x422C8BACUL))) +#define bM4_TMRA6_CMPAR8_CMP12 (*((volatile unsigned int*)(0x422C8BB0UL))) +#define bM4_TMRA6_CMPAR8_CMP13 (*((volatile unsigned int*)(0x422C8BB4UL))) +#define bM4_TMRA6_CMPAR8_CMP14 (*((volatile unsigned int*)(0x422C8BB8UL))) +#define bM4_TMRA6_CMPAR8_CMP15 (*((volatile unsigned int*)(0x422C8BBCUL))) +#define bM4_TMRA6_BCSTR_START (*((volatile unsigned int*)(0x422C9000UL))) +#define bM4_TMRA6_BCSTR_DIR (*((volatile unsigned int*)(0x422C9004UL))) +#define bM4_TMRA6_BCSTR_MODE (*((volatile unsigned int*)(0x422C9008UL))) +#define bM4_TMRA6_BCSTR_SYNST (*((volatile unsigned int*)(0x422C900CUL))) +#define bM4_TMRA6_BCSTR_CKDIV0 (*((volatile unsigned int*)(0x422C9010UL))) +#define bM4_TMRA6_BCSTR_CKDIV1 (*((volatile unsigned int*)(0x422C9014UL))) +#define bM4_TMRA6_BCSTR_CKDIV2 (*((volatile unsigned int*)(0x422C9018UL))) +#define bM4_TMRA6_BCSTR_CKDIV3 (*((volatile unsigned int*)(0x422C901CUL))) +#define bM4_TMRA6_BCSTR_ITENOVF (*((volatile unsigned int*)(0x422C9030UL))) +#define bM4_TMRA6_BCSTR_ITENUDF (*((volatile unsigned int*)(0x422C9034UL))) +#define bM4_TMRA6_BCSTR_OVFF (*((volatile unsigned int*)(0x422C9038UL))) +#define bM4_TMRA6_BCSTR_UDFF (*((volatile unsigned int*)(0x422C903CUL))) +#define bM4_TMRA6_HCONR_HSTA0 (*((volatile unsigned int*)(0x422C9080UL))) +#define bM4_TMRA6_HCONR_HSTA1 (*((volatile unsigned int*)(0x422C9084UL))) +#define bM4_TMRA6_HCONR_HSTA2 (*((volatile unsigned int*)(0x422C9088UL))) +#define bM4_TMRA6_HCONR_HSTP0 (*((volatile unsigned int*)(0x422C9090UL))) +#define bM4_TMRA6_HCONR_HSTP1 (*((volatile unsigned int*)(0x422C9094UL))) +#define bM4_TMRA6_HCONR_HSTP2 (*((volatile unsigned int*)(0x422C9098UL))) +#define bM4_TMRA6_HCONR_HCLE0 (*((volatile unsigned int*)(0x422C90A0UL))) +#define bM4_TMRA6_HCONR_HCLE1 (*((volatile unsigned int*)(0x422C90A4UL))) +#define bM4_TMRA6_HCONR_HCLE2 (*((volatile unsigned int*)(0x422C90A8UL))) +#define bM4_TMRA6_HCONR_HCLE3 (*((volatile unsigned int*)(0x422C90B0UL))) +#define bM4_TMRA6_HCONR_HCLE4 (*((volatile unsigned int*)(0x422C90B4UL))) +#define bM4_TMRA6_HCONR_HCLE5 (*((volatile unsigned int*)(0x422C90B8UL))) +#define bM4_TMRA6_HCONR_HCLE6 (*((volatile unsigned int*)(0x422C90BCUL))) +#define bM4_TMRA6_HCUPR_HCUP0 (*((volatile unsigned int*)(0x422C9100UL))) +#define bM4_TMRA6_HCUPR_HCUP1 (*((volatile unsigned int*)(0x422C9104UL))) +#define bM4_TMRA6_HCUPR_HCUP2 (*((volatile unsigned int*)(0x422C9108UL))) +#define bM4_TMRA6_HCUPR_HCUP3 (*((volatile unsigned int*)(0x422C910CUL))) +#define bM4_TMRA6_HCUPR_HCUP4 (*((volatile unsigned int*)(0x422C9110UL))) +#define bM4_TMRA6_HCUPR_HCUP5 (*((volatile unsigned int*)(0x422C9114UL))) +#define bM4_TMRA6_HCUPR_HCUP6 (*((volatile unsigned int*)(0x422C9118UL))) +#define bM4_TMRA6_HCUPR_HCUP7 (*((volatile unsigned int*)(0x422C911CUL))) +#define bM4_TMRA6_HCUPR_HCUP8 (*((volatile unsigned int*)(0x422C9120UL))) +#define bM4_TMRA6_HCUPR_HCUP9 (*((volatile unsigned int*)(0x422C9124UL))) +#define bM4_TMRA6_HCUPR_HCUP10 (*((volatile unsigned int*)(0x422C9128UL))) +#define bM4_TMRA6_HCUPR_HCUP11 (*((volatile unsigned int*)(0x422C912CUL))) +#define bM4_TMRA6_HCUPR_HCUP12 (*((volatile unsigned int*)(0x422C9130UL))) +#define bM4_TMRA6_HCDOR_HCDO0 (*((volatile unsigned int*)(0x422C9180UL))) +#define bM4_TMRA6_HCDOR_HCDO1 (*((volatile unsigned int*)(0x422C9184UL))) +#define bM4_TMRA6_HCDOR_HCDO2 (*((volatile unsigned int*)(0x422C9188UL))) +#define bM4_TMRA6_HCDOR_HCDO3 (*((volatile unsigned int*)(0x422C918CUL))) +#define bM4_TMRA6_HCDOR_HCDO4 (*((volatile unsigned int*)(0x422C9190UL))) +#define bM4_TMRA6_HCDOR_HCDO5 (*((volatile unsigned int*)(0x422C9194UL))) +#define bM4_TMRA6_HCDOR_HCDO6 (*((volatile unsigned int*)(0x422C9198UL))) +#define bM4_TMRA6_HCDOR_HCDO7 (*((volatile unsigned int*)(0x422C919CUL))) +#define bM4_TMRA6_HCDOR_HCDO8 (*((volatile unsigned int*)(0x422C91A0UL))) +#define bM4_TMRA6_HCDOR_HCDO9 (*((volatile unsigned int*)(0x422C91A4UL))) +#define bM4_TMRA6_HCDOR_HCDO10 (*((volatile unsigned int*)(0x422C91A8UL))) +#define bM4_TMRA6_HCDOR_HCDO11 (*((volatile unsigned int*)(0x422C91ACUL))) +#define bM4_TMRA6_HCDOR_HCDO12 (*((volatile unsigned int*)(0x422C91B0UL))) +#define bM4_TMRA6_ICONR_ITEN1 (*((volatile unsigned int*)(0x422C9200UL))) +#define bM4_TMRA6_ICONR_ITEN2 (*((volatile unsigned int*)(0x422C9204UL))) +#define bM4_TMRA6_ICONR_ITEN3 (*((volatile unsigned int*)(0x422C9208UL))) +#define bM4_TMRA6_ICONR_ITEN4 (*((volatile unsigned int*)(0x422C920CUL))) +#define bM4_TMRA6_ICONR_ITEN5 (*((volatile unsigned int*)(0x422C9210UL))) +#define bM4_TMRA6_ICONR_ITEN6 (*((volatile unsigned int*)(0x422C9214UL))) +#define bM4_TMRA6_ICONR_ITEN7 (*((volatile unsigned int*)(0x422C9218UL))) +#define bM4_TMRA6_ICONR_ITEN8 (*((volatile unsigned int*)(0x422C921CUL))) +#define bM4_TMRA6_ECONR_ETEN1 (*((volatile unsigned int*)(0x422C9280UL))) +#define bM4_TMRA6_ECONR_ETEN2 (*((volatile unsigned int*)(0x422C9284UL))) +#define bM4_TMRA6_ECONR_ETEN3 (*((volatile unsigned int*)(0x422C9288UL))) +#define bM4_TMRA6_ECONR_ETEN4 (*((volatile unsigned int*)(0x422C928CUL))) +#define bM4_TMRA6_ECONR_ETEN5 (*((volatile unsigned int*)(0x422C9290UL))) +#define bM4_TMRA6_ECONR_ETEN6 (*((volatile unsigned int*)(0x422C9294UL))) +#define bM4_TMRA6_ECONR_ETEN7 (*((volatile unsigned int*)(0x422C9298UL))) +#define bM4_TMRA6_ECONR_ETEN8 (*((volatile unsigned int*)(0x422C929CUL))) +#define bM4_TMRA6_FCONR_NOFIENTG (*((volatile unsigned int*)(0x422C9300UL))) +#define bM4_TMRA6_FCONR_NOFICKTG0 (*((volatile unsigned int*)(0x422C9304UL))) +#define bM4_TMRA6_FCONR_NOFICKTG1 (*((volatile unsigned int*)(0x422C9308UL))) +#define bM4_TMRA6_FCONR_NOFIENCA (*((volatile unsigned int*)(0x422C9320UL))) +#define bM4_TMRA6_FCONR_NOFICKCA0 (*((volatile unsigned int*)(0x422C9324UL))) +#define bM4_TMRA6_FCONR_NOFICKCA1 (*((volatile unsigned int*)(0x422C9328UL))) +#define bM4_TMRA6_FCONR_NOFIENCB (*((volatile unsigned int*)(0x422C9330UL))) +#define bM4_TMRA6_FCONR_NOFICKCB0 (*((volatile unsigned int*)(0x422C9334UL))) +#define bM4_TMRA6_FCONR_NOFICKCB1 (*((volatile unsigned int*)(0x422C9338UL))) +#define bM4_TMRA6_STFLR_CMPF1 (*((volatile unsigned int*)(0x422C9380UL))) +#define bM4_TMRA6_STFLR_CMPF2 (*((volatile unsigned int*)(0x422C9384UL))) +#define bM4_TMRA6_STFLR_CMPF3 (*((volatile unsigned int*)(0x422C9388UL))) +#define bM4_TMRA6_STFLR_CMPF4 (*((volatile unsigned int*)(0x422C938CUL))) +#define bM4_TMRA6_STFLR_CMPF5 (*((volatile unsigned int*)(0x422C9390UL))) +#define bM4_TMRA6_STFLR_CMPF6 (*((volatile unsigned int*)(0x422C9394UL))) +#define bM4_TMRA6_STFLR_CMPF7 (*((volatile unsigned int*)(0x422C9398UL))) +#define bM4_TMRA6_STFLR_CMPF8 (*((volatile unsigned int*)(0x422C939CUL))) +#define bM4_TMRA6_BCONR1_BEN (*((volatile unsigned int*)(0x422C9800UL))) +#define bM4_TMRA6_BCONR1_BSE0 (*((volatile unsigned int*)(0x422C9804UL))) +#define bM4_TMRA6_BCONR1_BSE1 (*((volatile unsigned int*)(0x422C9808UL))) +#define bM4_TMRA6_BCONR2_BEN (*((volatile unsigned int*)(0x422C9900UL))) +#define bM4_TMRA6_BCONR2_BSE0 (*((volatile unsigned int*)(0x422C9904UL))) +#define bM4_TMRA6_BCONR2_BSE1 (*((volatile unsigned int*)(0x422C9908UL))) +#define bM4_TMRA6_BCONR3_BEN (*((volatile unsigned int*)(0x422C9A00UL))) +#define bM4_TMRA6_BCONR3_BSE0 (*((volatile unsigned int*)(0x422C9A04UL))) +#define bM4_TMRA6_BCONR3_BSE1 (*((volatile unsigned int*)(0x422C9A08UL))) +#define bM4_TMRA6_BCONR4_BEN (*((volatile unsigned int*)(0x422C9B00UL))) +#define bM4_TMRA6_BCONR4_BSE0 (*((volatile unsigned int*)(0x422C9B04UL))) +#define bM4_TMRA6_BCONR4_BSE1 (*((volatile unsigned int*)(0x422C9B08UL))) +#define bM4_TMRA6_CCONR1_CAPMD (*((volatile unsigned int*)(0x422CA000UL))) +#define bM4_TMRA6_CCONR1_HICP0 (*((volatile unsigned int*)(0x422CA010UL))) +#define bM4_TMRA6_CCONR1_HICP1 (*((volatile unsigned int*)(0x422CA014UL))) +#define bM4_TMRA6_CCONR1_HICP2 (*((volatile unsigned int*)(0x422CA018UL))) +#define bM4_TMRA6_CCONR1_HICP3 (*((volatile unsigned int*)(0x422CA020UL))) +#define bM4_TMRA6_CCONR1_HICP4 (*((volatile unsigned int*)(0x422CA024UL))) +#define bM4_TMRA6_CCONR1_NOFIENCP (*((volatile unsigned int*)(0x422CA030UL))) +#define bM4_TMRA6_CCONR1_NOFICKCP0 (*((volatile unsigned int*)(0x422CA034UL))) +#define bM4_TMRA6_CCONR1_NOFICKCP1 (*((volatile unsigned int*)(0x422CA038UL))) +#define bM4_TMRA6_CCONR2_CAPMD (*((volatile unsigned int*)(0x422CA080UL))) +#define bM4_TMRA6_CCONR2_HICP0 (*((volatile unsigned int*)(0x422CA090UL))) +#define bM4_TMRA6_CCONR2_HICP1 (*((volatile unsigned int*)(0x422CA094UL))) +#define bM4_TMRA6_CCONR2_HICP2 (*((volatile unsigned int*)(0x422CA098UL))) +#define bM4_TMRA6_CCONR2_HICP3 (*((volatile unsigned int*)(0x422CA0A0UL))) +#define bM4_TMRA6_CCONR2_HICP4 (*((volatile unsigned int*)(0x422CA0A4UL))) +#define bM4_TMRA6_CCONR2_NOFIENCP (*((volatile unsigned int*)(0x422CA0B0UL))) +#define bM4_TMRA6_CCONR2_NOFICKCP0 (*((volatile unsigned int*)(0x422CA0B4UL))) +#define bM4_TMRA6_CCONR2_NOFICKCP1 (*((volatile unsigned int*)(0x422CA0B8UL))) +#define bM4_TMRA6_CCONR3_CAPMD (*((volatile unsigned int*)(0x422CA100UL))) +#define bM4_TMRA6_CCONR3_HICP0 (*((volatile unsigned int*)(0x422CA110UL))) +#define bM4_TMRA6_CCONR3_HICP1 (*((volatile unsigned int*)(0x422CA114UL))) +#define bM4_TMRA6_CCONR3_HICP2 (*((volatile unsigned int*)(0x422CA118UL))) +#define bM4_TMRA6_CCONR3_HICP3 (*((volatile unsigned int*)(0x422CA120UL))) +#define bM4_TMRA6_CCONR3_HICP4 (*((volatile unsigned int*)(0x422CA124UL))) +#define bM4_TMRA6_CCONR3_NOFIENCP (*((volatile unsigned int*)(0x422CA130UL))) +#define bM4_TMRA6_CCONR3_NOFICKCP0 (*((volatile unsigned int*)(0x422CA134UL))) +#define bM4_TMRA6_CCONR3_NOFICKCP1 (*((volatile unsigned int*)(0x422CA138UL))) +#define bM4_TMRA6_CCONR4_CAPMD (*((volatile unsigned int*)(0x422CA180UL))) +#define bM4_TMRA6_CCONR4_HICP0 (*((volatile unsigned int*)(0x422CA190UL))) +#define bM4_TMRA6_CCONR4_HICP1 (*((volatile unsigned int*)(0x422CA194UL))) +#define bM4_TMRA6_CCONR4_HICP2 (*((volatile unsigned int*)(0x422CA198UL))) +#define bM4_TMRA6_CCONR4_HICP3 (*((volatile unsigned int*)(0x422CA1A0UL))) +#define bM4_TMRA6_CCONR4_HICP4 (*((volatile unsigned int*)(0x422CA1A4UL))) +#define bM4_TMRA6_CCONR4_NOFIENCP (*((volatile unsigned int*)(0x422CA1B0UL))) +#define bM4_TMRA6_CCONR4_NOFICKCP0 (*((volatile unsigned int*)(0x422CA1B4UL))) +#define bM4_TMRA6_CCONR4_NOFICKCP1 (*((volatile unsigned int*)(0x422CA1B8UL))) +#define bM4_TMRA6_CCONR5_CAPMD (*((volatile unsigned int*)(0x422CA200UL))) +#define bM4_TMRA6_CCONR5_HICP0 (*((volatile unsigned int*)(0x422CA210UL))) +#define bM4_TMRA6_CCONR5_HICP1 (*((volatile unsigned int*)(0x422CA214UL))) +#define bM4_TMRA6_CCONR5_HICP2 (*((volatile unsigned int*)(0x422CA218UL))) +#define bM4_TMRA6_CCONR5_HICP3 (*((volatile unsigned int*)(0x422CA220UL))) +#define bM4_TMRA6_CCONR5_HICP4 (*((volatile unsigned int*)(0x422CA224UL))) +#define bM4_TMRA6_CCONR5_NOFIENCP (*((volatile unsigned int*)(0x422CA230UL))) +#define bM4_TMRA6_CCONR5_NOFICKCP0 (*((volatile unsigned int*)(0x422CA234UL))) +#define bM4_TMRA6_CCONR5_NOFICKCP1 (*((volatile unsigned int*)(0x422CA238UL))) +#define bM4_TMRA6_CCONR6_CAPMD (*((volatile unsigned int*)(0x422CA280UL))) +#define bM4_TMRA6_CCONR6_HICP0 (*((volatile unsigned int*)(0x422CA290UL))) +#define bM4_TMRA6_CCONR6_HICP1 (*((volatile unsigned int*)(0x422CA294UL))) +#define bM4_TMRA6_CCONR6_HICP2 (*((volatile unsigned int*)(0x422CA298UL))) +#define bM4_TMRA6_CCONR6_HICP3 (*((volatile unsigned int*)(0x422CA2A0UL))) +#define bM4_TMRA6_CCONR6_HICP4 (*((volatile unsigned int*)(0x422CA2A4UL))) +#define bM4_TMRA6_CCONR6_NOFIENCP (*((volatile unsigned int*)(0x422CA2B0UL))) +#define bM4_TMRA6_CCONR6_NOFICKCP0 (*((volatile unsigned int*)(0x422CA2B4UL))) +#define bM4_TMRA6_CCONR6_NOFICKCP1 (*((volatile unsigned int*)(0x422CA2B8UL))) +#define bM4_TMRA6_CCONR7_CAPMD (*((volatile unsigned int*)(0x422CA300UL))) +#define bM4_TMRA6_CCONR7_HICP0 (*((volatile unsigned int*)(0x422CA310UL))) +#define bM4_TMRA6_CCONR7_HICP1 (*((volatile unsigned int*)(0x422CA314UL))) +#define bM4_TMRA6_CCONR7_HICP2 (*((volatile unsigned int*)(0x422CA318UL))) +#define bM4_TMRA6_CCONR7_HICP3 (*((volatile unsigned int*)(0x422CA320UL))) +#define bM4_TMRA6_CCONR7_HICP4 (*((volatile unsigned int*)(0x422CA324UL))) +#define bM4_TMRA6_CCONR7_NOFIENCP (*((volatile unsigned int*)(0x422CA330UL))) +#define bM4_TMRA6_CCONR7_NOFICKCP0 (*((volatile unsigned int*)(0x422CA334UL))) +#define bM4_TMRA6_CCONR7_NOFICKCP1 (*((volatile unsigned int*)(0x422CA338UL))) +#define bM4_TMRA6_CCONR8_CAPMD (*((volatile unsigned int*)(0x422CA380UL))) +#define bM4_TMRA6_CCONR8_HICP0 (*((volatile unsigned int*)(0x422CA390UL))) +#define bM4_TMRA6_CCONR8_HICP1 (*((volatile unsigned int*)(0x422CA394UL))) +#define bM4_TMRA6_CCONR8_HICP2 (*((volatile unsigned int*)(0x422CA398UL))) +#define bM4_TMRA6_CCONR8_HICP3 (*((volatile unsigned int*)(0x422CA3A0UL))) +#define bM4_TMRA6_CCONR8_HICP4 (*((volatile unsigned int*)(0x422CA3A4UL))) +#define bM4_TMRA6_CCONR8_NOFIENCP (*((volatile unsigned int*)(0x422CA3B0UL))) +#define bM4_TMRA6_CCONR8_NOFICKCP0 (*((volatile unsigned int*)(0x422CA3B4UL))) +#define bM4_TMRA6_CCONR8_NOFICKCP1 (*((volatile unsigned int*)(0x422CA3B8UL))) +#define bM4_TMRA6_PCONR1_STAC0 (*((volatile unsigned int*)(0x422CA800UL))) +#define bM4_TMRA6_PCONR1_STAC1 (*((volatile unsigned int*)(0x422CA804UL))) +#define bM4_TMRA6_PCONR1_STPC0 (*((volatile unsigned int*)(0x422CA808UL))) +#define bM4_TMRA6_PCONR1_STPC1 (*((volatile unsigned int*)(0x422CA80CUL))) +#define bM4_TMRA6_PCONR1_CMPC0 (*((volatile unsigned int*)(0x422CA810UL))) +#define bM4_TMRA6_PCONR1_CMPC1 (*((volatile unsigned int*)(0x422CA814UL))) +#define bM4_TMRA6_PCONR1_PERC0 (*((volatile unsigned int*)(0x422CA818UL))) +#define bM4_TMRA6_PCONR1_PERC1 (*((volatile unsigned int*)(0x422CA81CUL))) +#define bM4_TMRA6_PCONR1_FORC0 (*((volatile unsigned int*)(0x422CA820UL))) +#define bM4_TMRA6_PCONR1_FORC1 (*((volatile unsigned int*)(0x422CA824UL))) +#define bM4_TMRA6_PCONR1_OUTEN (*((volatile unsigned int*)(0x422CA830UL))) +#define bM4_TMRA6_PCONR2_STAC0 (*((volatile unsigned int*)(0x422CA880UL))) +#define bM4_TMRA6_PCONR2_STAC1 (*((volatile unsigned int*)(0x422CA884UL))) +#define bM4_TMRA6_PCONR2_STPC0 (*((volatile unsigned int*)(0x422CA888UL))) +#define bM4_TMRA6_PCONR2_STPC1 (*((volatile unsigned int*)(0x422CA88CUL))) +#define bM4_TMRA6_PCONR2_CMPC0 (*((volatile unsigned int*)(0x422CA890UL))) +#define bM4_TMRA6_PCONR2_CMPC1 (*((volatile unsigned int*)(0x422CA894UL))) +#define bM4_TMRA6_PCONR2_PERC0 (*((volatile unsigned int*)(0x422CA898UL))) +#define bM4_TMRA6_PCONR2_PERC1 (*((volatile unsigned int*)(0x422CA89CUL))) +#define bM4_TMRA6_PCONR2_FORC0 (*((volatile unsigned int*)(0x422CA8A0UL))) +#define bM4_TMRA6_PCONR2_FORC1 (*((volatile unsigned int*)(0x422CA8A4UL))) +#define bM4_TMRA6_PCONR2_OUTEN (*((volatile unsigned int*)(0x422CA8B0UL))) +#define bM4_TMRA6_PCONR3_STAC0 (*((volatile unsigned int*)(0x422CA900UL))) +#define bM4_TMRA6_PCONR3_STAC1 (*((volatile unsigned int*)(0x422CA904UL))) +#define bM4_TMRA6_PCONR3_STPC0 (*((volatile unsigned int*)(0x422CA908UL))) +#define bM4_TMRA6_PCONR3_STPC1 (*((volatile unsigned int*)(0x422CA90CUL))) +#define bM4_TMRA6_PCONR3_CMPC0 (*((volatile unsigned int*)(0x422CA910UL))) +#define bM4_TMRA6_PCONR3_CMPC1 (*((volatile unsigned int*)(0x422CA914UL))) +#define bM4_TMRA6_PCONR3_PERC0 (*((volatile unsigned int*)(0x422CA918UL))) +#define bM4_TMRA6_PCONR3_PERC1 (*((volatile unsigned int*)(0x422CA91CUL))) +#define bM4_TMRA6_PCONR3_FORC0 (*((volatile unsigned int*)(0x422CA920UL))) +#define bM4_TMRA6_PCONR3_FORC1 (*((volatile unsigned int*)(0x422CA924UL))) +#define bM4_TMRA6_PCONR3_OUTEN (*((volatile unsigned int*)(0x422CA930UL))) +#define bM4_TMRA6_PCONR4_STAC0 (*((volatile unsigned int*)(0x422CA980UL))) +#define bM4_TMRA6_PCONR4_STAC1 (*((volatile unsigned int*)(0x422CA984UL))) +#define bM4_TMRA6_PCONR4_STPC0 (*((volatile unsigned int*)(0x422CA988UL))) +#define bM4_TMRA6_PCONR4_STPC1 (*((volatile unsigned int*)(0x422CA98CUL))) +#define bM4_TMRA6_PCONR4_CMPC0 (*((volatile unsigned int*)(0x422CA990UL))) +#define bM4_TMRA6_PCONR4_CMPC1 (*((volatile unsigned int*)(0x422CA994UL))) +#define bM4_TMRA6_PCONR4_PERC0 (*((volatile unsigned int*)(0x422CA998UL))) +#define bM4_TMRA6_PCONR4_PERC1 (*((volatile unsigned int*)(0x422CA99CUL))) +#define bM4_TMRA6_PCONR4_FORC0 (*((volatile unsigned int*)(0x422CA9A0UL))) +#define bM4_TMRA6_PCONR4_FORC1 (*((volatile unsigned int*)(0x422CA9A4UL))) +#define bM4_TMRA6_PCONR4_OUTEN (*((volatile unsigned int*)(0x422CA9B0UL))) +#define bM4_TMRA6_PCONR5_STAC0 (*((volatile unsigned int*)(0x422CAA00UL))) +#define bM4_TMRA6_PCONR5_STAC1 (*((volatile unsigned int*)(0x422CAA04UL))) +#define bM4_TMRA6_PCONR5_STPC0 (*((volatile unsigned int*)(0x422CAA08UL))) +#define bM4_TMRA6_PCONR5_STPC1 (*((volatile unsigned int*)(0x422CAA0CUL))) +#define bM4_TMRA6_PCONR5_CMPC0 (*((volatile unsigned int*)(0x422CAA10UL))) +#define bM4_TMRA6_PCONR5_CMPC1 (*((volatile unsigned int*)(0x422CAA14UL))) +#define bM4_TMRA6_PCONR5_PERC0 (*((volatile unsigned int*)(0x422CAA18UL))) +#define bM4_TMRA6_PCONR5_PERC1 (*((volatile unsigned int*)(0x422CAA1CUL))) +#define bM4_TMRA6_PCONR5_FORC0 (*((volatile unsigned int*)(0x422CAA20UL))) +#define bM4_TMRA6_PCONR5_FORC1 (*((volatile unsigned int*)(0x422CAA24UL))) +#define bM4_TMRA6_PCONR5_OUTEN (*((volatile unsigned int*)(0x422CAA30UL))) +#define bM4_TMRA6_PCONR6_STAC0 (*((volatile unsigned int*)(0x422CAA80UL))) +#define bM4_TMRA6_PCONR6_STAC1 (*((volatile unsigned int*)(0x422CAA84UL))) +#define bM4_TMRA6_PCONR6_STPC0 (*((volatile unsigned int*)(0x422CAA88UL))) +#define bM4_TMRA6_PCONR6_STPC1 (*((volatile unsigned int*)(0x422CAA8CUL))) +#define bM4_TMRA6_PCONR6_CMPC0 (*((volatile unsigned int*)(0x422CAA90UL))) +#define bM4_TMRA6_PCONR6_CMPC1 (*((volatile unsigned int*)(0x422CAA94UL))) +#define bM4_TMRA6_PCONR6_PERC0 (*((volatile unsigned int*)(0x422CAA98UL))) +#define bM4_TMRA6_PCONR6_PERC1 (*((volatile unsigned int*)(0x422CAA9CUL))) +#define bM4_TMRA6_PCONR6_FORC0 (*((volatile unsigned int*)(0x422CAAA0UL))) +#define bM4_TMRA6_PCONR6_FORC1 (*((volatile unsigned int*)(0x422CAAA4UL))) +#define bM4_TMRA6_PCONR6_OUTEN (*((volatile unsigned int*)(0x422CAAB0UL))) +#define bM4_TMRA6_PCONR7_STAC0 (*((volatile unsigned int*)(0x422CAB00UL))) +#define bM4_TMRA6_PCONR7_STAC1 (*((volatile unsigned int*)(0x422CAB04UL))) +#define bM4_TMRA6_PCONR7_STPC0 (*((volatile unsigned int*)(0x422CAB08UL))) +#define bM4_TMRA6_PCONR7_STPC1 (*((volatile unsigned int*)(0x422CAB0CUL))) +#define bM4_TMRA6_PCONR7_CMPC0 (*((volatile unsigned int*)(0x422CAB10UL))) +#define bM4_TMRA6_PCONR7_CMPC1 (*((volatile unsigned int*)(0x422CAB14UL))) +#define bM4_TMRA6_PCONR7_PERC0 (*((volatile unsigned int*)(0x422CAB18UL))) +#define bM4_TMRA6_PCONR7_PERC1 (*((volatile unsigned int*)(0x422CAB1CUL))) +#define bM4_TMRA6_PCONR7_FORC0 (*((volatile unsigned int*)(0x422CAB20UL))) +#define bM4_TMRA6_PCONR7_FORC1 (*((volatile unsigned int*)(0x422CAB24UL))) +#define bM4_TMRA6_PCONR7_OUTEN (*((volatile unsigned int*)(0x422CAB30UL))) +#define bM4_TMRA6_PCONR8_STAC0 (*((volatile unsigned int*)(0x422CAB80UL))) +#define bM4_TMRA6_PCONR8_STAC1 (*((volatile unsigned int*)(0x422CAB84UL))) +#define bM4_TMRA6_PCONR8_STPC0 (*((volatile unsigned int*)(0x422CAB88UL))) +#define bM4_TMRA6_PCONR8_STPC1 (*((volatile unsigned int*)(0x422CAB8CUL))) +#define bM4_TMRA6_PCONR8_CMPC0 (*((volatile unsigned int*)(0x422CAB90UL))) +#define bM4_TMRA6_PCONR8_CMPC1 (*((volatile unsigned int*)(0x422CAB94UL))) +#define bM4_TMRA6_PCONR8_PERC0 (*((volatile unsigned int*)(0x422CAB98UL))) +#define bM4_TMRA6_PCONR8_PERC1 (*((volatile unsigned int*)(0x422CAB9CUL))) +#define bM4_TMRA6_PCONR8_FORC0 (*((volatile unsigned int*)(0x422CABA0UL))) +#define bM4_TMRA6_PCONR8_FORC1 (*((volatile unsigned int*)(0x422CABA4UL))) +#define bM4_TMRA6_PCONR8_OUTEN (*((volatile unsigned int*)(0x422CABB0UL))) +#define bM4_TRNG_CR_EN (*((volatile unsigned int*)(0x42820000UL))) +#define bM4_TRNG_CR_RUN (*((volatile unsigned int*)(0x42820004UL))) +#define bM4_TRNG_MR_LOAD (*((volatile unsigned int*)(0x42820080UL))) +#define bM4_TRNG_MR_CNT0 (*((volatile unsigned int*)(0x42820088UL))) +#define bM4_TRNG_MR_CNT1 (*((volatile unsigned int*)(0x4282008CUL))) +#define bM4_TRNG_MR_CNT2 (*((volatile unsigned int*)(0x42820090UL))) +#define bM4_USART1_SR_PE (*((volatile unsigned int*)(0x423A0000UL))) +#define bM4_USART1_SR_FE (*((volatile unsigned int*)(0x423A0004UL))) +#define bM4_USART1_SR_ORE (*((volatile unsigned int*)(0x423A000CUL))) +#define bM4_USART1_SR_RXNE (*((volatile unsigned int*)(0x423A0014UL))) +#define bM4_USART1_SR_TC (*((volatile unsigned int*)(0x423A0018UL))) +#define bM4_USART1_SR_TXE (*((volatile unsigned int*)(0x423A001CUL))) +#define bM4_USART1_SR_RTOF (*((volatile unsigned int*)(0x423A0020UL))) +#define bM4_USART1_SR_MPB (*((volatile unsigned int*)(0x423A0040UL))) +#define bM4_USART1_DR_TDR0 (*((volatile unsigned int*)(0x423A0080UL))) +#define bM4_USART1_DR_TDR1 (*((volatile unsigned int*)(0x423A0084UL))) +#define bM4_USART1_DR_TDR2 (*((volatile unsigned int*)(0x423A0088UL))) +#define bM4_USART1_DR_TDR3 (*((volatile unsigned int*)(0x423A008CUL))) +#define bM4_USART1_DR_TDR4 (*((volatile unsigned int*)(0x423A0090UL))) +#define bM4_USART1_DR_TDR5 (*((volatile unsigned int*)(0x423A0094UL))) +#define bM4_USART1_DR_TDR6 (*((volatile unsigned int*)(0x423A0098UL))) +#define bM4_USART1_DR_TDR7 (*((volatile unsigned int*)(0x423A009CUL))) +#define bM4_USART1_DR_TDR8 (*((volatile unsigned int*)(0x423A00A0UL))) +#define bM4_USART1_DR_MPID (*((volatile unsigned int*)(0x423A00A4UL))) +#define bM4_USART1_DR_RDR0 (*((volatile unsigned int*)(0x423A00C0UL))) +#define bM4_USART1_DR_RDR1 (*((volatile unsigned int*)(0x423A00C4UL))) +#define bM4_USART1_DR_RDR2 (*((volatile unsigned int*)(0x423A00C8UL))) +#define bM4_USART1_DR_RDR3 (*((volatile unsigned int*)(0x423A00CCUL))) +#define bM4_USART1_DR_RDR4 (*((volatile unsigned int*)(0x423A00D0UL))) +#define bM4_USART1_DR_RDR5 (*((volatile unsigned int*)(0x423A00D4UL))) +#define bM4_USART1_DR_RDR6 (*((volatile unsigned int*)(0x423A00D8UL))) +#define bM4_USART1_DR_RDR7 (*((volatile unsigned int*)(0x423A00DCUL))) +#define bM4_USART1_DR_RDR8 (*((volatile unsigned int*)(0x423A00E0UL))) +#define bM4_USART1_BRR_DIV_FRACTION0 (*((volatile unsigned int*)(0x423A0100UL))) +#define bM4_USART1_BRR_DIV_FRACTION1 (*((volatile unsigned int*)(0x423A0104UL))) +#define bM4_USART1_BRR_DIV_FRACTION2 (*((volatile unsigned int*)(0x423A0108UL))) +#define bM4_USART1_BRR_DIV_FRACTION3 (*((volatile unsigned int*)(0x423A010CUL))) +#define bM4_USART1_BRR_DIV_FRACTION4 (*((volatile unsigned int*)(0x423A0110UL))) +#define bM4_USART1_BRR_DIV_FRACTION5 (*((volatile unsigned int*)(0x423A0114UL))) +#define bM4_USART1_BRR_DIV_FRACTION6 (*((volatile unsigned int*)(0x423A0118UL))) +#define bM4_USART1_BRR_DIV_INTEGER0 (*((volatile unsigned int*)(0x423A0120UL))) +#define bM4_USART1_BRR_DIV_INTEGER1 (*((volatile unsigned int*)(0x423A0124UL))) +#define bM4_USART1_BRR_DIV_INTEGER2 (*((volatile unsigned int*)(0x423A0128UL))) +#define bM4_USART1_BRR_DIV_INTEGER3 (*((volatile unsigned int*)(0x423A012CUL))) +#define bM4_USART1_BRR_DIV_INTEGER4 (*((volatile unsigned int*)(0x423A0130UL))) +#define bM4_USART1_BRR_DIV_INTEGER5 (*((volatile unsigned int*)(0x423A0134UL))) +#define bM4_USART1_BRR_DIV_INTEGER6 (*((volatile unsigned int*)(0x423A0138UL))) +#define bM4_USART1_BRR_DIV_INTEGER7 (*((volatile unsigned int*)(0x423A013CUL))) +#define bM4_USART1_CR1_RTOE (*((volatile unsigned int*)(0x423A0180UL))) +#define bM4_USART1_CR1_RTOIE (*((volatile unsigned int*)(0x423A0184UL))) +#define bM4_USART1_CR1_RE (*((volatile unsigned int*)(0x423A0188UL))) +#define bM4_USART1_CR1_TE (*((volatile unsigned int*)(0x423A018CUL))) +#define bM4_USART1_CR1_SLME (*((volatile unsigned int*)(0x423A0190UL))) +#define bM4_USART1_CR1_RIE (*((volatile unsigned int*)(0x423A0194UL))) +#define bM4_USART1_CR1_TCIE (*((volatile unsigned int*)(0x423A0198UL))) +#define bM4_USART1_CR1_TXEIE (*((volatile unsigned int*)(0x423A019CUL))) +#define bM4_USART1_CR1_PS (*((volatile unsigned int*)(0x423A01A4UL))) +#define bM4_USART1_CR1_PCE (*((volatile unsigned int*)(0x423A01A8UL))) +#define bM4_USART1_CR1_M (*((volatile unsigned int*)(0x423A01B0UL))) +#define bM4_USART1_CR1_OVER8 (*((volatile unsigned int*)(0x423A01BCUL))) +#define bM4_USART1_CR1_CPE (*((volatile unsigned int*)(0x423A01C0UL))) +#define bM4_USART1_CR1_CFE (*((volatile unsigned int*)(0x423A01C4UL))) +#define bM4_USART1_CR1_CORE (*((volatile unsigned int*)(0x423A01CCUL))) +#define bM4_USART1_CR1_CRTOF (*((volatile unsigned int*)(0x423A01D0UL))) +#define bM4_USART1_CR1_MS (*((volatile unsigned int*)(0x423A01E0UL))) +#define bM4_USART1_CR1_ML (*((volatile unsigned int*)(0x423A01F0UL))) +#define bM4_USART1_CR1_FBME (*((volatile unsigned int*)(0x423A01F4UL))) +#define bM4_USART1_CR1_NFE (*((volatile unsigned int*)(0x423A01F8UL))) +#define bM4_USART1_CR1_SBS (*((volatile unsigned int*)(0x423A01FCUL))) +#define bM4_USART1_CR2_MPE (*((volatile unsigned int*)(0x423A0200UL))) +#define bM4_USART1_CR2_CLKC0 (*((volatile unsigned int*)(0x423A022CUL))) +#define bM4_USART1_CR2_CLKC1 (*((volatile unsigned int*)(0x423A0230UL))) +#define bM4_USART1_CR2_STOP (*((volatile unsigned int*)(0x423A0234UL))) +#define bM4_USART1_CR3_SCEN (*((volatile unsigned int*)(0x423A0294UL))) +#define bM4_USART1_CR3_CTSE (*((volatile unsigned int*)(0x423A02A4UL))) +#define bM4_USART1_CR3_BCN0 (*((volatile unsigned int*)(0x423A02D4UL))) +#define bM4_USART1_CR3_BCN1 (*((volatile unsigned int*)(0x423A02D8UL))) +#define bM4_USART1_CR3_BCN2 (*((volatile unsigned int*)(0x423A02DCUL))) +#define bM4_USART1_PR_PSC0 (*((volatile unsigned int*)(0x423A0300UL))) +#define bM4_USART1_PR_PSC1 (*((volatile unsigned int*)(0x423A0304UL))) +#define bM4_USART2_SR_PE (*((volatile unsigned int*)(0x423A8000UL))) +#define bM4_USART2_SR_FE (*((volatile unsigned int*)(0x423A8004UL))) +#define bM4_USART2_SR_ORE (*((volatile unsigned int*)(0x423A800CUL))) +#define bM4_USART2_SR_RXNE (*((volatile unsigned int*)(0x423A8014UL))) +#define bM4_USART2_SR_TC (*((volatile unsigned int*)(0x423A8018UL))) +#define bM4_USART2_SR_TXE (*((volatile unsigned int*)(0x423A801CUL))) +#define bM4_USART2_SR_RTOF (*((volatile unsigned int*)(0x423A8020UL))) +#define bM4_USART2_SR_MPB (*((volatile unsigned int*)(0x423A8040UL))) +#define bM4_USART2_DR_TDR0 (*((volatile unsigned int*)(0x423A8080UL))) +#define bM4_USART2_DR_TDR1 (*((volatile unsigned int*)(0x423A8084UL))) +#define bM4_USART2_DR_TDR2 (*((volatile unsigned int*)(0x423A8088UL))) +#define bM4_USART2_DR_TDR3 (*((volatile unsigned int*)(0x423A808CUL))) +#define bM4_USART2_DR_TDR4 (*((volatile unsigned int*)(0x423A8090UL))) +#define bM4_USART2_DR_TDR5 (*((volatile unsigned int*)(0x423A8094UL))) +#define bM4_USART2_DR_TDR6 (*((volatile unsigned int*)(0x423A8098UL))) +#define bM4_USART2_DR_TDR7 (*((volatile unsigned int*)(0x423A809CUL))) +#define bM4_USART2_DR_TDR8 (*((volatile unsigned int*)(0x423A80A0UL))) +#define bM4_USART2_DR_MPID (*((volatile unsigned int*)(0x423A80A4UL))) +#define bM4_USART2_DR_RDR0 (*((volatile unsigned int*)(0x423A80C0UL))) +#define bM4_USART2_DR_RDR1 (*((volatile unsigned int*)(0x423A80C4UL))) +#define bM4_USART2_DR_RDR2 (*((volatile unsigned int*)(0x423A80C8UL))) +#define bM4_USART2_DR_RDR3 (*((volatile unsigned int*)(0x423A80CCUL))) +#define bM4_USART2_DR_RDR4 (*((volatile unsigned int*)(0x423A80D0UL))) +#define bM4_USART2_DR_RDR5 (*((volatile unsigned int*)(0x423A80D4UL))) +#define bM4_USART2_DR_RDR6 (*((volatile unsigned int*)(0x423A80D8UL))) +#define bM4_USART2_DR_RDR7 (*((volatile unsigned int*)(0x423A80DCUL))) +#define bM4_USART2_DR_RDR8 (*((volatile unsigned int*)(0x423A80E0UL))) +#define bM4_USART2_BRR_DIV_FRACTION0 (*((volatile unsigned int*)(0x423A8100UL))) +#define bM4_USART2_BRR_DIV_FRACTION1 (*((volatile unsigned int*)(0x423A8104UL))) +#define bM4_USART2_BRR_DIV_FRACTION2 (*((volatile unsigned int*)(0x423A8108UL))) +#define bM4_USART2_BRR_DIV_FRACTION3 (*((volatile unsigned int*)(0x423A810CUL))) +#define bM4_USART2_BRR_DIV_FRACTION4 (*((volatile unsigned int*)(0x423A8110UL))) +#define bM4_USART2_BRR_DIV_FRACTION5 (*((volatile unsigned int*)(0x423A8114UL))) +#define bM4_USART2_BRR_DIV_FRACTION6 (*((volatile unsigned int*)(0x423A8118UL))) +#define bM4_USART2_BRR_DIV_INTEGER0 (*((volatile unsigned int*)(0x423A8120UL))) +#define bM4_USART2_BRR_DIV_INTEGER1 (*((volatile unsigned int*)(0x423A8124UL))) +#define bM4_USART2_BRR_DIV_INTEGER2 (*((volatile unsigned int*)(0x423A8128UL))) +#define bM4_USART2_BRR_DIV_INTEGER3 (*((volatile unsigned int*)(0x423A812CUL))) +#define bM4_USART2_BRR_DIV_INTEGER4 (*((volatile unsigned int*)(0x423A8130UL))) +#define bM4_USART2_BRR_DIV_INTEGER5 (*((volatile unsigned int*)(0x423A8134UL))) +#define bM4_USART2_BRR_DIV_INTEGER6 (*((volatile unsigned int*)(0x423A8138UL))) +#define bM4_USART2_BRR_DIV_INTEGER7 (*((volatile unsigned int*)(0x423A813CUL))) +#define bM4_USART2_CR1_RTOE (*((volatile unsigned int*)(0x423A8180UL))) +#define bM4_USART2_CR1_RTOIE (*((volatile unsigned int*)(0x423A8184UL))) +#define bM4_USART2_CR1_RE (*((volatile unsigned int*)(0x423A8188UL))) +#define bM4_USART2_CR1_TE (*((volatile unsigned int*)(0x423A818CUL))) +#define bM4_USART2_CR1_SLME (*((volatile unsigned int*)(0x423A8190UL))) +#define bM4_USART2_CR1_RIE (*((volatile unsigned int*)(0x423A8194UL))) +#define bM4_USART2_CR1_TCIE (*((volatile unsigned int*)(0x423A8198UL))) +#define bM4_USART2_CR1_TXEIE (*((volatile unsigned int*)(0x423A819CUL))) +#define bM4_USART2_CR1_PS (*((volatile unsigned int*)(0x423A81A4UL))) +#define bM4_USART2_CR1_PCE (*((volatile unsigned int*)(0x423A81A8UL))) +#define bM4_USART2_CR1_M (*((volatile unsigned int*)(0x423A81B0UL))) +#define bM4_USART2_CR1_OVER8 (*((volatile unsigned int*)(0x423A81BCUL))) +#define bM4_USART2_CR1_CPE (*((volatile unsigned int*)(0x423A81C0UL))) +#define bM4_USART2_CR1_CFE (*((volatile unsigned int*)(0x423A81C4UL))) +#define bM4_USART2_CR1_CORE (*((volatile unsigned int*)(0x423A81CCUL))) +#define bM4_USART2_CR1_CRTOF (*((volatile unsigned int*)(0x423A81D0UL))) +#define bM4_USART2_CR1_MS (*((volatile unsigned int*)(0x423A81E0UL))) +#define bM4_USART2_CR1_ML (*((volatile unsigned int*)(0x423A81F0UL))) +#define bM4_USART2_CR1_FBME (*((volatile unsigned int*)(0x423A81F4UL))) +#define bM4_USART2_CR1_NFE (*((volatile unsigned int*)(0x423A81F8UL))) +#define bM4_USART2_CR1_SBS (*((volatile unsigned int*)(0x423A81FCUL))) +#define bM4_USART2_CR2_MPE (*((volatile unsigned int*)(0x423A8200UL))) +#define bM4_USART2_CR2_CLKC0 (*((volatile unsigned int*)(0x423A822CUL))) +#define bM4_USART2_CR2_CLKC1 (*((volatile unsigned int*)(0x423A8230UL))) +#define bM4_USART2_CR2_STOP (*((volatile unsigned int*)(0x423A8234UL))) +#define bM4_USART2_CR3_SCEN (*((volatile unsigned int*)(0x423A8294UL))) +#define bM4_USART2_CR3_CTSE (*((volatile unsigned int*)(0x423A82A4UL))) +#define bM4_USART2_CR3_BCN0 (*((volatile unsigned int*)(0x423A82D4UL))) +#define bM4_USART2_CR3_BCN1 (*((volatile unsigned int*)(0x423A82D8UL))) +#define bM4_USART2_CR3_BCN2 (*((volatile unsigned int*)(0x423A82DCUL))) +#define bM4_USART2_PR_PSC0 (*((volatile unsigned int*)(0x423A8300UL))) +#define bM4_USART2_PR_PSC1 (*((volatile unsigned int*)(0x423A8304UL))) +#define bM4_USART3_SR_PE (*((volatile unsigned int*)(0x42420000UL))) +#define bM4_USART3_SR_FE (*((volatile unsigned int*)(0x42420004UL))) +#define bM4_USART3_SR_ORE (*((volatile unsigned int*)(0x4242000CUL))) +#define bM4_USART3_SR_RXNE (*((volatile unsigned int*)(0x42420014UL))) +#define bM4_USART3_SR_TC (*((volatile unsigned int*)(0x42420018UL))) +#define bM4_USART3_SR_TXE (*((volatile unsigned int*)(0x4242001CUL))) +#define bM4_USART3_SR_RTOF (*((volatile unsigned int*)(0x42420020UL))) +#define bM4_USART3_SR_MPB (*((volatile unsigned int*)(0x42420040UL))) +#define bM4_USART3_DR_TDR0 (*((volatile unsigned int*)(0x42420080UL))) +#define bM4_USART3_DR_TDR1 (*((volatile unsigned int*)(0x42420084UL))) +#define bM4_USART3_DR_TDR2 (*((volatile unsigned int*)(0x42420088UL))) +#define bM4_USART3_DR_TDR3 (*((volatile unsigned int*)(0x4242008CUL))) +#define bM4_USART3_DR_TDR4 (*((volatile unsigned int*)(0x42420090UL))) +#define bM4_USART3_DR_TDR5 (*((volatile unsigned int*)(0x42420094UL))) +#define bM4_USART3_DR_TDR6 (*((volatile unsigned int*)(0x42420098UL))) +#define bM4_USART3_DR_TDR7 (*((volatile unsigned int*)(0x4242009CUL))) +#define bM4_USART3_DR_TDR8 (*((volatile unsigned int*)(0x424200A0UL))) +#define bM4_USART3_DR_MPID (*((volatile unsigned int*)(0x424200A4UL))) +#define bM4_USART3_DR_RDR0 (*((volatile unsigned int*)(0x424200C0UL))) +#define bM4_USART3_DR_RDR1 (*((volatile unsigned int*)(0x424200C4UL))) +#define bM4_USART3_DR_RDR2 (*((volatile unsigned int*)(0x424200C8UL))) +#define bM4_USART3_DR_RDR3 (*((volatile unsigned int*)(0x424200CCUL))) +#define bM4_USART3_DR_RDR4 (*((volatile unsigned int*)(0x424200D0UL))) +#define bM4_USART3_DR_RDR5 (*((volatile unsigned int*)(0x424200D4UL))) +#define bM4_USART3_DR_RDR6 (*((volatile unsigned int*)(0x424200D8UL))) +#define bM4_USART3_DR_RDR7 (*((volatile unsigned int*)(0x424200DCUL))) +#define bM4_USART3_DR_RDR8 (*((volatile unsigned int*)(0x424200E0UL))) +#define bM4_USART3_BRR_DIV_FRACTION0 (*((volatile unsigned int*)(0x42420100UL))) +#define bM4_USART3_BRR_DIV_FRACTION1 (*((volatile unsigned int*)(0x42420104UL))) +#define bM4_USART3_BRR_DIV_FRACTION2 (*((volatile unsigned int*)(0x42420108UL))) +#define bM4_USART3_BRR_DIV_FRACTION3 (*((volatile unsigned int*)(0x4242010CUL))) +#define bM4_USART3_BRR_DIV_FRACTION4 (*((volatile unsigned int*)(0x42420110UL))) +#define bM4_USART3_BRR_DIV_FRACTION5 (*((volatile unsigned int*)(0x42420114UL))) +#define bM4_USART3_BRR_DIV_FRACTION6 (*((volatile unsigned int*)(0x42420118UL))) +#define bM4_USART3_BRR_DIV_INTEGER0 (*((volatile unsigned int*)(0x42420120UL))) +#define bM4_USART3_BRR_DIV_INTEGER1 (*((volatile unsigned int*)(0x42420124UL))) +#define bM4_USART3_BRR_DIV_INTEGER2 (*((volatile unsigned int*)(0x42420128UL))) +#define bM4_USART3_BRR_DIV_INTEGER3 (*((volatile unsigned int*)(0x4242012CUL))) +#define bM4_USART3_BRR_DIV_INTEGER4 (*((volatile unsigned int*)(0x42420130UL))) +#define bM4_USART3_BRR_DIV_INTEGER5 (*((volatile unsigned int*)(0x42420134UL))) +#define bM4_USART3_BRR_DIV_INTEGER6 (*((volatile unsigned int*)(0x42420138UL))) +#define bM4_USART3_BRR_DIV_INTEGER7 (*((volatile unsigned int*)(0x4242013CUL))) +#define bM4_USART3_CR1_RTOE (*((volatile unsigned int*)(0x42420180UL))) +#define bM4_USART3_CR1_RTOIE (*((volatile unsigned int*)(0x42420184UL))) +#define bM4_USART3_CR1_RE (*((volatile unsigned int*)(0x42420188UL))) +#define bM4_USART3_CR1_TE (*((volatile unsigned int*)(0x4242018CUL))) +#define bM4_USART3_CR1_SLME (*((volatile unsigned int*)(0x42420190UL))) +#define bM4_USART3_CR1_RIE (*((volatile unsigned int*)(0x42420194UL))) +#define bM4_USART3_CR1_TCIE (*((volatile unsigned int*)(0x42420198UL))) +#define bM4_USART3_CR1_TXEIE (*((volatile unsigned int*)(0x4242019CUL))) +#define bM4_USART3_CR1_PS (*((volatile unsigned int*)(0x424201A4UL))) +#define bM4_USART3_CR1_PCE (*((volatile unsigned int*)(0x424201A8UL))) +#define bM4_USART3_CR1_M (*((volatile unsigned int*)(0x424201B0UL))) +#define bM4_USART3_CR1_OVER8 (*((volatile unsigned int*)(0x424201BCUL))) +#define bM4_USART3_CR1_CPE (*((volatile unsigned int*)(0x424201C0UL))) +#define bM4_USART3_CR1_CFE (*((volatile unsigned int*)(0x424201C4UL))) +#define bM4_USART3_CR1_CORE (*((volatile unsigned int*)(0x424201CCUL))) +#define bM4_USART3_CR1_CRTOF (*((volatile unsigned int*)(0x424201D0UL))) +#define bM4_USART3_CR1_MS (*((volatile unsigned int*)(0x424201E0UL))) +#define bM4_USART3_CR1_ML (*((volatile unsigned int*)(0x424201F0UL))) +#define bM4_USART3_CR1_FBME (*((volatile unsigned int*)(0x424201F4UL))) +#define bM4_USART3_CR1_NFE (*((volatile unsigned int*)(0x424201F8UL))) +#define bM4_USART3_CR1_SBS (*((volatile unsigned int*)(0x424201FCUL))) +#define bM4_USART3_CR2_MPE (*((volatile unsigned int*)(0x42420200UL))) +#define bM4_USART3_CR2_CLKC0 (*((volatile unsigned int*)(0x4242022CUL))) +#define bM4_USART3_CR2_CLKC1 (*((volatile unsigned int*)(0x42420230UL))) +#define bM4_USART3_CR2_STOP (*((volatile unsigned int*)(0x42420234UL))) +#define bM4_USART3_CR3_SCEN (*((volatile unsigned int*)(0x42420294UL))) +#define bM4_USART3_CR3_CTSE (*((volatile unsigned int*)(0x424202A4UL))) +#define bM4_USART3_CR3_BCN0 (*((volatile unsigned int*)(0x424202D4UL))) +#define bM4_USART3_CR3_BCN1 (*((volatile unsigned int*)(0x424202D8UL))) +#define bM4_USART3_CR3_BCN2 (*((volatile unsigned int*)(0x424202DCUL))) +#define bM4_USART3_PR_PSC0 (*((volatile unsigned int*)(0x42420300UL))) +#define bM4_USART3_PR_PSC1 (*((volatile unsigned int*)(0x42420304UL))) +#define bM4_USART4_SR_PE (*((volatile unsigned int*)(0x42428000UL))) +#define bM4_USART4_SR_FE (*((volatile unsigned int*)(0x42428004UL))) +#define bM4_USART4_SR_ORE (*((volatile unsigned int*)(0x4242800CUL))) +#define bM4_USART4_SR_RXNE (*((volatile unsigned int*)(0x42428014UL))) +#define bM4_USART4_SR_TC (*((volatile unsigned int*)(0x42428018UL))) +#define bM4_USART4_SR_TXE (*((volatile unsigned int*)(0x4242801CUL))) +#define bM4_USART4_SR_RTOF (*((volatile unsigned int*)(0x42428020UL))) +#define bM4_USART4_SR_MPB (*((volatile unsigned int*)(0x42428040UL))) +#define bM4_USART4_DR_TDR0 (*((volatile unsigned int*)(0x42428080UL))) +#define bM4_USART4_DR_TDR1 (*((volatile unsigned int*)(0x42428084UL))) +#define bM4_USART4_DR_TDR2 (*((volatile unsigned int*)(0x42428088UL))) +#define bM4_USART4_DR_TDR3 (*((volatile unsigned int*)(0x4242808CUL))) +#define bM4_USART4_DR_TDR4 (*((volatile unsigned int*)(0x42428090UL))) +#define bM4_USART4_DR_TDR5 (*((volatile unsigned int*)(0x42428094UL))) +#define bM4_USART4_DR_TDR6 (*((volatile unsigned int*)(0x42428098UL))) +#define bM4_USART4_DR_TDR7 (*((volatile unsigned int*)(0x4242809CUL))) +#define bM4_USART4_DR_TDR8 (*((volatile unsigned int*)(0x424280A0UL))) +#define bM4_USART4_DR_MPID (*((volatile unsigned int*)(0x424280A4UL))) +#define bM4_USART4_DR_RDR0 (*((volatile unsigned int*)(0x424280C0UL))) +#define bM4_USART4_DR_RDR1 (*((volatile unsigned int*)(0x424280C4UL))) +#define bM4_USART4_DR_RDR2 (*((volatile unsigned int*)(0x424280C8UL))) +#define bM4_USART4_DR_RDR3 (*((volatile unsigned int*)(0x424280CCUL))) +#define bM4_USART4_DR_RDR4 (*((volatile unsigned int*)(0x424280D0UL))) +#define bM4_USART4_DR_RDR5 (*((volatile unsigned int*)(0x424280D4UL))) +#define bM4_USART4_DR_RDR6 (*((volatile unsigned int*)(0x424280D8UL))) +#define bM4_USART4_DR_RDR7 (*((volatile unsigned int*)(0x424280DCUL))) +#define bM4_USART4_DR_RDR8 (*((volatile unsigned int*)(0x424280E0UL))) +#define bM4_USART4_BRR_DIV_FRACTION0 (*((volatile unsigned int*)(0x42428100UL))) +#define bM4_USART4_BRR_DIV_FRACTION1 (*((volatile unsigned int*)(0x42428104UL))) +#define bM4_USART4_BRR_DIV_FRACTION2 (*((volatile unsigned int*)(0x42428108UL))) +#define bM4_USART4_BRR_DIV_FRACTION3 (*((volatile unsigned int*)(0x4242810CUL))) +#define bM4_USART4_BRR_DIV_FRACTION4 (*((volatile unsigned int*)(0x42428110UL))) +#define bM4_USART4_BRR_DIV_FRACTION5 (*((volatile unsigned int*)(0x42428114UL))) +#define bM4_USART4_BRR_DIV_FRACTION6 (*((volatile unsigned int*)(0x42428118UL))) +#define bM4_USART4_BRR_DIV_INTEGER0 (*((volatile unsigned int*)(0x42428120UL))) +#define bM4_USART4_BRR_DIV_INTEGER1 (*((volatile unsigned int*)(0x42428124UL))) +#define bM4_USART4_BRR_DIV_INTEGER2 (*((volatile unsigned int*)(0x42428128UL))) +#define bM4_USART4_BRR_DIV_INTEGER3 (*((volatile unsigned int*)(0x4242812CUL))) +#define bM4_USART4_BRR_DIV_INTEGER4 (*((volatile unsigned int*)(0x42428130UL))) +#define bM4_USART4_BRR_DIV_INTEGER5 (*((volatile unsigned int*)(0x42428134UL))) +#define bM4_USART4_BRR_DIV_INTEGER6 (*((volatile unsigned int*)(0x42428138UL))) +#define bM4_USART4_BRR_DIV_INTEGER7 (*((volatile unsigned int*)(0x4242813CUL))) +#define bM4_USART4_CR1_RTOE (*((volatile unsigned int*)(0x42428180UL))) +#define bM4_USART4_CR1_RTOIE (*((volatile unsigned int*)(0x42428184UL))) +#define bM4_USART4_CR1_RE (*((volatile unsigned int*)(0x42428188UL))) +#define bM4_USART4_CR1_TE (*((volatile unsigned int*)(0x4242818CUL))) +#define bM4_USART4_CR1_SLME (*((volatile unsigned int*)(0x42428190UL))) +#define bM4_USART4_CR1_RIE (*((volatile unsigned int*)(0x42428194UL))) +#define bM4_USART4_CR1_TCIE (*((volatile unsigned int*)(0x42428198UL))) +#define bM4_USART4_CR1_TXEIE (*((volatile unsigned int*)(0x4242819CUL))) +#define bM4_USART4_CR1_PS (*((volatile unsigned int*)(0x424281A4UL))) +#define bM4_USART4_CR1_PCE (*((volatile unsigned int*)(0x424281A8UL))) +#define bM4_USART4_CR1_M (*((volatile unsigned int*)(0x424281B0UL))) +#define bM4_USART4_CR1_OVER8 (*((volatile unsigned int*)(0x424281BCUL))) +#define bM4_USART4_CR1_CPE (*((volatile unsigned int*)(0x424281C0UL))) +#define bM4_USART4_CR1_CFE (*((volatile unsigned int*)(0x424281C4UL))) +#define bM4_USART4_CR1_CORE (*((volatile unsigned int*)(0x424281CCUL))) +#define bM4_USART4_CR1_CRTOF (*((volatile unsigned int*)(0x424281D0UL))) +#define bM4_USART4_CR1_MS (*((volatile unsigned int*)(0x424281E0UL))) +#define bM4_USART4_CR1_ML (*((volatile unsigned int*)(0x424281F0UL))) +#define bM4_USART4_CR1_FBME (*((volatile unsigned int*)(0x424281F4UL))) +#define bM4_USART4_CR1_NFE (*((volatile unsigned int*)(0x424281F8UL))) +#define bM4_USART4_CR1_SBS (*((volatile unsigned int*)(0x424281FCUL))) +#define bM4_USART4_CR2_MPE (*((volatile unsigned int*)(0x42428200UL))) +#define bM4_USART4_CR2_CLKC0 (*((volatile unsigned int*)(0x4242822CUL))) +#define bM4_USART4_CR2_CLKC1 (*((volatile unsigned int*)(0x42428230UL))) +#define bM4_USART4_CR2_STOP (*((volatile unsigned int*)(0x42428234UL))) +#define bM4_USART4_CR3_SCEN (*((volatile unsigned int*)(0x42428294UL))) +#define bM4_USART4_CR3_CTSE (*((volatile unsigned int*)(0x424282A4UL))) +#define bM4_USART4_CR3_BCN0 (*((volatile unsigned int*)(0x424282D4UL))) +#define bM4_USART4_CR3_BCN1 (*((volatile unsigned int*)(0x424282D8UL))) +#define bM4_USART4_CR3_BCN2 (*((volatile unsigned int*)(0x424282DCUL))) +#define bM4_USART4_PR_PSC0 (*((volatile unsigned int*)(0x42428300UL))) +#define bM4_USART4_PR_PSC1 (*((volatile unsigned int*)(0x42428304UL))) +#define bM4_USBFS_USBFS_GVBUSCFG_VBUSOVEN (*((volatile unsigned int*)(0x43800018UL))) +#define bM4_USBFS_USBFS_GVBUSCFG_VBUSVAL (*((volatile unsigned int*)(0x4380001CUL))) +#define bM4_USBFS_GAHBCFG_GINTMSK (*((volatile unsigned int*)(0x43800100UL))) +#define bM4_USBFS_GAHBCFG_HBSTLEN0 (*((volatile unsigned int*)(0x43800104UL))) +#define bM4_USBFS_GAHBCFG_HBSTLEN1 (*((volatile unsigned int*)(0x43800108UL))) +#define bM4_USBFS_GAHBCFG_HBSTLEN2 (*((volatile unsigned int*)(0x4380010CUL))) +#define bM4_USBFS_GAHBCFG_HBSTLEN3 (*((volatile unsigned int*)(0x43800110UL))) +#define bM4_USBFS_GAHBCFG_DMAEN (*((volatile unsigned int*)(0x43800114UL))) +#define bM4_USBFS_GAHBCFG_TXFELVL (*((volatile unsigned int*)(0x4380011CUL))) +#define bM4_USBFS_GAHBCFG_PTXFELVL (*((volatile unsigned int*)(0x43800120UL))) +#define bM4_USBFS_GUSBCFG_TOCAL0 (*((volatile unsigned int*)(0x43800180UL))) +#define bM4_USBFS_GUSBCFG_TOCAL1 (*((volatile unsigned int*)(0x43800184UL))) +#define bM4_USBFS_GUSBCFG_TOCAL2 (*((volatile unsigned int*)(0x43800188UL))) +#define bM4_USBFS_GUSBCFG_PHYSEL (*((volatile unsigned int*)(0x43800198UL))) +#define bM4_USBFS_GUSBCFG_TRDT0 (*((volatile unsigned int*)(0x438001A8UL))) +#define bM4_USBFS_GUSBCFG_TRDT1 (*((volatile unsigned int*)(0x438001ACUL))) +#define bM4_USBFS_GUSBCFG_TRDT2 (*((volatile unsigned int*)(0x438001B0UL))) +#define bM4_USBFS_GUSBCFG_TRDT3 (*((volatile unsigned int*)(0x438001B4UL))) +#define bM4_USBFS_GUSBCFG_FHMOD (*((volatile unsigned int*)(0x438001F4UL))) +#define bM4_USBFS_GUSBCFG_FDMOD (*((volatile unsigned int*)(0x438001F8UL))) +#define bM4_USBFS_GRSTCTL_CSRST (*((volatile unsigned int*)(0x43800200UL))) +#define bM4_USBFS_GRSTCTL_HSRST (*((volatile unsigned int*)(0x43800204UL))) +#define bM4_USBFS_GRSTCTL_FCRST (*((volatile unsigned int*)(0x43800208UL))) +#define bM4_USBFS_GRSTCTL_RXFFLSH (*((volatile unsigned int*)(0x43800210UL))) +#define bM4_USBFS_GRSTCTL_TXFFLSH (*((volatile unsigned int*)(0x43800214UL))) +#define bM4_USBFS_GRSTCTL_TXFNUM0 (*((volatile unsigned int*)(0x43800218UL))) +#define bM4_USBFS_GRSTCTL_TXFNUM1 (*((volatile unsigned int*)(0x4380021CUL))) +#define bM4_USBFS_GRSTCTL_TXFNUM2 (*((volatile unsigned int*)(0x43800220UL))) +#define bM4_USBFS_GRSTCTL_TXFNUM3 (*((volatile unsigned int*)(0x43800224UL))) +#define bM4_USBFS_GRSTCTL_TXFNUM4 (*((volatile unsigned int*)(0x43800228UL))) +#define bM4_USBFS_GRSTCTL_DMAREQ (*((volatile unsigned int*)(0x43800278UL))) +#define bM4_USBFS_GRSTCTL_AHBIDL (*((volatile unsigned int*)(0x4380027CUL))) +#define bM4_USBFS_GINTSTS_CMOD (*((volatile unsigned int*)(0x43800280UL))) +#define bM4_USBFS_GINTSTS_MMIS (*((volatile unsigned int*)(0x43800284UL))) +#define bM4_USBFS_GINTSTS_SOF (*((volatile unsigned int*)(0x4380028CUL))) +#define bM4_USBFS_GINTSTS_RXFNE (*((volatile unsigned int*)(0x43800290UL))) +#define bM4_USBFS_GINTSTS_NPTXFE (*((volatile unsigned int*)(0x43800294UL))) +#define bM4_USBFS_GINTSTS_GINAKEFF (*((volatile unsigned int*)(0x43800298UL))) +#define bM4_USBFS_GINTSTS_GONAKEFF (*((volatile unsigned int*)(0x4380029CUL))) +#define bM4_USBFS_GINTSTS_ESUSP (*((volatile unsigned int*)(0x438002A8UL))) +#define bM4_USBFS_GINTSTS_USBSUSP (*((volatile unsigned int*)(0x438002ACUL))) +#define bM4_USBFS_GINTSTS_USBRST (*((volatile unsigned int*)(0x438002B0UL))) +#define bM4_USBFS_GINTSTS_ENUMDNE (*((volatile unsigned int*)(0x438002B4UL))) +#define bM4_USBFS_GINTSTS_ISOODRP (*((volatile unsigned int*)(0x438002B8UL))) +#define bM4_USBFS_GINTSTS_EOPF (*((volatile unsigned int*)(0x438002BCUL))) +#define bM4_USBFS_GINTSTS_IEPINT (*((volatile unsigned int*)(0x438002C8UL))) +#define bM4_USBFS_GINTSTS_OEPINT (*((volatile unsigned int*)(0x438002CCUL))) +#define bM4_USBFS_GINTSTS_IISOIXFR (*((volatile unsigned int*)(0x438002D0UL))) +#define bM4_USBFS_GINTSTS_IPXFR_INCOMPISOOUT (*((volatile unsigned int*)(0x438002D4UL))) +#define bM4_USBFS_GINTSTS_DATAFSUSP (*((volatile unsigned int*)(0x438002D8UL))) +#define bM4_USBFS_GINTSTS_HPRTINT (*((volatile unsigned int*)(0x438002E0UL))) +#define bM4_USBFS_GINTSTS_HCINT (*((volatile unsigned int*)(0x438002E4UL))) +#define bM4_USBFS_GINTSTS_PTXFE (*((volatile unsigned int*)(0x438002E8UL))) +#define bM4_USBFS_GINTSTS_CIDSCHG (*((volatile unsigned int*)(0x438002F0UL))) +#define bM4_USBFS_GINTSTS_DISCINT (*((volatile unsigned int*)(0x438002F4UL))) +#define bM4_USBFS_GINTSTS_VBUSVINT (*((volatile unsigned int*)(0x438002F8UL))) +#define bM4_USBFS_GINTSTS_WKUINT (*((volatile unsigned int*)(0x438002FCUL))) +#define bM4_USBFS_GINTMSK_MMISM (*((volatile unsigned int*)(0x43800304UL))) +#define bM4_USBFS_GINTMSK_SOFM (*((volatile unsigned int*)(0x4380030CUL))) +#define bM4_USBFS_GINTMSK_RXFNEM (*((volatile unsigned int*)(0x43800310UL))) +#define bM4_USBFS_GINTMSK_NPTXFEM (*((volatile unsigned int*)(0x43800314UL))) +#define bM4_USBFS_GINTMSK_GINAKEFFM (*((volatile unsigned int*)(0x43800318UL))) +#define bM4_USBFS_GINTMSK_GONAKEFFM (*((volatile unsigned int*)(0x4380031CUL))) +#define bM4_USBFS_GINTMSK_ESUSPM (*((volatile unsigned int*)(0x43800328UL))) +#define bM4_USBFS_GINTMSK_USBSUSPM (*((volatile unsigned int*)(0x4380032CUL))) +#define bM4_USBFS_GINTMSK_USBRSTM (*((volatile unsigned int*)(0x43800330UL))) +#define bM4_USBFS_GINTMSK_ENUMDNEM (*((volatile unsigned int*)(0x43800334UL))) +#define bM4_USBFS_GINTMSK_ISOODRPM (*((volatile unsigned int*)(0x43800338UL))) +#define bM4_USBFS_GINTMSK_EOPFM (*((volatile unsigned int*)(0x4380033CUL))) +#define bM4_USBFS_GINTMSK_IEPIM (*((volatile unsigned int*)(0x43800348UL))) +#define bM4_USBFS_GINTMSK_OEPIM (*((volatile unsigned int*)(0x4380034CUL))) +#define bM4_USBFS_GINTMSK_IISOIXFRM (*((volatile unsigned int*)(0x43800350UL))) +#define bM4_USBFS_GINTMSK_IPXFRM_INCOMPISOOUTM (*((volatile unsigned int*)(0x43800354UL))) +#define bM4_USBFS_GINTMSK_DATAFSUSPM (*((volatile unsigned int*)(0x43800358UL))) +#define bM4_USBFS_GINTMSK_HPRTIM (*((volatile unsigned int*)(0x43800360UL))) +#define bM4_USBFS_GINTMSK_HCIM (*((volatile unsigned int*)(0x43800364UL))) +#define bM4_USBFS_GINTMSK_PTXFEM (*((volatile unsigned int*)(0x43800368UL))) +#define bM4_USBFS_GINTMSK_CIDSCHGM (*((volatile unsigned int*)(0x43800370UL))) +#define bM4_USBFS_GINTMSK_DISCIM (*((volatile unsigned int*)(0x43800374UL))) +#define bM4_USBFS_GINTMSK_VBUSVIM (*((volatile unsigned int*)(0x43800378UL))) +#define bM4_USBFS_GINTMSK_WKUIM (*((volatile unsigned int*)(0x4380037CUL))) +#define bM4_USBFS_GRXSTSR_CHNUM_EPNUM0 (*((volatile unsigned int*)(0x43800380UL))) +#define bM4_USBFS_GRXSTSR_CHNUM_EPNUM1 (*((volatile unsigned int*)(0x43800384UL))) +#define bM4_USBFS_GRXSTSR_CHNUM_EPNUM2 (*((volatile unsigned int*)(0x43800388UL))) +#define bM4_USBFS_GRXSTSR_CHNUM_EPNUM3 (*((volatile unsigned int*)(0x4380038CUL))) +#define bM4_USBFS_GRXSTSR_BCNT0 (*((volatile unsigned int*)(0x43800390UL))) +#define bM4_USBFS_GRXSTSR_BCNT1 (*((volatile unsigned int*)(0x43800394UL))) +#define bM4_USBFS_GRXSTSR_BCNT2 (*((volatile unsigned int*)(0x43800398UL))) +#define bM4_USBFS_GRXSTSR_BCNT3 (*((volatile unsigned int*)(0x4380039CUL))) +#define bM4_USBFS_GRXSTSR_BCNT4 (*((volatile unsigned int*)(0x438003A0UL))) +#define bM4_USBFS_GRXSTSR_BCNT5 (*((volatile unsigned int*)(0x438003A4UL))) +#define bM4_USBFS_GRXSTSR_BCNT6 (*((volatile unsigned int*)(0x438003A8UL))) +#define bM4_USBFS_GRXSTSR_BCNT7 (*((volatile unsigned int*)(0x438003ACUL))) +#define bM4_USBFS_GRXSTSR_BCNT8 (*((volatile unsigned int*)(0x438003B0UL))) +#define bM4_USBFS_GRXSTSR_BCNT9 (*((volatile unsigned int*)(0x438003B4UL))) +#define bM4_USBFS_GRXSTSR_BCNT10 (*((volatile unsigned int*)(0x438003B8UL))) +#define bM4_USBFS_GRXSTSR_DPID0 (*((volatile unsigned int*)(0x438003BCUL))) +#define bM4_USBFS_GRXSTSR_DPID1 (*((volatile unsigned int*)(0x438003C0UL))) +#define bM4_USBFS_GRXSTSR_PKTSTS0 (*((volatile unsigned int*)(0x438003C4UL))) +#define bM4_USBFS_GRXSTSR_PKTSTS1 (*((volatile unsigned int*)(0x438003C8UL))) +#define bM4_USBFS_GRXSTSR_PKTSTS2 (*((volatile unsigned int*)(0x438003CCUL))) +#define bM4_USBFS_GRXSTSR_PKTSTS3 (*((volatile unsigned int*)(0x438003D0UL))) +#define bM4_USBFS_GRXSTSP_CHNUM_EPNUM0 (*((volatile unsigned int*)(0x43800400UL))) +#define bM4_USBFS_GRXSTSP_CHNUM_EPNUM1 (*((volatile unsigned int*)(0x43800404UL))) +#define bM4_USBFS_GRXSTSP_CHNUM_EPNUM2 (*((volatile unsigned int*)(0x43800408UL))) +#define bM4_USBFS_GRXSTSP_CHNUM_EPNUM3 (*((volatile unsigned int*)(0x4380040CUL))) +#define bM4_USBFS_GRXSTSP_BCNT0 (*((volatile unsigned int*)(0x43800410UL))) +#define bM4_USBFS_GRXSTSP_BCNT1 (*((volatile unsigned int*)(0x43800414UL))) +#define bM4_USBFS_GRXSTSP_BCNT2 (*((volatile unsigned int*)(0x43800418UL))) +#define bM4_USBFS_GRXSTSP_BCNT3 (*((volatile unsigned int*)(0x4380041CUL))) +#define bM4_USBFS_GRXSTSP_BCNT4 (*((volatile unsigned int*)(0x43800420UL))) +#define bM4_USBFS_GRXSTSP_BCNT5 (*((volatile unsigned int*)(0x43800424UL))) +#define bM4_USBFS_GRXSTSP_BCNT6 (*((volatile unsigned int*)(0x43800428UL))) +#define bM4_USBFS_GRXSTSP_BCNT7 (*((volatile unsigned int*)(0x4380042CUL))) +#define bM4_USBFS_GRXSTSP_BCNT8 (*((volatile unsigned int*)(0x43800430UL))) +#define bM4_USBFS_GRXSTSP_BCNT9 (*((volatile unsigned int*)(0x43800434UL))) +#define bM4_USBFS_GRXSTSP_BCNT10 (*((volatile unsigned int*)(0x43800438UL))) +#define bM4_USBFS_GRXSTSP_DPID0 (*((volatile unsigned int*)(0x4380043CUL))) +#define bM4_USBFS_GRXSTSP_DPID1 (*((volatile unsigned int*)(0x43800440UL))) +#define bM4_USBFS_GRXSTSP_PKTSTS0 (*((volatile unsigned int*)(0x43800444UL))) +#define bM4_USBFS_GRXSTSP_PKTSTS1 (*((volatile unsigned int*)(0x43800448UL))) +#define bM4_USBFS_GRXSTSP_PKTSTS2 (*((volatile unsigned int*)(0x4380044CUL))) +#define bM4_USBFS_GRXSTSP_PKTSTS3 (*((volatile unsigned int*)(0x43800450UL))) +#define bM4_USBFS_GRXFSIZ_RXFD0 (*((volatile unsigned int*)(0x43800480UL))) +#define bM4_USBFS_GRXFSIZ_RXFD1 (*((volatile unsigned int*)(0x43800484UL))) +#define bM4_USBFS_GRXFSIZ_RXFD2 (*((volatile unsigned int*)(0x43800488UL))) +#define bM4_USBFS_GRXFSIZ_RXFD3 (*((volatile unsigned int*)(0x4380048CUL))) +#define bM4_USBFS_GRXFSIZ_RXFD4 (*((volatile unsigned int*)(0x43800490UL))) +#define bM4_USBFS_GRXFSIZ_RXFD5 (*((volatile unsigned int*)(0x43800494UL))) +#define bM4_USBFS_GRXFSIZ_RXFD6 (*((volatile unsigned int*)(0x43800498UL))) +#define bM4_USBFS_GRXFSIZ_RXFD7 (*((volatile unsigned int*)(0x4380049CUL))) +#define bM4_USBFS_GRXFSIZ_RXFD8 (*((volatile unsigned int*)(0x438004A0UL))) +#define bM4_USBFS_GRXFSIZ_RXFD9 (*((volatile unsigned int*)(0x438004A4UL))) +#define bM4_USBFS_GRXFSIZ_RXFD10 (*((volatile unsigned int*)(0x438004A8UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA0 (*((volatile unsigned int*)(0x43800500UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA1 (*((volatile unsigned int*)(0x43800504UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA2 (*((volatile unsigned int*)(0x43800508UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA3 (*((volatile unsigned int*)(0x4380050CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA4 (*((volatile unsigned int*)(0x43800510UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA5 (*((volatile unsigned int*)(0x43800514UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA6 (*((volatile unsigned int*)(0x43800518UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA7 (*((volatile unsigned int*)(0x4380051CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA8 (*((volatile unsigned int*)(0x43800520UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA9 (*((volatile unsigned int*)(0x43800524UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA10 (*((volatile unsigned int*)(0x43800528UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA11 (*((volatile unsigned int*)(0x4380052CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA12 (*((volatile unsigned int*)(0x43800530UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA13 (*((volatile unsigned int*)(0x43800534UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA14 (*((volatile unsigned int*)(0x43800538UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFSA15 (*((volatile unsigned int*)(0x4380053CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD0 (*((volatile unsigned int*)(0x43800540UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD1 (*((volatile unsigned int*)(0x43800544UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD2 (*((volatile unsigned int*)(0x43800548UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD3 (*((volatile unsigned int*)(0x4380054CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD4 (*((volatile unsigned int*)(0x43800550UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD5 (*((volatile unsigned int*)(0x43800554UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD6 (*((volatile unsigned int*)(0x43800558UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD7 (*((volatile unsigned int*)(0x4380055CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD8 (*((volatile unsigned int*)(0x43800560UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD9 (*((volatile unsigned int*)(0x43800564UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD10 (*((volatile unsigned int*)(0x43800568UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD11 (*((volatile unsigned int*)(0x4380056CUL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD12 (*((volatile unsigned int*)(0x43800570UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD13 (*((volatile unsigned int*)(0x43800574UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD14 (*((volatile unsigned int*)(0x43800578UL))) +#define bM4_USBFS_HNPTXFSIZ_NPTXFD15 (*((volatile unsigned int*)(0x4380057CUL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV0 (*((volatile unsigned int*)(0x43800580UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV1 (*((volatile unsigned int*)(0x43800584UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV2 (*((volatile unsigned int*)(0x43800588UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV3 (*((volatile unsigned int*)(0x4380058CUL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV4 (*((volatile unsigned int*)(0x43800590UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV5 (*((volatile unsigned int*)(0x43800594UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV6 (*((volatile unsigned int*)(0x43800598UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV7 (*((volatile unsigned int*)(0x4380059CUL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV8 (*((volatile unsigned int*)(0x438005A0UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV9 (*((volatile unsigned int*)(0x438005A4UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV10 (*((volatile unsigned int*)(0x438005A8UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV11 (*((volatile unsigned int*)(0x438005ACUL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV12 (*((volatile unsigned int*)(0x438005B0UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV13 (*((volatile unsigned int*)(0x438005B4UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV14 (*((volatile unsigned int*)(0x438005B8UL))) +#define bM4_USBFS_HNPTXSTS_NPTXFSAV15 (*((volatile unsigned int*)(0x438005BCUL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV0 (*((volatile unsigned int*)(0x438005C0UL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV1 (*((volatile unsigned int*)(0x438005C4UL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV2 (*((volatile unsigned int*)(0x438005C8UL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV3 (*((volatile unsigned int*)(0x438005CCUL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV4 (*((volatile unsigned int*)(0x438005D0UL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV5 (*((volatile unsigned int*)(0x438005D4UL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV6 (*((volatile unsigned int*)(0x438005D8UL))) +#define bM4_USBFS_HNPTXSTS_NPTQXSAV7 (*((volatile unsigned int*)(0x438005DCUL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP0 (*((volatile unsigned int*)(0x438005E0UL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP1 (*((volatile unsigned int*)(0x438005E4UL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP2 (*((volatile unsigned int*)(0x438005E8UL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP3 (*((volatile unsigned int*)(0x438005ECUL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP4 (*((volatile unsigned int*)(0x438005F0UL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP5 (*((volatile unsigned int*)(0x438005F4UL))) +#define bM4_USBFS_HNPTXSTS_NPTXQTOP6 (*((volatile unsigned int*)(0x438005F8UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA0 (*((volatile unsigned int*)(0x43802000UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA1 (*((volatile unsigned int*)(0x43802004UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA2 (*((volatile unsigned int*)(0x43802008UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA3 (*((volatile unsigned int*)(0x4380200CUL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA4 (*((volatile unsigned int*)(0x43802010UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA5 (*((volatile unsigned int*)(0x43802014UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA6 (*((volatile unsigned int*)(0x43802018UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA7 (*((volatile unsigned int*)(0x4380201CUL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA8 (*((volatile unsigned int*)(0x43802020UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA9 (*((volatile unsigned int*)(0x43802024UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA10 (*((volatile unsigned int*)(0x43802028UL))) +#define bM4_USBFS_HPTXFSIZ_PTXSA11 (*((volatile unsigned int*)(0x4380202CUL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD0 (*((volatile unsigned int*)(0x43802040UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD1 (*((volatile unsigned int*)(0x43802044UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD2 (*((volatile unsigned int*)(0x43802048UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD3 (*((volatile unsigned int*)(0x4380204CUL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD4 (*((volatile unsigned int*)(0x43802050UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD5 (*((volatile unsigned int*)(0x43802054UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD6 (*((volatile unsigned int*)(0x43802058UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD7 (*((volatile unsigned int*)(0x4380205CUL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD8 (*((volatile unsigned int*)(0x43802060UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD9 (*((volatile unsigned int*)(0x43802064UL))) +#define bM4_USBFS_HPTXFSIZ_PTXFD10 (*((volatile unsigned int*)(0x43802068UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA0 (*((volatile unsigned int*)(0x43802080UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA1 (*((volatile unsigned int*)(0x43802084UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA2 (*((volatile unsigned int*)(0x43802088UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA3 (*((volatile unsigned int*)(0x4380208CUL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA4 (*((volatile unsigned int*)(0x43802090UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA5 (*((volatile unsigned int*)(0x43802094UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA6 (*((volatile unsigned int*)(0x43802098UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA7 (*((volatile unsigned int*)(0x4380209CUL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA8 (*((volatile unsigned int*)(0x438020A0UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA9 (*((volatile unsigned int*)(0x438020A4UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA10 (*((volatile unsigned int*)(0x438020A8UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXSA11 (*((volatile unsigned int*)(0x438020ACUL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD0 (*((volatile unsigned int*)(0x438020C0UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD1 (*((volatile unsigned int*)(0x438020C4UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD2 (*((volatile unsigned int*)(0x438020C8UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD3 (*((volatile unsigned int*)(0x438020CCUL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD4 (*((volatile unsigned int*)(0x438020D0UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD5 (*((volatile unsigned int*)(0x438020D4UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD6 (*((volatile unsigned int*)(0x438020D8UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD7 (*((volatile unsigned int*)(0x438020DCUL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD8 (*((volatile unsigned int*)(0x438020E0UL))) +#define bM4_USBFS_DIEPTXF1_INEPTXFD9 (*((volatile unsigned int*)(0x438020E4UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA0 (*((volatile unsigned int*)(0x43802100UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA1 (*((volatile unsigned int*)(0x43802104UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA2 (*((volatile unsigned int*)(0x43802108UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA3 (*((volatile unsigned int*)(0x4380210CUL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA4 (*((volatile unsigned int*)(0x43802110UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA5 (*((volatile unsigned int*)(0x43802114UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA6 (*((volatile unsigned int*)(0x43802118UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA7 (*((volatile unsigned int*)(0x4380211CUL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA8 (*((volatile unsigned int*)(0x43802120UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA9 (*((volatile unsigned int*)(0x43802124UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA10 (*((volatile unsigned int*)(0x43802128UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXSA11 (*((volatile unsigned int*)(0x4380212CUL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD0 (*((volatile unsigned int*)(0x43802140UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD1 (*((volatile unsigned int*)(0x43802144UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD2 (*((volatile unsigned int*)(0x43802148UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD3 (*((volatile unsigned int*)(0x4380214CUL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD4 (*((volatile unsigned int*)(0x43802150UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD5 (*((volatile unsigned int*)(0x43802154UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD6 (*((volatile unsigned int*)(0x43802158UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD7 (*((volatile unsigned int*)(0x4380215CUL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD8 (*((volatile unsigned int*)(0x43802160UL))) +#define bM4_USBFS_DIEPTXF2_INEPTXFD9 (*((volatile unsigned int*)(0x43802164UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA0 (*((volatile unsigned int*)(0x43802180UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA1 (*((volatile unsigned int*)(0x43802184UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA2 (*((volatile unsigned int*)(0x43802188UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA3 (*((volatile unsigned int*)(0x4380218CUL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA4 (*((volatile unsigned int*)(0x43802190UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA5 (*((volatile unsigned int*)(0x43802194UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA6 (*((volatile unsigned int*)(0x43802198UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA7 (*((volatile unsigned int*)(0x4380219CUL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA8 (*((volatile unsigned int*)(0x438021A0UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA9 (*((volatile unsigned int*)(0x438021A4UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA10 (*((volatile unsigned int*)(0x438021A8UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXSA11 (*((volatile unsigned int*)(0x438021ACUL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD0 (*((volatile unsigned int*)(0x438021C0UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD1 (*((volatile unsigned int*)(0x438021C4UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD2 (*((volatile unsigned int*)(0x438021C8UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD3 (*((volatile unsigned int*)(0x438021CCUL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD4 (*((volatile unsigned int*)(0x438021D0UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD5 (*((volatile unsigned int*)(0x438021D4UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD6 (*((volatile unsigned int*)(0x438021D8UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD7 (*((volatile unsigned int*)(0x438021DCUL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD8 (*((volatile unsigned int*)(0x438021E0UL))) +#define bM4_USBFS_DIEPTXF3_INEPTXFD9 (*((volatile unsigned int*)(0x438021E4UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA0 (*((volatile unsigned int*)(0x43802200UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA1 (*((volatile unsigned int*)(0x43802204UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA2 (*((volatile unsigned int*)(0x43802208UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA3 (*((volatile unsigned int*)(0x4380220CUL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA4 (*((volatile unsigned int*)(0x43802210UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA5 (*((volatile unsigned int*)(0x43802214UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA6 (*((volatile unsigned int*)(0x43802218UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA7 (*((volatile unsigned int*)(0x4380221CUL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA8 (*((volatile unsigned int*)(0x43802220UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA9 (*((volatile unsigned int*)(0x43802224UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA10 (*((volatile unsigned int*)(0x43802228UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXSA11 (*((volatile unsigned int*)(0x4380222CUL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD0 (*((volatile unsigned int*)(0x43802240UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD1 (*((volatile unsigned int*)(0x43802244UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD2 (*((volatile unsigned int*)(0x43802248UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD3 (*((volatile unsigned int*)(0x4380224CUL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD4 (*((volatile unsigned int*)(0x43802250UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD5 (*((volatile unsigned int*)(0x43802254UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD6 (*((volatile unsigned int*)(0x43802258UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD7 (*((volatile unsigned int*)(0x4380225CUL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD8 (*((volatile unsigned int*)(0x43802260UL))) +#define bM4_USBFS_DIEPTXF4_INEPTXFD9 (*((volatile unsigned int*)(0x43802264UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA0 (*((volatile unsigned int*)(0x43802280UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA1 (*((volatile unsigned int*)(0x43802284UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA2 (*((volatile unsigned int*)(0x43802288UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA3 (*((volatile unsigned int*)(0x4380228CUL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA4 (*((volatile unsigned int*)(0x43802290UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA5 (*((volatile unsigned int*)(0x43802294UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA6 (*((volatile unsigned int*)(0x43802298UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA7 (*((volatile unsigned int*)(0x4380229CUL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA8 (*((volatile unsigned int*)(0x438022A0UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA9 (*((volatile unsigned int*)(0x438022A4UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA10 (*((volatile unsigned int*)(0x438022A8UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXSA11 (*((volatile unsigned int*)(0x438022ACUL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD0 (*((volatile unsigned int*)(0x438022C0UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD1 (*((volatile unsigned int*)(0x438022C4UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD2 (*((volatile unsigned int*)(0x438022C8UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD3 (*((volatile unsigned int*)(0x438022CCUL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD4 (*((volatile unsigned int*)(0x438022D0UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD5 (*((volatile unsigned int*)(0x438022D4UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD6 (*((volatile unsigned int*)(0x438022D8UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD7 (*((volatile unsigned int*)(0x438022DCUL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD8 (*((volatile unsigned int*)(0x438022E0UL))) +#define bM4_USBFS_DIEPTXF5_INEPTXFD9 (*((volatile unsigned int*)(0x438022E4UL))) +#define bM4_USBFS_HCFG_FSLSPCS0 (*((volatile unsigned int*)(0x43808000UL))) +#define bM4_USBFS_HCFG_FSLSPCS1 (*((volatile unsigned int*)(0x43808004UL))) +#define bM4_USBFS_HCFG_FSLSS (*((volatile unsigned int*)(0x43808008UL))) +#define bM4_USBFS_HFIR_FRIVL0 (*((volatile unsigned int*)(0x43808080UL))) +#define bM4_USBFS_HFIR_FRIVL1 (*((volatile unsigned int*)(0x43808084UL))) +#define bM4_USBFS_HFIR_FRIVL2 (*((volatile unsigned int*)(0x43808088UL))) +#define bM4_USBFS_HFIR_FRIVL3 (*((volatile unsigned int*)(0x4380808CUL))) +#define bM4_USBFS_HFIR_FRIVL4 (*((volatile unsigned int*)(0x43808090UL))) +#define bM4_USBFS_HFIR_FRIVL5 (*((volatile unsigned int*)(0x43808094UL))) +#define bM4_USBFS_HFIR_FRIVL6 (*((volatile unsigned int*)(0x43808098UL))) +#define bM4_USBFS_HFIR_FRIVL7 (*((volatile unsigned int*)(0x4380809CUL))) +#define bM4_USBFS_HFIR_FRIVL8 (*((volatile unsigned int*)(0x438080A0UL))) +#define bM4_USBFS_HFIR_FRIVL9 (*((volatile unsigned int*)(0x438080A4UL))) +#define bM4_USBFS_HFIR_FRIVL10 (*((volatile unsigned int*)(0x438080A8UL))) +#define bM4_USBFS_HFIR_FRIVL11 (*((volatile unsigned int*)(0x438080ACUL))) +#define bM4_USBFS_HFIR_FRIVL12 (*((volatile unsigned int*)(0x438080B0UL))) +#define bM4_USBFS_HFIR_FRIVL13 (*((volatile unsigned int*)(0x438080B4UL))) +#define bM4_USBFS_HFIR_FRIVL14 (*((volatile unsigned int*)(0x438080B8UL))) +#define bM4_USBFS_HFIR_FRIVL15 (*((volatile unsigned int*)(0x438080BCUL))) +#define bM4_USBFS_HFNUM_FRNUM0 (*((volatile unsigned int*)(0x43808100UL))) +#define bM4_USBFS_HFNUM_FRNUM1 (*((volatile unsigned int*)(0x43808104UL))) +#define bM4_USBFS_HFNUM_FRNUM2 (*((volatile unsigned int*)(0x43808108UL))) +#define bM4_USBFS_HFNUM_FRNUM3 (*((volatile unsigned int*)(0x4380810CUL))) +#define bM4_USBFS_HFNUM_FRNUM4 (*((volatile unsigned int*)(0x43808110UL))) +#define bM4_USBFS_HFNUM_FRNUM5 (*((volatile unsigned int*)(0x43808114UL))) +#define bM4_USBFS_HFNUM_FRNUM6 (*((volatile unsigned int*)(0x43808118UL))) +#define bM4_USBFS_HFNUM_FRNUM7 (*((volatile unsigned int*)(0x4380811CUL))) +#define bM4_USBFS_HFNUM_FRNUM8 (*((volatile unsigned int*)(0x43808120UL))) +#define bM4_USBFS_HFNUM_FRNUM9 (*((volatile unsigned int*)(0x43808124UL))) +#define bM4_USBFS_HFNUM_FRNUM10 (*((volatile unsigned int*)(0x43808128UL))) +#define bM4_USBFS_HFNUM_FRNUM11 (*((volatile unsigned int*)(0x4380812CUL))) +#define bM4_USBFS_HFNUM_FRNUM12 (*((volatile unsigned int*)(0x43808130UL))) +#define bM4_USBFS_HFNUM_FRNUM13 (*((volatile unsigned int*)(0x43808134UL))) +#define bM4_USBFS_HFNUM_FRNUM14 (*((volatile unsigned int*)(0x43808138UL))) +#define bM4_USBFS_HFNUM_FRNUM15 (*((volatile unsigned int*)(0x4380813CUL))) +#define bM4_USBFS_HFNUM_FTREM0 (*((volatile unsigned int*)(0x43808140UL))) +#define bM4_USBFS_HFNUM_FTREM1 (*((volatile unsigned int*)(0x43808144UL))) +#define bM4_USBFS_HFNUM_FTREM2 (*((volatile unsigned int*)(0x43808148UL))) +#define bM4_USBFS_HFNUM_FTREM3 (*((volatile unsigned int*)(0x4380814CUL))) +#define bM4_USBFS_HFNUM_FTREM4 (*((volatile unsigned int*)(0x43808150UL))) +#define bM4_USBFS_HFNUM_FTREM5 (*((volatile unsigned int*)(0x43808154UL))) +#define bM4_USBFS_HFNUM_FTREM6 (*((volatile unsigned int*)(0x43808158UL))) +#define bM4_USBFS_HFNUM_FTREM7 (*((volatile unsigned int*)(0x4380815CUL))) +#define bM4_USBFS_HFNUM_FTREM8 (*((volatile unsigned int*)(0x43808160UL))) +#define bM4_USBFS_HFNUM_FTREM9 (*((volatile unsigned int*)(0x43808164UL))) +#define bM4_USBFS_HFNUM_FTREM10 (*((volatile unsigned int*)(0x43808168UL))) +#define bM4_USBFS_HFNUM_FTREM11 (*((volatile unsigned int*)(0x4380816CUL))) +#define bM4_USBFS_HFNUM_FTREM12 (*((volatile unsigned int*)(0x43808170UL))) +#define bM4_USBFS_HFNUM_FTREM13 (*((volatile unsigned int*)(0x43808174UL))) +#define bM4_USBFS_HFNUM_FTREM14 (*((volatile unsigned int*)(0x43808178UL))) +#define bM4_USBFS_HFNUM_FTREM15 (*((volatile unsigned int*)(0x4380817CUL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL0 (*((volatile unsigned int*)(0x43808200UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL1 (*((volatile unsigned int*)(0x43808204UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL2 (*((volatile unsigned int*)(0x43808208UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL3 (*((volatile unsigned int*)(0x4380820CUL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL4 (*((volatile unsigned int*)(0x43808210UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL5 (*((volatile unsigned int*)(0x43808214UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL6 (*((volatile unsigned int*)(0x43808218UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL7 (*((volatile unsigned int*)(0x4380821CUL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL8 (*((volatile unsigned int*)(0x43808220UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL9 (*((volatile unsigned int*)(0x43808224UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL10 (*((volatile unsigned int*)(0x43808228UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL11 (*((volatile unsigned int*)(0x4380822CUL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL12 (*((volatile unsigned int*)(0x43808230UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL13 (*((volatile unsigned int*)(0x43808234UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL14 (*((volatile unsigned int*)(0x43808238UL))) +#define bM4_USBFS_HPTXSTS_PTXFSAVL15 (*((volatile unsigned int*)(0x4380823CUL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV0 (*((volatile unsigned int*)(0x43808240UL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV1 (*((volatile unsigned int*)(0x43808244UL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV2 (*((volatile unsigned int*)(0x43808248UL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV3 (*((volatile unsigned int*)(0x4380824CUL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV4 (*((volatile unsigned int*)(0x43808250UL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV5 (*((volatile unsigned int*)(0x43808254UL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV6 (*((volatile unsigned int*)(0x43808258UL))) +#define bM4_USBFS_HPTXSTS_PTXQSAV7 (*((volatile unsigned int*)(0x4380825CUL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP0 (*((volatile unsigned int*)(0x43808260UL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP1 (*((volatile unsigned int*)(0x43808264UL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP2 (*((volatile unsigned int*)(0x43808268UL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP3 (*((volatile unsigned int*)(0x4380826CUL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP4 (*((volatile unsigned int*)(0x43808270UL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP5 (*((volatile unsigned int*)(0x43808274UL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP6 (*((volatile unsigned int*)(0x43808278UL))) +#define bM4_USBFS_HPTXSTS_PTXQTOP7 (*((volatile unsigned int*)(0x4380827CUL))) +#define bM4_USBFS_HAINT_HAINT0 (*((volatile unsigned int*)(0x43808280UL))) +#define bM4_USBFS_HAINT_HAINT1 (*((volatile unsigned int*)(0x43808284UL))) +#define bM4_USBFS_HAINT_HAINT2 (*((volatile unsigned int*)(0x43808288UL))) +#define bM4_USBFS_HAINT_HAINT3 (*((volatile unsigned int*)(0x4380828CUL))) +#define bM4_USBFS_HAINT_HAINT4 (*((volatile unsigned int*)(0x43808290UL))) +#define bM4_USBFS_HAINT_HAINT5 (*((volatile unsigned int*)(0x43808294UL))) +#define bM4_USBFS_HAINT_HAINT6 (*((volatile unsigned int*)(0x43808298UL))) +#define bM4_USBFS_HAINT_HAINT7 (*((volatile unsigned int*)(0x4380829CUL))) +#define bM4_USBFS_HAINT_HAINT8 (*((volatile unsigned int*)(0x438082A0UL))) +#define bM4_USBFS_HAINT_HAINT9 (*((volatile unsigned int*)(0x438082A4UL))) +#define bM4_USBFS_HAINT_HAINT10 (*((volatile unsigned int*)(0x438082A8UL))) +#define bM4_USBFS_HAINT_HAINT11 (*((volatile unsigned int*)(0x438082ACUL))) +#define bM4_USBFS_HAINTMSK_HAINTM0 (*((volatile unsigned int*)(0x43808300UL))) +#define bM4_USBFS_HAINTMSK_HAINTM1 (*((volatile unsigned int*)(0x43808304UL))) +#define bM4_USBFS_HAINTMSK_HAINTM2 (*((volatile unsigned int*)(0x43808308UL))) +#define bM4_USBFS_HAINTMSK_HAINTM3 (*((volatile unsigned int*)(0x4380830CUL))) +#define bM4_USBFS_HAINTMSK_HAINTM4 (*((volatile unsigned int*)(0x43808310UL))) +#define bM4_USBFS_HAINTMSK_HAINTM5 (*((volatile unsigned int*)(0x43808314UL))) +#define bM4_USBFS_HAINTMSK_HAINTM6 (*((volatile unsigned int*)(0x43808318UL))) +#define bM4_USBFS_HAINTMSK_HAINTM7 (*((volatile unsigned int*)(0x4380831CUL))) +#define bM4_USBFS_HAINTMSK_HAINTM8 (*((volatile unsigned int*)(0x43808320UL))) +#define bM4_USBFS_HAINTMSK_HAINTM9 (*((volatile unsigned int*)(0x43808324UL))) +#define bM4_USBFS_HAINTMSK_HAINTM10 (*((volatile unsigned int*)(0x43808328UL))) +#define bM4_USBFS_HAINTMSK_HAINTM11 (*((volatile unsigned int*)(0x4380832CUL))) +#define bM4_USBFS_HPRT_PCSTS (*((volatile unsigned int*)(0x43808800UL))) +#define bM4_USBFS_HPRT_PCDET (*((volatile unsigned int*)(0x43808804UL))) +#define bM4_USBFS_HPRT_PENA (*((volatile unsigned int*)(0x43808808UL))) +#define bM4_USBFS_HPRT_PENCHNG (*((volatile unsigned int*)(0x4380880CUL))) +#define bM4_USBFS_HPRT_PRES (*((volatile unsigned int*)(0x43808818UL))) +#define bM4_USBFS_HPRT_PSUSP (*((volatile unsigned int*)(0x4380881CUL))) +#define bM4_USBFS_HPRT_PRST (*((volatile unsigned int*)(0x43808820UL))) +#define bM4_USBFS_HPRT_PLSTS0 (*((volatile unsigned int*)(0x43808828UL))) +#define bM4_USBFS_HPRT_PLSTS1 (*((volatile unsigned int*)(0x4380882CUL))) +#define bM4_USBFS_HPRT_PWPR (*((volatile unsigned int*)(0x43808830UL))) +#define bM4_USBFS_HPRT_PSPD0 (*((volatile unsigned int*)(0x43808844UL))) +#define bM4_USBFS_HPRT_PSPD1 (*((volatile unsigned int*)(0x43808848UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ0 (*((volatile unsigned int*)(0x4380A000UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ1 (*((volatile unsigned int*)(0x4380A004UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ2 (*((volatile unsigned int*)(0x4380A008UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ3 (*((volatile unsigned int*)(0x4380A00CUL))) +#define bM4_USBFS_HCCHAR0_MPSIZ4 (*((volatile unsigned int*)(0x4380A010UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ5 (*((volatile unsigned int*)(0x4380A014UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ6 (*((volatile unsigned int*)(0x4380A018UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ7 (*((volatile unsigned int*)(0x4380A01CUL))) +#define bM4_USBFS_HCCHAR0_MPSIZ8 (*((volatile unsigned int*)(0x4380A020UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ9 (*((volatile unsigned int*)(0x4380A024UL))) +#define bM4_USBFS_HCCHAR0_MPSIZ10 (*((volatile unsigned int*)(0x4380A028UL))) +#define bM4_USBFS_HCCHAR0_EPNUM0 (*((volatile unsigned int*)(0x4380A02CUL))) +#define bM4_USBFS_HCCHAR0_EPNUM1 (*((volatile unsigned int*)(0x4380A030UL))) +#define bM4_USBFS_HCCHAR0_EPNUM2 (*((volatile unsigned int*)(0x4380A034UL))) +#define bM4_USBFS_HCCHAR0_EPNUM3 (*((volatile unsigned int*)(0x4380A038UL))) +#define bM4_USBFS_HCCHAR0_EPDIR (*((volatile unsigned int*)(0x4380A03CUL))) +#define bM4_USBFS_HCCHAR0_LSDEV (*((volatile unsigned int*)(0x4380A044UL))) +#define bM4_USBFS_HCCHAR0_EPTYP0 (*((volatile unsigned int*)(0x4380A048UL))) +#define bM4_USBFS_HCCHAR0_EPTYP1 (*((volatile unsigned int*)(0x4380A04CUL))) +#define bM4_USBFS_HCCHAR0_DAD0 (*((volatile unsigned int*)(0x4380A058UL))) +#define bM4_USBFS_HCCHAR0_DAD1 (*((volatile unsigned int*)(0x4380A05CUL))) +#define bM4_USBFS_HCCHAR0_DAD2 (*((volatile unsigned int*)(0x4380A060UL))) +#define bM4_USBFS_HCCHAR0_DAD3 (*((volatile unsigned int*)(0x4380A064UL))) +#define bM4_USBFS_HCCHAR0_DAD4 (*((volatile unsigned int*)(0x4380A068UL))) +#define bM4_USBFS_HCCHAR0_DAD5 (*((volatile unsigned int*)(0x4380A06CUL))) +#define bM4_USBFS_HCCHAR0_DAD6 (*((volatile unsigned int*)(0x4380A070UL))) +#define bM4_USBFS_HCCHAR0_ODDFRM (*((volatile unsigned int*)(0x4380A074UL))) +#define bM4_USBFS_HCCHAR0_CHDIS (*((volatile unsigned int*)(0x4380A078UL))) +#define bM4_USBFS_HCCHAR0_CHENA (*((volatile unsigned int*)(0x4380A07CUL))) +#define bM4_USBFS_HCINT0_XFRC (*((volatile unsigned int*)(0x4380A100UL))) +#define bM4_USBFS_HCINT0_CHH (*((volatile unsigned int*)(0x4380A104UL))) +#define bM4_USBFS_HCINT0_STALL (*((volatile unsigned int*)(0x4380A10CUL))) +#define bM4_USBFS_HCINT0_NAK (*((volatile unsigned int*)(0x4380A110UL))) +#define bM4_USBFS_HCINT0_ACK (*((volatile unsigned int*)(0x4380A114UL))) +#define bM4_USBFS_HCINT0_TXERR (*((volatile unsigned int*)(0x4380A11CUL))) +#define bM4_USBFS_HCINT0_BBERR (*((volatile unsigned int*)(0x4380A120UL))) +#define bM4_USBFS_HCINT0_FRMOR (*((volatile unsigned int*)(0x4380A124UL))) +#define bM4_USBFS_HCINT0_DTERR (*((volatile unsigned int*)(0x4380A128UL))) +#define bM4_USBFS_HCINTMSK0_XFRCM (*((volatile unsigned int*)(0x4380A180UL))) +#define bM4_USBFS_HCINTMSK0_CHHM (*((volatile unsigned int*)(0x4380A184UL))) +#define bM4_USBFS_HCINTMSK0_STALLM (*((volatile unsigned int*)(0x4380A18CUL))) +#define bM4_USBFS_HCINTMSK0_NAKM (*((volatile unsigned int*)(0x4380A190UL))) +#define bM4_USBFS_HCINTMSK0_ACKM (*((volatile unsigned int*)(0x4380A194UL))) +#define bM4_USBFS_HCINTMSK0_TXERRM (*((volatile unsigned int*)(0x4380A19CUL))) +#define bM4_USBFS_HCINTMSK0_BBERRM (*((volatile unsigned int*)(0x4380A1A0UL))) +#define bM4_USBFS_HCINTMSK0_FRMORM (*((volatile unsigned int*)(0x4380A1A4UL))) +#define bM4_USBFS_HCINTMSK0_DTERRM (*((volatile unsigned int*)(0x4380A1A8UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ0 (*((volatile unsigned int*)(0x4380A200UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ1 (*((volatile unsigned int*)(0x4380A204UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ2 (*((volatile unsigned int*)(0x4380A208UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ3 (*((volatile unsigned int*)(0x4380A20CUL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ4 (*((volatile unsigned int*)(0x4380A210UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ5 (*((volatile unsigned int*)(0x4380A214UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ6 (*((volatile unsigned int*)(0x4380A218UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ7 (*((volatile unsigned int*)(0x4380A21CUL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ8 (*((volatile unsigned int*)(0x4380A220UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ9 (*((volatile unsigned int*)(0x4380A224UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ10 (*((volatile unsigned int*)(0x4380A228UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ11 (*((volatile unsigned int*)(0x4380A22CUL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ12 (*((volatile unsigned int*)(0x4380A230UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ13 (*((volatile unsigned int*)(0x4380A234UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ14 (*((volatile unsigned int*)(0x4380A238UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ15 (*((volatile unsigned int*)(0x4380A23CUL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ16 (*((volatile unsigned int*)(0x4380A240UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ17 (*((volatile unsigned int*)(0x4380A244UL))) +#define bM4_USBFS_HCTSIZ0_XFRSIZ18 (*((volatile unsigned int*)(0x4380A248UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT0 (*((volatile unsigned int*)(0x4380A24CUL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT1 (*((volatile unsigned int*)(0x4380A250UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT2 (*((volatile unsigned int*)(0x4380A254UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT3 (*((volatile unsigned int*)(0x4380A258UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT4 (*((volatile unsigned int*)(0x4380A25CUL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT5 (*((volatile unsigned int*)(0x4380A260UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT6 (*((volatile unsigned int*)(0x4380A264UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT7 (*((volatile unsigned int*)(0x4380A268UL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT8 (*((volatile unsigned int*)(0x4380A26CUL))) +#define bM4_USBFS_HCTSIZ0_PKTCNT9 (*((volatile unsigned int*)(0x4380A270UL))) +#define bM4_USBFS_HCTSIZ0_DPID0 (*((volatile unsigned int*)(0x4380A274UL))) +#define bM4_USBFS_HCTSIZ0_DPID1 (*((volatile unsigned int*)(0x4380A278UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ0 (*((volatile unsigned int*)(0x4380A400UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ1 (*((volatile unsigned int*)(0x4380A404UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ2 (*((volatile unsigned int*)(0x4380A408UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ3 (*((volatile unsigned int*)(0x4380A40CUL))) +#define bM4_USBFS_HCCHAR1_MPSIZ4 (*((volatile unsigned int*)(0x4380A410UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ5 (*((volatile unsigned int*)(0x4380A414UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ6 (*((volatile unsigned int*)(0x4380A418UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ7 (*((volatile unsigned int*)(0x4380A41CUL))) +#define bM4_USBFS_HCCHAR1_MPSIZ8 (*((volatile unsigned int*)(0x4380A420UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ9 (*((volatile unsigned int*)(0x4380A424UL))) +#define bM4_USBFS_HCCHAR1_MPSIZ10 (*((volatile unsigned int*)(0x4380A428UL))) +#define bM4_USBFS_HCCHAR1_EPNUM0 (*((volatile unsigned int*)(0x4380A42CUL))) +#define bM4_USBFS_HCCHAR1_EPNUM1 (*((volatile unsigned int*)(0x4380A430UL))) +#define bM4_USBFS_HCCHAR1_EPNUM2 (*((volatile unsigned int*)(0x4380A434UL))) +#define bM4_USBFS_HCCHAR1_EPNUM3 (*((volatile unsigned int*)(0x4380A438UL))) +#define bM4_USBFS_HCCHAR1_EPDIR (*((volatile unsigned int*)(0x4380A43CUL))) +#define bM4_USBFS_HCCHAR1_LSDEV (*((volatile unsigned int*)(0x4380A444UL))) +#define bM4_USBFS_HCCHAR1_EPTYP0 (*((volatile unsigned int*)(0x4380A448UL))) +#define bM4_USBFS_HCCHAR1_EPTYP1 (*((volatile unsigned int*)(0x4380A44CUL))) +#define bM4_USBFS_HCCHAR1_DAD0 (*((volatile unsigned int*)(0x4380A458UL))) +#define bM4_USBFS_HCCHAR1_DAD1 (*((volatile unsigned int*)(0x4380A45CUL))) +#define bM4_USBFS_HCCHAR1_DAD2 (*((volatile unsigned int*)(0x4380A460UL))) +#define bM4_USBFS_HCCHAR1_DAD3 (*((volatile unsigned int*)(0x4380A464UL))) +#define bM4_USBFS_HCCHAR1_DAD4 (*((volatile unsigned int*)(0x4380A468UL))) +#define bM4_USBFS_HCCHAR1_DAD5 (*((volatile unsigned int*)(0x4380A46CUL))) +#define bM4_USBFS_HCCHAR1_DAD6 (*((volatile unsigned int*)(0x4380A470UL))) +#define bM4_USBFS_HCCHAR1_ODDFRM (*((volatile unsigned int*)(0x4380A474UL))) +#define bM4_USBFS_HCCHAR1_CHDIS (*((volatile unsigned int*)(0x4380A478UL))) +#define bM4_USBFS_HCCHAR1_CHENA (*((volatile unsigned int*)(0x4380A47CUL))) +#define bM4_USBFS_HCINT1_XFRC (*((volatile unsigned int*)(0x4380A500UL))) +#define bM4_USBFS_HCINT1_CHH (*((volatile unsigned int*)(0x4380A504UL))) +#define bM4_USBFS_HCINT1_STALL (*((volatile unsigned int*)(0x4380A50CUL))) +#define bM4_USBFS_HCINT1_NAK (*((volatile unsigned int*)(0x4380A510UL))) +#define bM4_USBFS_HCINT1_ACK (*((volatile unsigned int*)(0x4380A514UL))) +#define bM4_USBFS_HCINT1_TXERR (*((volatile unsigned int*)(0x4380A51CUL))) +#define bM4_USBFS_HCINT1_BBERR (*((volatile unsigned int*)(0x4380A520UL))) +#define bM4_USBFS_HCINT1_FRMOR (*((volatile unsigned int*)(0x4380A524UL))) +#define bM4_USBFS_HCINT1_DTERR (*((volatile unsigned int*)(0x4380A528UL))) +#define bM4_USBFS_HCINTMSK1_XFRCM (*((volatile unsigned int*)(0x4380A580UL))) +#define bM4_USBFS_HCINTMSK1_CHHM (*((volatile unsigned int*)(0x4380A584UL))) +#define bM4_USBFS_HCINTMSK1_STALLM (*((volatile unsigned int*)(0x4380A58CUL))) +#define bM4_USBFS_HCINTMSK1_NAKM (*((volatile unsigned int*)(0x4380A590UL))) +#define bM4_USBFS_HCINTMSK1_ACKM (*((volatile unsigned int*)(0x4380A594UL))) +#define bM4_USBFS_HCINTMSK1_TXERRM (*((volatile unsigned int*)(0x4380A59CUL))) +#define bM4_USBFS_HCINTMSK1_BBERRM (*((volatile unsigned int*)(0x4380A5A0UL))) +#define bM4_USBFS_HCINTMSK1_FRMORM (*((volatile unsigned int*)(0x4380A5A4UL))) +#define bM4_USBFS_HCINTMSK1_DTERRM (*((volatile unsigned int*)(0x4380A5A8UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ0 (*((volatile unsigned int*)(0x4380A600UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ1 (*((volatile unsigned int*)(0x4380A604UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ2 (*((volatile unsigned int*)(0x4380A608UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ3 (*((volatile unsigned int*)(0x4380A60CUL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ4 (*((volatile unsigned int*)(0x4380A610UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ5 (*((volatile unsigned int*)(0x4380A614UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ6 (*((volatile unsigned int*)(0x4380A618UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ7 (*((volatile unsigned int*)(0x4380A61CUL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ8 (*((volatile unsigned int*)(0x4380A620UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ9 (*((volatile unsigned int*)(0x4380A624UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ10 (*((volatile unsigned int*)(0x4380A628UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ11 (*((volatile unsigned int*)(0x4380A62CUL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ12 (*((volatile unsigned int*)(0x4380A630UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ13 (*((volatile unsigned int*)(0x4380A634UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ14 (*((volatile unsigned int*)(0x4380A638UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ15 (*((volatile unsigned int*)(0x4380A63CUL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ16 (*((volatile unsigned int*)(0x4380A640UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ17 (*((volatile unsigned int*)(0x4380A644UL))) +#define bM4_USBFS_HCTSIZ1_XFRSIZ18 (*((volatile unsigned int*)(0x4380A648UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT0 (*((volatile unsigned int*)(0x4380A64CUL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT1 (*((volatile unsigned int*)(0x4380A650UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT2 (*((volatile unsigned int*)(0x4380A654UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT3 (*((volatile unsigned int*)(0x4380A658UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT4 (*((volatile unsigned int*)(0x4380A65CUL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT5 (*((volatile unsigned int*)(0x4380A660UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT6 (*((volatile unsigned int*)(0x4380A664UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT7 (*((volatile unsigned int*)(0x4380A668UL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT8 (*((volatile unsigned int*)(0x4380A66CUL))) +#define bM4_USBFS_HCTSIZ1_PKTCNT9 (*((volatile unsigned int*)(0x4380A670UL))) +#define bM4_USBFS_HCTSIZ1_DPID0 (*((volatile unsigned int*)(0x4380A674UL))) +#define bM4_USBFS_HCTSIZ1_DPID1 (*((volatile unsigned int*)(0x4380A678UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ0 (*((volatile unsigned int*)(0x4380A800UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ1 (*((volatile unsigned int*)(0x4380A804UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ2 (*((volatile unsigned int*)(0x4380A808UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ3 (*((volatile unsigned int*)(0x4380A80CUL))) +#define bM4_USBFS_HCCHAR2_MPSIZ4 (*((volatile unsigned int*)(0x4380A810UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ5 (*((volatile unsigned int*)(0x4380A814UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ6 (*((volatile unsigned int*)(0x4380A818UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ7 (*((volatile unsigned int*)(0x4380A81CUL))) +#define bM4_USBFS_HCCHAR2_MPSIZ8 (*((volatile unsigned int*)(0x4380A820UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ9 (*((volatile unsigned int*)(0x4380A824UL))) +#define bM4_USBFS_HCCHAR2_MPSIZ10 (*((volatile unsigned int*)(0x4380A828UL))) +#define bM4_USBFS_HCCHAR2_EPNUM0 (*((volatile unsigned int*)(0x4380A82CUL))) +#define bM4_USBFS_HCCHAR2_EPNUM1 (*((volatile unsigned int*)(0x4380A830UL))) +#define bM4_USBFS_HCCHAR2_EPNUM2 (*((volatile unsigned int*)(0x4380A834UL))) +#define bM4_USBFS_HCCHAR2_EPNUM3 (*((volatile unsigned int*)(0x4380A838UL))) +#define bM4_USBFS_HCCHAR2_EPDIR (*((volatile unsigned int*)(0x4380A83CUL))) +#define bM4_USBFS_HCCHAR2_LSDEV (*((volatile unsigned int*)(0x4380A844UL))) +#define bM4_USBFS_HCCHAR2_EPTYP0 (*((volatile unsigned int*)(0x4380A848UL))) +#define bM4_USBFS_HCCHAR2_EPTYP1 (*((volatile unsigned int*)(0x4380A84CUL))) +#define bM4_USBFS_HCCHAR2_DAD0 (*((volatile unsigned int*)(0x4380A858UL))) +#define bM4_USBFS_HCCHAR2_DAD1 (*((volatile unsigned int*)(0x4380A85CUL))) +#define bM4_USBFS_HCCHAR2_DAD2 (*((volatile unsigned int*)(0x4380A860UL))) +#define bM4_USBFS_HCCHAR2_DAD3 (*((volatile unsigned int*)(0x4380A864UL))) +#define bM4_USBFS_HCCHAR2_DAD4 (*((volatile unsigned int*)(0x4380A868UL))) +#define bM4_USBFS_HCCHAR2_DAD5 (*((volatile unsigned int*)(0x4380A86CUL))) +#define bM4_USBFS_HCCHAR2_DAD6 (*((volatile unsigned int*)(0x4380A870UL))) +#define bM4_USBFS_HCCHAR2_ODDFRM (*((volatile unsigned int*)(0x4380A874UL))) +#define bM4_USBFS_HCCHAR2_CHDIS (*((volatile unsigned int*)(0x4380A878UL))) +#define bM4_USBFS_HCCHAR2_CHENA (*((volatile unsigned int*)(0x4380A87CUL))) +#define bM4_USBFS_HCINT2_XFRC (*((volatile unsigned int*)(0x4380A900UL))) +#define bM4_USBFS_HCINT2_CHH (*((volatile unsigned int*)(0x4380A904UL))) +#define bM4_USBFS_HCINT2_STALL (*((volatile unsigned int*)(0x4380A90CUL))) +#define bM4_USBFS_HCINT2_NAK (*((volatile unsigned int*)(0x4380A910UL))) +#define bM4_USBFS_HCINT2_ACK (*((volatile unsigned int*)(0x4380A914UL))) +#define bM4_USBFS_HCINT2_TXERR (*((volatile unsigned int*)(0x4380A91CUL))) +#define bM4_USBFS_HCINT2_BBERR (*((volatile unsigned int*)(0x4380A920UL))) +#define bM4_USBFS_HCINT2_FRMOR (*((volatile unsigned int*)(0x4380A924UL))) +#define bM4_USBFS_HCINT2_DTERR (*((volatile unsigned int*)(0x4380A928UL))) +#define bM4_USBFS_HCINTMSK2_XFRCM (*((volatile unsigned int*)(0x4380A980UL))) +#define bM4_USBFS_HCINTMSK2_CHHM (*((volatile unsigned int*)(0x4380A984UL))) +#define bM4_USBFS_HCINTMSK2_STALLM (*((volatile unsigned int*)(0x4380A98CUL))) +#define bM4_USBFS_HCINTMSK2_NAKM (*((volatile unsigned int*)(0x4380A990UL))) +#define bM4_USBFS_HCINTMSK2_ACKM (*((volatile unsigned int*)(0x4380A994UL))) +#define bM4_USBFS_HCINTMSK2_TXERRM (*((volatile unsigned int*)(0x4380A99CUL))) +#define bM4_USBFS_HCINTMSK2_BBERRM (*((volatile unsigned int*)(0x4380A9A0UL))) +#define bM4_USBFS_HCINTMSK2_FRMORM (*((volatile unsigned int*)(0x4380A9A4UL))) +#define bM4_USBFS_HCINTMSK2_DTERRM (*((volatile unsigned int*)(0x4380A9A8UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ0 (*((volatile unsigned int*)(0x4380AA00UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ1 (*((volatile unsigned int*)(0x4380AA04UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ2 (*((volatile unsigned int*)(0x4380AA08UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ3 (*((volatile unsigned int*)(0x4380AA0CUL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ4 (*((volatile unsigned int*)(0x4380AA10UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ5 (*((volatile unsigned int*)(0x4380AA14UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ6 (*((volatile unsigned int*)(0x4380AA18UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ7 (*((volatile unsigned int*)(0x4380AA1CUL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ8 (*((volatile unsigned int*)(0x4380AA20UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ9 (*((volatile unsigned int*)(0x4380AA24UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ10 (*((volatile unsigned int*)(0x4380AA28UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ11 (*((volatile unsigned int*)(0x4380AA2CUL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ12 (*((volatile unsigned int*)(0x4380AA30UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ13 (*((volatile unsigned int*)(0x4380AA34UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ14 (*((volatile unsigned int*)(0x4380AA38UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ15 (*((volatile unsigned int*)(0x4380AA3CUL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ16 (*((volatile unsigned int*)(0x4380AA40UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ17 (*((volatile unsigned int*)(0x4380AA44UL))) +#define bM4_USBFS_HCTSIZ2_XFRSIZ18 (*((volatile unsigned int*)(0x4380AA48UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT0 (*((volatile unsigned int*)(0x4380AA4CUL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT1 (*((volatile unsigned int*)(0x4380AA50UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT2 (*((volatile unsigned int*)(0x4380AA54UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT3 (*((volatile unsigned int*)(0x4380AA58UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT4 (*((volatile unsigned int*)(0x4380AA5CUL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT5 (*((volatile unsigned int*)(0x4380AA60UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT6 (*((volatile unsigned int*)(0x4380AA64UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT7 (*((volatile unsigned int*)(0x4380AA68UL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT8 (*((volatile unsigned int*)(0x4380AA6CUL))) +#define bM4_USBFS_HCTSIZ2_PKTCNT9 (*((volatile unsigned int*)(0x4380AA70UL))) +#define bM4_USBFS_HCTSIZ2_DPID0 (*((volatile unsigned int*)(0x4380AA74UL))) +#define bM4_USBFS_HCTSIZ2_DPID1 (*((volatile unsigned int*)(0x4380AA78UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ0 (*((volatile unsigned int*)(0x4380AC00UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ1 (*((volatile unsigned int*)(0x4380AC04UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ2 (*((volatile unsigned int*)(0x4380AC08UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ3 (*((volatile unsigned int*)(0x4380AC0CUL))) +#define bM4_USBFS_HCCHAR3_MPSIZ4 (*((volatile unsigned int*)(0x4380AC10UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ5 (*((volatile unsigned int*)(0x4380AC14UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ6 (*((volatile unsigned int*)(0x4380AC18UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ7 (*((volatile unsigned int*)(0x4380AC1CUL))) +#define bM4_USBFS_HCCHAR3_MPSIZ8 (*((volatile unsigned int*)(0x4380AC20UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ9 (*((volatile unsigned int*)(0x4380AC24UL))) +#define bM4_USBFS_HCCHAR3_MPSIZ10 (*((volatile unsigned int*)(0x4380AC28UL))) +#define bM4_USBFS_HCCHAR3_EPNUM0 (*((volatile unsigned int*)(0x4380AC2CUL))) +#define bM4_USBFS_HCCHAR3_EPNUM1 (*((volatile unsigned int*)(0x4380AC30UL))) +#define bM4_USBFS_HCCHAR3_EPNUM2 (*((volatile unsigned int*)(0x4380AC34UL))) +#define bM4_USBFS_HCCHAR3_EPNUM3 (*((volatile unsigned int*)(0x4380AC38UL))) +#define bM4_USBFS_HCCHAR3_EPDIR (*((volatile unsigned int*)(0x4380AC3CUL))) +#define bM4_USBFS_HCCHAR3_LSDEV (*((volatile unsigned int*)(0x4380AC44UL))) +#define bM4_USBFS_HCCHAR3_EPTYP0 (*((volatile unsigned int*)(0x4380AC48UL))) +#define bM4_USBFS_HCCHAR3_EPTYP1 (*((volatile unsigned int*)(0x4380AC4CUL))) +#define bM4_USBFS_HCCHAR3_DAD0 (*((volatile unsigned int*)(0x4380AC58UL))) +#define bM4_USBFS_HCCHAR3_DAD1 (*((volatile unsigned int*)(0x4380AC5CUL))) +#define bM4_USBFS_HCCHAR3_DAD2 (*((volatile unsigned int*)(0x4380AC60UL))) +#define bM4_USBFS_HCCHAR3_DAD3 (*((volatile unsigned int*)(0x4380AC64UL))) +#define bM4_USBFS_HCCHAR3_DAD4 (*((volatile unsigned int*)(0x4380AC68UL))) +#define bM4_USBFS_HCCHAR3_DAD5 (*((volatile unsigned int*)(0x4380AC6CUL))) +#define bM4_USBFS_HCCHAR3_DAD6 (*((volatile unsigned int*)(0x4380AC70UL))) +#define bM4_USBFS_HCCHAR3_ODDFRM (*((volatile unsigned int*)(0x4380AC74UL))) +#define bM4_USBFS_HCCHAR3_CHDIS (*((volatile unsigned int*)(0x4380AC78UL))) +#define bM4_USBFS_HCCHAR3_CHENA (*((volatile unsigned int*)(0x4380AC7CUL))) +#define bM4_USBFS_HCINT3_XFRC (*((volatile unsigned int*)(0x4380AD00UL))) +#define bM4_USBFS_HCINT3_CHH (*((volatile unsigned int*)(0x4380AD04UL))) +#define bM4_USBFS_HCINT3_STALL (*((volatile unsigned int*)(0x4380AD0CUL))) +#define bM4_USBFS_HCINT3_NAK (*((volatile unsigned int*)(0x4380AD10UL))) +#define bM4_USBFS_HCINT3_ACK (*((volatile unsigned int*)(0x4380AD14UL))) +#define bM4_USBFS_HCINT3_TXERR (*((volatile unsigned int*)(0x4380AD1CUL))) +#define bM4_USBFS_HCINT3_BBERR (*((volatile unsigned int*)(0x4380AD20UL))) +#define bM4_USBFS_HCINT3_FRMOR (*((volatile unsigned int*)(0x4380AD24UL))) +#define bM4_USBFS_HCINT3_DTERR (*((volatile unsigned int*)(0x4380AD28UL))) +#define bM4_USBFS_HCINTMSK3_XFRCM (*((volatile unsigned int*)(0x4380AD80UL))) +#define bM4_USBFS_HCINTMSK3_CHHM (*((volatile unsigned int*)(0x4380AD84UL))) +#define bM4_USBFS_HCINTMSK3_STALLM (*((volatile unsigned int*)(0x4380AD8CUL))) +#define bM4_USBFS_HCINTMSK3_NAKM (*((volatile unsigned int*)(0x4380AD90UL))) +#define bM4_USBFS_HCINTMSK3_ACKM (*((volatile unsigned int*)(0x4380AD94UL))) +#define bM4_USBFS_HCINTMSK3_TXERRM (*((volatile unsigned int*)(0x4380AD9CUL))) +#define bM4_USBFS_HCINTMSK3_BBERRM (*((volatile unsigned int*)(0x4380ADA0UL))) +#define bM4_USBFS_HCINTMSK3_FRMORM (*((volatile unsigned int*)(0x4380ADA4UL))) +#define bM4_USBFS_HCINTMSK3_DTERRM (*((volatile unsigned int*)(0x4380ADA8UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ0 (*((volatile unsigned int*)(0x4380AE00UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ1 (*((volatile unsigned int*)(0x4380AE04UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ2 (*((volatile unsigned int*)(0x4380AE08UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ3 (*((volatile unsigned int*)(0x4380AE0CUL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ4 (*((volatile unsigned int*)(0x4380AE10UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ5 (*((volatile unsigned int*)(0x4380AE14UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ6 (*((volatile unsigned int*)(0x4380AE18UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ7 (*((volatile unsigned int*)(0x4380AE1CUL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ8 (*((volatile unsigned int*)(0x4380AE20UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ9 (*((volatile unsigned int*)(0x4380AE24UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ10 (*((volatile unsigned int*)(0x4380AE28UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ11 (*((volatile unsigned int*)(0x4380AE2CUL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ12 (*((volatile unsigned int*)(0x4380AE30UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ13 (*((volatile unsigned int*)(0x4380AE34UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ14 (*((volatile unsigned int*)(0x4380AE38UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ15 (*((volatile unsigned int*)(0x4380AE3CUL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ16 (*((volatile unsigned int*)(0x4380AE40UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ17 (*((volatile unsigned int*)(0x4380AE44UL))) +#define bM4_USBFS_HCTSIZ3_XFRSIZ18 (*((volatile unsigned int*)(0x4380AE48UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT0 (*((volatile unsigned int*)(0x4380AE4CUL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT1 (*((volatile unsigned int*)(0x4380AE50UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT2 (*((volatile unsigned int*)(0x4380AE54UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT3 (*((volatile unsigned int*)(0x4380AE58UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT4 (*((volatile unsigned int*)(0x4380AE5CUL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT5 (*((volatile unsigned int*)(0x4380AE60UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT6 (*((volatile unsigned int*)(0x4380AE64UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT7 (*((volatile unsigned int*)(0x4380AE68UL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT8 (*((volatile unsigned int*)(0x4380AE6CUL))) +#define bM4_USBFS_HCTSIZ3_PKTCNT9 (*((volatile unsigned int*)(0x4380AE70UL))) +#define bM4_USBFS_HCTSIZ3_DPID0 (*((volatile unsigned int*)(0x4380AE74UL))) +#define bM4_USBFS_HCTSIZ3_DPID1 (*((volatile unsigned int*)(0x4380AE78UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ0 (*((volatile unsigned int*)(0x4380B000UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ1 (*((volatile unsigned int*)(0x4380B004UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ2 (*((volatile unsigned int*)(0x4380B008UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ3 (*((volatile unsigned int*)(0x4380B00CUL))) +#define bM4_USBFS_HCCHAR4_MPSIZ4 (*((volatile unsigned int*)(0x4380B010UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ5 (*((volatile unsigned int*)(0x4380B014UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ6 (*((volatile unsigned int*)(0x4380B018UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ7 (*((volatile unsigned int*)(0x4380B01CUL))) +#define bM4_USBFS_HCCHAR4_MPSIZ8 (*((volatile unsigned int*)(0x4380B020UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ9 (*((volatile unsigned int*)(0x4380B024UL))) +#define bM4_USBFS_HCCHAR4_MPSIZ10 (*((volatile unsigned int*)(0x4380B028UL))) +#define bM4_USBFS_HCCHAR4_EPNUM0 (*((volatile unsigned int*)(0x4380B02CUL))) +#define bM4_USBFS_HCCHAR4_EPNUM1 (*((volatile unsigned int*)(0x4380B030UL))) +#define bM4_USBFS_HCCHAR4_EPNUM2 (*((volatile unsigned int*)(0x4380B034UL))) +#define bM4_USBFS_HCCHAR4_EPNUM3 (*((volatile unsigned int*)(0x4380B038UL))) +#define bM4_USBFS_HCCHAR4_EPDIR (*((volatile unsigned int*)(0x4380B03CUL))) +#define bM4_USBFS_HCCHAR4_LSDEV (*((volatile unsigned int*)(0x4380B044UL))) +#define bM4_USBFS_HCCHAR4_EPTYP0 (*((volatile unsigned int*)(0x4380B048UL))) +#define bM4_USBFS_HCCHAR4_EPTYP1 (*((volatile unsigned int*)(0x4380B04CUL))) +#define bM4_USBFS_HCCHAR4_DAD0 (*((volatile unsigned int*)(0x4380B058UL))) +#define bM4_USBFS_HCCHAR4_DAD1 (*((volatile unsigned int*)(0x4380B05CUL))) +#define bM4_USBFS_HCCHAR4_DAD2 (*((volatile unsigned int*)(0x4380B060UL))) +#define bM4_USBFS_HCCHAR4_DAD3 (*((volatile unsigned int*)(0x4380B064UL))) +#define bM4_USBFS_HCCHAR4_DAD4 (*((volatile unsigned int*)(0x4380B068UL))) +#define bM4_USBFS_HCCHAR4_DAD5 (*((volatile unsigned int*)(0x4380B06CUL))) +#define bM4_USBFS_HCCHAR4_DAD6 (*((volatile unsigned int*)(0x4380B070UL))) +#define bM4_USBFS_HCCHAR4_ODDFRM (*((volatile unsigned int*)(0x4380B074UL))) +#define bM4_USBFS_HCCHAR4_CHDIS (*((volatile unsigned int*)(0x4380B078UL))) +#define bM4_USBFS_HCCHAR4_CHENA (*((volatile unsigned int*)(0x4380B07CUL))) +#define bM4_USBFS_HCINT4_XFRC (*((volatile unsigned int*)(0x4380B100UL))) +#define bM4_USBFS_HCINT4_CHH (*((volatile unsigned int*)(0x4380B104UL))) +#define bM4_USBFS_HCINT4_STALL (*((volatile unsigned int*)(0x4380B10CUL))) +#define bM4_USBFS_HCINT4_NAK (*((volatile unsigned int*)(0x4380B110UL))) +#define bM4_USBFS_HCINT4_ACK (*((volatile unsigned int*)(0x4380B114UL))) +#define bM4_USBFS_HCINT4_TXERR (*((volatile unsigned int*)(0x4380B11CUL))) +#define bM4_USBFS_HCINT4_BBERR (*((volatile unsigned int*)(0x4380B120UL))) +#define bM4_USBFS_HCINT4_FRMOR (*((volatile unsigned int*)(0x4380B124UL))) +#define bM4_USBFS_HCINT4_DTERR (*((volatile unsigned int*)(0x4380B128UL))) +#define bM4_USBFS_HCINTMSK4_XFRCM (*((volatile unsigned int*)(0x4380B180UL))) +#define bM4_USBFS_HCINTMSK4_CHHM (*((volatile unsigned int*)(0x4380B184UL))) +#define bM4_USBFS_HCINTMSK4_STALLM (*((volatile unsigned int*)(0x4380B18CUL))) +#define bM4_USBFS_HCINTMSK4_NAKM (*((volatile unsigned int*)(0x4380B190UL))) +#define bM4_USBFS_HCINTMSK4_ACKM (*((volatile unsigned int*)(0x4380B194UL))) +#define bM4_USBFS_HCINTMSK4_TXERRM (*((volatile unsigned int*)(0x4380B19CUL))) +#define bM4_USBFS_HCINTMSK4_BBERRM (*((volatile unsigned int*)(0x4380B1A0UL))) +#define bM4_USBFS_HCINTMSK4_FRMORM (*((volatile unsigned int*)(0x4380B1A4UL))) +#define bM4_USBFS_HCINTMSK4_DTERRM (*((volatile unsigned int*)(0x4380B1A8UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ0 (*((volatile unsigned int*)(0x4380B200UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ1 (*((volatile unsigned int*)(0x4380B204UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ2 (*((volatile unsigned int*)(0x4380B208UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ3 (*((volatile unsigned int*)(0x4380B20CUL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ4 (*((volatile unsigned int*)(0x4380B210UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ5 (*((volatile unsigned int*)(0x4380B214UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ6 (*((volatile unsigned int*)(0x4380B218UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ7 (*((volatile unsigned int*)(0x4380B21CUL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ8 (*((volatile unsigned int*)(0x4380B220UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ9 (*((volatile unsigned int*)(0x4380B224UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ10 (*((volatile unsigned int*)(0x4380B228UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ11 (*((volatile unsigned int*)(0x4380B22CUL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ12 (*((volatile unsigned int*)(0x4380B230UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ13 (*((volatile unsigned int*)(0x4380B234UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ14 (*((volatile unsigned int*)(0x4380B238UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ15 (*((volatile unsigned int*)(0x4380B23CUL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ16 (*((volatile unsigned int*)(0x4380B240UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ17 (*((volatile unsigned int*)(0x4380B244UL))) +#define bM4_USBFS_HCTSIZ4_XFRSIZ18 (*((volatile unsigned int*)(0x4380B248UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT0 (*((volatile unsigned int*)(0x4380B24CUL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT1 (*((volatile unsigned int*)(0x4380B250UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT2 (*((volatile unsigned int*)(0x4380B254UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT3 (*((volatile unsigned int*)(0x4380B258UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT4 (*((volatile unsigned int*)(0x4380B25CUL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT5 (*((volatile unsigned int*)(0x4380B260UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT6 (*((volatile unsigned int*)(0x4380B264UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT7 (*((volatile unsigned int*)(0x4380B268UL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT8 (*((volatile unsigned int*)(0x4380B26CUL))) +#define bM4_USBFS_HCTSIZ4_PKTCNT9 (*((volatile unsigned int*)(0x4380B270UL))) +#define bM4_USBFS_HCTSIZ4_DPID0 (*((volatile unsigned int*)(0x4380B274UL))) +#define bM4_USBFS_HCTSIZ4_DPID1 (*((volatile unsigned int*)(0x4380B278UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ0 (*((volatile unsigned int*)(0x4380B400UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ1 (*((volatile unsigned int*)(0x4380B404UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ2 (*((volatile unsigned int*)(0x4380B408UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ3 (*((volatile unsigned int*)(0x4380B40CUL))) +#define bM4_USBFS_HCCHAR5_MPSIZ4 (*((volatile unsigned int*)(0x4380B410UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ5 (*((volatile unsigned int*)(0x4380B414UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ6 (*((volatile unsigned int*)(0x4380B418UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ7 (*((volatile unsigned int*)(0x4380B41CUL))) +#define bM4_USBFS_HCCHAR5_MPSIZ8 (*((volatile unsigned int*)(0x4380B420UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ9 (*((volatile unsigned int*)(0x4380B424UL))) +#define bM4_USBFS_HCCHAR5_MPSIZ10 (*((volatile unsigned int*)(0x4380B428UL))) +#define bM4_USBFS_HCCHAR5_EPNUM0 (*((volatile unsigned int*)(0x4380B42CUL))) +#define bM4_USBFS_HCCHAR5_EPNUM1 (*((volatile unsigned int*)(0x4380B430UL))) +#define bM4_USBFS_HCCHAR5_EPNUM2 (*((volatile unsigned int*)(0x4380B434UL))) +#define bM4_USBFS_HCCHAR5_EPNUM3 (*((volatile unsigned int*)(0x4380B438UL))) +#define bM4_USBFS_HCCHAR5_EPDIR (*((volatile unsigned int*)(0x4380B43CUL))) +#define bM4_USBFS_HCCHAR5_LSDEV (*((volatile unsigned int*)(0x4380B444UL))) +#define bM4_USBFS_HCCHAR5_EPTYP0 (*((volatile unsigned int*)(0x4380B448UL))) +#define bM4_USBFS_HCCHAR5_EPTYP1 (*((volatile unsigned int*)(0x4380B44CUL))) +#define bM4_USBFS_HCCHAR5_DAD0 (*((volatile unsigned int*)(0x4380B458UL))) +#define bM4_USBFS_HCCHAR5_DAD1 (*((volatile unsigned int*)(0x4380B45CUL))) +#define bM4_USBFS_HCCHAR5_DAD2 (*((volatile unsigned int*)(0x4380B460UL))) +#define bM4_USBFS_HCCHAR5_DAD3 (*((volatile unsigned int*)(0x4380B464UL))) +#define bM4_USBFS_HCCHAR5_DAD4 (*((volatile unsigned int*)(0x4380B468UL))) +#define bM4_USBFS_HCCHAR5_DAD5 (*((volatile unsigned int*)(0x4380B46CUL))) +#define bM4_USBFS_HCCHAR5_DAD6 (*((volatile unsigned int*)(0x4380B470UL))) +#define bM4_USBFS_HCCHAR5_ODDFRM (*((volatile unsigned int*)(0x4380B474UL))) +#define bM4_USBFS_HCCHAR5_CHDIS (*((volatile unsigned int*)(0x4380B478UL))) +#define bM4_USBFS_HCCHAR5_CHENA (*((volatile unsigned int*)(0x4380B47CUL))) +#define bM4_USBFS_HCINT5_XFRC (*((volatile unsigned int*)(0x4380B500UL))) +#define bM4_USBFS_HCINT5_CHH (*((volatile unsigned int*)(0x4380B504UL))) +#define bM4_USBFS_HCINT5_STALL (*((volatile unsigned int*)(0x4380B50CUL))) +#define bM4_USBFS_HCINT5_NAK (*((volatile unsigned int*)(0x4380B510UL))) +#define bM4_USBFS_HCINT5_ACK (*((volatile unsigned int*)(0x4380B514UL))) +#define bM4_USBFS_HCINT5_TXERR (*((volatile unsigned int*)(0x4380B51CUL))) +#define bM4_USBFS_HCINT5_BBERR (*((volatile unsigned int*)(0x4380B520UL))) +#define bM4_USBFS_HCINT5_FRMOR (*((volatile unsigned int*)(0x4380B524UL))) +#define bM4_USBFS_HCINT5_DTERR (*((volatile unsigned int*)(0x4380B528UL))) +#define bM4_USBFS_HCINTMSK5_XFRCM (*((volatile unsigned int*)(0x4380B580UL))) +#define bM4_USBFS_HCINTMSK5_CHHM (*((volatile unsigned int*)(0x4380B584UL))) +#define bM4_USBFS_HCINTMSK5_STALLM (*((volatile unsigned int*)(0x4380B58CUL))) +#define bM4_USBFS_HCINTMSK5_NAKM (*((volatile unsigned int*)(0x4380B590UL))) +#define bM4_USBFS_HCINTMSK5_ACKM (*((volatile unsigned int*)(0x4380B594UL))) +#define bM4_USBFS_HCINTMSK5_TXERRM (*((volatile unsigned int*)(0x4380B59CUL))) +#define bM4_USBFS_HCINTMSK5_BBERRM (*((volatile unsigned int*)(0x4380B5A0UL))) +#define bM4_USBFS_HCINTMSK5_FRMORM (*((volatile unsigned int*)(0x4380B5A4UL))) +#define bM4_USBFS_HCINTMSK5_DTERRM (*((volatile unsigned int*)(0x4380B5A8UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ0 (*((volatile unsigned int*)(0x4380B600UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ1 (*((volatile unsigned int*)(0x4380B604UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ2 (*((volatile unsigned int*)(0x4380B608UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ3 (*((volatile unsigned int*)(0x4380B60CUL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ4 (*((volatile unsigned int*)(0x4380B610UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ5 (*((volatile unsigned int*)(0x4380B614UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ6 (*((volatile unsigned int*)(0x4380B618UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ7 (*((volatile unsigned int*)(0x4380B61CUL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ8 (*((volatile unsigned int*)(0x4380B620UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ9 (*((volatile unsigned int*)(0x4380B624UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ10 (*((volatile unsigned int*)(0x4380B628UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ11 (*((volatile unsigned int*)(0x4380B62CUL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ12 (*((volatile unsigned int*)(0x4380B630UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ13 (*((volatile unsigned int*)(0x4380B634UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ14 (*((volatile unsigned int*)(0x4380B638UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ15 (*((volatile unsigned int*)(0x4380B63CUL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ16 (*((volatile unsigned int*)(0x4380B640UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ17 (*((volatile unsigned int*)(0x4380B644UL))) +#define bM4_USBFS_HCTSIZ5_XFRSIZ18 (*((volatile unsigned int*)(0x4380B648UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT0 (*((volatile unsigned int*)(0x4380B64CUL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT1 (*((volatile unsigned int*)(0x4380B650UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT2 (*((volatile unsigned int*)(0x4380B654UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT3 (*((volatile unsigned int*)(0x4380B658UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT4 (*((volatile unsigned int*)(0x4380B65CUL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT5 (*((volatile unsigned int*)(0x4380B660UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT6 (*((volatile unsigned int*)(0x4380B664UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT7 (*((volatile unsigned int*)(0x4380B668UL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT8 (*((volatile unsigned int*)(0x4380B66CUL))) +#define bM4_USBFS_HCTSIZ5_PKTCNT9 (*((volatile unsigned int*)(0x4380B670UL))) +#define bM4_USBFS_HCTSIZ5_DPID0 (*((volatile unsigned int*)(0x4380B674UL))) +#define bM4_USBFS_HCTSIZ5_DPID1 (*((volatile unsigned int*)(0x4380B678UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ0 (*((volatile unsigned int*)(0x4380B800UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ1 (*((volatile unsigned int*)(0x4380B804UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ2 (*((volatile unsigned int*)(0x4380B808UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ3 (*((volatile unsigned int*)(0x4380B80CUL))) +#define bM4_USBFS_HCCHAR6_MPSIZ4 (*((volatile unsigned int*)(0x4380B810UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ5 (*((volatile unsigned int*)(0x4380B814UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ6 (*((volatile unsigned int*)(0x4380B818UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ7 (*((volatile unsigned int*)(0x4380B81CUL))) +#define bM4_USBFS_HCCHAR6_MPSIZ8 (*((volatile unsigned int*)(0x4380B820UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ9 (*((volatile unsigned int*)(0x4380B824UL))) +#define bM4_USBFS_HCCHAR6_MPSIZ10 (*((volatile unsigned int*)(0x4380B828UL))) +#define bM4_USBFS_HCCHAR6_EPNUM0 (*((volatile unsigned int*)(0x4380B82CUL))) +#define bM4_USBFS_HCCHAR6_EPNUM1 (*((volatile unsigned int*)(0x4380B830UL))) +#define bM4_USBFS_HCCHAR6_EPNUM2 (*((volatile unsigned int*)(0x4380B834UL))) +#define bM4_USBFS_HCCHAR6_EPNUM3 (*((volatile unsigned int*)(0x4380B838UL))) +#define bM4_USBFS_HCCHAR6_EPDIR (*((volatile unsigned int*)(0x4380B83CUL))) +#define bM4_USBFS_HCCHAR6_LSDEV (*((volatile unsigned int*)(0x4380B844UL))) +#define bM4_USBFS_HCCHAR6_EPTYP0 (*((volatile unsigned int*)(0x4380B848UL))) +#define bM4_USBFS_HCCHAR6_EPTYP1 (*((volatile unsigned int*)(0x4380B84CUL))) +#define bM4_USBFS_HCCHAR6_DAD0 (*((volatile unsigned int*)(0x4380B858UL))) +#define bM4_USBFS_HCCHAR6_DAD1 (*((volatile unsigned int*)(0x4380B85CUL))) +#define bM4_USBFS_HCCHAR6_DAD2 (*((volatile unsigned int*)(0x4380B860UL))) +#define bM4_USBFS_HCCHAR6_DAD3 (*((volatile unsigned int*)(0x4380B864UL))) +#define bM4_USBFS_HCCHAR6_DAD4 (*((volatile unsigned int*)(0x4380B868UL))) +#define bM4_USBFS_HCCHAR6_DAD5 (*((volatile unsigned int*)(0x4380B86CUL))) +#define bM4_USBFS_HCCHAR6_DAD6 (*((volatile unsigned int*)(0x4380B870UL))) +#define bM4_USBFS_HCCHAR6_ODDFRM (*((volatile unsigned int*)(0x4380B874UL))) +#define bM4_USBFS_HCCHAR6_CHDIS (*((volatile unsigned int*)(0x4380B878UL))) +#define bM4_USBFS_HCCHAR6_CHENA (*((volatile unsigned int*)(0x4380B87CUL))) +#define bM4_USBFS_HCINT6_XFRC (*((volatile unsigned int*)(0x4380B900UL))) +#define bM4_USBFS_HCINT6_CHH (*((volatile unsigned int*)(0x4380B904UL))) +#define bM4_USBFS_HCINT6_STALL (*((volatile unsigned int*)(0x4380B90CUL))) +#define bM4_USBFS_HCINT6_NAK (*((volatile unsigned int*)(0x4380B910UL))) +#define bM4_USBFS_HCINT6_ACK (*((volatile unsigned int*)(0x4380B914UL))) +#define bM4_USBFS_HCINT6_TXERR (*((volatile unsigned int*)(0x4380B91CUL))) +#define bM4_USBFS_HCINT6_BBERR (*((volatile unsigned int*)(0x4380B920UL))) +#define bM4_USBFS_HCINT6_FRMOR (*((volatile unsigned int*)(0x4380B924UL))) +#define bM4_USBFS_HCINT6_DTERR (*((volatile unsigned int*)(0x4380B928UL))) +#define bM4_USBFS_HCINTMSK6_XFRCM (*((volatile unsigned int*)(0x4380B980UL))) +#define bM4_USBFS_HCINTMSK6_CHHM (*((volatile unsigned int*)(0x4380B984UL))) +#define bM4_USBFS_HCINTMSK6_STALLM (*((volatile unsigned int*)(0x4380B98CUL))) +#define bM4_USBFS_HCINTMSK6_NAKM (*((volatile unsigned int*)(0x4380B990UL))) +#define bM4_USBFS_HCINTMSK6_ACKM (*((volatile unsigned int*)(0x4380B994UL))) +#define bM4_USBFS_HCINTMSK6_TXERRM (*((volatile unsigned int*)(0x4380B99CUL))) +#define bM4_USBFS_HCINTMSK6_BBERRM (*((volatile unsigned int*)(0x4380B9A0UL))) +#define bM4_USBFS_HCINTMSK6_FRMORM (*((volatile unsigned int*)(0x4380B9A4UL))) +#define bM4_USBFS_HCINTMSK6_DTERRM (*((volatile unsigned int*)(0x4380B9A8UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ0 (*((volatile unsigned int*)(0x4380BA00UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ1 (*((volatile unsigned int*)(0x4380BA04UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ2 (*((volatile unsigned int*)(0x4380BA08UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ3 (*((volatile unsigned int*)(0x4380BA0CUL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ4 (*((volatile unsigned int*)(0x4380BA10UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ5 (*((volatile unsigned int*)(0x4380BA14UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ6 (*((volatile unsigned int*)(0x4380BA18UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ7 (*((volatile unsigned int*)(0x4380BA1CUL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ8 (*((volatile unsigned int*)(0x4380BA20UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ9 (*((volatile unsigned int*)(0x4380BA24UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ10 (*((volatile unsigned int*)(0x4380BA28UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ11 (*((volatile unsigned int*)(0x4380BA2CUL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ12 (*((volatile unsigned int*)(0x4380BA30UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ13 (*((volatile unsigned int*)(0x4380BA34UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ14 (*((volatile unsigned int*)(0x4380BA38UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ15 (*((volatile unsigned int*)(0x4380BA3CUL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ16 (*((volatile unsigned int*)(0x4380BA40UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ17 (*((volatile unsigned int*)(0x4380BA44UL))) +#define bM4_USBFS_HCTSIZ6_XFRSIZ18 (*((volatile unsigned int*)(0x4380BA48UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT0 (*((volatile unsigned int*)(0x4380BA4CUL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT1 (*((volatile unsigned int*)(0x4380BA50UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT2 (*((volatile unsigned int*)(0x4380BA54UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT3 (*((volatile unsigned int*)(0x4380BA58UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT4 (*((volatile unsigned int*)(0x4380BA5CUL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT5 (*((volatile unsigned int*)(0x4380BA60UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT6 (*((volatile unsigned int*)(0x4380BA64UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT7 (*((volatile unsigned int*)(0x4380BA68UL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT8 (*((volatile unsigned int*)(0x4380BA6CUL))) +#define bM4_USBFS_HCTSIZ6_PKTCNT9 (*((volatile unsigned int*)(0x4380BA70UL))) +#define bM4_USBFS_HCTSIZ6_DPID0 (*((volatile unsigned int*)(0x4380BA74UL))) +#define bM4_USBFS_HCTSIZ6_DPID1 (*((volatile unsigned int*)(0x4380BA78UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ0 (*((volatile unsigned int*)(0x4380BC00UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ1 (*((volatile unsigned int*)(0x4380BC04UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ2 (*((volatile unsigned int*)(0x4380BC08UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ3 (*((volatile unsigned int*)(0x4380BC0CUL))) +#define bM4_USBFS_HCCHAR7_MPSIZ4 (*((volatile unsigned int*)(0x4380BC10UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ5 (*((volatile unsigned int*)(0x4380BC14UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ6 (*((volatile unsigned int*)(0x4380BC18UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ7 (*((volatile unsigned int*)(0x4380BC1CUL))) +#define bM4_USBFS_HCCHAR7_MPSIZ8 (*((volatile unsigned int*)(0x4380BC20UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ9 (*((volatile unsigned int*)(0x4380BC24UL))) +#define bM4_USBFS_HCCHAR7_MPSIZ10 (*((volatile unsigned int*)(0x4380BC28UL))) +#define bM4_USBFS_HCCHAR7_EPNUM0 (*((volatile unsigned int*)(0x4380BC2CUL))) +#define bM4_USBFS_HCCHAR7_EPNUM1 (*((volatile unsigned int*)(0x4380BC30UL))) +#define bM4_USBFS_HCCHAR7_EPNUM2 (*((volatile unsigned int*)(0x4380BC34UL))) +#define bM4_USBFS_HCCHAR7_EPNUM3 (*((volatile unsigned int*)(0x4380BC38UL))) +#define bM4_USBFS_HCCHAR7_EPDIR (*((volatile unsigned int*)(0x4380BC3CUL))) +#define bM4_USBFS_HCCHAR7_LSDEV (*((volatile unsigned int*)(0x4380BC44UL))) +#define bM4_USBFS_HCCHAR7_EPTYP0 (*((volatile unsigned int*)(0x4380BC48UL))) +#define bM4_USBFS_HCCHAR7_EPTYP1 (*((volatile unsigned int*)(0x4380BC4CUL))) +#define bM4_USBFS_HCCHAR7_DAD0 (*((volatile unsigned int*)(0x4380BC58UL))) +#define bM4_USBFS_HCCHAR7_DAD1 (*((volatile unsigned int*)(0x4380BC5CUL))) +#define bM4_USBFS_HCCHAR7_DAD2 (*((volatile unsigned int*)(0x4380BC60UL))) +#define bM4_USBFS_HCCHAR7_DAD3 (*((volatile unsigned int*)(0x4380BC64UL))) +#define bM4_USBFS_HCCHAR7_DAD4 (*((volatile unsigned int*)(0x4380BC68UL))) +#define bM4_USBFS_HCCHAR7_DAD5 (*((volatile unsigned int*)(0x4380BC6CUL))) +#define bM4_USBFS_HCCHAR7_DAD6 (*((volatile unsigned int*)(0x4380BC70UL))) +#define bM4_USBFS_HCCHAR7_ODDFRM (*((volatile unsigned int*)(0x4380BC74UL))) +#define bM4_USBFS_HCCHAR7_CHDIS (*((volatile unsigned int*)(0x4380BC78UL))) +#define bM4_USBFS_HCCHAR7_CHENA (*((volatile unsigned int*)(0x4380BC7CUL))) +#define bM4_USBFS_HCINT7_XFRC (*((volatile unsigned int*)(0x4380BD00UL))) +#define bM4_USBFS_HCINT7_CHH (*((volatile unsigned int*)(0x4380BD04UL))) +#define bM4_USBFS_HCINT7_STALL (*((volatile unsigned int*)(0x4380BD0CUL))) +#define bM4_USBFS_HCINT7_NAK (*((volatile unsigned int*)(0x4380BD10UL))) +#define bM4_USBFS_HCINT7_ACK (*((volatile unsigned int*)(0x4380BD14UL))) +#define bM4_USBFS_HCINT7_TXERR (*((volatile unsigned int*)(0x4380BD1CUL))) +#define bM4_USBFS_HCINT7_BBERR (*((volatile unsigned int*)(0x4380BD20UL))) +#define bM4_USBFS_HCINT7_FRMOR (*((volatile unsigned int*)(0x4380BD24UL))) +#define bM4_USBFS_HCINT7_DTERR (*((volatile unsigned int*)(0x4380BD28UL))) +#define bM4_USBFS_HCINTMSK7_XFRCM (*((volatile unsigned int*)(0x4380BD80UL))) +#define bM4_USBFS_HCINTMSK7_CHHM (*((volatile unsigned int*)(0x4380BD84UL))) +#define bM4_USBFS_HCINTMSK7_STALLM (*((volatile unsigned int*)(0x4380BD8CUL))) +#define bM4_USBFS_HCINTMSK7_NAKM (*((volatile unsigned int*)(0x4380BD90UL))) +#define bM4_USBFS_HCINTMSK7_ACKM (*((volatile unsigned int*)(0x4380BD94UL))) +#define bM4_USBFS_HCINTMSK7_TXERRM (*((volatile unsigned int*)(0x4380BD9CUL))) +#define bM4_USBFS_HCINTMSK7_BBERRM (*((volatile unsigned int*)(0x4380BDA0UL))) +#define bM4_USBFS_HCINTMSK7_FRMORM (*((volatile unsigned int*)(0x4380BDA4UL))) +#define bM4_USBFS_HCINTMSK7_DTERRM (*((volatile unsigned int*)(0x4380BDA8UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ0 (*((volatile unsigned int*)(0x4380BE00UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ1 (*((volatile unsigned int*)(0x4380BE04UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ2 (*((volatile unsigned int*)(0x4380BE08UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ3 (*((volatile unsigned int*)(0x4380BE0CUL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ4 (*((volatile unsigned int*)(0x4380BE10UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ5 (*((volatile unsigned int*)(0x4380BE14UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ6 (*((volatile unsigned int*)(0x4380BE18UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ7 (*((volatile unsigned int*)(0x4380BE1CUL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ8 (*((volatile unsigned int*)(0x4380BE20UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ9 (*((volatile unsigned int*)(0x4380BE24UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ10 (*((volatile unsigned int*)(0x4380BE28UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ11 (*((volatile unsigned int*)(0x4380BE2CUL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ12 (*((volatile unsigned int*)(0x4380BE30UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ13 (*((volatile unsigned int*)(0x4380BE34UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ14 (*((volatile unsigned int*)(0x4380BE38UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ15 (*((volatile unsigned int*)(0x4380BE3CUL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ16 (*((volatile unsigned int*)(0x4380BE40UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ17 (*((volatile unsigned int*)(0x4380BE44UL))) +#define bM4_USBFS_HCTSIZ7_XFRSIZ18 (*((volatile unsigned int*)(0x4380BE48UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT0 (*((volatile unsigned int*)(0x4380BE4CUL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT1 (*((volatile unsigned int*)(0x4380BE50UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT2 (*((volatile unsigned int*)(0x4380BE54UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT3 (*((volatile unsigned int*)(0x4380BE58UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT4 (*((volatile unsigned int*)(0x4380BE5CUL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT5 (*((volatile unsigned int*)(0x4380BE60UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT6 (*((volatile unsigned int*)(0x4380BE64UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT7 (*((volatile unsigned int*)(0x4380BE68UL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT8 (*((volatile unsigned int*)(0x4380BE6CUL))) +#define bM4_USBFS_HCTSIZ7_PKTCNT9 (*((volatile unsigned int*)(0x4380BE70UL))) +#define bM4_USBFS_HCTSIZ7_DPID0 (*((volatile unsigned int*)(0x4380BE74UL))) +#define bM4_USBFS_HCTSIZ7_DPID1 (*((volatile unsigned int*)(0x4380BE78UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ0 (*((volatile unsigned int*)(0x4380C000UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ1 (*((volatile unsigned int*)(0x4380C004UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ2 (*((volatile unsigned int*)(0x4380C008UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ3 (*((volatile unsigned int*)(0x4380C00CUL))) +#define bM4_USBFS_HCCHAR8_MPSIZ4 (*((volatile unsigned int*)(0x4380C010UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ5 (*((volatile unsigned int*)(0x4380C014UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ6 (*((volatile unsigned int*)(0x4380C018UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ7 (*((volatile unsigned int*)(0x4380C01CUL))) +#define bM4_USBFS_HCCHAR8_MPSIZ8 (*((volatile unsigned int*)(0x4380C020UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ9 (*((volatile unsigned int*)(0x4380C024UL))) +#define bM4_USBFS_HCCHAR8_MPSIZ10 (*((volatile unsigned int*)(0x4380C028UL))) +#define bM4_USBFS_HCCHAR8_EPNUM0 (*((volatile unsigned int*)(0x4380C02CUL))) +#define bM4_USBFS_HCCHAR8_EPNUM1 (*((volatile unsigned int*)(0x4380C030UL))) +#define bM4_USBFS_HCCHAR8_EPNUM2 (*((volatile unsigned int*)(0x4380C034UL))) +#define bM4_USBFS_HCCHAR8_EPNUM3 (*((volatile unsigned int*)(0x4380C038UL))) +#define bM4_USBFS_HCCHAR8_EPDIR (*((volatile unsigned int*)(0x4380C03CUL))) +#define bM4_USBFS_HCCHAR8_LSDEV (*((volatile unsigned int*)(0x4380C044UL))) +#define bM4_USBFS_HCCHAR8_EPTYP0 (*((volatile unsigned int*)(0x4380C048UL))) +#define bM4_USBFS_HCCHAR8_EPTYP1 (*((volatile unsigned int*)(0x4380C04CUL))) +#define bM4_USBFS_HCCHAR8_DAD0 (*((volatile unsigned int*)(0x4380C058UL))) +#define bM4_USBFS_HCCHAR8_DAD1 (*((volatile unsigned int*)(0x4380C05CUL))) +#define bM4_USBFS_HCCHAR8_DAD2 (*((volatile unsigned int*)(0x4380C060UL))) +#define bM4_USBFS_HCCHAR8_DAD3 (*((volatile unsigned int*)(0x4380C064UL))) +#define bM4_USBFS_HCCHAR8_DAD4 (*((volatile unsigned int*)(0x4380C068UL))) +#define bM4_USBFS_HCCHAR8_DAD5 (*((volatile unsigned int*)(0x4380C06CUL))) +#define bM4_USBFS_HCCHAR8_DAD6 (*((volatile unsigned int*)(0x4380C070UL))) +#define bM4_USBFS_HCCHAR8_ODDFRM (*((volatile unsigned int*)(0x4380C074UL))) +#define bM4_USBFS_HCCHAR8_CHDIS (*((volatile unsigned int*)(0x4380C078UL))) +#define bM4_USBFS_HCCHAR8_CHENA (*((volatile unsigned int*)(0x4380C07CUL))) +#define bM4_USBFS_HCINT8_XFRC (*((volatile unsigned int*)(0x4380C100UL))) +#define bM4_USBFS_HCINT8_CHH (*((volatile unsigned int*)(0x4380C104UL))) +#define bM4_USBFS_HCINT8_STALL (*((volatile unsigned int*)(0x4380C10CUL))) +#define bM4_USBFS_HCINT8_NAK (*((volatile unsigned int*)(0x4380C110UL))) +#define bM4_USBFS_HCINT8_ACK (*((volatile unsigned int*)(0x4380C114UL))) +#define bM4_USBFS_HCINT8_TXERR (*((volatile unsigned int*)(0x4380C11CUL))) +#define bM4_USBFS_HCINT8_BBERR (*((volatile unsigned int*)(0x4380C120UL))) +#define bM4_USBFS_HCINT8_FRMOR (*((volatile unsigned int*)(0x4380C124UL))) +#define bM4_USBFS_HCINT8_DTERR (*((volatile unsigned int*)(0x4380C128UL))) +#define bM4_USBFS_HCINTMSK8_XFRCM (*((volatile unsigned int*)(0x4380C180UL))) +#define bM4_USBFS_HCINTMSK8_CHHM (*((volatile unsigned int*)(0x4380C184UL))) +#define bM4_USBFS_HCINTMSK8_STALLM (*((volatile unsigned int*)(0x4380C18CUL))) +#define bM4_USBFS_HCINTMSK8_NAKM (*((volatile unsigned int*)(0x4380C190UL))) +#define bM4_USBFS_HCINTMSK8_ACKM (*((volatile unsigned int*)(0x4380C194UL))) +#define bM4_USBFS_HCINTMSK8_TXERRM (*((volatile unsigned int*)(0x4380C19CUL))) +#define bM4_USBFS_HCINTMSK8_BBERRM (*((volatile unsigned int*)(0x4380C1A0UL))) +#define bM4_USBFS_HCINTMSK8_FRMORM (*((volatile unsigned int*)(0x4380C1A4UL))) +#define bM4_USBFS_HCINTMSK8_DTERRM (*((volatile unsigned int*)(0x4380C1A8UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ0 (*((volatile unsigned int*)(0x4380C200UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ1 (*((volatile unsigned int*)(0x4380C204UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ2 (*((volatile unsigned int*)(0x4380C208UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ3 (*((volatile unsigned int*)(0x4380C20CUL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ4 (*((volatile unsigned int*)(0x4380C210UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ5 (*((volatile unsigned int*)(0x4380C214UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ6 (*((volatile unsigned int*)(0x4380C218UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ7 (*((volatile unsigned int*)(0x4380C21CUL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ8 (*((volatile unsigned int*)(0x4380C220UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ9 (*((volatile unsigned int*)(0x4380C224UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ10 (*((volatile unsigned int*)(0x4380C228UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ11 (*((volatile unsigned int*)(0x4380C22CUL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ12 (*((volatile unsigned int*)(0x4380C230UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ13 (*((volatile unsigned int*)(0x4380C234UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ14 (*((volatile unsigned int*)(0x4380C238UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ15 (*((volatile unsigned int*)(0x4380C23CUL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ16 (*((volatile unsigned int*)(0x4380C240UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ17 (*((volatile unsigned int*)(0x4380C244UL))) +#define bM4_USBFS_HCTSIZ8_XFRSIZ18 (*((volatile unsigned int*)(0x4380C248UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT0 (*((volatile unsigned int*)(0x4380C24CUL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT1 (*((volatile unsigned int*)(0x4380C250UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT2 (*((volatile unsigned int*)(0x4380C254UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT3 (*((volatile unsigned int*)(0x4380C258UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT4 (*((volatile unsigned int*)(0x4380C25CUL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT5 (*((volatile unsigned int*)(0x4380C260UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT6 (*((volatile unsigned int*)(0x4380C264UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT7 (*((volatile unsigned int*)(0x4380C268UL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT8 (*((volatile unsigned int*)(0x4380C26CUL))) +#define bM4_USBFS_HCTSIZ8_PKTCNT9 (*((volatile unsigned int*)(0x4380C270UL))) +#define bM4_USBFS_HCTSIZ8_DPID0 (*((volatile unsigned int*)(0x4380C274UL))) +#define bM4_USBFS_HCTSIZ8_DPID1 (*((volatile unsigned int*)(0x4380C278UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ0 (*((volatile unsigned int*)(0x4380C400UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ1 (*((volatile unsigned int*)(0x4380C404UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ2 (*((volatile unsigned int*)(0x4380C408UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ3 (*((volatile unsigned int*)(0x4380C40CUL))) +#define bM4_USBFS_HCCHAR9_MPSIZ4 (*((volatile unsigned int*)(0x4380C410UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ5 (*((volatile unsigned int*)(0x4380C414UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ6 (*((volatile unsigned int*)(0x4380C418UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ7 (*((volatile unsigned int*)(0x4380C41CUL))) +#define bM4_USBFS_HCCHAR9_MPSIZ8 (*((volatile unsigned int*)(0x4380C420UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ9 (*((volatile unsigned int*)(0x4380C424UL))) +#define bM4_USBFS_HCCHAR9_MPSIZ10 (*((volatile unsigned int*)(0x4380C428UL))) +#define bM4_USBFS_HCCHAR9_EPNUM0 (*((volatile unsigned int*)(0x4380C42CUL))) +#define bM4_USBFS_HCCHAR9_EPNUM1 (*((volatile unsigned int*)(0x4380C430UL))) +#define bM4_USBFS_HCCHAR9_EPNUM2 (*((volatile unsigned int*)(0x4380C434UL))) +#define bM4_USBFS_HCCHAR9_EPNUM3 (*((volatile unsigned int*)(0x4380C438UL))) +#define bM4_USBFS_HCCHAR9_EPDIR (*((volatile unsigned int*)(0x4380C43CUL))) +#define bM4_USBFS_HCCHAR9_LSDEV (*((volatile unsigned int*)(0x4380C444UL))) +#define bM4_USBFS_HCCHAR9_EPTYP0 (*((volatile unsigned int*)(0x4380C448UL))) +#define bM4_USBFS_HCCHAR9_EPTYP1 (*((volatile unsigned int*)(0x4380C44CUL))) +#define bM4_USBFS_HCCHAR9_DAD0 (*((volatile unsigned int*)(0x4380C458UL))) +#define bM4_USBFS_HCCHAR9_DAD1 (*((volatile unsigned int*)(0x4380C45CUL))) +#define bM4_USBFS_HCCHAR9_DAD2 (*((volatile unsigned int*)(0x4380C460UL))) +#define bM4_USBFS_HCCHAR9_DAD3 (*((volatile unsigned int*)(0x4380C464UL))) +#define bM4_USBFS_HCCHAR9_DAD4 (*((volatile unsigned int*)(0x4380C468UL))) +#define bM4_USBFS_HCCHAR9_DAD5 (*((volatile unsigned int*)(0x4380C46CUL))) +#define bM4_USBFS_HCCHAR9_DAD6 (*((volatile unsigned int*)(0x4380C470UL))) +#define bM4_USBFS_HCCHAR9_ODDFRM (*((volatile unsigned int*)(0x4380C474UL))) +#define bM4_USBFS_HCCHAR9_CHDIS (*((volatile unsigned int*)(0x4380C478UL))) +#define bM4_USBFS_HCCHAR9_CHENA (*((volatile unsigned int*)(0x4380C47CUL))) +#define bM4_USBFS_HCINT9_XFRC (*((volatile unsigned int*)(0x4380C500UL))) +#define bM4_USBFS_HCINT9_CHH (*((volatile unsigned int*)(0x4380C504UL))) +#define bM4_USBFS_HCINT9_STALL (*((volatile unsigned int*)(0x4380C50CUL))) +#define bM4_USBFS_HCINT9_NAK (*((volatile unsigned int*)(0x4380C510UL))) +#define bM4_USBFS_HCINT9_ACK (*((volatile unsigned int*)(0x4380C514UL))) +#define bM4_USBFS_HCINT9_TXERR (*((volatile unsigned int*)(0x4380C51CUL))) +#define bM4_USBFS_HCINT9_BBERR (*((volatile unsigned int*)(0x4380C520UL))) +#define bM4_USBFS_HCINT9_FRMOR (*((volatile unsigned int*)(0x4380C524UL))) +#define bM4_USBFS_HCINT9_DTERR (*((volatile unsigned int*)(0x4380C528UL))) +#define bM4_USBFS_HCINTMSK9_XFRCM (*((volatile unsigned int*)(0x4380C580UL))) +#define bM4_USBFS_HCINTMSK9_CHHM (*((volatile unsigned int*)(0x4380C584UL))) +#define bM4_USBFS_HCINTMSK9_STALLM (*((volatile unsigned int*)(0x4380C58CUL))) +#define bM4_USBFS_HCINTMSK9_NAKM (*((volatile unsigned int*)(0x4380C590UL))) +#define bM4_USBFS_HCINTMSK9_ACKM (*((volatile unsigned int*)(0x4380C594UL))) +#define bM4_USBFS_HCINTMSK9_TXERRM (*((volatile unsigned int*)(0x4380C59CUL))) +#define bM4_USBFS_HCINTMSK9_BBERRM (*((volatile unsigned int*)(0x4380C5A0UL))) +#define bM4_USBFS_HCINTMSK9_FRMORM (*((volatile unsigned int*)(0x4380C5A4UL))) +#define bM4_USBFS_HCINTMSK9_DTERRM (*((volatile unsigned int*)(0x4380C5A8UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ0 (*((volatile unsigned int*)(0x4380C600UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ1 (*((volatile unsigned int*)(0x4380C604UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ2 (*((volatile unsigned int*)(0x4380C608UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ3 (*((volatile unsigned int*)(0x4380C60CUL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ4 (*((volatile unsigned int*)(0x4380C610UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ5 (*((volatile unsigned int*)(0x4380C614UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ6 (*((volatile unsigned int*)(0x4380C618UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ7 (*((volatile unsigned int*)(0x4380C61CUL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ8 (*((volatile unsigned int*)(0x4380C620UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ9 (*((volatile unsigned int*)(0x4380C624UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ10 (*((volatile unsigned int*)(0x4380C628UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ11 (*((volatile unsigned int*)(0x4380C62CUL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ12 (*((volatile unsigned int*)(0x4380C630UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ13 (*((volatile unsigned int*)(0x4380C634UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ14 (*((volatile unsigned int*)(0x4380C638UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ15 (*((volatile unsigned int*)(0x4380C63CUL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ16 (*((volatile unsigned int*)(0x4380C640UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ17 (*((volatile unsigned int*)(0x4380C644UL))) +#define bM4_USBFS_HCTSIZ9_XFRSIZ18 (*((volatile unsigned int*)(0x4380C648UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT0 (*((volatile unsigned int*)(0x4380C64CUL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT1 (*((volatile unsigned int*)(0x4380C650UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT2 (*((volatile unsigned int*)(0x4380C654UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT3 (*((volatile unsigned int*)(0x4380C658UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT4 (*((volatile unsigned int*)(0x4380C65CUL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT5 (*((volatile unsigned int*)(0x4380C660UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT6 (*((volatile unsigned int*)(0x4380C664UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT7 (*((volatile unsigned int*)(0x4380C668UL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT8 (*((volatile unsigned int*)(0x4380C66CUL))) +#define bM4_USBFS_HCTSIZ9_PKTCNT9 (*((volatile unsigned int*)(0x4380C670UL))) +#define bM4_USBFS_HCTSIZ9_DPID0 (*((volatile unsigned int*)(0x4380C674UL))) +#define bM4_USBFS_HCTSIZ9_DPID1 (*((volatile unsigned int*)(0x4380C678UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ0 (*((volatile unsigned int*)(0x4380C800UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ1 (*((volatile unsigned int*)(0x4380C804UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ2 (*((volatile unsigned int*)(0x4380C808UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ3 (*((volatile unsigned int*)(0x4380C80CUL))) +#define bM4_USBFS_HCCHAR10_MPSIZ4 (*((volatile unsigned int*)(0x4380C810UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ5 (*((volatile unsigned int*)(0x4380C814UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ6 (*((volatile unsigned int*)(0x4380C818UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ7 (*((volatile unsigned int*)(0x4380C81CUL))) +#define bM4_USBFS_HCCHAR10_MPSIZ8 (*((volatile unsigned int*)(0x4380C820UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ9 (*((volatile unsigned int*)(0x4380C824UL))) +#define bM4_USBFS_HCCHAR10_MPSIZ10 (*((volatile unsigned int*)(0x4380C828UL))) +#define bM4_USBFS_HCCHAR10_EPNUM0 (*((volatile unsigned int*)(0x4380C82CUL))) +#define bM4_USBFS_HCCHAR10_EPNUM1 (*((volatile unsigned int*)(0x4380C830UL))) +#define bM4_USBFS_HCCHAR10_EPNUM2 (*((volatile unsigned int*)(0x4380C834UL))) +#define bM4_USBFS_HCCHAR10_EPNUM3 (*((volatile unsigned int*)(0x4380C838UL))) +#define bM4_USBFS_HCCHAR10_EPDIR (*((volatile unsigned int*)(0x4380C83CUL))) +#define bM4_USBFS_HCCHAR10_LSDEV (*((volatile unsigned int*)(0x4380C844UL))) +#define bM4_USBFS_HCCHAR10_EPTYP0 (*((volatile unsigned int*)(0x4380C848UL))) +#define bM4_USBFS_HCCHAR10_EPTYP1 (*((volatile unsigned int*)(0x4380C84CUL))) +#define bM4_USBFS_HCCHAR10_DAD0 (*((volatile unsigned int*)(0x4380C858UL))) +#define bM4_USBFS_HCCHAR10_DAD1 (*((volatile unsigned int*)(0x4380C85CUL))) +#define bM4_USBFS_HCCHAR10_DAD2 (*((volatile unsigned int*)(0x4380C860UL))) +#define bM4_USBFS_HCCHAR10_DAD3 (*((volatile unsigned int*)(0x4380C864UL))) +#define bM4_USBFS_HCCHAR10_DAD4 (*((volatile unsigned int*)(0x4380C868UL))) +#define bM4_USBFS_HCCHAR10_DAD5 (*((volatile unsigned int*)(0x4380C86CUL))) +#define bM4_USBFS_HCCHAR10_DAD6 (*((volatile unsigned int*)(0x4380C870UL))) +#define bM4_USBFS_HCCHAR10_ODDFRM (*((volatile unsigned int*)(0x4380C874UL))) +#define bM4_USBFS_HCCHAR10_CHDIS (*((volatile unsigned int*)(0x4380C878UL))) +#define bM4_USBFS_HCCHAR10_CHENA (*((volatile unsigned int*)(0x4380C87CUL))) +#define bM4_USBFS_HCINT10_XFRC (*((volatile unsigned int*)(0x4380C900UL))) +#define bM4_USBFS_HCINT10_CHH (*((volatile unsigned int*)(0x4380C904UL))) +#define bM4_USBFS_HCINT10_STALL (*((volatile unsigned int*)(0x4380C90CUL))) +#define bM4_USBFS_HCINT10_NAK (*((volatile unsigned int*)(0x4380C910UL))) +#define bM4_USBFS_HCINT10_ACK (*((volatile unsigned int*)(0x4380C914UL))) +#define bM4_USBFS_HCINT10_TXERR (*((volatile unsigned int*)(0x4380C91CUL))) +#define bM4_USBFS_HCINT10_BBERR (*((volatile unsigned int*)(0x4380C920UL))) +#define bM4_USBFS_HCINT10_FRMOR (*((volatile unsigned int*)(0x4380C924UL))) +#define bM4_USBFS_HCINT10_DTERR (*((volatile unsigned int*)(0x4380C928UL))) +#define bM4_USBFS_HCINTMSK10_XFRCM (*((volatile unsigned int*)(0x4380C980UL))) +#define bM4_USBFS_HCINTMSK10_CHHM (*((volatile unsigned int*)(0x4380C984UL))) +#define bM4_USBFS_HCINTMSK10_STALLM (*((volatile unsigned int*)(0x4380C98CUL))) +#define bM4_USBFS_HCINTMSK10_NAKM (*((volatile unsigned int*)(0x4380C990UL))) +#define bM4_USBFS_HCINTMSK10_ACKM (*((volatile unsigned int*)(0x4380C994UL))) +#define bM4_USBFS_HCINTMSK10_TXERRM (*((volatile unsigned int*)(0x4380C99CUL))) +#define bM4_USBFS_HCINTMSK10_BBERRM (*((volatile unsigned int*)(0x4380C9A0UL))) +#define bM4_USBFS_HCINTMSK10_FRMORM (*((volatile unsigned int*)(0x4380C9A4UL))) +#define bM4_USBFS_HCINTMSK10_DTERRM (*((volatile unsigned int*)(0x4380C9A8UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ0 (*((volatile unsigned int*)(0x4380CA00UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ1 (*((volatile unsigned int*)(0x4380CA04UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ2 (*((volatile unsigned int*)(0x4380CA08UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ3 (*((volatile unsigned int*)(0x4380CA0CUL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ4 (*((volatile unsigned int*)(0x4380CA10UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ5 (*((volatile unsigned int*)(0x4380CA14UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ6 (*((volatile unsigned int*)(0x4380CA18UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ7 (*((volatile unsigned int*)(0x4380CA1CUL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ8 (*((volatile unsigned int*)(0x4380CA20UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ9 (*((volatile unsigned int*)(0x4380CA24UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ10 (*((volatile unsigned int*)(0x4380CA28UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ11 (*((volatile unsigned int*)(0x4380CA2CUL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ12 (*((volatile unsigned int*)(0x4380CA30UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ13 (*((volatile unsigned int*)(0x4380CA34UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ14 (*((volatile unsigned int*)(0x4380CA38UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ15 (*((volatile unsigned int*)(0x4380CA3CUL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ16 (*((volatile unsigned int*)(0x4380CA40UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ17 (*((volatile unsigned int*)(0x4380CA44UL))) +#define bM4_USBFS_HCTSIZ10_XFRSIZ18 (*((volatile unsigned int*)(0x4380CA48UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT0 (*((volatile unsigned int*)(0x4380CA4CUL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT1 (*((volatile unsigned int*)(0x4380CA50UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT2 (*((volatile unsigned int*)(0x4380CA54UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT3 (*((volatile unsigned int*)(0x4380CA58UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT4 (*((volatile unsigned int*)(0x4380CA5CUL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT5 (*((volatile unsigned int*)(0x4380CA60UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT6 (*((volatile unsigned int*)(0x4380CA64UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT7 (*((volatile unsigned int*)(0x4380CA68UL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT8 (*((volatile unsigned int*)(0x4380CA6CUL))) +#define bM4_USBFS_HCTSIZ10_PKTCNT9 (*((volatile unsigned int*)(0x4380CA70UL))) +#define bM4_USBFS_HCTSIZ10_DPID0 (*((volatile unsigned int*)(0x4380CA74UL))) +#define bM4_USBFS_HCTSIZ10_DPID1 (*((volatile unsigned int*)(0x4380CA78UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ0 (*((volatile unsigned int*)(0x4380CC00UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ1 (*((volatile unsigned int*)(0x4380CC04UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ2 (*((volatile unsigned int*)(0x4380CC08UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ3 (*((volatile unsigned int*)(0x4380CC0CUL))) +#define bM4_USBFS_HCCHAR11_MPSIZ4 (*((volatile unsigned int*)(0x4380CC10UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ5 (*((volatile unsigned int*)(0x4380CC14UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ6 (*((volatile unsigned int*)(0x4380CC18UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ7 (*((volatile unsigned int*)(0x4380CC1CUL))) +#define bM4_USBFS_HCCHAR11_MPSIZ8 (*((volatile unsigned int*)(0x4380CC20UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ9 (*((volatile unsigned int*)(0x4380CC24UL))) +#define bM4_USBFS_HCCHAR11_MPSIZ10 (*((volatile unsigned int*)(0x4380CC28UL))) +#define bM4_USBFS_HCCHAR11_EPNUM0 (*((volatile unsigned int*)(0x4380CC2CUL))) +#define bM4_USBFS_HCCHAR11_EPNUM1 (*((volatile unsigned int*)(0x4380CC30UL))) +#define bM4_USBFS_HCCHAR11_EPNUM2 (*((volatile unsigned int*)(0x4380CC34UL))) +#define bM4_USBFS_HCCHAR11_EPNUM3 (*((volatile unsigned int*)(0x4380CC38UL))) +#define bM4_USBFS_HCCHAR11_EPDIR (*((volatile unsigned int*)(0x4380CC3CUL))) +#define bM4_USBFS_HCCHAR11_LSDEV (*((volatile unsigned int*)(0x4380CC44UL))) +#define bM4_USBFS_HCCHAR11_EPTYP0 (*((volatile unsigned int*)(0x4380CC48UL))) +#define bM4_USBFS_HCCHAR11_EPTYP1 (*((volatile unsigned int*)(0x4380CC4CUL))) +#define bM4_USBFS_HCCHAR11_DAD0 (*((volatile unsigned int*)(0x4380CC58UL))) +#define bM4_USBFS_HCCHAR11_DAD1 (*((volatile unsigned int*)(0x4380CC5CUL))) +#define bM4_USBFS_HCCHAR11_DAD2 (*((volatile unsigned int*)(0x4380CC60UL))) +#define bM4_USBFS_HCCHAR11_DAD3 (*((volatile unsigned int*)(0x4380CC64UL))) +#define bM4_USBFS_HCCHAR11_DAD4 (*((volatile unsigned int*)(0x4380CC68UL))) +#define bM4_USBFS_HCCHAR11_DAD5 (*((volatile unsigned int*)(0x4380CC6CUL))) +#define bM4_USBFS_HCCHAR11_DAD6 (*((volatile unsigned int*)(0x4380CC70UL))) +#define bM4_USBFS_HCCHAR11_ODDFRM (*((volatile unsigned int*)(0x4380CC74UL))) +#define bM4_USBFS_HCCHAR11_CHDIS (*((volatile unsigned int*)(0x4380CC78UL))) +#define bM4_USBFS_HCCHAR11_CHENA (*((volatile unsigned int*)(0x4380CC7CUL))) +#define bM4_USBFS_HCINT11_XFRC (*((volatile unsigned int*)(0x4380CD00UL))) +#define bM4_USBFS_HCINT11_CHH (*((volatile unsigned int*)(0x4380CD04UL))) +#define bM4_USBFS_HCINT11_STALL (*((volatile unsigned int*)(0x4380CD0CUL))) +#define bM4_USBFS_HCINT11_NAK (*((volatile unsigned int*)(0x4380CD10UL))) +#define bM4_USBFS_HCINT11_ACK (*((volatile unsigned int*)(0x4380CD14UL))) +#define bM4_USBFS_HCINT11_TXERR (*((volatile unsigned int*)(0x4380CD1CUL))) +#define bM4_USBFS_HCINT11_BBERR (*((volatile unsigned int*)(0x4380CD20UL))) +#define bM4_USBFS_HCINT11_FRMOR (*((volatile unsigned int*)(0x4380CD24UL))) +#define bM4_USBFS_HCINT11_DTERR (*((volatile unsigned int*)(0x4380CD28UL))) +#define bM4_USBFS_HCINTMSK11_XFRCM (*((volatile unsigned int*)(0x4380CD80UL))) +#define bM4_USBFS_HCINTMSK11_CHHM (*((volatile unsigned int*)(0x4380CD84UL))) +#define bM4_USBFS_HCINTMSK11_STALLM (*((volatile unsigned int*)(0x4380CD8CUL))) +#define bM4_USBFS_HCINTMSK11_NAKM (*((volatile unsigned int*)(0x4380CD90UL))) +#define bM4_USBFS_HCINTMSK11_ACKM (*((volatile unsigned int*)(0x4380CD94UL))) +#define bM4_USBFS_HCINTMSK11_TXERRM (*((volatile unsigned int*)(0x4380CD9CUL))) +#define bM4_USBFS_HCINTMSK11_BBERRM (*((volatile unsigned int*)(0x4380CDA0UL))) +#define bM4_USBFS_HCINTMSK11_FRMORM (*((volatile unsigned int*)(0x4380CDA4UL))) +#define bM4_USBFS_HCINTMSK11_DTERRM (*((volatile unsigned int*)(0x4380CDA8UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ0 (*((volatile unsigned int*)(0x4380CE00UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ1 (*((volatile unsigned int*)(0x4380CE04UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ2 (*((volatile unsigned int*)(0x4380CE08UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ3 (*((volatile unsigned int*)(0x4380CE0CUL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ4 (*((volatile unsigned int*)(0x4380CE10UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ5 (*((volatile unsigned int*)(0x4380CE14UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ6 (*((volatile unsigned int*)(0x4380CE18UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ7 (*((volatile unsigned int*)(0x4380CE1CUL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ8 (*((volatile unsigned int*)(0x4380CE20UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ9 (*((volatile unsigned int*)(0x4380CE24UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ10 (*((volatile unsigned int*)(0x4380CE28UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ11 (*((volatile unsigned int*)(0x4380CE2CUL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ12 (*((volatile unsigned int*)(0x4380CE30UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ13 (*((volatile unsigned int*)(0x4380CE34UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ14 (*((volatile unsigned int*)(0x4380CE38UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ15 (*((volatile unsigned int*)(0x4380CE3CUL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ16 (*((volatile unsigned int*)(0x4380CE40UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ17 (*((volatile unsigned int*)(0x4380CE44UL))) +#define bM4_USBFS_HCTSIZ11_XFRSIZ18 (*((volatile unsigned int*)(0x4380CE48UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT0 (*((volatile unsigned int*)(0x4380CE4CUL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT1 (*((volatile unsigned int*)(0x4380CE50UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT2 (*((volatile unsigned int*)(0x4380CE54UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT3 (*((volatile unsigned int*)(0x4380CE58UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT4 (*((volatile unsigned int*)(0x4380CE5CUL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT5 (*((volatile unsigned int*)(0x4380CE60UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT6 (*((volatile unsigned int*)(0x4380CE64UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT7 (*((volatile unsigned int*)(0x4380CE68UL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT8 (*((volatile unsigned int*)(0x4380CE6CUL))) +#define bM4_USBFS_HCTSIZ11_PKTCNT9 (*((volatile unsigned int*)(0x4380CE70UL))) +#define bM4_USBFS_HCTSIZ11_DPID0 (*((volatile unsigned int*)(0x4380CE74UL))) +#define bM4_USBFS_HCTSIZ11_DPID1 (*((volatile unsigned int*)(0x4380CE78UL))) +#define bM4_USBFS_DCFG_DSPD0 (*((volatile unsigned int*)(0x43810000UL))) +#define bM4_USBFS_DCFG_DSPD1 (*((volatile unsigned int*)(0x43810004UL))) +#define bM4_USBFS_DCFG_NZLSOHSK (*((volatile unsigned int*)(0x43810008UL))) +#define bM4_USBFS_DCFG_DAD0 (*((volatile unsigned int*)(0x43810010UL))) +#define bM4_USBFS_DCFG_DAD1 (*((volatile unsigned int*)(0x43810014UL))) +#define bM4_USBFS_DCFG_DAD2 (*((volatile unsigned int*)(0x43810018UL))) +#define bM4_USBFS_DCFG_DAD3 (*((volatile unsigned int*)(0x4381001CUL))) +#define bM4_USBFS_DCFG_DAD4 (*((volatile unsigned int*)(0x43810020UL))) +#define bM4_USBFS_DCFG_DAD5 (*((volatile unsigned int*)(0x43810024UL))) +#define bM4_USBFS_DCFG_DAD6 (*((volatile unsigned int*)(0x43810028UL))) +#define bM4_USBFS_DCFG_PFIVL0 (*((volatile unsigned int*)(0x4381002CUL))) +#define bM4_USBFS_DCFG_PFIVL1 (*((volatile unsigned int*)(0x43810030UL))) +#define bM4_USBFS_DCTL_RWUSIG (*((volatile unsigned int*)(0x43810080UL))) +#define bM4_USBFS_DCTL_SDIS (*((volatile unsigned int*)(0x43810084UL))) +#define bM4_USBFS_DCTL_GINSTS (*((volatile unsigned int*)(0x43810088UL))) +#define bM4_USBFS_DCTL_GONSTS (*((volatile unsigned int*)(0x4381008CUL))) +#define bM4_USBFS_DCTL_SGINAK (*((volatile unsigned int*)(0x4381009CUL))) +#define bM4_USBFS_DCTL_CGINAK (*((volatile unsigned int*)(0x438100A0UL))) +#define bM4_USBFS_DCTL_SGONAK (*((volatile unsigned int*)(0x438100A4UL))) +#define bM4_USBFS_DCTL_CGONAK (*((volatile unsigned int*)(0x438100A8UL))) +#define bM4_USBFS_DCTL_POPRGDNE (*((volatile unsigned int*)(0x438100ACUL))) +#define bM4_USBFS_DSTS_SUSPSTS (*((volatile unsigned int*)(0x43810100UL))) +#define bM4_USBFS_DSTS_ENUMSPD0 (*((volatile unsigned int*)(0x43810104UL))) +#define bM4_USBFS_DSTS_ENUMSPD1 (*((volatile unsigned int*)(0x43810108UL))) +#define bM4_USBFS_DSTS_EERR (*((volatile unsigned int*)(0x4381010CUL))) +#define bM4_USBFS_DSTS_FNSOF0 (*((volatile unsigned int*)(0x43810120UL))) +#define bM4_USBFS_DSTS_FNSOF1 (*((volatile unsigned int*)(0x43810124UL))) +#define bM4_USBFS_DSTS_FNSOF2 (*((volatile unsigned int*)(0x43810128UL))) +#define bM4_USBFS_DSTS_FNSOF3 (*((volatile unsigned int*)(0x4381012CUL))) +#define bM4_USBFS_DSTS_FNSOF4 (*((volatile unsigned int*)(0x43810130UL))) +#define bM4_USBFS_DSTS_FNSOF5 (*((volatile unsigned int*)(0x43810134UL))) +#define bM4_USBFS_DSTS_FNSOF6 (*((volatile unsigned int*)(0x43810138UL))) +#define bM4_USBFS_DSTS_FNSOF7 (*((volatile unsigned int*)(0x4381013CUL))) +#define bM4_USBFS_DSTS_FNSOF8 (*((volatile unsigned int*)(0x43810140UL))) +#define bM4_USBFS_DSTS_FNSOF9 (*((volatile unsigned int*)(0x43810144UL))) +#define bM4_USBFS_DSTS_FNSOF10 (*((volatile unsigned int*)(0x43810148UL))) +#define bM4_USBFS_DSTS_FNSOF11 (*((volatile unsigned int*)(0x4381014CUL))) +#define bM4_USBFS_DSTS_FNSOF12 (*((volatile unsigned int*)(0x43810150UL))) +#define bM4_USBFS_DSTS_FNSOF13 (*((volatile unsigned int*)(0x43810154UL))) +#define bM4_USBFS_DIEPMSK_XFRCM (*((volatile unsigned int*)(0x43810200UL))) +#define bM4_USBFS_DIEPMSK_EPDM (*((volatile unsigned int*)(0x43810204UL))) +#define bM4_USBFS_DIEPMSK_TOM (*((volatile unsigned int*)(0x4381020CUL))) +#define bM4_USBFS_DIEPMSK_ITTXFEMSK (*((volatile unsigned int*)(0x43810210UL))) +#define bM4_USBFS_DIEPMSK_INEPNMM (*((volatile unsigned int*)(0x43810214UL))) +#define bM4_USBFS_DIEPMSK_INEPNEM (*((volatile unsigned int*)(0x43810218UL))) +#define bM4_USBFS_DOEPMSK_XFRCM (*((volatile unsigned int*)(0x43810280UL))) +#define bM4_USBFS_DOEPMSK_EPDM (*((volatile unsigned int*)(0x43810284UL))) +#define bM4_USBFS_DOEPMSK_STUPM (*((volatile unsigned int*)(0x4381028CUL))) +#define bM4_USBFS_DOEPMSK_OTEPDM (*((volatile unsigned int*)(0x43810290UL))) +#define bM4_USBFS_DAINT_IEPINT0 (*((volatile unsigned int*)(0x43810300UL))) +#define bM4_USBFS_DAINT_IEPINT1 (*((volatile unsigned int*)(0x43810304UL))) +#define bM4_USBFS_DAINT_IEPINT2 (*((volatile unsigned int*)(0x43810308UL))) +#define bM4_USBFS_DAINT_IEPINT3 (*((volatile unsigned int*)(0x4381030CUL))) +#define bM4_USBFS_DAINT_IEPINT4 (*((volatile unsigned int*)(0x43810310UL))) +#define bM4_USBFS_DAINT_IEPINT5 (*((volatile unsigned int*)(0x43810314UL))) +#define bM4_USBFS_DAINT_OEPINT0 (*((volatile unsigned int*)(0x43810340UL))) +#define bM4_USBFS_DAINT_OEPINT1 (*((volatile unsigned int*)(0x43810344UL))) +#define bM4_USBFS_DAINT_OEPINT2 (*((volatile unsigned int*)(0x43810348UL))) +#define bM4_USBFS_DAINT_OEPINT3 (*((volatile unsigned int*)(0x4381034CUL))) +#define bM4_USBFS_DAINT_OEPINT4 (*((volatile unsigned int*)(0x43810350UL))) +#define bM4_USBFS_DAINT_OEPINT5 (*((volatile unsigned int*)(0x43810354UL))) +#define bM4_USBFS_DAINTMSK_IEPINTM0 (*((volatile unsigned int*)(0x43810380UL))) +#define bM4_USBFS_DAINTMSK_IEPINTM1 (*((volatile unsigned int*)(0x43810384UL))) +#define bM4_USBFS_DAINTMSK_IEPINTM2 (*((volatile unsigned int*)(0x43810388UL))) +#define bM4_USBFS_DAINTMSK_IEPINTM3 (*((volatile unsigned int*)(0x4381038CUL))) +#define bM4_USBFS_DAINTMSK_IEPINTM4 (*((volatile unsigned int*)(0x43810390UL))) +#define bM4_USBFS_DAINTMSK_IEPINTM5 (*((volatile unsigned int*)(0x43810394UL))) +#define bM4_USBFS_DAINTMSK_OEPINTM0 (*((volatile unsigned int*)(0x438103C0UL))) +#define bM4_USBFS_DAINTMSK_OEPINTM1 (*((volatile unsigned int*)(0x438103C4UL))) +#define bM4_USBFS_DAINTMSK_OEPINTM2 (*((volatile unsigned int*)(0x438103C8UL))) +#define bM4_USBFS_DAINTMSK_OEPINTM3 (*((volatile unsigned int*)(0x438103CCUL))) +#define bM4_USBFS_DAINTMSK_OEPINTM4 (*((volatile unsigned int*)(0x438103D0UL))) +#define bM4_USBFS_DAINTMSK_OEPINTM5 (*((volatile unsigned int*)(0x438103D4UL))) +#define bM4_USBFS_DIEPEMPMSK_INEPTXFEM0 (*((volatile unsigned int*)(0x43810680UL))) +#define bM4_USBFS_DIEPEMPMSK_INEPTXFEM1 (*((volatile unsigned int*)(0x43810684UL))) +#define bM4_USBFS_DIEPEMPMSK_INEPTXFEM2 (*((volatile unsigned int*)(0x43810688UL))) +#define bM4_USBFS_DIEPEMPMSK_INEPTXFEM3 (*((volatile unsigned int*)(0x4381068CUL))) +#define bM4_USBFS_DIEPEMPMSK_INEPTXFEM4 (*((volatile unsigned int*)(0x43810690UL))) +#define bM4_USBFS_DIEPEMPMSK_INEPTXFEM5 (*((volatile unsigned int*)(0x43810694UL))) +#define bM4_USBFS_DIEPCTL0_MPSIZ0 (*((volatile unsigned int*)(0x43812000UL))) +#define bM4_USBFS_DIEPCTL0_MPSIZ1 (*((volatile unsigned int*)(0x43812004UL))) +#define bM4_USBFS_DIEPCTL0_USBAEP (*((volatile unsigned int*)(0x4381203CUL))) +#define bM4_USBFS_DIEPCTL0_NAKSTS (*((volatile unsigned int*)(0x43812044UL))) +#define bM4_USBFS_DIEPCTL0_EPTYP0 (*((volatile unsigned int*)(0x43812048UL))) +#define bM4_USBFS_DIEPCTL0_EPTYP1 (*((volatile unsigned int*)(0x4381204CUL))) +#define bM4_USBFS_DIEPCTL0_STALL (*((volatile unsigned int*)(0x43812054UL))) +#define bM4_USBFS_DIEPCTL0_TXFNUM0 (*((volatile unsigned int*)(0x43812058UL))) +#define bM4_USBFS_DIEPCTL0_TXFNUM1 (*((volatile unsigned int*)(0x4381205CUL))) +#define bM4_USBFS_DIEPCTL0_TXFNUM2 (*((volatile unsigned int*)(0x43812060UL))) +#define bM4_USBFS_DIEPCTL0_TXFNUM3 (*((volatile unsigned int*)(0x43812064UL))) +#define bM4_USBFS_DIEPCTL0_CNAK (*((volatile unsigned int*)(0x43812068UL))) +#define bM4_USBFS_DIEPCTL0_SNAK (*((volatile unsigned int*)(0x4381206CUL))) +#define bM4_USBFS_DIEPCTL0_EPDIS (*((volatile unsigned int*)(0x43812078UL))) +#define bM4_USBFS_DIEPCTL0_EPENA (*((volatile unsigned int*)(0x4381207CUL))) +#define bM4_USBFS_DIEPINT0_XFRC (*((volatile unsigned int*)(0x43812100UL))) +#define bM4_USBFS_DIEPINT0_EPDISD (*((volatile unsigned int*)(0x43812104UL))) +#define bM4_USBFS_DIEPINT0_TOC (*((volatile unsigned int*)(0x4381210CUL))) +#define bM4_USBFS_DIEPINT0_TTXFE (*((volatile unsigned int*)(0x43812110UL))) +#define bM4_USBFS_DIEPINT0_INEPNE (*((volatile unsigned int*)(0x43812118UL))) +#define bM4_USBFS_DIEPINT0_TXFE (*((volatile unsigned int*)(0x4381211CUL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ0 (*((volatile unsigned int*)(0x43812200UL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ1 (*((volatile unsigned int*)(0x43812204UL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ2 (*((volatile unsigned int*)(0x43812208UL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ3 (*((volatile unsigned int*)(0x4381220CUL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ4 (*((volatile unsigned int*)(0x43812210UL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ5 (*((volatile unsigned int*)(0x43812214UL))) +#define bM4_USBFS_DIEPTSIZ0_XFRSIZ6 (*((volatile unsigned int*)(0x43812218UL))) +#define bM4_USBFS_DIEPTSIZ0_PKTCNT0 (*((volatile unsigned int*)(0x4381224CUL))) +#define bM4_USBFS_DIEPTSIZ0_PKTCNT1 (*((volatile unsigned int*)(0x43812250UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV0 (*((volatile unsigned int*)(0x43812300UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV1 (*((volatile unsigned int*)(0x43812304UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV2 (*((volatile unsigned int*)(0x43812308UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV3 (*((volatile unsigned int*)(0x4381230CUL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV4 (*((volatile unsigned int*)(0x43812310UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV5 (*((volatile unsigned int*)(0x43812314UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV6 (*((volatile unsigned int*)(0x43812318UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV7 (*((volatile unsigned int*)(0x4381231CUL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV8 (*((volatile unsigned int*)(0x43812320UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV9 (*((volatile unsigned int*)(0x43812324UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV10 (*((volatile unsigned int*)(0x43812328UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV11 (*((volatile unsigned int*)(0x4381232CUL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV12 (*((volatile unsigned int*)(0x43812330UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV13 (*((volatile unsigned int*)(0x43812334UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV14 (*((volatile unsigned int*)(0x43812338UL))) +#define bM4_USBFS_DTXFSTS0_INEPTFSAV15 (*((volatile unsigned int*)(0x4381233CUL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ0 (*((volatile unsigned int*)(0x43812400UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ1 (*((volatile unsigned int*)(0x43812404UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ2 (*((volatile unsigned int*)(0x43812408UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ3 (*((volatile unsigned int*)(0x4381240CUL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ4 (*((volatile unsigned int*)(0x43812410UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ5 (*((volatile unsigned int*)(0x43812414UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ6 (*((volatile unsigned int*)(0x43812418UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ7 (*((volatile unsigned int*)(0x4381241CUL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ8 (*((volatile unsigned int*)(0x43812420UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ9 (*((volatile unsigned int*)(0x43812424UL))) +#define bM4_USBFS_DIEPCTL1_MPSIZ10 (*((volatile unsigned int*)(0x43812428UL))) +#define bM4_USBFS_DIEPCTL1_USBAEP (*((volatile unsigned int*)(0x4381243CUL))) +#define bM4_USBFS_DIEPCTL1_EONUM_DPID (*((volatile unsigned int*)(0x43812440UL))) +#define bM4_USBFS_DIEPCTL1_NAKSTS (*((volatile unsigned int*)(0x43812444UL))) +#define bM4_USBFS_DIEPCTL1_EPTYP0 (*((volatile unsigned int*)(0x43812448UL))) +#define bM4_USBFS_DIEPCTL1_EPTYP1 (*((volatile unsigned int*)(0x4381244CUL))) +#define bM4_USBFS_DIEPCTL1_STALL (*((volatile unsigned int*)(0x43812454UL))) +#define bM4_USBFS_DIEPCTL1_TXFNUM0 (*((volatile unsigned int*)(0x43812458UL))) +#define bM4_USBFS_DIEPCTL1_TXFNUM1 (*((volatile unsigned int*)(0x4381245CUL))) +#define bM4_USBFS_DIEPCTL1_TXFNUM2 (*((volatile unsigned int*)(0x43812460UL))) +#define bM4_USBFS_DIEPCTL1_TXFNUM3 (*((volatile unsigned int*)(0x43812464UL))) +#define bM4_USBFS_DIEPCTL1_CNAK (*((volatile unsigned int*)(0x43812468UL))) +#define bM4_USBFS_DIEPCTL1_SNAK (*((volatile unsigned int*)(0x4381246CUL))) +#define bM4_USBFS_DIEPCTL1_SD0PID_SEVNFRM (*((volatile unsigned int*)(0x43812470UL))) +#define bM4_USBFS_DIEPCTL1_SODDFRM (*((volatile unsigned int*)(0x43812474UL))) +#define bM4_USBFS_DIEPCTL1_EPDIS (*((volatile unsigned int*)(0x43812478UL))) +#define bM4_USBFS_DIEPCTL1_EPENA (*((volatile unsigned int*)(0x4381247CUL))) +#define bM4_USBFS_DIEPINT1_XFRC (*((volatile unsigned int*)(0x43812500UL))) +#define bM4_USBFS_DIEPINT1_EPDISD (*((volatile unsigned int*)(0x43812504UL))) +#define bM4_USBFS_DIEPINT1_TOC (*((volatile unsigned int*)(0x4381250CUL))) +#define bM4_USBFS_DIEPINT1_TTXFE (*((volatile unsigned int*)(0x43812510UL))) +#define bM4_USBFS_DIEPINT1_INEPNE (*((volatile unsigned int*)(0x43812518UL))) +#define bM4_USBFS_DIEPINT1_TXFE (*((volatile unsigned int*)(0x4381251CUL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ0 (*((volatile unsigned int*)(0x43812600UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ1 (*((volatile unsigned int*)(0x43812604UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ2 (*((volatile unsigned int*)(0x43812608UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ3 (*((volatile unsigned int*)(0x4381260CUL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ4 (*((volatile unsigned int*)(0x43812610UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ5 (*((volatile unsigned int*)(0x43812614UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ6 (*((volatile unsigned int*)(0x43812618UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ7 (*((volatile unsigned int*)(0x4381261CUL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ8 (*((volatile unsigned int*)(0x43812620UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ9 (*((volatile unsigned int*)(0x43812624UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ10 (*((volatile unsigned int*)(0x43812628UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ11 (*((volatile unsigned int*)(0x4381262CUL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ12 (*((volatile unsigned int*)(0x43812630UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ13 (*((volatile unsigned int*)(0x43812634UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ14 (*((volatile unsigned int*)(0x43812638UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ15 (*((volatile unsigned int*)(0x4381263CUL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ16 (*((volatile unsigned int*)(0x43812640UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ17 (*((volatile unsigned int*)(0x43812644UL))) +#define bM4_USBFS_DIEPTSIZ1_XFRSIZ18 (*((volatile unsigned int*)(0x43812648UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT0 (*((volatile unsigned int*)(0x4381264CUL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT1 (*((volatile unsigned int*)(0x43812650UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT2 (*((volatile unsigned int*)(0x43812654UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT3 (*((volatile unsigned int*)(0x43812658UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT4 (*((volatile unsigned int*)(0x4381265CUL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT5 (*((volatile unsigned int*)(0x43812660UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT6 (*((volatile unsigned int*)(0x43812664UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT7 (*((volatile unsigned int*)(0x43812668UL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT8 (*((volatile unsigned int*)(0x4381266CUL))) +#define bM4_USBFS_DIEPTSIZ1_PKTCNT9 (*((volatile unsigned int*)(0x43812670UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV0 (*((volatile unsigned int*)(0x43812700UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV1 (*((volatile unsigned int*)(0x43812704UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV2 (*((volatile unsigned int*)(0x43812708UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV3 (*((volatile unsigned int*)(0x4381270CUL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV4 (*((volatile unsigned int*)(0x43812710UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV5 (*((volatile unsigned int*)(0x43812714UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV6 (*((volatile unsigned int*)(0x43812718UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV7 (*((volatile unsigned int*)(0x4381271CUL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV8 (*((volatile unsigned int*)(0x43812720UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV9 (*((volatile unsigned int*)(0x43812724UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV10 (*((volatile unsigned int*)(0x43812728UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV11 (*((volatile unsigned int*)(0x4381272CUL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV12 (*((volatile unsigned int*)(0x43812730UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV13 (*((volatile unsigned int*)(0x43812734UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV14 (*((volatile unsigned int*)(0x43812738UL))) +#define bM4_USBFS_DTXFSTS1_INEPTFSAV15 (*((volatile unsigned int*)(0x4381273CUL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ0 (*((volatile unsigned int*)(0x43812800UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ1 (*((volatile unsigned int*)(0x43812804UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ2 (*((volatile unsigned int*)(0x43812808UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ3 (*((volatile unsigned int*)(0x4381280CUL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ4 (*((volatile unsigned int*)(0x43812810UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ5 (*((volatile unsigned int*)(0x43812814UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ6 (*((volatile unsigned int*)(0x43812818UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ7 (*((volatile unsigned int*)(0x4381281CUL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ8 (*((volatile unsigned int*)(0x43812820UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ9 (*((volatile unsigned int*)(0x43812824UL))) +#define bM4_USBFS_DIEPCTL2_MPSIZ10 (*((volatile unsigned int*)(0x43812828UL))) +#define bM4_USBFS_DIEPCTL2_USBAEP (*((volatile unsigned int*)(0x4381283CUL))) +#define bM4_USBFS_DIEPCTL2_EONUM_DPID (*((volatile unsigned int*)(0x43812840UL))) +#define bM4_USBFS_DIEPCTL2_NAKSTS (*((volatile unsigned int*)(0x43812844UL))) +#define bM4_USBFS_DIEPCTL2_EPTYP0 (*((volatile unsigned int*)(0x43812848UL))) +#define bM4_USBFS_DIEPCTL2_EPTYP1 (*((volatile unsigned int*)(0x4381284CUL))) +#define bM4_USBFS_DIEPCTL2_STALL (*((volatile unsigned int*)(0x43812854UL))) +#define bM4_USBFS_DIEPCTL2_TXFNUM0 (*((volatile unsigned int*)(0x43812858UL))) +#define bM4_USBFS_DIEPCTL2_TXFNUM1 (*((volatile unsigned int*)(0x4381285CUL))) +#define bM4_USBFS_DIEPCTL2_TXFNUM2 (*((volatile unsigned int*)(0x43812860UL))) +#define bM4_USBFS_DIEPCTL2_TXFNUM3 (*((volatile unsigned int*)(0x43812864UL))) +#define bM4_USBFS_DIEPCTL2_CNAK (*((volatile unsigned int*)(0x43812868UL))) +#define bM4_USBFS_DIEPCTL2_SNAK (*((volatile unsigned int*)(0x4381286CUL))) +#define bM4_USBFS_DIEPCTL2_SD0PID_SEVNFRM (*((volatile unsigned int*)(0x43812870UL))) +#define bM4_USBFS_DIEPCTL2_SODDFRM (*((volatile unsigned int*)(0x43812874UL))) +#define bM4_USBFS_DIEPCTL2_EPDIS (*((volatile unsigned int*)(0x43812878UL))) +#define bM4_USBFS_DIEPCTL2_EPENA (*((volatile unsigned int*)(0x4381287CUL))) +#define bM4_USBFS_DIEPINT2_XFRC (*((volatile unsigned int*)(0x43812900UL))) +#define bM4_USBFS_DIEPINT2_EPDISD (*((volatile unsigned int*)(0x43812904UL))) +#define bM4_USBFS_DIEPINT2_TOC (*((volatile unsigned int*)(0x4381290CUL))) +#define bM4_USBFS_DIEPINT2_TTXFE (*((volatile unsigned int*)(0x43812910UL))) +#define bM4_USBFS_DIEPINT2_INEPNE (*((volatile unsigned int*)(0x43812918UL))) +#define bM4_USBFS_DIEPINT2_TXFE (*((volatile unsigned int*)(0x4381291CUL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ0 (*((volatile unsigned int*)(0x43812A00UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ1 (*((volatile unsigned int*)(0x43812A04UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ2 (*((volatile unsigned int*)(0x43812A08UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ3 (*((volatile unsigned int*)(0x43812A0CUL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ4 (*((volatile unsigned int*)(0x43812A10UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ5 (*((volatile unsigned int*)(0x43812A14UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ6 (*((volatile unsigned int*)(0x43812A18UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ7 (*((volatile unsigned int*)(0x43812A1CUL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ8 (*((volatile unsigned int*)(0x43812A20UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ9 (*((volatile unsigned int*)(0x43812A24UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ10 (*((volatile unsigned int*)(0x43812A28UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ11 (*((volatile unsigned int*)(0x43812A2CUL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ12 (*((volatile unsigned int*)(0x43812A30UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ13 (*((volatile unsigned int*)(0x43812A34UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ14 (*((volatile unsigned int*)(0x43812A38UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ15 (*((volatile unsigned int*)(0x43812A3CUL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ16 (*((volatile unsigned int*)(0x43812A40UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ17 (*((volatile unsigned int*)(0x43812A44UL))) +#define bM4_USBFS_DIEPTSIZ2_XFRSIZ18 (*((volatile unsigned int*)(0x43812A48UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT0 (*((volatile unsigned int*)(0x43812A4CUL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT1 (*((volatile unsigned int*)(0x43812A50UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT2 (*((volatile unsigned int*)(0x43812A54UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT3 (*((volatile unsigned int*)(0x43812A58UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT4 (*((volatile unsigned int*)(0x43812A5CUL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT5 (*((volatile unsigned int*)(0x43812A60UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT6 (*((volatile unsigned int*)(0x43812A64UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT7 (*((volatile unsigned int*)(0x43812A68UL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT8 (*((volatile unsigned int*)(0x43812A6CUL))) +#define bM4_USBFS_DIEPTSIZ2_PKTCNT9 (*((volatile unsigned int*)(0x43812A70UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV0 (*((volatile unsigned int*)(0x43812B00UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV1 (*((volatile unsigned int*)(0x43812B04UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV2 (*((volatile unsigned int*)(0x43812B08UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV3 (*((volatile unsigned int*)(0x43812B0CUL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV4 (*((volatile unsigned int*)(0x43812B10UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV5 (*((volatile unsigned int*)(0x43812B14UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV6 (*((volatile unsigned int*)(0x43812B18UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV7 (*((volatile unsigned int*)(0x43812B1CUL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV8 (*((volatile unsigned int*)(0x43812B20UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV9 (*((volatile unsigned int*)(0x43812B24UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV10 (*((volatile unsigned int*)(0x43812B28UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV11 (*((volatile unsigned int*)(0x43812B2CUL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV12 (*((volatile unsigned int*)(0x43812B30UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV13 (*((volatile unsigned int*)(0x43812B34UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV14 (*((volatile unsigned int*)(0x43812B38UL))) +#define bM4_USBFS_DTXFSTS2_INEPTFSAV15 (*((volatile unsigned int*)(0x43812B3CUL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ0 (*((volatile unsigned int*)(0x43812C00UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ1 (*((volatile unsigned int*)(0x43812C04UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ2 (*((volatile unsigned int*)(0x43812C08UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ3 (*((volatile unsigned int*)(0x43812C0CUL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ4 (*((volatile unsigned int*)(0x43812C10UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ5 (*((volatile unsigned int*)(0x43812C14UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ6 (*((volatile unsigned int*)(0x43812C18UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ7 (*((volatile unsigned int*)(0x43812C1CUL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ8 (*((volatile unsigned int*)(0x43812C20UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ9 (*((volatile unsigned int*)(0x43812C24UL))) +#define bM4_USBFS_DIEPCTL3_MPSIZ10 (*((volatile unsigned int*)(0x43812C28UL))) +#define bM4_USBFS_DIEPCTL3_USBAEP (*((volatile unsigned int*)(0x43812C3CUL))) +#define bM4_USBFS_DIEPCTL3_EONUM_DPID (*((volatile unsigned int*)(0x43812C40UL))) +#define bM4_USBFS_DIEPCTL3_NAKSTS (*((volatile unsigned int*)(0x43812C44UL))) +#define bM4_USBFS_DIEPCTL3_EPTYP0 (*((volatile unsigned int*)(0x43812C48UL))) +#define bM4_USBFS_DIEPCTL3_EPTYP1 (*((volatile unsigned int*)(0x43812C4CUL))) +#define bM4_USBFS_DIEPCTL3_STALL (*((volatile unsigned int*)(0x43812C54UL))) +#define bM4_USBFS_DIEPCTL3_TXFNUM0 (*((volatile unsigned int*)(0x43812C58UL))) +#define bM4_USBFS_DIEPCTL3_TXFNUM1 (*((volatile unsigned int*)(0x43812C5CUL))) +#define bM4_USBFS_DIEPCTL3_TXFNUM2 (*((volatile unsigned int*)(0x43812C60UL))) +#define bM4_USBFS_DIEPCTL3_TXFNUM3 (*((volatile unsigned int*)(0x43812C64UL))) +#define bM4_USBFS_DIEPCTL3_CNAK (*((volatile unsigned int*)(0x43812C68UL))) +#define bM4_USBFS_DIEPCTL3_SNAK (*((volatile unsigned int*)(0x43812C6CUL))) +#define bM4_USBFS_DIEPCTL3_SD0PID_SEVNFRM (*((volatile unsigned int*)(0x43812C70UL))) +#define bM4_USBFS_DIEPCTL3_SODDFRM (*((volatile unsigned int*)(0x43812C74UL))) +#define bM4_USBFS_DIEPCTL3_EPDIS (*((volatile unsigned int*)(0x43812C78UL))) +#define bM4_USBFS_DIEPCTL3_EPENA (*((volatile unsigned int*)(0x43812C7CUL))) +#define bM4_USBFS_DIEPINT3_XFRC (*((volatile unsigned int*)(0x43812D00UL))) +#define bM4_USBFS_DIEPINT3_EPDISD (*((volatile unsigned int*)(0x43812D04UL))) +#define bM4_USBFS_DIEPINT3_TOC (*((volatile unsigned int*)(0x43812D0CUL))) +#define bM4_USBFS_DIEPINT3_TTXFE (*((volatile unsigned int*)(0x43812D10UL))) +#define bM4_USBFS_DIEPINT3_INEPNE (*((volatile unsigned int*)(0x43812D18UL))) +#define bM4_USBFS_DIEPINT3_TXFE (*((volatile unsigned int*)(0x43812D1CUL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ0 (*((volatile unsigned int*)(0x43812E00UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ1 (*((volatile unsigned int*)(0x43812E04UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ2 (*((volatile unsigned int*)(0x43812E08UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ3 (*((volatile unsigned int*)(0x43812E0CUL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ4 (*((volatile unsigned int*)(0x43812E10UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ5 (*((volatile unsigned int*)(0x43812E14UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ6 (*((volatile unsigned int*)(0x43812E18UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ7 (*((volatile unsigned int*)(0x43812E1CUL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ8 (*((volatile unsigned int*)(0x43812E20UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ9 (*((volatile unsigned int*)(0x43812E24UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ10 (*((volatile unsigned int*)(0x43812E28UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ11 (*((volatile unsigned int*)(0x43812E2CUL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ12 (*((volatile unsigned int*)(0x43812E30UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ13 (*((volatile unsigned int*)(0x43812E34UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ14 (*((volatile unsigned int*)(0x43812E38UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ15 (*((volatile unsigned int*)(0x43812E3CUL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ16 (*((volatile unsigned int*)(0x43812E40UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ17 (*((volatile unsigned int*)(0x43812E44UL))) +#define bM4_USBFS_DIEPTSIZ3_XFRSIZ18 (*((volatile unsigned int*)(0x43812E48UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT0 (*((volatile unsigned int*)(0x43812E4CUL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT1 (*((volatile unsigned int*)(0x43812E50UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT2 (*((volatile unsigned int*)(0x43812E54UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT3 (*((volatile unsigned int*)(0x43812E58UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT4 (*((volatile unsigned int*)(0x43812E5CUL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT5 (*((volatile unsigned int*)(0x43812E60UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT6 (*((volatile unsigned int*)(0x43812E64UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT7 (*((volatile unsigned int*)(0x43812E68UL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT8 (*((volatile unsigned int*)(0x43812E6CUL))) +#define bM4_USBFS_DIEPTSIZ3_PKTCNT9 (*((volatile unsigned int*)(0x43812E70UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV0 (*((volatile unsigned int*)(0x43812F00UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV1 (*((volatile unsigned int*)(0x43812F04UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV2 (*((volatile unsigned int*)(0x43812F08UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV3 (*((volatile unsigned int*)(0x43812F0CUL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV4 (*((volatile unsigned int*)(0x43812F10UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV5 (*((volatile unsigned int*)(0x43812F14UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV6 (*((volatile unsigned int*)(0x43812F18UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV7 (*((volatile unsigned int*)(0x43812F1CUL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV8 (*((volatile unsigned int*)(0x43812F20UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV9 (*((volatile unsigned int*)(0x43812F24UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV10 (*((volatile unsigned int*)(0x43812F28UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV11 (*((volatile unsigned int*)(0x43812F2CUL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV12 (*((volatile unsigned int*)(0x43812F30UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV13 (*((volatile unsigned int*)(0x43812F34UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV14 (*((volatile unsigned int*)(0x43812F38UL))) +#define bM4_USBFS_DTXFSTS3_INEPTFSAV15 (*((volatile unsigned int*)(0x43812F3CUL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ0 (*((volatile unsigned int*)(0x43813000UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ1 (*((volatile unsigned int*)(0x43813004UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ2 (*((volatile unsigned int*)(0x43813008UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ3 (*((volatile unsigned int*)(0x4381300CUL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ4 (*((volatile unsigned int*)(0x43813010UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ5 (*((volatile unsigned int*)(0x43813014UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ6 (*((volatile unsigned int*)(0x43813018UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ7 (*((volatile unsigned int*)(0x4381301CUL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ8 (*((volatile unsigned int*)(0x43813020UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ9 (*((volatile unsigned int*)(0x43813024UL))) +#define bM4_USBFS_DIEPCTL4_MPSIZ10 (*((volatile unsigned int*)(0x43813028UL))) +#define bM4_USBFS_DIEPCTL4_USBAEP (*((volatile unsigned int*)(0x4381303CUL))) +#define bM4_USBFS_DIEPCTL4_EONUM_DPID (*((volatile unsigned int*)(0x43813040UL))) +#define bM4_USBFS_DIEPCTL4_NAKSTS (*((volatile unsigned int*)(0x43813044UL))) +#define bM4_USBFS_DIEPCTL4_EPTYP0 (*((volatile unsigned int*)(0x43813048UL))) +#define bM4_USBFS_DIEPCTL4_EPTYP1 (*((volatile unsigned int*)(0x4381304CUL))) +#define bM4_USBFS_DIEPCTL4_STALL (*((volatile unsigned int*)(0x43813054UL))) +#define bM4_USBFS_DIEPCTL4_TXFNUM0 (*((volatile unsigned int*)(0x43813058UL))) +#define bM4_USBFS_DIEPCTL4_TXFNUM1 (*((volatile unsigned int*)(0x4381305CUL))) +#define bM4_USBFS_DIEPCTL4_TXFNUM2 (*((volatile unsigned int*)(0x43813060UL))) +#define bM4_USBFS_DIEPCTL4_TXFNUM3 (*((volatile unsigned int*)(0x43813064UL))) +#define bM4_USBFS_DIEPCTL4_CNAK (*((volatile unsigned int*)(0x43813068UL))) +#define bM4_USBFS_DIEPCTL4_SNAK (*((volatile unsigned int*)(0x4381306CUL))) +#define bM4_USBFS_DIEPCTL4_SD0PID_SEVNFRM (*((volatile unsigned int*)(0x43813070UL))) +#define bM4_USBFS_DIEPCTL4_SODDFRM (*((volatile unsigned int*)(0x43813074UL))) +#define bM4_USBFS_DIEPCTL4_EPDIS (*((volatile unsigned int*)(0x43813078UL))) +#define bM4_USBFS_DIEPCTL4_EPENA (*((volatile unsigned int*)(0x4381307CUL))) +#define bM4_USBFS_DIEPINT4_XFRC (*((volatile unsigned int*)(0x43813100UL))) +#define bM4_USBFS_DIEPINT4_EPDISD (*((volatile unsigned int*)(0x43813104UL))) +#define bM4_USBFS_DIEPINT4_TOC (*((volatile unsigned int*)(0x4381310CUL))) +#define bM4_USBFS_DIEPINT4_TTXFE (*((volatile unsigned int*)(0x43813110UL))) +#define bM4_USBFS_DIEPINT4_INEPNE (*((volatile unsigned int*)(0x43813118UL))) +#define bM4_USBFS_DIEPINT4_TXFE (*((volatile unsigned int*)(0x4381311CUL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ0 (*((volatile unsigned int*)(0x43813200UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ1 (*((volatile unsigned int*)(0x43813204UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ2 (*((volatile unsigned int*)(0x43813208UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ3 (*((volatile unsigned int*)(0x4381320CUL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ4 (*((volatile unsigned int*)(0x43813210UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ5 (*((volatile unsigned int*)(0x43813214UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ6 (*((volatile unsigned int*)(0x43813218UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ7 (*((volatile unsigned int*)(0x4381321CUL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ8 (*((volatile unsigned int*)(0x43813220UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ9 (*((volatile unsigned int*)(0x43813224UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ10 (*((volatile unsigned int*)(0x43813228UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ11 (*((volatile unsigned int*)(0x4381322CUL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ12 (*((volatile unsigned int*)(0x43813230UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ13 (*((volatile unsigned int*)(0x43813234UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ14 (*((volatile unsigned int*)(0x43813238UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ15 (*((volatile unsigned int*)(0x4381323CUL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ16 (*((volatile unsigned int*)(0x43813240UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ17 (*((volatile unsigned int*)(0x43813244UL))) +#define bM4_USBFS_DIEPTSIZ4_XFRSIZ18 (*((volatile unsigned int*)(0x43813248UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT0 (*((volatile unsigned int*)(0x4381324CUL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT1 (*((volatile unsigned int*)(0x43813250UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT2 (*((volatile unsigned int*)(0x43813254UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT3 (*((volatile unsigned int*)(0x43813258UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT4 (*((volatile unsigned int*)(0x4381325CUL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT5 (*((volatile unsigned int*)(0x43813260UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT6 (*((volatile unsigned int*)(0x43813264UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT7 (*((volatile unsigned int*)(0x43813268UL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT8 (*((volatile unsigned int*)(0x4381326CUL))) +#define bM4_USBFS_DIEPTSIZ4_PKTCNT9 (*((volatile unsigned int*)(0x43813270UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV0 (*((volatile unsigned int*)(0x43813300UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV1 (*((volatile unsigned int*)(0x43813304UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV2 (*((volatile unsigned int*)(0x43813308UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV3 (*((volatile unsigned int*)(0x4381330CUL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV4 (*((volatile unsigned int*)(0x43813310UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV5 (*((volatile unsigned int*)(0x43813314UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV6 (*((volatile unsigned int*)(0x43813318UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV7 (*((volatile unsigned int*)(0x4381331CUL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV8 (*((volatile unsigned int*)(0x43813320UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV9 (*((volatile unsigned int*)(0x43813324UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV10 (*((volatile unsigned int*)(0x43813328UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV11 (*((volatile unsigned int*)(0x4381332CUL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV12 (*((volatile unsigned int*)(0x43813330UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV13 (*((volatile unsigned int*)(0x43813334UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV14 (*((volatile unsigned int*)(0x43813338UL))) +#define bM4_USBFS_DTXFSTS4_INEPTFSAV15 (*((volatile unsigned int*)(0x4381333CUL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ0 (*((volatile unsigned int*)(0x43813400UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ1 (*((volatile unsigned int*)(0x43813404UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ2 (*((volatile unsigned int*)(0x43813408UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ3 (*((volatile unsigned int*)(0x4381340CUL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ4 (*((volatile unsigned int*)(0x43813410UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ5 (*((volatile unsigned int*)(0x43813414UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ6 (*((volatile unsigned int*)(0x43813418UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ7 (*((volatile unsigned int*)(0x4381341CUL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ8 (*((volatile unsigned int*)(0x43813420UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ9 (*((volatile unsigned int*)(0x43813424UL))) +#define bM4_USBFS_DIEPCTL5_MPSIZ10 (*((volatile unsigned int*)(0x43813428UL))) +#define bM4_USBFS_DIEPCTL5_USBAEP (*((volatile unsigned int*)(0x4381343CUL))) +#define bM4_USBFS_DIEPCTL5_EONUM_DPID (*((volatile unsigned int*)(0x43813440UL))) +#define bM4_USBFS_DIEPCTL5_NAKSTS (*((volatile unsigned int*)(0x43813444UL))) +#define bM4_USBFS_DIEPCTL5_EPTYP0 (*((volatile unsigned int*)(0x43813448UL))) +#define bM4_USBFS_DIEPCTL5_EPTYP1 (*((volatile unsigned int*)(0x4381344CUL))) +#define bM4_USBFS_DIEPCTL5_STALL (*((volatile unsigned int*)(0x43813454UL))) +#define bM4_USBFS_DIEPCTL5_TXFNUM0 (*((volatile unsigned int*)(0x43813458UL))) +#define bM4_USBFS_DIEPCTL5_TXFNUM1 (*((volatile unsigned int*)(0x4381345CUL))) +#define bM4_USBFS_DIEPCTL5_TXFNUM2 (*((volatile unsigned int*)(0x43813460UL))) +#define bM4_USBFS_DIEPCTL5_TXFNUM3 (*((volatile unsigned int*)(0x43813464UL))) +#define bM4_USBFS_DIEPCTL5_CNAK (*((volatile unsigned int*)(0x43813468UL))) +#define bM4_USBFS_DIEPCTL5_SNAK (*((volatile unsigned int*)(0x4381346CUL))) +#define bM4_USBFS_DIEPCTL5_SD0PID_SEVNFRM (*((volatile unsigned int*)(0x43813470UL))) +#define bM4_USBFS_DIEPCTL5_SODDFRM (*((volatile unsigned int*)(0x43813474UL))) +#define bM4_USBFS_DIEPCTL5_EPDIS (*((volatile unsigned int*)(0x43813478UL))) +#define bM4_USBFS_DIEPCTL5_EPENA (*((volatile unsigned int*)(0x4381347CUL))) +#define bM4_USBFS_DIEPINT5_XFRC (*((volatile unsigned int*)(0x43813500UL))) +#define bM4_USBFS_DIEPINT5_EPDISD (*((volatile unsigned int*)(0x43813504UL))) +#define bM4_USBFS_DIEPINT5_TOC (*((volatile unsigned int*)(0x4381350CUL))) +#define bM4_USBFS_DIEPINT5_TTXFE (*((volatile unsigned int*)(0x43813510UL))) +#define bM4_USBFS_DIEPINT5_INEPNE (*((volatile unsigned int*)(0x43813518UL))) +#define bM4_USBFS_DIEPINT5_TXFE (*((volatile unsigned int*)(0x4381351CUL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ0 (*((volatile unsigned int*)(0x43813600UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ1 (*((volatile unsigned int*)(0x43813604UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ2 (*((volatile unsigned int*)(0x43813608UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ3 (*((volatile unsigned int*)(0x4381360CUL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ4 (*((volatile unsigned int*)(0x43813610UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ5 (*((volatile unsigned int*)(0x43813614UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ6 (*((volatile unsigned int*)(0x43813618UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ7 (*((volatile unsigned int*)(0x4381361CUL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ8 (*((volatile unsigned int*)(0x43813620UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ9 (*((volatile unsigned int*)(0x43813624UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ10 (*((volatile unsigned int*)(0x43813628UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ11 (*((volatile unsigned int*)(0x4381362CUL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ12 (*((volatile unsigned int*)(0x43813630UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ13 (*((volatile unsigned int*)(0x43813634UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ14 (*((volatile unsigned int*)(0x43813638UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ15 (*((volatile unsigned int*)(0x4381363CUL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ16 (*((volatile unsigned int*)(0x43813640UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ17 (*((volatile unsigned int*)(0x43813644UL))) +#define bM4_USBFS_DIEPTSIZ5_XFRSIZ18 (*((volatile unsigned int*)(0x43813648UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT0 (*((volatile unsigned int*)(0x4381364CUL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT1 (*((volatile unsigned int*)(0x43813650UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT2 (*((volatile unsigned int*)(0x43813654UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT3 (*((volatile unsigned int*)(0x43813658UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT4 (*((volatile unsigned int*)(0x4381365CUL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT5 (*((volatile unsigned int*)(0x43813660UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT6 (*((volatile unsigned int*)(0x43813664UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT7 (*((volatile unsigned int*)(0x43813668UL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT8 (*((volatile unsigned int*)(0x4381366CUL))) +#define bM4_USBFS_DIEPTSIZ5_PKTCNT9 (*((volatile unsigned int*)(0x43813670UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV0 (*((volatile unsigned int*)(0x43813700UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV1 (*((volatile unsigned int*)(0x43813704UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV2 (*((volatile unsigned int*)(0x43813708UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV3 (*((volatile unsigned int*)(0x4381370CUL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV4 (*((volatile unsigned int*)(0x43813710UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV5 (*((volatile unsigned int*)(0x43813714UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV6 (*((volatile unsigned int*)(0x43813718UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV7 (*((volatile unsigned int*)(0x4381371CUL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV8 (*((volatile unsigned int*)(0x43813720UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV9 (*((volatile unsigned int*)(0x43813724UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV10 (*((volatile unsigned int*)(0x43813728UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV11 (*((volatile unsigned int*)(0x4381372CUL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV12 (*((volatile unsigned int*)(0x43813730UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV13 (*((volatile unsigned int*)(0x43813734UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV14 (*((volatile unsigned int*)(0x43813738UL))) +#define bM4_USBFS_DTXFSTS5_INEPTFSAV15 (*((volatile unsigned int*)(0x4381373CUL))) +#define bM4_USBFS_DOEPCTL0_MPSIZ0 (*((volatile unsigned int*)(0x43816000UL))) +#define bM4_USBFS_DOEPCTL0_MPSIZ1 (*((volatile unsigned int*)(0x43816004UL))) +#define bM4_USBFS_DOEPCTL0_USBAEP (*((volatile unsigned int*)(0x4381603CUL))) +#define bM4_USBFS_DOEPCTL0_NAKSTS (*((volatile unsigned int*)(0x43816044UL))) +#define bM4_USBFS_DOEPCTL0_EPTYP0 (*((volatile unsigned int*)(0x43816048UL))) +#define bM4_USBFS_DOEPCTL0_EPTYP1 (*((volatile unsigned int*)(0x4381604CUL))) +#define bM4_USBFS_DOEPCTL0_SNPM (*((volatile unsigned int*)(0x43816050UL))) +#define bM4_USBFS_DOEPCTL0_STALL (*((volatile unsigned int*)(0x43816054UL))) +#define bM4_USBFS_DOEPCTL0_CNAK (*((volatile unsigned int*)(0x43816068UL))) +#define bM4_USBFS_DOEPCTL0_SNAK (*((volatile unsigned int*)(0x4381606CUL))) +#define bM4_USBFS_DOEPCTL0_EPDIS (*((volatile unsigned int*)(0x43816078UL))) +#define bM4_USBFS_DOEPCTL0_EPENA (*((volatile unsigned int*)(0x4381607CUL))) +#define bM4_USBFS_DOEPINT0_XFRC (*((volatile unsigned int*)(0x43816100UL))) +#define bM4_USBFS_DOEPINT0_EPDISD (*((volatile unsigned int*)(0x43816104UL))) +#define bM4_USBFS_DOEPINT0_STUP (*((volatile unsigned int*)(0x4381610CUL))) +#define bM4_USBFS_DOEPINT0_OTEPDIS (*((volatile unsigned int*)(0x43816110UL))) +#define bM4_USBFS_DOEPINT0_B2BSTUP (*((volatile unsigned int*)(0x43816118UL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ0 (*((volatile unsigned int*)(0x43816200UL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ1 (*((volatile unsigned int*)(0x43816204UL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ2 (*((volatile unsigned int*)(0x43816208UL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ3 (*((volatile unsigned int*)(0x4381620CUL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ4 (*((volatile unsigned int*)(0x43816210UL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ5 (*((volatile unsigned int*)(0x43816214UL))) +#define bM4_USBFS_DOEPTSIZ0_XFRSIZ6 (*((volatile unsigned int*)(0x43816218UL))) +#define bM4_USBFS_DOEPTSIZ0_PKTCNT (*((volatile unsigned int*)(0x4381624CUL))) +#define bM4_USBFS_DOEPTSIZ0_STUPCNT0 (*((volatile unsigned int*)(0x43816274UL))) +#define bM4_USBFS_DOEPTSIZ0_STUPCNT1 (*((volatile unsigned int*)(0x43816278UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ0 (*((volatile unsigned int*)(0x43816400UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ1 (*((volatile unsigned int*)(0x43816404UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ2 (*((volatile unsigned int*)(0x43816408UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ3 (*((volatile unsigned int*)(0x4381640CUL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ4 (*((volatile unsigned int*)(0x43816410UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ5 (*((volatile unsigned int*)(0x43816414UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ6 (*((volatile unsigned int*)(0x43816418UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ7 (*((volatile unsigned int*)(0x4381641CUL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ8 (*((volatile unsigned int*)(0x43816420UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ9 (*((volatile unsigned int*)(0x43816424UL))) +#define bM4_USBFS_DOEPCTL1_MPSIZ10 (*((volatile unsigned int*)(0x43816428UL))) +#define bM4_USBFS_DOEPCTL1_USBAEP (*((volatile unsigned int*)(0x4381643CUL))) +#define bM4_USBFS_DOEPCTL1_DPID (*((volatile unsigned int*)(0x43816440UL))) +#define bM4_USBFS_DOEPCTL1_NAKSTS (*((volatile unsigned int*)(0x43816444UL))) +#define bM4_USBFS_DOEPCTL1_EPTYP0 (*((volatile unsigned int*)(0x43816448UL))) +#define bM4_USBFS_DOEPCTL1_EPTYP1 (*((volatile unsigned int*)(0x4381644CUL))) +#define bM4_USBFS_DOEPCTL1_SNPM (*((volatile unsigned int*)(0x43816450UL))) +#define bM4_USBFS_DOEPCTL1_STALL (*((volatile unsigned int*)(0x43816454UL))) +#define bM4_USBFS_DOEPCTL1_CNAK (*((volatile unsigned int*)(0x43816468UL))) +#define bM4_USBFS_DOEPCTL1_SNAK (*((volatile unsigned int*)(0x4381646CUL))) +#define bM4_USBFS_DOEPCTL1_SD0PID (*((volatile unsigned int*)(0x43816470UL))) +#define bM4_USBFS_DOEPCTL1_SD1PID (*((volatile unsigned int*)(0x43816474UL))) +#define bM4_USBFS_DOEPCTL1_EPDIS (*((volatile unsigned int*)(0x43816478UL))) +#define bM4_USBFS_DOEPCTL1_EPENA (*((volatile unsigned int*)(0x4381647CUL))) +#define bM4_USBFS_DOEPINT1_XFRC (*((volatile unsigned int*)(0x43816500UL))) +#define bM4_USBFS_DOEPINT1_EPDISD (*((volatile unsigned int*)(0x43816504UL))) +#define bM4_USBFS_DOEPINT1_STUP (*((volatile unsigned int*)(0x4381650CUL))) +#define bM4_USBFS_DOEPINT1_OTEPDIS (*((volatile unsigned int*)(0x43816510UL))) +#define bM4_USBFS_DOEPINT1_B2BSTUP (*((volatile unsigned int*)(0x43816518UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ0 (*((volatile unsigned int*)(0x43816600UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ1 (*((volatile unsigned int*)(0x43816604UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ2 (*((volatile unsigned int*)(0x43816608UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ3 (*((volatile unsigned int*)(0x4381660CUL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ4 (*((volatile unsigned int*)(0x43816610UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ5 (*((volatile unsigned int*)(0x43816614UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ6 (*((volatile unsigned int*)(0x43816618UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ7 (*((volatile unsigned int*)(0x4381661CUL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ8 (*((volatile unsigned int*)(0x43816620UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ9 (*((volatile unsigned int*)(0x43816624UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ10 (*((volatile unsigned int*)(0x43816628UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ11 (*((volatile unsigned int*)(0x4381662CUL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ12 (*((volatile unsigned int*)(0x43816630UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ13 (*((volatile unsigned int*)(0x43816634UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ14 (*((volatile unsigned int*)(0x43816638UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ15 (*((volatile unsigned int*)(0x4381663CUL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ16 (*((volatile unsigned int*)(0x43816640UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ17 (*((volatile unsigned int*)(0x43816644UL))) +#define bM4_USBFS_DOEPTSIZ1_XFRSIZ18 (*((volatile unsigned int*)(0x43816648UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT0 (*((volatile unsigned int*)(0x4381664CUL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT1 (*((volatile unsigned int*)(0x43816650UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT2 (*((volatile unsigned int*)(0x43816654UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT3 (*((volatile unsigned int*)(0x43816658UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT4 (*((volatile unsigned int*)(0x4381665CUL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT5 (*((volatile unsigned int*)(0x43816660UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT6 (*((volatile unsigned int*)(0x43816664UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT7 (*((volatile unsigned int*)(0x43816668UL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT8 (*((volatile unsigned int*)(0x4381666CUL))) +#define bM4_USBFS_DOEPTSIZ1_PKTCNT9 (*((volatile unsigned int*)(0x43816670UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ0 (*((volatile unsigned int*)(0x43816800UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ1 (*((volatile unsigned int*)(0x43816804UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ2 (*((volatile unsigned int*)(0x43816808UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ3 (*((volatile unsigned int*)(0x4381680CUL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ4 (*((volatile unsigned int*)(0x43816810UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ5 (*((volatile unsigned int*)(0x43816814UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ6 (*((volatile unsigned int*)(0x43816818UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ7 (*((volatile unsigned int*)(0x4381681CUL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ8 (*((volatile unsigned int*)(0x43816820UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ9 (*((volatile unsigned int*)(0x43816824UL))) +#define bM4_USBFS_DOEPCTL2_MPSIZ10 (*((volatile unsigned int*)(0x43816828UL))) +#define bM4_USBFS_DOEPCTL2_USBAEP (*((volatile unsigned int*)(0x4381683CUL))) +#define bM4_USBFS_DOEPCTL2_DPID (*((volatile unsigned int*)(0x43816840UL))) +#define bM4_USBFS_DOEPCTL2_NAKSTS (*((volatile unsigned int*)(0x43816844UL))) +#define bM4_USBFS_DOEPCTL2_EPTYP0 (*((volatile unsigned int*)(0x43816848UL))) +#define bM4_USBFS_DOEPCTL2_EPTYP1 (*((volatile unsigned int*)(0x4381684CUL))) +#define bM4_USBFS_DOEPCTL2_SNPM (*((volatile unsigned int*)(0x43816850UL))) +#define bM4_USBFS_DOEPCTL2_STALL (*((volatile unsigned int*)(0x43816854UL))) +#define bM4_USBFS_DOEPCTL2_CNAK (*((volatile unsigned int*)(0x43816868UL))) +#define bM4_USBFS_DOEPCTL2_SNAK (*((volatile unsigned int*)(0x4381686CUL))) +#define bM4_USBFS_DOEPCTL2_SD0PID (*((volatile unsigned int*)(0x43816870UL))) +#define bM4_USBFS_DOEPCTL2_SD1PID (*((volatile unsigned int*)(0x43816874UL))) +#define bM4_USBFS_DOEPCTL2_EPDIS (*((volatile unsigned int*)(0x43816878UL))) +#define bM4_USBFS_DOEPCTL2_EPENA (*((volatile unsigned int*)(0x4381687CUL))) +#define bM4_USBFS_DOEPINT2_XFRC (*((volatile unsigned int*)(0x43816900UL))) +#define bM4_USBFS_DOEPINT2_EPDISD (*((volatile unsigned int*)(0x43816904UL))) +#define bM4_USBFS_DOEPINT2_STUP (*((volatile unsigned int*)(0x4381690CUL))) +#define bM4_USBFS_DOEPINT2_OTEPDIS (*((volatile unsigned int*)(0x43816910UL))) +#define bM4_USBFS_DOEPINT2_B2BSTUP (*((volatile unsigned int*)(0x43816918UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ0 (*((volatile unsigned int*)(0x43816A00UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ1 (*((volatile unsigned int*)(0x43816A04UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ2 (*((volatile unsigned int*)(0x43816A08UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ3 (*((volatile unsigned int*)(0x43816A0CUL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ4 (*((volatile unsigned int*)(0x43816A10UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ5 (*((volatile unsigned int*)(0x43816A14UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ6 (*((volatile unsigned int*)(0x43816A18UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ7 (*((volatile unsigned int*)(0x43816A1CUL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ8 (*((volatile unsigned int*)(0x43816A20UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ9 (*((volatile unsigned int*)(0x43816A24UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ10 (*((volatile unsigned int*)(0x43816A28UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ11 (*((volatile unsigned int*)(0x43816A2CUL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ12 (*((volatile unsigned int*)(0x43816A30UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ13 (*((volatile unsigned int*)(0x43816A34UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ14 (*((volatile unsigned int*)(0x43816A38UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ15 (*((volatile unsigned int*)(0x43816A3CUL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ16 (*((volatile unsigned int*)(0x43816A40UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ17 (*((volatile unsigned int*)(0x43816A44UL))) +#define bM4_USBFS_DOEPTSIZ2_XFRSIZ18 (*((volatile unsigned int*)(0x43816A48UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT0 (*((volatile unsigned int*)(0x43816A4CUL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT1 (*((volatile unsigned int*)(0x43816A50UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT2 (*((volatile unsigned int*)(0x43816A54UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT3 (*((volatile unsigned int*)(0x43816A58UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT4 (*((volatile unsigned int*)(0x43816A5CUL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT5 (*((volatile unsigned int*)(0x43816A60UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT6 (*((volatile unsigned int*)(0x43816A64UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT7 (*((volatile unsigned int*)(0x43816A68UL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT8 (*((volatile unsigned int*)(0x43816A6CUL))) +#define bM4_USBFS_DOEPTSIZ2_PKTCNT9 (*((volatile unsigned int*)(0x43816A70UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ0 (*((volatile unsigned int*)(0x43816C00UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ1 (*((volatile unsigned int*)(0x43816C04UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ2 (*((volatile unsigned int*)(0x43816C08UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ3 (*((volatile unsigned int*)(0x43816C0CUL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ4 (*((volatile unsigned int*)(0x43816C10UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ5 (*((volatile unsigned int*)(0x43816C14UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ6 (*((volatile unsigned int*)(0x43816C18UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ7 (*((volatile unsigned int*)(0x43816C1CUL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ8 (*((volatile unsigned int*)(0x43816C20UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ9 (*((volatile unsigned int*)(0x43816C24UL))) +#define bM4_USBFS_DOEPCTL3_MPSIZ10 (*((volatile unsigned int*)(0x43816C28UL))) +#define bM4_USBFS_DOEPCTL3_USBAEP (*((volatile unsigned int*)(0x43816C3CUL))) +#define bM4_USBFS_DOEPCTL3_DPID (*((volatile unsigned int*)(0x43816C40UL))) +#define bM4_USBFS_DOEPCTL3_NAKSTS (*((volatile unsigned int*)(0x43816C44UL))) +#define bM4_USBFS_DOEPCTL3_EPTYP0 (*((volatile unsigned int*)(0x43816C48UL))) +#define bM4_USBFS_DOEPCTL3_EPTYP1 (*((volatile unsigned int*)(0x43816C4CUL))) +#define bM4_USBFS_DOEPCTL3_SNPM (*((volatile unsigned int*)(0x43816C50UL))) +#define bM4_USBFS_DOEPCTL3_STALL (*((volatile unsigned int*)(0x43816C54UL))) +#define bM4_USBFS_DOEPCTL3_CNAK (*((volatile unsigned int*)(0x43816C68UL))) +#define bM4_USBFS_DOEPCTL3_SNAK (*((volatile unsigned int*)(0x43816C6CUL))) +#define bM4_USBFS_DOEPCTL3_SD0PID (*((volatile unsigned int*)(0x43816C70UL))) +#define bM4_USBFS_DOEPCTL3_SD1PID (*((volatile unsigned int*)(0x43816C74UL))) +#define bM4_USBFS_DOEPCTL3_EPDIS (*((volatile unsigned int*)(0x43816C78UL))) +#define bM4_USBFS_DOEPCTL3_EPENA (*((volatile unsigned int*)(0x43816C7CUL))) +#define bM4_USBFS_DOEPINT3_XFRC (*((volatile unsigned int*)(0x43816D00UL))) +#define bM4_USBFS_DOEPINT3_EPDISD (*((volatile unsigned int*)(0x43816D04UL))) +#define bM4_USBFS_DOEPINT3_STUP (*((volatile unsigned int*)(0x43816D0CUL))) +#define bM4_USBFS_DOEPINT3_OTEPDIS (*((volatile unsigned int*)(0x43816D10UL))) +#define bM4_USBFS_DOEPINT3_B2BSTUP (*((volatile unsigned int*)(0x43816D18UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ0 (*((volatile unsigned int*)(0x43816E00UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ1 (*((volatile unsigned int*)(0x43816E04UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ2 (*((volatile unsigned int*)(0x43816E08UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ3 (*((volatile unsigned int*)(0x43816E0CUL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ4 (*((volatile unsigned int*)(0x43816E10UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ5 (*((volatile unsigned int*)(0x43816E14UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ6 (*((volatile unsigned int*)(0x43816E18UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ7 (*((volatile unsigned int*)(0x43816E1CUL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ8 (*((volatile unsigned int*)(0x43816E20UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ9 (*((volatile unsigned int*)(0x43816E24UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ10 (*((volatile unsigned int*)(0x43816E28UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ11 (*((volatile unsigned int*)(0x43816E2CUL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ12 (*((volatile unsigned int*)(0x43816E30UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ13 (*((volatile unsigned int*)(0x43816E34UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ14 (*((volatile unsigned int*)(0x43816E38UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ15 (*((volatile unsigned int*)(0x43816E3CUL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ16 (*((volatile unsigned int*)(0x43816E40UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ17 (*((volatile unsigned int*)(0x43816E44UL))) +#define bM4_USBFS_DOEPTSIZ3_XFRSIZ18 (*((volatile unsigned int*)(0x43816E48UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT0 (*((volatile unsigned int*)(0x43816E4CUL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT1 (*((volatile unsigned int*)(0x43816E50UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT2 (*((volatile unsigned int*)(0x43816E54UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT3 (*((volatile unsigned int*)(0x43816E58UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT4 (*((volatile unsigned int*)(0x43816E5CUL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT5 (*((volatile unsigned int*)(0x43816E60UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT6 (*((volatile unsigned int*)(0x43816E64UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT7 (*((volatile unsigned int*)(0x43816E68UL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT8 (*((volatile unsigned int*)(0x43816E6CUL))) +#define bM4_USBFS_DOEPTSIZ3_PKTCNT9 (*((volatile unsigned int*)(0x43816E70UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ0 (*((volatile unsigned int*)(0x43817000UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ1 (*((volatile unsigned int*)(0x43817004UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ2 (*((volatile unsigned int*)(0x43817008UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ3 (*((volatile unsigned int*)(0x4381700CUL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ4 (*((volatile unsigned int*)(0x43817010UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ5 (*((volatile unsigned int*)(0x43817014UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ6 (*((volatile unsigned int*)(0x43817018UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ7 (*((volatile unsigned int*)(0x4381701CUL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ8 (*((volatile unsigned int*)(0x43817020UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ9 (*((volatile unsigned int*)(0x43817024UL))) +#define bM4_USBFS_DOEPCTL4_MPSIZ10 (*((volatile unsigned int*)(0x43817028UL))) +#define bM4_USBFS_DOEPCTL4_USBAEP (*((volatile unsigned int*)(0x4381703CUL))) +#define bM4_USBFS_DOEPCTL4_DPID (*((volatile unsigned int*)(0x43817040UL))) +#define bM4_USBFS_DOEPCTL4_NAKSTS (*((volatile unsigned int*)(0x43817044UL))) +#define bM4_USBFS_DOEPCTL4_EPTYP0 (*((volatile unsigned int*)(0x43817048UL))) +#define bM4_USBFS_DOEPCTL4_EPTYP1 (*((volatile unsigned int*)(0x4381704CUL))) +#define bM4_USBFS_DOEPCTL4_SNPM (*((volatile unsigned int*)(0x43817050UL))) +#define bM4_USBFS_DOEPCTL4_STALL (*((volatile unsigned int*)(0x43817054UL))) +#define bM4_USBFS_DOEPCTL4_CNAK (*((volatile unsigned int*)(0x43817068UL))) +#define bM4_USBFS_DOEPCTL4_SNAK (*((volatile unsigned int*)(0x4381706CUL))) +#define bM4_USBFS_DOEPCTL4_SD0PID (*((volatile unsigned int*)(0x43817070UL))) +#define bM4_USBFS_DOEPCTL4_SD1PID (*((volatile unsigned int*)(0x43817074UL))) +#define bM4_USBFS_DOEPCTL4_EPDIS (*((volatile unsigned int*)(0x43817078UL))) +#define bM4_USBFS_DOEPCTL4_EPENA (*((volatile unsigned int*)(0x4381707CUL))) +#define bM4_USBFS_DOEPINT4_XFRC (*((volatile unsigned int*)(0x43817100UL))) +#define bM4_USBFS_DOEPINT4_EPDISD (*((volatile unsigned int*)(0x43817104UL))) +#define bM4_USBFS_DOEPINT4_STUP (*((volatile unsigned int*)(0x4381710CUL))) +#define bM4_USBFS_DOEPINT4_OTEPDIS (*((volatile unsigned int*)(0x43817110UL))) +#define bM4_USBFS_DOEPINT4_B2BSTUP (*((volatile unsigned int*)(0x43817118UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ0 (*((volatile unsigned int*)(0x43817200UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ1 (*((volatile unsigned int*)(0x43817204UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ2 (*((volatile unsigned int*)(0x43817208UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ3 (*((volatile unsigned int*)(0x4381720CUL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ4 (*((volatile unsigned int*)(0x43817210UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ5 (*((volatile unsigned int*)(0x43817214UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ6 (*((volatile unsigned int*)(0x43817218UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ7 (*((volatile unsigned int*)(0x4381721CUL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ8 (*((volatile unsigned int*)(0x43817220UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ9 (*((volatile unsigned int*)(0x43817224UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ10 (*((volatile unsigned int*)(0x43817228UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ11 (*((volatile unsigned int*)(0x4381722CUL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ12 (*((volatile unsigned int*)(0x43817230UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ13 (*((volatile unsigned int*)(0x43817234UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ14 (*((volatile unsigned int*)(0x43817238UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ15 (*((volatile unsigned int*)(0x4381723CUL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ16 (*((volatile unsigned int*)(0x43817240UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ17 (*((volatile unsigned int*)(0x43817244UL))) +#define bM4_USBFS_DOEPTSIZ4_XFRSIZ18 (*((volatile unsigned int*)(0x43817248UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT0 (*((volatile unsigned int*)(0x4381724CUL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT1 (*((volatile unsigned int*)(0x43817250UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT2 (*((volatile unsigned int*)(0x43817254UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT3 (*((volatile unsigned int*)(0x43817258UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT4 (*((volatile unsigned int*)(0x4381725CUL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT5 (*((volatile unsigned int*)(0x43817260UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT6 (*((volatile unsigned int*)(0x43817264UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT7 (*((volatile unsigned int*)(0x43817268UL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT8 (*((volatile unsigned int*)(0x4381726CUL))) +#define bM4_USBFS_DOEPTSIZ4_PKTCNT9 (*((volatile unsigned int*)(0x43817270UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ0 (*((volatile unsigned int*)(0x43817400UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ1 (*((volatile unsigned int*)(0x43817404UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ2 (*((volatile unsigned int*)(0x43817408UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ3 (*((volatile unsigned int*)(0x4381740CUL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ4 (*((volatile unsigned int*)(0x43817410UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ5 (*((volatile unsigned int*)(0x43817414UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ6 (*((volatile unsigned int*)(0x43817418UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ7 (*((volatile unsigned int*)(0x4381741CUL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ8 (*((volatile unsigned int*)(0x43817420UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ9 (*((volatile unsigned int*)(0x43817424UL))) +#define bM4_USBFS_DOEPCTL5_MPSIZ10 (*((volatile unsigned int*)(0x43817428UL))) +#define bM4_USBFS_DOEPCTL5_USBAEP (*((volatile unsigned int*)(0x4381743CUL))) +#define bM4_USBFS_DOEPCTL5_DPID (*((volatile unsigned int*)(0x43817440UL))) +#define bM4_USBFS_DOEPCTL5_NAKSTS (*((volatile unsigned int*)(0x43817444UL))) +#define bM4_USBFS_DOEPCTL5_EPTYP0 (*((volatile unsigned int*)(0x43817448UL))) +#define bM4_USBFS_DOEPCTL5_EPTYP1 (*((volatile unsigned int*)(0x4381744CUL))) +#define bM4_USBFS_DOEPCTL5_SNPM (*((volatile unsigned int*)(0x43817450UL))) +#define bM4_USBFS_DOEPCTL5_STALL (*((volatile unsigned int*)(0x43817454UL))) +#define bM4_USBFS_DOEPCTL5_CNAK (*((volatile unsigned int*)(0x43817468UL))) +#define bM4_USBFS_DOEPCTL5_SNAK (*((volatile unsigned int*)(0x4381746CUL))) +#define bM4_USBFS_DOEPCTL5_SD0PID (*((volatile unsigned int*)(0x43817470UL))) +#define bM4_USBFS_DOEPCTL5_SD1PID (*((volatile unsigned int*)(0x43817474UL))) +#define bM4_USBFS_DOEPCTL5_EPDIS (*((volatile unsigned int*)(0x43817478UL))) +#define bM4_USBFS_DOEPCTL5_EPENA (*((volatile unsigned int*)(0x4381747CUL))) +#define bM4_USBFS_DOEPINT5_XFRC (*((volatile unsigned int*)(0x43817500UL))) +#define bM4_USBFS_DOEPINT5_EPDISD (*((volatile unsigned int*)(0x43817504UL))) +#define bM4_USBFS_DOEPINT5_STUP (*((volatile unsigned int*)(0x4381750CUL))) +#define bM4_USBFS_DOEPINT5_OTEPDIS (*((volatile unsigned int*)(0x43817510UL))) +#define bM4_USBFS_DOEPINT5_B2BSTUP (*((volatile unsigned int*)(0x43817518UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ0 (*((volatile unsigned int*)(0x43817600UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ1 (*((volatile unsigned int*)(0x43817604UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ2 (*((volatile unsigned int*)(0x43817608UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ3 (*((volatile unsigned int*)(0x4381760CUL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ4 (*((volatile unsigned int*)(0x43817610UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ5 (*((volatile unsigned int*)(0x43817614UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ6 (*((volatile unsigned int*)(0x43817618UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ7 (*((volatile unsigned int*)(0x4381761CUL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ8 (*((volatile unsigned int*)(0x43817620UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ9 (*((volatile unsigned int*)(0x43817624UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ10 (*((volatile unsigned int*)(0x43817628UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ11 (*((volatile unsigned int*)(0x4381762CUL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ12 (*((volatile unsigned int*)(0x43817630UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ13 (*((volatile unsigned int*)(0x43817634UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ14 (*((volatile unsigned int*)(0x43817638UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ15 (*((volatile unsigned int*)(0x4381763CUL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ16 (*((volatile unsigned int*)(0x43817640UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ17 (*((volatile unsigned int*)(0x43817644UL))) +#define bM4_USBFS_DOEPTSIZ5_XFRSIZ18 (*((volatile unsigned int*)(0x43817648UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT0 (*((volatile unsigned int*)(0x4381764CUL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT1 (*((volatile unsigned int*)(0x43817650UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT2 (*((volatile unsigned int*)(0x43817654UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT3 (*((volatile unsigned int*)(0x43817658UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT4 (*((volatile unsigned int*)(0x4381765CUL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT5 (*((volatile unsigned int*)(0x43817660UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT6 (*((volatile unsigned int*)(0x43817664UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT7 (*((volatile unsigned int*)(0x43817668UL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT8 (*((volatile unsigned int*)(0x4381766CUL))) +#define bM4_USBFS_DOEPTSIZ5_PKTCNT9 (*((volatile unsigned int*)(0x43817670UL))) +#define bM4_USBFS_PCGCCTL_STPPCLK (*((volatile unsigned int*)(0x4381C000UL))) +#define bM4_USBFS_PCGCCTL_GATEHCLK (*((volatile unsigned int*)(0x4381C004UL))) +#define bM4_WDT_CR_PERI0 (*((volatile unsigned int*)(0x42920000UL))) +#define bM4_WDT_CR_PERI1 (*((volatile unsigned int*)(0x42920004UL))) +#define bM4_WDT_CR_CKS0 (*((volatile unsigned int*)(0x42920010UL))) +#define bM4_WDT_CR_CKS1 (*((volatile unsigned int*)(0x42920014UL))) +#define bM4_WDT_CR_CKS2 (*((volatile unsigned int*)(0x42920018UL))) +#define bM4_WDT_CR_CKS3 (*((volatile unsigned int*)(0x4292001CUL))) +#define bM4_WDT_CR_WDPT0 (*((volatile unsigned int*)(0x42920020UL))) +#define bM4_WDT_CR_WDPT1 (*((volatile unsigned int*)(0x42920024UL))) +#define bM4_WDT_CR_WDPT2 (*((volatile unsigned int*)(0x42920028UL))) +#define bM4_WDT_CR_WDPT3 (*((volatile unsigned int*)(0x4292002CUL))) +#define bM4_WDT_CR_SLPOFF (*((volatile unsigned int*)(0x42920040UL))) +#define bM4_WDT_CR_ITS (*((volatile unsigned int*)(0x4292007CUL))) +#define bM4_WDT_SR_CNT0 (*((volatile unsigned int*)(0x42920080UL))) +#define bM4_WDT_SR_CNT1 (*((volatile unsigned int*)(0x42920084UL))) +#define bM4_WDT_SR_CNT2 (*((volatile unsigned int*)(0x42920088UL))) +#define bM4_WDT_SR_CNT3 (*((volatile unsigned int*)(0x4292008CUL))) +#define bM4_WDT_SR_CNT4 (*((volatile unsigned int*)(0x42920090UL))) +#define bM4_WDT_SR_CNT5 (*((volatile unsigned int*)(0x42920094UL))) +#define bM4_WDT_SR_CNT6 (*((volatile unsigned int*)(0x42920098UL))) +#define bM4_WDT_SR_CNT7 (*((volatile unsigned int*)(0x4292009CUL))) +#define bM4_WDT_SR_CNT8 (*((volatile unsigned int*)(0x429200A0UL))) +#define bM4_WDT_SR_CNT9 (*((volatile unsigned int*)(0x429200A4UL))) +#define bM4_WDT_SR_CNT10 (*((volatile unsigned int*)(0x429200A8UL))) +#define bM4_WDT_SR_CNT11 (*((volatile unsigned int*)(0x429200ACUL))) +#define bM4_WDT_SR_CNT12 (*((volatile unsigned int*)(0x429200B0UL))) +#define bM4_WDT_SR_CNT13 (*((volatile unsigned int*)(0x429200B4UL))) +#define bM4_WDT_SR_CNT14 (*((volatile unsigned int*)(0x429200B8UL))) +#define bM4_WDT_SR_CNT15 (*((volatile unsigned int*)(0x429200BCUL))) +#define bM4_WDT_SR_UDF (*((volatile unsigned int*)(0x429200C0UL))) +#define bM4_WDT_SR_REF (*((volatile unsigned int*)(0x429200C4UL))) +#define bM4_WDT_RR_RF0 (*((volatile unsigned int*)(0x42920100UL))) +#define bM4_WDT_RR_RF1 (*((volatile unsigned int*)(0x42920104UL))) +#define bM4_WDT_RR_RF2 (*((volatile unsigned int*)(0x42920108UL))) +#define bM4_WDT_RR_RF3 (*((volatile unsigned int*)(0x4292010CUL))) +#define bM4_WDT_RR_RF4 (*((volatile unsigned int*)(0x42920110UL))) +#define bM4_WDT_RR_RF5 (*((volatile unsigned int*)(0x42920114UL))) +#define bM4_WDT_RR_RF6 (*((volatile unsigned int*)(0x42920118UL))) +#define bM4_WDT_RR_RF7 (*((volatile unsigned int*)(0x4292011CUL))) +#define bM4_WDT_RR_RF8 (*((volatile unsigned int*)(0x42920120UL))) +#define bM4_WDT_RR_RF9 (*((volatile unsigned int*)(0x42920124UL))) +#define bM4_WDT_RR_RF10 (*((volatile unsigned int*)(0x42920128UL))) +#define bM4_WDT_RR_RF11 (*((volatile unsigned int*)(0x4292012CUL))) +#define bM4_WDT_RR_RF12 (*((volatile unsigned int*)(0x42920130UL))) +#define bM4_WDT_RR_RF13 (*((volatile unsigned int*)(0x42920134UL))) +#define bM4_WDT_RR_RF14 (*((volatile unsigned int*)(0x42920138UL))) +#define bM4_WDT_RR_RF15 (*((volatile unsigned int*)(0x4292013CUL))) +#define bM4_WKTM_CR_WKTMCMP0 (*((volatile unsigned int*)(0x42988000UL))) +#define bM4_WKTM_CR_WKTMCMP1 (*((volatile unsigned int*)(0x42988004UL))) +#define bM4_WKTM_CR_WKTMCMP2 (*((volatile unsigned int*)(0x42988008UL))) +#define bM4_WKTM_CR_WKTMCMP3 (*((volatile unsigned int*)(0x4298800CUL))) +#define bM4_WKTM_CR_WKTMCMP4 (*((volatile unsigned int*)(0x42988010UL))) +#define bM4_WKTM_CR_WKTMCMP5 (*((volatile unsigned int*)(0x42988014UL))) +#define bM4_WKTM_CR_WKTMCMP6 (*((volatile unsigned int*)(0x42988018UL))) +#define bM4_WKTM_CR_WKTMCMP7 (*((volatile unsigned int*)(0x4298801CUL))) +#define bM4_WKTM_CR_WKTMCMP8 (*((volatile unsigned int*)(0x42988020UL))) +#define bM4_WKTM_CR_WKTMCMP9 (*((volatile unsigned int*)(0x42988024UL))) +#define bM4_WKTM_CR_WKTMCMP10 (*((volatile unsigned int*)(0x42988028UL))) +#define bM4_WKTM_CR_WKTMCMP11 (*((volatile unsigned int*)(0x4298802CUL))) +#define bM4_WKTM_CR_WKOVF (*((volatile unsigned int*)(0x42988030UL))) +#define bM4_WKTM_CR_WKCKS0 (*((volatile unsigned int*)(0x42988034UL))) +#define bM4_WKTM_CR_WKCKS1 (*((volatile unsigned int*)(0x42988038UL))) +#define bM4_WKTM_CR_WKTCE (*((volatile unsigned int*)(0x4298803CUL))) + + +#ifdef __cplusplus +} +#endif + +#endif /* __HC32F460_H__ */ + diff --git a/mcu/common/system_hc32f460.c b/mcu/common/system_hc32f460.c new file mode 100644 index 0000000..972ff91 --- /dev/null +++ b/mcu/common/system_hc32f460.c @@ -0,0 +1,122 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file system_hc32f460.c + ** + ** A detailed description is available at + ** @link Hc32f460SystemGroup Hc32f460System description @endlink + ** + ** - 2018-10-15 CDT First version + ** + ******************************************************************************/ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include "hc32_common.h" + +/** + ******************************************************************************* + ** \addtogroup Hc32f460SystemGroup + ******************************************************************************/ + +/******************************************************************************* + * Global pre-processor symbols/macros ('define') + ******************************************************************************/ + +//@{ + +/** + ****************************************************************************** + ** System Clock Frequency (Core Clock) Variable according CMSIS + ******************************************************************************/ +uint32_t HRC_VALUE = HRC_16MHz_VALUE; +uint32_t SystemCoreClock = MRC_VALUE; + +/** + ****************************************************************************** + ** \brief Setup the microcontroller system. Initialize the System and update + ** the SystemCoreClock variable. + ** + ** \param None + ** \return None + ******************************************************************************/ +void SystemInit(void) +{ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 20) | (3UL << 22)); /* set CP10 and CP11 Full Access */ +#endif + + SystemCoreClockUpdate(); +} + +void SystemCoreClockUpdate(void) // Update SystemCoreClock variable +{ + uint8_t tmp = 0u; + uint32_t plln = 19u, pllp = 1u, pllm = 0u, pllsource = 0u; + + /* Select proper HRC_VALUE according to ICG1.HRCFREQSEL bit */ + /* ICG1.HRCFREQSEL = '0' represent HRC_VALUE = 20000000UL */ + /* ICG1.HRCFREQSEL = '1' represent HRC_VALUE = 16000000UL */ + if (1UL == (HRC_FREQ_MON() & 1UL)) + { + HRC_VALUE = HRC_16MHz_VALUE; + } + else + { + HRC_VALUE = HRC_20MHz_VALUE; + } + + tmp = M4_SYSREG->CMU_CKSWR_f.CKSW; + switch (tmp) + { + case 0x00: /* use internal high speed RC */ + SystemCoreClock = HRC_VALUE; + break; + case 0x01: /* use internal middle speed RC */ + SystemCoreClock = MRC_VALUE; + break; + case 0x02: /* use internal low speed RC */ + SystemCoreClock = LRC_VALUE; + break; + case 0x03: /* use external high speed OSC */ + SystemCoreClock = XTAL_VALUE; + break; + case 0x04: /* use external low speed OSC */ + SystemCoreClock = XTAL32_VALUE; + break; + case 0x05: /* use MPLL */ + /* PLLCLK = ((pllsrc / pllm) * plln) / pllp */ + pllsource = M4_SYSREG->CMU_PLLCFGR_f.PLLSRC; + plln = M4_SYSREG->CMU_PLLCFGR_f.MPLLN; + pllp = M4_SYSREG->CMU_PLLCFGR_f.MPLLP; + pllm = M4_SYSREG->CMU_PLLCFGR_f.MPLLM; + /* use exteranl high speed OSC as PLL source */ + if (0ul == pllsource) + { + SystemCoreClock = (XTAL_VALUE) / (pllm + 1ul) * (plln + 1ul) / (pllp + 1ul); + } + /* use interanl high RC as PLL source */ + else if (1ul == pllsource) + { + SystemCoreClock = (HRC_VALUE) / (pllm + 1ul) * (plln + 1ul) / (pllp + 1ul); + } + else + { + /* Reserved */ + } + break; + } +} + +//@} // UsartGroup + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/mcu/common/system_hc32f460.h b/mcu/common/system_hc32f460.h new file mode 100644 index 0000000..624519f --- /dev/null +++ b/mcu/common/system_hc32f460.h @@ -0,0 +1,105 @@ +/******************************************************************************* + * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved. + * + * This software component is licensed by HDSC under BSD 3-Clause license + * (the "License"); You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + */ +/******************************************************************************/ +/** \file system_hc32f460.h + ** + ** A detailed description is available at + ** @link Hc32f460SystemGroup Hc32f460System description @endlink + ** + ** - 2018-10-15 CDT First version. + ** + ******************************************************************************/ +#ifndef __SYSTEM_HC32F460_H__ +#define __SYSTEM_HC32F460_H__ + +/******************************************************************************* + * Include files + ******************************************************************************/ +#include + +/* C binding of definitions if building with C++ compiler */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + ******************************************************************************* + ** \defgroup Hc32f460SystemGroup HC32F460 System Configure + ** + ******************************************************************************/ +//@{ + +/******************************************************************************* + * Global pre-processor symbols/macros ('define') + ******************************************************************************/ + +/** + ****************************************************************************** + ** \brief Clock Setup macro definition + ** + ** - 0: CLOCK_SETTING_NONE - User provides own clock setting in application + ** - 1: CLOCK_SETTING_CMSIS - + ******************************************************************************/ +#define CLOCK_SETTING_NONE 0u +#define CLOCK_SETTING_CMSIS 1u + +#define HRC_FREQ_MON() (*((volatile unsigned int*)(0x40010684UL))) + +#if !defined (HRC_16MHz_VALUE) + #define HRC_16MHz_VALUE ((uint32_t)16000000UL) /*!< Internal high speed RC freq.(16MHz) */ +#endif + +#if !defined (HRC_20MHz_VALUE) + #define HRC_20MHz_VALUE ((uint32_t)20000000UL) /*!< Internal high speed RC freq.(20MHz) */ +#endif + +#if !defined (MRC_VALUE) +#define MRC_VALUE ((uint32_t)8000000) /*!< Internal middle speed RC freq. */ +#endif + +#if !defined (LRC_VALUE) +#define LRC_VALUE ((uint32_t)32768) /*!< Internal low speed RC freq. */ +#endif + +#if !defined (XTAL_VALUE) +#define XTAL_VALUE ((uint32_t)8000000) /*!< External high speed OSC freq. */ +#endif + +#if !defined (XTAL32_VALUE) +#define XTAL32_VALUE ((uint32_t)32768) /*!< External low speed OSC freq. */ +#endif + +/******************************************************************************/ +/* */ +/* START OF USER SETTINGS HERE */ +/* =========================== */ +/* */ +/* All lines with '<<<' can be set by user. */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Global function prototypes ('extern', definition in C source) */ +/******************************************************************************/ +extern uint32_t HRC_VALUE; // HRC Clock Frequency (Core Clock) +extern uint32_t SystemCoreClock; // System Clock Frequency (Core Clock) +extern void SystemInit(void); // Initialize the system +extern void SystemCoreClockUpdate(void); // Update SystemCoreClock variable + +//@} // Hc32f460SystemGroup + +#ifdef __cplusplus +} +#endif + +#endif /* __SYSTEM_HC32F460_H__ */ + +/******************************************************************************* + * EOF (not truncated) + ******************************************************************************/ diff --git a/source/Module/AD7924/ad7924.c b/source/Module/AD7924/ad7924.c new file mode 100644 index 0000000..e4d51f1 --- /dev/null +++ b/source/Module/AD7924/ad7924.c @@ -0,0 +1,2 @@ +#include "bps.h" + diff --git a/source/Module/FatFS/LICENSE.txt b/source/Module/FatFS/LICENSE.txt new file mode 100644 index 0000000..a9e57a9 --- /dev/null +++ b/source/Module/FatFS/LICENSE.txt @@ -0,0 +1,24 @@ +FatFs License + +FatFs has being developped as a personal project of the author, ChaN. It is free from the code anyone else wrote at current release. Following code block shows a copy of the FatFs license document that heading the source files. + +/*----------------------------------------------------------------------------/ +/ FatFs - Generic FAT Filesystem Module Rx.xx / +/-----------------------------------------------------------------------------/ +/ +/ Copyright (C) 20xx, ChaN, all right reserved. +/ +/ FatFs module is an open source software. Redistribution and use of FatFs in +/ source and binary forms, with or without modification, are permitted provided +/ that the following condition is met: +/ +/ 1. Redistributions of source code must retain the above copyright notice, +/ this condition and the following disclaimer. +/ +/ This software is provided by the copyright holder and contributors "AS IS" +/ and any warranties related to this software are DISCLAIMED. +/ The copyright owner or contributors be NOT LIABLE for any damages caused +/ by use of this software. +/----------------------------------------------------------------------------*/ + +Therefore FatFs license is one of the BSD-style licenses, but there is a significant feature. FatFs is mainly intended for embedded systems. In order to extend the usability for commercial products, the redistributions of FatFs in binary form, such as embedded code, binary library and any forms without source code, do not need to include about FatFs in the documentations. This is equivalent to the 1-clause BSD license. Of course FatFs is compatible with the most of open source software licenses include GNU GPL. When you redistribute the FatFs source code with changes or create a fork, the license can also be changed to GNU GPL, BSD-style license or any open source software license that not conflict with FatFs license. diff --git a/source/Module/FatFS/documents/00index_e.html b/source/Module/FatFS/documents/00index_e.html new file mode 100644 index 0000000..eed6244 --- /dev/null +++ b/source/Module/FatFS/documents/00index_e.html @@ -0,0 +1,149 @@ + + + + + + + + + + +FatFs - Generic FAT Filesystem Module + + + +