1 /* 2 Copyright (c) 2010 - 2024, Nordic Semiconductor ASA All rights reserved.\n 3 \n 4 SPDX-License-Identifier: BSD-3-Clause\n 5 \n 6 Redistribution and use in source and binary forms, with or without\n 7 modification, are permitted provided that the following conditions are met:\n 8 \n 9 1. Redistributions of source code must retain the above copyright notice, this\n 10 list of conditions and the following disclaimer.\n 11 \n 12 2. Redistributions in binary form must reproduce the above copyright\n 13 notice, this list of conditions and the following disclaimer in the\n 14 documentation and/or other materials provided with the distribution.\n 15 \n 16 3. Neither the name of Nordic Semiconductor ASA nor the names of its\n 17 contributors may be used to endorse or promote products derived from this\n 18 software without specific prior written permission.\n 19 \n 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\n 21 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n 22 IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE\n 23 ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE\n 24 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n 25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n 26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n 27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n 28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n 29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n 30 POSSIBILITY OF SUCH DAMAGE.\n 31 * 32 * @file nrf52810.h 33 * @brief CMSIS HeaderFile 34 * @version 1 35 * @date 22. April 2024 36 * @note Generated by SVDConv V3.3.35 on Monday, 22.04.2024 15:21:02 37 * from File 'nrf52810.svd', 38 * last modified on Monday, 22.04.2024 13:20:06 39 */ 40 41 42 43 /** @addtogroup Nordic Semiconductor 44 * @{ 45 */ 46 47 48 /** @addtogroup nrf52810 49 * @{ 50 */ 51 52 53 #ifndef NRF52810_H 54 #define NRF52810_H 55 56 #ifdef __cplusplus 57 extern "C" { 58 #endif 59 60 61 /** @addtogroup Configuration_of_CMSIS 62 * @{ 63 */ 64 65 66 67 /* =========================================================================================================================== */ 68 /* ================ Interrupt Number Definition ================ */ 69 /* =========================================================================================================================== */ 70 71 typedef enum { 72 /* ======================================= ARM Cortex-M4 Specific Interrupt Numbers ======================================== */ 73 Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */ 74 NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */ 75 HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */ 76 MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation 77 and No Match */ 78 BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory 79 related Fault */ 80 UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ 81 SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */ 82 DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */ 83 PendSV_IRQn = -2, /*!< -2 Pendable request for system service */ 84 SysTick_IRQn = -1, /*!< -1 System Tick Timer */ 85 /* ========================================== nrf52810 Specific Interrupt Numbers ========================================== */ 86 POWER_CLOCK_IRQn = 0, /*!< 0 POWER_CLOCK */ 87 RADIO_IRQn = 1, /*!< 1 RADIO */ 88 UARTE0_UART0_IRQn = 2, /*!< 2 UARTE0_UART0 */ 89 TWIM0_TWIS0_TWI0_IRQn = 3, /*!< 3 TWIM0_TWIS0_TWI0 */ 90 SPIM0_SPIS0_SPI0_IRQn = 4, /*!< 4 SPIM0_SPIS0_SPI0 */ 91 GPIOTE_IRQn = 6, /*!< 6 GPIOTE */ 92 SAADC_IRQn = 7, /*!< 7 SAADC */ 93 TIMER0_IRQn = 8, /*!< 8 TIMER0 */ 94 TIMER1_IRQn = 9, /*!< 9 TIMER1 */ 95 TIMER2_IRQn = 10, /*!< 10 TIMER2 */ 96 RTC0_IRQn = 11, /*!< 11 RTC0 */ 97 TEMP_IRQn = 12, /*!< 12 TEMP */ 98 RNG_IRQn = 13, /*!< 13 RNG */ 99 ECB_IRQn = 14, /*!< 14 ECB */ 100 CCM_AAR_IRQn = 15, /*!< 15 CCM_AAR */ 101 WDT_IRQn = 16, /*!< 16 WDT */ 102 RTC1_IRQn = 17, /*!< 17 RTC1 */ 103 QDEC_IRQn = 18, /*!< 18 QDEC */ 104 COMP_IRQn = 19, /*!< 19 COMP */ 105 SWI0_EGU0_IRQn = 20, /*!< 20 SWI0_EGU0 */ 106 SWI1_EGU1_IRQn = 21, /*!< 21 SWI1_EGU1 */ 107 SWI2_IRQn = 22, /*!< 22 SWI2 */ 108 SWI3_IRQn = 23, /*!< 23 SWI3 */ 109 SWI4_IRQn = 24, /*!< 24 SWI4 */ 110 SWI5_IRQn = 25, /*!< 25 SWI5 */ 111 PWM0_IRQn = 28, /*!< 28 PWM0 */ 112 PDM_IRQn = 29 /*!< 29 PDM */ 113 } IRQn_Type; 114 115 116 117 /* =========================================================================================================================== */ 118 /* ================ Processor and Core Peripheral Section ================ */ 119 /* =========================================================================================================================== */ 120 121 /* =========================== Configuration of the ARM Cortex-M4 Processor and Core Peripherals =========================== */ 122 #define __CM4_REV 0x0001U /*!< CM4 Core Revision */ 123 #define __INTERRUPTS_MAX 112 /*!< Top interrupt number */ 124 #define __DSP_PRESENT 1 /*!< DSP present or not */ 125 #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ 126 #define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ 127 #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ 128 #define __MPU_PRESENT 1 /*!< MPU present */ 129 #define __FPU_PRESENT 0 /*!< FPU present */ 130 131 132 /** @} */ /* End of group Configuration_of_CMSIS */ 133 134 #include "core_cm4.h" /*!< ARM Cortex-M4 processor and core peripherals */ 135 #include "system_nrf52810.h" /*!< nrf52810 System */ 136 137 #ifndef __IM /*!< Fallback for older CMSIS versions */ 138 #define __IM __I 139 #endif 140 #ifndef __OM /*!< Fallback for older CMSIS versions */ 141 #define __OM __O 142 #endif 143 #ifndef __IOM /*!< Fallback for older CMSIS versions */ 144 #define __IOM __IO 145 #endif 146 147 148 /* ======================================== Start of section using anonymous unions ======================================== */ 149 #if defined (__CC_ARM) 150 #pragma push 151 #pragma anon_unions 152 #elif defined (__ICCARM__) 153 #pragma language=extended 154 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 155 #pragma clang diagnostic push 156 #pragma clang diagnostic ignored "-Wc11-extensions" 157 #pragma clang diagnostic ignored "-Wreserved-id-macro" 158 #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 159 #pragma clang diagnostic ignored "-Wnested-anon-types" 160 #elif defined (__GNUC__) 161 /* anonymous unions are enabled by default */ 162 #elif defined (__TMS470__) 163 /* anonymous unions are enabled by default */ 164 #elif defined (__TASKING__) 165 #pragma warning 586 166 #elif defined (__CSMC__) 167 /* anonymous unions are enabled by default */ 168 #else 169 #warning Not supported compiler type 170 #endif 171 172 173 /* =========================================================================================================================== */ 174 /* ================ Device Specific Cluster Section ================ */ 175 /* =========================================================================================================================== */ 176 177 178 /** @addtogroup Device_Peripheral_clusters 179 * @{ 180 */ 181 182 183 /** 184 * @brief FICR_INFO [INFO] (Device info) 185 */ 186 typedef struct { 187 __IM uint32_t PART; /*!< (@ 0x00000000) Part code */ 188 __IM uint32_t VARIANT; /*!< (@ 0x00000004) Part variant, hardware version and production 189 configuration */ 190 __IM uint32_t PACKAGE; /*!< (@ 0x00000008) Package option */ 191 __IM uint32_t RAM; /*!< (@ 0x0000000C) RAM variant */ 192 __IM uint32_t FLASH; /*!< (@ 0x00000010) Flash variant */ 193 } FICR_INFO_Type; /*!< Size = 20 (0x14) */ 194 195 196 /** 197 * @brief FICR_TEMP [TEMP] (Registers storing factory TEMP module linearization coefficients) 198 */ 199 typedef struct { 200 __IM uint32_t A0; /*!< (@ 0x00000000) Slope definition A0 */ 201 __IM uint32_t A1; /*!< (@ 0x00000004) Slope definition A1 */ 202 __IM uint32_t A2; /*!< (@ 0x00000008) Slope definition A2 */ 203 __IM uint32_t A3; /*!< (@ 0x0000000C) Slope definition A3 */ 204 __IM uint32_t A4; /*!< (@ 0x00000010) Slope definition A4 */ 205 __IM uint32_t A5; /*!< (@ 0x00000014) Slope definition A5 */ 206 __IM uint32_t B0; /*!< (@ 0x00000018) Y-intercept B0 */ 207 __IM uint32_t B1; /*!< (@ 0x0000001C) Y-intercept B1 */ 208 __IM uint32_t B2; /*!< (@ 0x00000020) Y-intercept B2 */ 209 __IM uint32_t B3; /*!< (@ 0x00000024) Y-intercept B3 */ 210 __IM uint32_t B4; /*!< (@ 0x00000028) Y-intercept B4 */ 211 __IM uint32_t B5; /*!< (@ 0x0000002C) Y-intercept B5 */ 212 __IM uint32_t T0; /*!< (@ 0x00000030) Segment end T0 */ 213 __IM uint32_t T1; /*!< (@ 0x00000034) Segment end T1 */ 214 __IM uint32_t T2; /*!< (@ 0x00000038) Segment end T2 */ 215 __IM uint32_t T3; /*!< (@ 0x0000003C) Segment end T3 */ 216 __IM uint32_t T4; /*!< (@ 0x00000040) Segment end T4 */ 217 } FICR_TEMP_Type; /*!< Size = 68 (0x44) */ 218 219 220 /** 221 * @brief POWER_RAM [RAM] (Unspecified) 222 */ 223 typedef struct { 224 __IOM uint32_t POWER; /*!< (@ 0x00000000) Description cluster: RAMn power control register. 225 The RAM size will vary depending on product 226 variant, and the RAMn register will only 227 be present if the corresponding RAM AHB 228 slave is present on the device. */ 229 __OM uint32_t POWERSET; /*!< (@ 0x00000004) Description cluster: RAMn power control set register */ 230 __OM uint32_t POWERCLR; /*!< (@ 0x00000008) Description cluster: RAMn power control clear 231 register */ 232 __IM uint32_t RESERVED; 233 } POWER_RAM_Type; /*!< Size = 16 (0x10) */ 234 235 236 /** 237 * @brief UART_PSEL [PSEL] (Unspecified) 238 */ 239 typedef struct { 240 __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS */ 241 __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD */ 242 __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS */ 243 __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD */ 244 } UART_PSEL_Type; /*!< Size = 16 (0x10) */ 245 246 247 /** 248 * @brief UARTE_PSEL [PSEL] (Unspecified) 249 */ 250 typedef struct { 251 __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS signal */ 252 __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD signal */ 253 __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS signal */ 254 __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD signal */ 255 } UARTE_PSEL_Type; /*!< Size = 16 (0x10) */ 256 257 258 /** 259 * @brief UARTE_RXD [RXD] (RXD EasyDMA channel) 260 */ 261 typedef struct { 262 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 263 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 264 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 265 } UARTE_RXD_Type; /*!< Size = 12 (0xc) */ 266 267 268 /** 269 * @brief UARTE_TXD [TXD] (TXD EasyDMA channel) 270 */ 271 typedef struct { 272 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 273 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 274 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 275 } UARTE_TXD_Type; /*!< Size = 12 (0xc) */ 276 277 278 /** 279 * @brief TWI_PSEL [PSEL] (Unspecified) 280 */ 281 typedef struct { 282 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL */ 283 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA */ 284 } TWI_PSEL_Type; /*!< Size = 8 (0x8) */ 285 286 287 /** 288 * @brief TWIM_PSEL [PSEL] (Unspecified) 289 */ 290 typedef struct { 291 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */ 292 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */ 293 } TWIM_PSEL_Type; /*!< Size = 8 (0x8) */ 294 295 296 /** 297 * @brief TWIM_RXD [RXD] (RXD EasyDMA channel) 298 */ 299 typedef struct { 300 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 301 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 302 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 303 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 304 } TWIM_RXD_Type; /*!< Size = 16 (0x10) */ 305 306 307 /** 308 * @brief TWIM_TXD [TXD] (TXD EasyDMA channel) 309 */ 310 typedef struct { 311 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 312 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 313 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 314 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 315 } TWIM_TXD_Type; /*!< Size = 16 (0x10) */ 316 317 318 /** 319 * @brief TWIS_PSEL [PSEL] (Unspecified) 320 */ 321 typedef struct { 322 __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */ 323 __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */ 324 } TWIS_PSEL_Type; /*!< Size = 8 (0x8) */ 325 326 327 /** 328 * @brief TWIS_RXD [RXD] (RXD EasyDMA channel) 329 */ 330 typedef struct { 331 __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD Data pointer */ 332 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer */ 333 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction */ 334 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 335 } TWIS_RXD_Type; /*!< Size = 16 (0x10) */ 336 337 338 /** 339 * @brief TWIS_TXD [TXD] (TXD EasyDMA channel) 340 */ 341 typedef struct { 342 __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD Data pointer */ 343 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer */ 344 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction */ 345 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 346 } TWIS_TXD_Type; /*!< Size = 16 (0x10) */ 347 348 349 /** 350 * @brief SPI_PSEL [PSEL] (Unspecified) 351 */ 352 typedef struct { 353 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 354 __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */ 355 __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */ 356 } SPI_PSEL_Type; /*!< Size = 12 (0xc) */ 357 358 359 /** 360 * @brief SPIM_PSEL [PSEL] (Unspecified) 361 */ 362 typedef struct { 363 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 364 __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */ 365 __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */ 366 } SPIM_PSEL_Type; /*!< Size = 12 (0xc) */ 367 368 369 /** 370 * @brief SPIM_RXD [RXD] (RXD EasyDMA channel) 371 */ 372 typedef struct { 373 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 374 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 375 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 376 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 377 } SPIM_RXD_Type; /*!< Size = 16 (0x10) */ 378 379 380 /** 381 * @brief SPIM_TXD [TXD] (TXD EasyDMA channel) 382 */ 383 typedef struct { 384 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 385 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 386 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */ 387 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 388 } SPIM_TXD_Type; /*!< Size = 16 (0x10) */ 389 390 391 /** 392 * @brief SPIS_PSEL [PSEL] (Unspecified) 393 */ 394 typedef struct { 395 __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */ 396 __IOM uint32_t MISO; /*!< (@ 0x00000004) Pin select for MISO signal */ 397 __IOM uint32_t MOSI; /*!< (@ 0x00000008) Pin select for MOSI signal */ 398 __IOM uint32_t CSN; /*!< (@ 0x0000000C) Pin select for CSN signal */ 399 } SPIS_PSEL_Type; /*!< Size = 16 (0x10) */ 400 401 402 /** 403 * @brief SPIS_RXD [RXD] (Unspecified) 404 */ 405 typedef struct { 406 __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD data pointer */ 407 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */ 408 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes received in last granted transaction */ 409 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 410 } SPIS_RXD_Type; /*!< Size = 16 (0x10) */ 411 412 413 /** 414 * @brief SPIS_TXD [TXD] (Unspecified) 415 */ 416 typedef struct { 417 __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD data pointer */ 418 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */ 419 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction */ 420 __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */ 421 } SPIS_TXD_Type; /*!< Size = 16 (0x10) */ 422 423 424 /** 425 * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.) 426 */ 427 typedef struct { 428 __IOM uint32_t LIMITH; /*!< (@ 0x00000000) Description cluster: Last results is equal or 429 above CH[n].LIMIT.HIGH */ 430 __IOM uint32_t LIMITL; /*!< (@ 0x00000004) Description cluster: Last results is equal or 431 below CH[n].LIMIT.LOW */ 432 } SAADC_EVENTS_CH_Type; /*!< Size = 8 (0x8) */ 433 434 435 /** 436 * @brief SAADC_CH [CH] (Unspecified) 437 */ 438 typedef struct { 439 __IOM uint32_t PSELP; /*!< (@ 0x00000000) Description cluster: Input positive pin selection 440 for CH[n] */ 441 __IOM uint32_t PSELN; /*!< (@ 0x00000004) Description cluster: Input negative pin selection 442 for CH[n] */ 443 __IOM uint32_t CONFIG; /*!< (@ 0x00000008) Description cluster: Input configuration for 444 CH[n] */ 445 __IOM uint32_t LIMIT; /*!< (@ 0x0000000C) Description cluster: High/low limits for event 446 monitoring a channel */ 447 } SAADC_CH_Type; /*!< Size = 16 (0x10) */ 448 449 450 /** 451 * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel) 452 */ 453 typedef struct { 454 __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */ 455 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of buffer words to transfer */ 456 __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of buffer words transferred since last 457 START */ 458 } SAADC_RESULT_Type; /*!< Size = 12 (0xc) */ 459 460 461 /** 462 * @brief QDEC_PSEL [PSEL] (Unspecified) 463 */ 464 typedef struct { 465 __IOM uint32_t LED; /*!< (@ 0x00000000) Pin select for LED signal */ 466 __IOM uint32_t A; /*!< (@ 0x00000004) Pin select for A signal */ 467 __IOM uint32_t B; /*!< (@ 0x00000008) Pin select for B signal */ 468 } QDEC_PSEL_Type; /*!< Size = 12 (0xc) */ 469 470 471 /** 472 * @brief PWM_SEQ [SEQ] (Unspecified) 473 */ 474 typedef struct { 475 __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Beginning address in RAM 476 of this sequence */ 477 __IOM uint32_t CNT; /*!< (@ 0x00000004) Description cluster: Number of values (duty cycles) 478 in this sequence */ 479 __IOM uint32_t REFRESH; /*!< (@ 0x00000008) Description cluster: Number of additional PWM 480 periods between samples loaded into compare 481 register */ 482 __IOM uint32_t ENDDELAY; /*!< (@ 0x0000000C) Description cluster: Time added after the sequence */ 483 __IM uint32_t RESERVED[4]; 484 } PWM_SEQ_Type; /*!< Size = 32 (0x20) */ 485 486 487 /** 488 * @brief PWM_PSEL [PSEL] (Unspecified) 489 */ 490 typedef struct { 491 __IOM uint32_t OUT[4]; /*!< (@ 0x00000000) Description collection: Output pin select for 492 PWM channel n */ 493 } PWM_PSEL_Type; /*!< Size = 16 (0x10) */ 494 495 496 /** 497 * @brief PDM_PSEL [PSEL] (Unspecified) 498 */ 499 typedef struct { 500 __IOM uint32_t CLK; /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal */ 501 __IOM uint32_t DIN; /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal */ 502 } PDM_PSEL_Type; /*!< Size = 8 (0x8) */ 503 504 505 /** 506 * @brief PDM_SAMPLE [SAMPLE] (Unspecified) 507 */ 508 typedef struct { 509 __IOM uint32_t PTR; /*!< (@ 0x00000000) RAM address pointer to write samples to with 510 EasyDMA */ 511 __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA 512 mode */ 513 } PDM_SAMPLE_Type; /*!< Size = 8 (0x8) */ 514 515 516 /** 517 * @brief PPI_TASKS_CHG [TASKS_CHG] (Channel group tasks) 518 */ 519 typedef struct { 520 __OM uint32_t EN; /*!< (@ 0x00000000) Description cluster: Enable channel group n */ 521 __OM uint32_t DIS; /*!< (@ 0x00000004) Description cluster: Disable channel group n */ 522 } PPI_TASKS_CHG_Type; /*!< Size = 8 (0x8) */ 523 524 525 /** 526 * @brief PPI_CH [CH] (PPI Channel) 527 */ 528 typedef struct { 529 __IOM uint32_t EEP; /*!< (@ 0x00000000) Description cluster: Channel n event end-point */ 530 __IOM uint32_t TEP; /*!< (@ 0x00000004) Description cluster: Channel n task end-point */ 531 } PPI_CH_Type; /*!< Size = 8 (0x8) */ 532 533 534 /** 535 * @brief PPI_FORK [FORK] (Fork) 536 */ 537 typedef struct { 538 __IOM uint32_t TEP; /*!< (@ 0x00000000) Description cluster: Channel n task end-point */ 539 } PPI_FORK_Type; /*!< Size = 4 (0x4) */ 540 541 542 /** @} */ /* End of group Device_Peripheral_clusters */ 543 544 545 /* =========================================================================================================================== */ 546 /* ================ Device Specific Peripheral Section ================ */ 547 /* =========================================================================================================================== */ 548 549 550 /** @addtogroup Device_Peripheral_peripherals 551 * @{ 552 */ 553 554 555 556 /* =========================================================================================================================== */ 557 /* ================ FICR ================ */ 558 /* =========================================================================================================================== */ 559 560 561 /** 562 * @brief Factory information configuration registers (FICR) 563 */ 564 565 typedef struct { /*!< (@ 0x10000000) FICR Structure */ 566 __IM uint32_t RESERVED[4]; 567 __IM uint32_t CODEPAGESIZE; /*!< (@ 0x00000010) Code memory page size */ 568 __IM uint32_t CODESIZE; /*!< (@ 0x00000014) Code memory size */ 569 __IM uint32_t RESERVED1[18]; 570 __IM uint32_t DEVICEID[2]; /*!< (@ 0x00000060) Description collection: Device identifier */ 571 __IM uint32_t RESERVED2[6]; 572 __IM uint32_t ER[4]; /*!< (@ 0x00000080) Description collection: Encryption root, word 573 n */ 574 __IM uint32_t IR[4]; /*!< (@ 0x00000090) Description collection: Identity root, word n */ 575 __IM uint32_t DEVICEADDRTYPE; /*!< (@ 0x000000A0) Device address type */ 576 __IM uint32_t DEVICEADDR[2]; /*!< (@ 0x000000A4) Description collection: Device address n */ 577 __IM uint32_t RESERVED3[21]; 578 __IM FICR_INFO_Type INFO; /*!< (@ 0x00000100) Device info */ 579 __IM uint32_t RESERVED4[188]; 580 __IM FICR_TEMP_Type TEMP; /*!< (@ 0x00000404) Registers storing factory TEMP module linearization 581 coefficients */ 582 } NRF_FICR_Type; /*!< Size = 1096 (0x448) */ 583 584 585 586 /* =========================================================================================================================== */ 587 /* ================ UICR ================ */ 588 /* =========================================================================================================================== */ 589 590 591 /** 592 * @brief User information configuration registers (UICR) 593 */ 594 595 typedef struct { /*!< (@ 0x10001000) UICR Structure */ 596 __IM uint32_t RESERVED[5]; 597 __IOM uint32_t NRFFW[13]; /*!< (@ 0x00000014) Description collection: Reserved for Nordic firmware 598 design */ 599 __IM uint32_t RESERVED1[2]; 600 __IOM uint32_t NRFHW[12]; /*!< (@ 0x00000050) Description collection: Reserved for Nordic hardware 601 design */ 602 __IOM uint32_t CUSTOMER[32]; /*!< (@ 0x00000080) Description collection: Reserved for customer */ 603 __IOM uint32_t NRFMDK[8]; /*!< (@ 0x00000100) Description collection: Reserved for Nordic MDK */ 604 __IM uint32_t RESERVED2[56]; 605 __IOM uint32_t PSELRESET[2]; /*!< (@ 0x00000200) Description collection: Mapping of the nRESET 606 function (see POWER chapter for details) */ 607 __IOM uint32_t APPROTECT; /*!< (@ 0x00000208) Access port protection */ 608 } NRF_UICR_Type; /*!< Size = 524 (0x20c) */ 609 610 611 612 /* =========================================================================================================================== */ 613 /* ================ BPROT ================ */ 614 /* =========================================================================================================================== */ 615 616 617 /** 618 * @brief Block Protect (BPROT) 619 */ 620 621 typedef struct { /*!< (@ 0x40000000) BPROT Structure */ 622 __IM uint32_t RESERVED[384]; 623 __IOM uint32_t CONFIG0; /*!< (@ 0x00000600) Block protect configuration register 0 */ 624 __IOM uint32_t CONFIG1; /*!< (@ 0x00000604) Block protect configuration register 1 */ 625 __IOM uint32_t DISABLEINDEBUG; /*!< (@ 0x00000608) Disable protection mechanism in debug mode */ 626 } NRF_BPROT_Type; /*!< Size = 1548 (0x60c) */ 627 628 629 630 /* =========================================================================================================================== */ 631 /* ================ APPROTECT ================ */ 632 /* =========================================================================================================================== */ 633 634 635 /** 636 * @brief Only for emulation on devices that support hardened AP-PROTECT. (APPROTECT) 637 */ 638 639 typedef struct { /*!< (@ 0x40000000) APPROTECT Structure */ 640 __IM uint32_t RESERVED[340]; 641 __IOM uint32_t FORCEPROTECT; /*!< (@ 0x00000550) Software force enable APPROTECT mechanism until 642 next reset. */ 643 __IM uint32_t RESERVED1; 644 __IOM uint32_t DISABLE; /*!< (@ 0x00000558) Software disable APPROTECT mechanism */ 645 } NRF_APPROTECT_Type; /*!< Size = 1372 (0x55c) */ 646 647 648 649 /* =========================================================================================================================== */ 650 /* ================ CLOCK ================ */ 651 /* =========================================================================================================================== */ 652 653 654 /** 655 * @brief Clock control (CLOCK) 656 */ 657 658 typedef struct { /*!< (@ 0x40000000) CLOCK Structure */ 659 __OM uint32_t TASKS_HFCLKSTART; /*!< (@ 0x00000000) Start HFCLK crystal oscillator */ 660 __OM uint32_t TASKS_HFCLKSTOP; /*!< (@ 0x00000004) Stop HFCLK crystal oscillator */ 661 __OM uint32_t TASKS_LFCLKSTART; /*!< (@ 0x00000008) Start LFCLK source */ 662 __OM uint32_t TASKS_LFCLKSTOP; /*!< (@ 0x0000000C) Stop LFCLK source */ 663 __OM uint32_t TASKS_CAL; /*!< (@ 0x00000010) Start calibration of LFRC oscillator */ 664 __OM uint32_t TASKS_CTSTART; /*!< (@ 0x00000014) Start calibration timer */ 665 __OM uint32_t TASKS_CTSTOP; /*!< (@ 0x00000018) Stop calibration timer */ 666 __IM uint32_t RESERVED[57]; 667 __IOM uint32_t EVENTS_HFCLKSTARTED; /*!< (@ 0x00000100) HFCLK oscillator started */ 668 __IOM uint32_t EVENTS_LFCLKSTARTED; /*!< (@ 0x00000104) LFCLK started */ 669 __IM uint32_t RESERVED1; 670 __IOM uint32_t EVENTS_DONE; /*!< (@ 0x0000010C) Calibration of LFCLK RC oscillator complete event */ 671 __IOM uint32_t EVENTS_CTTO; /*!< (@ 0x00000110) Calibration timer timeout */ 672 __IM uint32_t RESERVED2[124]; 673 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 674 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 675 __IM uint32_t RESERVED3[63]; 676 __IM uint32_t HFCLKRUN; /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been 677 triggered */ 678 __IM uint32_t HFCLKSTAT; /*!< (@ 0x0000040C) HFCLK status */ 679 __IM uint32_t RESERVED4; 680 __IM uint32_t LFCLKRUN; /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been 681 triggered */ 682 __IM uint32_t LFCLKSTAT; /*!< (@ 0x00000418) LFCLK status */ 683 __IM uint32_t LFCLKSRCCOPY; /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set when LFCLKSTART 684 task was triggered */ 685 __IM uint32_t RESERVED5[62]; 686 __IOM uint32_t LFCLKSRC; /*!< (@ 0x00000518) Clock source for the LFCLK */ 687 __IM uint32_t RESERVED6[7]; 688 __IOM uint32_t CTIV; /*!< (@ 0x00000538) Calibration timer interval */ 689 } NRF_CLOCK_Type; /*!< Size = 1340 (0x53c) */ 690 691 692 693 /* =========================================================================================================================== */ 694 /* ================ POWER ================ */ 695 /* =========================================================================================================================== */ 696 697 698 /** 699 * @brief Power control (POWER) 700 */ 701 702 typedef struct { /*!< (@ 0x40000000) POWER Structure */ 703 __IM uint32_t RESERVED[30]; 704 __OM uint32_t TASKS_CONSTLAT; /*!< (@ 0x00000078) Enable Constant Latency mode */ 705 __OM uint32_t TASKS_LOWPWR; /*!< (@ 0x0000007C) Enable Low-power mode (variable latency) */ 706 __IM uint32_t RESERVED1[34]; 707 __IOM uint32_t EVENTS_POFWARN; /*!< (@ 0x00000108) Power failure warning */ 708 __IM uint32_t RESERVED2[2]; 709 __IOM uint32_t EVENTS_SLEEPENTER; /*!< (@ 0x00000114) CPU entered WFI/WFE sleep */ 710 __IOM uint32_t EVENTS_SLEEPEXIT; /*!< (@ 0x00000118) CPU exited WFI/WFE sleep */ 711 __IM uint32_t RESERVED3[122]; 712 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 713 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 714 __IM uint32_t RESERVED4[61]; 715 __IOM uint32_t RESETREAS; /*!< (@ 0x00000400) Reset reason */ 716 __IM uint32_t RESERVED5[63]; 717 __OM uint32_t SYSTEMOFF; /*!< (@ 0x00000500) System OFF register */ 718 __IM uint32_t RESERVED6[3]; 719 __IOM uint32_t POFCON; /*!< (@ 0x00000510) Power failure comparator configuration */ 720 __IM uint32_t RESERVED7[2]; 721 __IOM uint32_t GPREGRET; /*!< (@ 0x0000051C) General purpose retention register */ 722 __IOM uint32_t GPREGRET2; /*!< (@ 0x00000520) General purpose retention register */ 723 __IM uint32_t RESERVED8[21]; 724 __IOM uint32_t DCDCEN; /*!< (@ 0x00000578) DC/DC enable register */ 725 __IM uint32_t RESERVED9[225]; 726 __IOM POWER_RAM_Type RAM[8]; /*!< (@ 0x00000900) Unspecified */ 727 } NRF_POWER_Type; /*!< Size = 2432 (0x980) */ 728 729 730 731 /* =========================================================================================================================== */ 732 /* ================ P0 ================ */ 733 /* =========================================================================================================================== */ 734 735 736 /** 737 * @brief GPIO Port (P0) 738 */ 739 740 typedef struct { /*!< (@ 0x50000000) P0 Structure */ 741 __IM uint32_t RESERVED[321]; 742 __IOM uint32_t OUT; /*!< (@ 0x00000504) Write GPIO port */ 743 __IOM uint32_t OUTSET; /*!< (@ 0x00000508) Set individual bits in GPIO port */ 744 __IOM uint32_t OUTCLR; /*!< (@ 0x0000050C) Clear individual bits in GPIO port */ 745 __IM uint32_t IN; /*!< (@ 0x00000510) Read GPIO port */ 746 __IOM uint32_t DIR; /*!< (@ 0x00000514) Direction of GPIO pins */ 747 __IOM uint32_t DIRSET; /*!< (@ 0x00000518) DIR set register */ 748 __IOM uint32_t DIRCLR; /*!< (@ 0x0000051C) DIR clear register */ 749 __IOM uint32_t LATCH; /*!< (@ 0x00000520) Latch register indicating what GPIO pins that 750 have met the criteria set in the PIN_CNF[n].SENSE 751 registers */ 752 __IOM uint32_t DETECTMODE; /*!< (@ 0x00000524) Select between default DETECT signal behaviour 753 and LDETECT mode */ 754 __IM uint32_t RESERVED1[118]; 755 __IOM uint32_t PIN_CNF[32]; /*!< (@ 0x00000700) Description collection: Configuration of GPIO 756 pins */ 757 } NRF_GPIO_Type; /*!< Size = 1920 (0x780) */ 758 759 760 761 /* =========================================================================================================================== */ 762 /* ================ RADIO ================ */ 763 /* =========================================================================================================================== */ 764 765 766 /** 767 * @brief 2.4 GHz Radio (RADIO) 768 */ 769 770 typedef struct { /*!< (@ 0x40001000) RADIO Structure */ 771 __OM uint32_t TASKS_TXEN; /*!< (@ 0x00000000) Enable RADIO in TX mode */ 772 __OM uint32_t TASKS_RXEN; /*!< (@ 0x00000004) Enable RADIO in RX mode */ 773 __OM uint32_t TASKS_START; /*!< (@ 0x00000008) Start RADIO */ 774 __OM uint32_t TASKS_STOP; /*!< (@ 0x0000000C) Stop RADIO */ 775 __OM uint32_t TASKS_DISABLE; /*!< (@ 0x00000010) Disable RADIO */ 776 __OM uint32_t TASKS_RSSISTART; /*!< (@ 0x00000014) Start the RSSI and take one single sample of 777 the receive signal strength. */ 778 __OM uint32_t TASKS_RSSISTOP; /*!< (@ 0x00000018) Stop the RSSI measurement */ 779 __OM uint32_t TASKS_BCSTART; /*!< (@ 0x0000001C) Start the bit counter */ 780 __OM uint32_t TASKS_BCSTOP; /*!< (@ 0x00000020) Stop the bit counter */ 781 __IM uint32_t RESERVED[55]; 782 __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) RADIO has ramped up and is ready to be started */ 783 __IOM uint32_t EVENTS_ADDRESS; /*!< (@ 0x00000104) Address sent or received */ 784 __IOM uint32_t EVENTS_PAYLOAD; /*!< (@ 0x00000108) Packet payload sent or received */ 785 __IOM uint32_t EVENTS_END; /*!< (@ 0x0000010C) Packet sent or received */ 786 __IOM uint32_t EVENTS_DISABLED; /*!< (@ 0x00000110) RADIO has been disabled */ 787 __IOM uint32_t EVENTS_DEVMATCH; /*!< (@ 0x00000114) A device address match occurred on the last received 788 packet */ 789 __IOM uint32_t EVENTS_DEVMISS; /*!< (@ 0x00000118) No device address match occurred on the last 790 received packet */ 791 __IOM uint32_t EVENTS_RSSIEND; /*!< (@ 0x0000011C) Sampling of receive signal strength complete. */ 792 __IM uint32_t RESERVED1[2]; 793 __IOM uint32_t EVENTS_BCMATCH; /*!< (@ 0x00000128) Bit counter reached bit count value. */ 794 __IM uint32_t RESERVED2; 795 __IOM uint32_t EVENTS_CRCOK; /*!< (@ 0x00000130) Packet received with CRC ok */ 796 __IOM uint32_t EVENTS_CRCERROR; /*!< (@ 0x00000134) Packet received with CRC error */ 797 __IM uint32_t RESERVED3[50]; 798 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 799 __IM uint32_t RESERVED4[64]; 800 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 801 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 802 __IM uint32_t RESERVED5[61]; 803 __IM uint32_t CRCSTATUS; /*!< (@ 0x00000400) CRC status */ 804 __IM uint32_t RESERVED6; 805 __IM uint32_t RXMATCH; /*!< (@ 0x00000408) Received address */ 806 __IM uint32_t RXCRC; /*!< (@ 0x0000040C) CRC field of previously received packet */ 807 __IM uint32_t DAI; /*!< (@ 0x00000410) Device address match index */ 808 __IM uint32_t RESERVED7[60]; 809 __IOM uint32_t PACKETPTR; /*!< (@ 0x00000504) Packet pointer */ 810 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000508) Frequency */ 811 __IOM uint32_t TXPOWER; /*!< (@ 0x0000050C) Output power */ 812 __IOM uint32_t MODE; /*!< (@ 0x00000510) Data rate and modulation */ 813 __IOM uint32_t PCNF0; /*!< (@ 0x00000514) Packet configuration register 0 */ 814 __IOM uint32_t PCNF1; /*!< (@ 0x00000518) Packet configuration register 1 */ 815 __IOM uint32_t BASE0; /*!< (@ 0x0000051C) Base address 0 */ 816 __IOM uint32_t BASE1; /*!< (@ 0x00000520) Base address 1 */ 817 __IOM uint32_t PREFIX0; /*!< (@ 0x00000524) Prefixes bytes for logical addresses 0-3 */ 818 __IOM uint32_t PREFIX1; /*!< (@ 0x00000528) Prefixes bytes for logical addresses 4-7 */ 819 __IOM uint32_t TXADDRESS; /*!< (@ 0x0000052C) Transmit address select */ 820 __IOM uint32_t RXADDRESSES; /*!< (@ 0x00000530) Receive address select */ 821 __IOM uint32_t CRCCNF; /*!< (@ 0x00000534) CRC configuration */ 822 __IOM uint32_t CRCPOLY; /*!< (@ 0x00000538) CRC polynomial */ 823 __IOM uint32_t CRCINIT; /*!< (@ 0x0000053C) CRC initial value */ 824 __IM uint32_t RESERVED8; 825 __IOM uint32_t TIFS; /*!< (@ 0x00000544) Inter Frame Spacing in us */ 826 __IM uint32_t RSSISAMPLE; /*!< (@ 0x00000548) RSSI sample */ 827 __IM uint32_t RESERVED9; 828 __IM uint32_t STATE; /*!< (@ 0x00000550) Current radio state */ 829 __IOM uint32_t DATAWHITEIV; /*!< (@ 0x00000554) Data whitening initial value */ 830 __IM uint32_t RESERVED10[2]; 831 __IOM uint32_t BCC; /*!< (@ 0x00000560) Bit counter compare */ 832 __IM uint32_t RESERVED11[39]; 833 __IOM uint32_t DAB[8]; /*!< (@ 0x00000600) Description collection: Device address base segment 834 n */ 835 __IOM uint32_t DAP[8]; /*!< (@ 0x00000620) Description collection: Device address prefix 836 n */ 837 __IOM uint32_t DACNF; /*!< (@ 0x00000640) Device address match configuration */ 838 __IM uint32_t RESERVED12[3]; 839 __IOM uint32_t MODECNF0; /*!< (@ 0x00000650) Radio mode configuration register 0 */ 840 __IM uint32_t RESERVED13[618]; 841 __IOM uint32_t POWER; /*!< (@ 0x00000FFC) Peripheral power control */ 842 } NRF_RADIO_Type; /*!< Size = 4096 (0x1000) */ 843 844 845 846 /* =========================================================================================================================== */ 847 /* ================ UART0 ================ */ 848 /* =========================================================================================================================== */ 849 850 851 /** 852 * @brief Universal Asynchronous Receiver/Transmitter (UART0) 853 */ 854 855 typedef struct { /*!< (@ 0x40002000) UART0 Structure */ 856 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */ 857 __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */ 858 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */ 859 __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */ 860 __IM uint32_t RESERVED[3]; 861 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend UART */ 862 __IM uint32_t RESERVED1[56]; 863 __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */ 864 __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */ 865 __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD */ 866 __IM uint32_t RESERVED2[4]; 867 __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */ 868 __IM uint32_t RESERVED3; 869 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */ 870 __IM uint32_t RESERVED4[7]; 871 __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */ 872 __IM uint32_t RESERVED5[46]; 873 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 874 __IM uint32_t RESERVED6[64]; 875 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 876 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 877 __IM uint32_t RESERVED7[93]; 878 __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source */ 879 __IM uint32_t RESERVED8[31]; 880 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */ 881 __IM uint32_t RESERVED9; 882 __IOM UART_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 883 __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */ 884 __OM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */ 885 __IM uint32_t RESERVED10; 886 __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source 887 selected. */ 888 __IM uint32_t RESERVED11[17]; 889 __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */ 890 } NRF_UART_Type; /*!< Size = 1392 (0x570) */ 891 892 893 894 /* =========================================================================================================================== */ 895 /* ================ UARTE0 ================ */ 896 /* =========================================================================================================================== */ 897 898 899 /** 900 * @brief UART with EasyDMA (UARTE0) 901 */ 902 903 typedef struct { /*!< (@ 0x40002000) UARTE0 Structure */ 904 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */ 905 __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */ 906 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */ 907 __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */ 908 __IM uint32_t RESERVED[7]; 909 __OM uint32_t TASKS_FLUSHRX; /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer */ 910 __IM uint32_t RESERVED1[52]; 911 __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */ 912 __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */ 913 __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD (but potentially not yet 914 transferred to Data RAM) */ 915 __IM uint32_t RESERVED2; 916 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) Receive buffer is filled up */ 917 __IM uint32_t RESERVED3[2]; 918 __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */ 919 __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) Last TX byte transmitted */ 920 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */ 921 __IM uint32_t RESERVED4[7]; 922 __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */ 923 __IM uint32_t RESERVED5; 924 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) UART receiver has started */ 925 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) UART transmitter has started */ 926 __IM uint32_t RESERVED6; 927 __IOM uint32_t EVENTS_TXSTOPPED; /*!< (@ 0x00000158) Transmitter stopped */ 928 __IM uint32_t RESERVED7[41]; 929 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 930 __IM uint32_t RESERVED8[63]; 931 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 932 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 933 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 934 __IM uint32_t RESERVED9[93]; 935 __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source Note : this register is read / write 936 one to clear. */ 937 __IM uint32_t RESERVED10[31]; 938 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */ 939 __IM uint32_t RESERVED11; 940 __IOM UARTE_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 941 __IM uint32_t RESERVED12[3]; 942 __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source 943 selected. */ 944 __IM uint32_t RESERVED13[3]; 945 __IOM UARTE_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 946 __IM uint32_t RESERVED14; 947 __IOM UARTE_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 948 __IM uint32_t RESERVED15[7]; 949 __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */ 950 } NRF_UARTE_Type; /*!< Size = 1392 (0x570) */ 951 952 953 954 /* =========================================================================================================================== */ 955 /* ================ TWI0 ================ */ 956 /* =========================================================================================================================== */ 957 958 959 /** 960 * @brief I2C compatible Two-Wire Interface (TWI0) 961 */ 962 963 typedef struct { /*!< (@ 0x40003000) TWI0 Structure */ 964 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */ 965 __IM uint32_t RESERVED; 966 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */ 967 __IM uint32_t RESERVED1[2]; 968 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */ 969 __IM uint32_t RESERVED2; 970 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 971 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 972 __IM uint32_t RESERVED3[56]; 973 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 974 __IOM uint32_t EVENTS_RXDREADY; /*!< (@ 0x00000108) TWI RXD byte received */ 975 __IM uint32_t RESERVED4[4]; 976 __IOM uint32_t EVENTS_TXDSENT; /*!< (@ 0x0000011C) TWI TXD byte sent */ 977 __IM uint32_t RESERVED5; 978 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 979 __IM uint32_t RESERVED6[4]; 980 __IOM uint32_t EVENTS_BB; /*!< (@ 0x00000138) TWI byte boundary, generated before each byte 981 that is sent or received */ 982 __IM uint32_t RESERVED7[3]; 983 __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) TWI entered the suspended state */ 984 __IM uint32_t RESERVED8[45]; 985 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 986 __IM uint32_t RESERVED9[64]; 987 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 988 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 989 __IM uint32_t RESERVED10[110]; 990 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */ 991 __IM uint32_t RESERVED11[14]; 992 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWI */ 993 __IM uint32_t RESERVED12; 994 __IOM TWI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 995 __IM uint32_t RESERVED13[2]; 996 __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */ 997 __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */ 998 __IM uint32_t RESERVED14; 999 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK 1000 source selected. */ 1001 __IM uint32_t RESERVED15[24]; 1002 __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */ 1003 } NRF_TWI_Type; /*!< Size = 1420 (0x58c) */ 1004 1005 1006 1007 /* =========================================================================================================================== */ 1008 /* ================ TWIM0 ================ */ 1009 /* =========================================================================================================================== */ 1010 1011 1012 /** 1013 * @brief I2C compatible Two-Wire Master Interface with EasyDMA (TWIM0) 1014 */ 1015 1016 typedef struct { /*!< (@ 0x40003000) TWIM0 Structure */ 1017 __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */ 1018 __IM uint32_t RESERVED; 1019 __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */ 1020 __IM uint32_t RESERVED1[2]; 1021 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the 1022 TWI master is not suspended. */ 1023 __IM uint32_t RESERVED2; 1024 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1025 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1026 __IM uint32_t RESERVED3[56]; 1027 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1028 __IM uint32_t RESERVED4[7]; 1029 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1030 __IM uint32_t RESERVED5[8]; 1031 __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) Last byte has been sent out after the SUSPEND 1032 task has been issued, TWI traffic is now 1033 suspended. */ 1034 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */ 1035 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */ 1036 __IM uint32_t RESERVED6[2]; 1037 __IOM uint32_t EVENTS_LASTRX; /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte */ 1038 __IOM uint32_t EVENTS_LASTTX; /*!< (@ 0x00000160) Byte boundary, starting to transmit the last 1039 byte */ 1040 __IM uint32_t RESERVED7[39]; 1041 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1042 __IM uint32_t RESERVED8[63]; 1043 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1044 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1045 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1046 __IM uint32_t RESERVED9[110]; 1047 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */ 1048 __IM uint32_t RESERVED10[14]; 1049 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIM */ 1050 __IM uint32_t RESERVED11; 1051 __IOM TWIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1052 __IM uint32_t RESERVED12[5]; 1053 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK 1054 source selected. */ 1055 __IM uint32_t RESERVED13[3]; 1056 __IOM TWIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1057 __IOM TWIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1058 __IM uint32_t RESERVED14[13]; 1059 __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */ 1060 } NRF_TWIM_Type; /*!< Size = 1420 (0x58c) */ 1061 1062 1063 1064 /* =========================================================================================================================== */ 1065 /* ================ TWIS0 ================ */ 1066 /* =========================================================================================================================== */ 1067 1068 1069 /** 1070 * @brief I2C compatible Two-Wire Slave Interface with EasyDMA (TWIS0) 1071 */ 1072 1073 typedef struct { /*!< (@ 0x40003000) TWIS0 Structure */ 1074 __IM uint32_t RESERVED[5]; 1075 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */ 1076 __IM uint32_t RESERVED1; 1077 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */ 1078 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */ 1079 __IM uint32_t RESERVED2[3]; 1080 __OM uint32_t TASKS_PREPARERX; /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command */ 1081 __OM uint32_t TASKS_PREPARETX; /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command */ 1082 __IM uint32_t RESERVED3[51]; 1083 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */ 1084 __IM uint32_t RESERVED4[7]; 1085 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */ 1086 __IM uint32_t RESERVED5[9]; 1087 __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */ 1088 __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */ 1089 __IM uint32_t RESERVED6[4]; 1090 __IOM uint32_t EVENTS_WRITE; /*!< (@ 0x00000164) Write command received */ 1091 __IOM uint32_t EVENTS_READ; /*!< (@ 0x00000168) Read command received */ 1092 __IM uint32_t RESERVED7[37]; 1093 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1094 __IM uint32_t RESERVED8[63]; 1095 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1096 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1097 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1098 __IM uint32_t RESERVED9[113]; 1099 __IOM uint32_t ERRORSRC; /*!< (@ 0x000004D0) Error source */ 1100 __IM uint32_t MATCH; /*!< (@ 0x000004D4) Status register indicating which address had 1101 a match */ 1102 __IM uint32_t RESERVED10[10]; 1103 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIS */ 1104 __IM uint32_t RESERVED11; 1105 __IOM TWIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1106 __IM uint32_t RESERVED12[9]; 1107 __IOM TWIS_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1108 __IOM TWIS_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1109 __IM uint32_t RESERVED13[13]; 1110 __IOM uint32_t ADDRESS[2]; /*!< (@ 0x00000588) Description collection: TWI slave address n */ 1111 __IM uint32_t RESERVED14; 1112 __IOM uint32_t CONFIG; /*!< (@ 0x00000594) Configuration register for the address match 1113 mechanism */ 1114 __IM uint32_t RESERVED15[10]; 1115 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character sent out in case 1116 of an over-read of the transmit buffer. */ 1117 } NRF_TWIS_Type; /*!< Size = 1476 (0x5c4) */ 1118 1119 1120 1121 /* =========================================================================================================================== */ 1122 /* ================ SPI0 ================ */ 1123 /* =========================================================================================================================== */ 1124 1125 1126 /** 1127 * @brief Serial Peripheral Interface (SPI0) 1128 */ 1129 1130 typedef struct { /*!< (@ 0x40004000) SPI0 Structure */ 1131 __IM uint32_t RESERVED[66]; 1132 __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000108) TXD byte sent and RXD byte received */ 1133 __IM uint32_t RESERVED1[126]; 1134 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1135 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1136 __IM uint32_t RESERVED2[125]; 1137 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI */ 1138 __IM uint32_t RESERVED3; 1139 __IOM SPI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1140 __IM uint32_t RESERVED4; 1141 __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */ 1142 __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */ 1143 __IM uint32_t RESERVED5; 1144 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK 1145 source selected. */ 1146 __IM uint32_t RESERVED6[11]; 1147 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1148 } NRF_SPI_Type; /*!< Size = 1368 (0x558) */ 1149 1150 1151 1152 /* =========================================================================================================================== */ 1153 /* ================ SPIM0 ================ */ 1154 /* =========================================================================================================================== */ 1155 1156 1157 /** 1158 * @brief Serial Peripheral Interface Master with EasyDMA (SPIM0) 1159 */ 1160 1161 typedef struct { /*!< (@ 0x40004000) SPIM0 Structure */ 1162 __IM uint32_t RESERVED[4]; 1163 __OM uint32_t TASKS_START; /*!< (@ 0x00000010) Start SPI transaction */ 1164 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop SPI transaction */ 1165 __IM uint32_t RESERVED1; 1166 __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend SPI transaction */ 1167 __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume SPI transaction */ 1168 __IM uint32_t RESERVED2[56]; 1169 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) SPI transaction has stopped */ 1170 __IM uint32_t RESERVED3[2]; 1171 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */ 1172 __IM uint32_t RESERVED4; 1173 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached */ 1174 __IM uint32_t RESERVED5; 1175 __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) End of TXD buffer reached */ 1176 __IM uint32_t RESERVED6[10]; 1177 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x0000014C) Transaction started */ 1178 __IM uint32_t RESERVED7[44]; 1179 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1180 __IM uint32_t RESERVED8[64]; 1181 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1182 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1183 __IM uint32_t RESERVED9[125]; 1184 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPIM */ 1185 __IM uint32_t RESERVED10; 1186 __IOM SPIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1187 __IM uint32_t RESERVED11[4]; 1188 __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK 1189 source selected. */ 1190 __IM uint32_t RESERVED12[3]; 1191 __IOM SPIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */ 1192 __IOM SPIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */ 1193 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1194 __IM uint32_t RESERVED13[26]; 1195 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character clocked out in 1196 case and over-read of the TXD buffer. */ 1197 } NRF_SPIM_Type; /*!< Size = 1476 (0x5c4) */ 1198 1199 1200 1201 /* =========================================================================================================================== */ 1202 /* ================ SPIS0 ================ */ 1203 /* =========================================================================================================================== */ 1204 1205 1206 /** 1207 * @brief SPI Slave (SPIS0) 1208 */ 1209 1210 typedef struct { /*!< (@ 0x40004000) SPIS0 Structure */ 1211 __IM uint32_t RESERVED[9]; 1212 __OM uint32_t TASKS_ACQUIRE; /*!< (@ 0x00000024) Acquire SPI semaphore */ 1213 __OM uint32_t TASKS_RELEASE; /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave 1214 to acquire it */ 1215 __IM uint32_t RESERVED1[54]; 1216 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) Granted transaction completed */ 1217 __IM uint32_t RESERVED2[2]; 1218 __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */ 1219 __IM uint32_t RESERVED3[5]; 1220 __IOM uint32_t EVENTS_ACQUIRED; /*!< (@ 0x00000128) Semaphore acquired */ 1221 __IM uint32_t RESERVED4[53]; 1222 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1223 __IM uint32_t RESERVED5[64]; 1224 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1225 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1226 __IM uint32_t RESERVED6[61]; 1227 __IM uint32_t SEMSTAT; /*!< (@ 0x00000400) Semaphore status register */ 1228 __IM uint32_t RESERVED7[15]; 1229 __IOM uint32_t STATUS; /*!< (@ 0x00000440) Status from last transaction */ 1230 __IM uint32_t RESERVED8[47]; 1231 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI slave */ 1232 __IM uint32_t RESERVED9; 1233 __IOM SPIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */ 1234 __IM uint32_t RESERVED10[7]; 1235 __IOM SPIS_RXD_Type RXD; /*!< (@ 0x00000534) Unspecified */ 1236 __IOM SPIS_TXD_Type TXD; /*!< (@ 0x00000544) Unspecified */ 1237 __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */ 1238 __IM uint32_t RESERVED11; 1239 __IOM uint32_t DEF; /*!< (@ 0x0000055C) Default character. Character clocked out in case 1240 of an ignored transaction. */ 1241 __IM uint32_t RESERVED12[24]; 1242 __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character */ 1243 } NRF_SPIS_Type; /*!< Size = 1476 (0x5c4) */ 1244 1245 1246 1247 /* =========================================================================================================================== */ 1248 /* ================ GPIOTE ================ */ 1249 /* =========================================================================================================================== */ 1250 1251 1252 /** 1253 * @brief GPIO Tasks and Events (GPIOTE) 1254 */ 1255 1256 typedef struct { /*!< (@ 0x40006000) GPIOTE Structure */ 1257 __OM uint32_t TASKS_OUT[8]; /*!< (@ 0x00000000) Description collection: Task for writing to pin 1258 specified in CONFIG[n].PSEL. Action on pin 1259 is configured in CONFIG[n].POLARITY. */ 1260 __IM uint32_t RESERVED[4]; 1261 __OM uint32_t TASKS_SET[8]; /*!< (@ 0x00000030) Description collection: Task for writing to pin 1262 specified in CONFIG[n].PSEL. Action on pin 1263 is to set it high. */ 1264 __IM uint32_t RESERVED1[4]; 1265 __OM uint32_t TASKS_CLR[8]; /*!< (@ 0x00000060) Description collection: Task for writing to pin 1266 specified in CONFIG[n].PSEL. Action on pin 1267 is to set it low. */ 1268 __IM uint32_t RESERVED2[32]; 1269 __IOM uint32_t EVENTS_IN[8]; /*!< (@ 0x00000100) Description collection: Event generated from 1270 pin specified in CONFIG[n].PSEL */ 1271 __IM uint32_t RESERVED3[23]; 1272 __IOM uint32_t EVENTS_PORT; /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins 1273 with SENSE mechanism enabled */ 1274 __IM uint32_t RESERVED4[97]; 1275 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1276 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1277 __IM uint32_t RESERVED5[129]; 1278 __IOM uint32_t CONFIG[8]; /*!< (@ 0x00000510) Description collection: Configuration for OUT[n], 1279 SET[n] and CLR[n] tasks and IN[n] event */ 1280 } NRF_GPIOTE_Type; /*!< Size = 1328 (0x530) */ 1281 1282 1283 1284 /* =========================================================================================================================== */ 1285 /* ================ SAADC ================ */ 1286 /* =========================================================================================================================== */ 1287 1288 1289 /** 1290 * @brief Analog to Digital Converter (SAADC) 1291 */ 1292 1293 typedef struct { /*!< (@ 0x40007000) SAADC Structure */ 1294 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the ADC and prepare the result buffer in 1295 RAM */ 1296 __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000004) Take one ADC sample, if scan is enabled all channels 1297 are sampled */ 1298 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop the ADC and terminate any on-going conversion */ 1299 __OM uint32_t TASKS_CALIBRATEOFFSET; /*!< (@ 0x0000000C) Starts offset auto-calibration */ 1300 __IM uint32_t RESERVED[60]; 1301 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) The ADC has started */ 1302 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) The ADC has filled up the Result buffer */ 1303 __IOM uint32_t EVENTS_DONE; /*!< (@ 0x00000108) A conversion task has been completed. Depending 1304 on the mode, multiple conversions might 1305 be needed for a result to be transferred 1306 to RAM. */ 1307 __IOM uint32_t EVENTS_RESULTDONE; /*!< (@ 0x0000010C) A result is ready to get transferred to RAM. */ 1308 __IOM uint32_t EVENTS_CALIBRATEDONE; /*!< (@ 0x00000110) Calibration is complete */ 1309 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000114) The ADC has stopped */ 1310 __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8]; /*!< (@ 0x00000118) Peripheral events. */ 1311 __IM uint32_t RESERVED1[106]; 1312 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1313 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1314 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1315 __IM uint32_t RESERVED2[61]; 1316 __IM uint32_t STATUS; /*!< (@ 0x00000400) Status */ 1317 __IM uint32_t RESERVED3[63]; 1318 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable or disable ADC */ 1319 __IM uint32_t RESERVED4[3]; 1320 __IOM SAADC_CH_Type CH[8]; /*!< (@ 0x00000510) Unspecified */ 1321 __IM uint32_t RESERVED5[24]; 1322 __IOM uint32_t RESOLUTION; /*!< (@ 0x000005F0) Resolution configuration */ 1323 __IOM uint32_t OVERSAMPLE; /*!< (@ 0x000005F4) Oversampling configuration. OVERSAMPLE should 1324 not be combined with SCAN. The RESOLUTION 1325 is applied before averaging, thus for high 1326 OVERSAMPLE a higher RESOLUTION should be 1327 used. */ 1328 __IOM uint32_t SAMPLERATE; /*!< (@ 0x000005F8) Controls normal or continuous sample rate */ 1329 __IM uint32_t RESERVED6[12]; 1330 __IOM SAADC_RESULT_Type RESULT; /*!< (@ 0x0000062C) RESULT EasyDMA channel */ 1331 } NRF_SAADC_Type; /*!< Size = 1592 (0x638) */ 1332 1333 1334 1335 /* =========================================================================================================================== */ 1336 /* ================ TIMER0 ================ */ 1337 /* =========================================================================================================================== */ 1338 1339 1340 /** 1341 * @brief Timer/Counter 0 (TIMER0) 1342 */ 1343 1344 typedef struct { /*!< (@ 0x40008000) TIMER0 Structure */ 1345 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start Timer */ 1346 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop Timer */ 1347 __OM uint32_t TASKS_COUNT; /*!< (@ 0x00000008) Increment Timer (Counter mode only) */ 1348 __OM uint32_t TASKS_CLEAR; /*!< (@ 0x0000000C) Clear time */ 1349 __OM uint32_t TASKS_SHUTDOWN; /*!< (@ 0x00000010) Deprecated register - Shut down timer */ 1350 __IM uint32_t RESERVED[11]; 1351 __OM uint32_t TASKS_CAPTURE[6]; /*!< (@ 0x00000040) Description collection: Capture Timer value to 1352 CC[n] register */ 1353 __IM uint32_t RESERVED1[58]; 1354 __IOM uint32_t EVENTS_COMPARE[6]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n] 1355 match */ 1356 __IM uint32_t RESERVED2[42]; 1357 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1358 __IM uint32_t RESERVED3[64]; 1359 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1360 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1361 __IM uint32_t RESERVED4[126]; 1362 __IOM uint32_t MODE; /*!< (@ 0x00000504) Timer mode selection */ 1363 __IOM uint32_t BITMODE; /*!< (@ 0x00000508) Configure the number of bits used by the TIMER */ 1364 __IM uint32_t RESERVED5; 1365 __IOM uint32_t PRESCALER; /*!< (@ 0x00000510) Timer prescaler register */ 1366 __IM uint32_t RESERVED6[11]; 1367 __IOM uint32_t CC[6]; /*!< (@ 0x00000540) Description collection: Capture/Compare register 1368 n */ 1369 } NRF_TIMER_Type; /*!< Size = 1368 (0x558) */ 1370 1371 1372 1373 /* =========================================================================================================================== */ 1374 /* ================ RTC0 ================ */ 1375 /* =========================================================================================================================== */ 1376 1377 1378 /** 1379 * @brief Real time counter 0 (RTC0) 1380 */ 1381 1382 typedef struct { /*!< (@ 0x4000B000) RTC0 Structure */ 1383 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start RTC COUNTER */ 1384 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop RTC COUNTER */ 1385 __OM uint32_t TASKS_CLEAR; /*!< (@ 0x00000008) Clear RTC COUNTER */ 1386 __OM uint32_t TASKS_TRIGOVRFLW; /*!< (@ 0x0000000C) Set COUNTER to 0xFFFFF0 */ 1387 __IM uint32_t RESERVED[60]; 1388 __IOM uint32_t EVENTS_TICK; /*!< (@ 0x00000100) Event on COUNTER increment */ 1389 __IOM uint32_t EVENTS_OVRFLW; /*!< (@ 0x00000104) Event on COUNTER overflow */ 1390 __IM uint32_t RESERVED1[14]; 1391 __IOM uint32_t EVENTS_COMPARE[4]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n] 1392 match */ 1393 __IM uint32_t RESERVED2[109]; 1394 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1395 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1396 __IM uint32_t RESERVED3[13]; 1397 __IOM uint32_t EVTEN; /*!< (@ 0x00000340) Enable or disable event routing */ 1398 __IOM uint32_t EVTENSET; /*!< (@ 0x00000344) Enable event routing */ 1399 __IOM uint32_t EVTENCLR; /*!< (@ 0x00000348) Disable event routing */ 1400 __IM uint32_t RESERVED4[110]; 1401 __IM uint32_t COUNTER; /*!< (@ 0x00000504) Current COUNTER value */ 1402 __IOM uint32_t PRESCALER; /*!< (@ 0x00000508) 12 bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).Mu 1403 t be written when RTC is stopped */ 1404 __IM uint32_t RESERVED5[13]; 1405 __IOM uint32_t CC[4]; /*!< (@ 0x00000540) Description collection: Compare register n */ 1406 } NRF_RTC_Type; /*!< Size = 1360 (0x550) */ 1407 1408 1409 1410 /* =========================================================================================================================== */ 1411 /* ================ TEMP ================ */ 1412 /* =========================================================================================================================== */ 1413 1414 1415 /** 1416 * @brief Temperature Sensor (TEMP) 1417 */ 1418 1419 typedef struct { /*!< (@ 0x4000C000) TEMP Structure */ 1420 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start temperature measurement */ 1421 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop temperature measurement */ 1422 __IM uint32_t RESERVED[62]; 1423 __IOM uint32_t EVENTS_DATARDY; /*!< (@ 0x00000100) Temperature measurement complete, data ready */ 1424 __IM uint32_t RESERVED1[128]; 1425 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1426 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1427 __IM uint32_t RESERVED2[127]; 1428 __IM int32_t TEMP; /*!< (@ 0x00000508) Temperature in degC (0.25deg steps) */ 1429 __IM uint32_t RESERVED3[5]; 1430 __IOM uint32_t A0; /*!< (@ 0x00000520) Slope of 1st piece wise linear function */ 1431 __IOM uint32_t A1; /*!< (@ 0x00000524) Slope of 2nd piece wise linear function */ 1432 __IOM uint32_t A2; /*!< (@ 0x00000528) Slope of 3rd piece wise linear function */ 1433 __IOM uint32_t A3; /*!< (@ 0x0000052C) Slope of 4th piece wise linear function */ 1434 __IOM uint32_t A4; /*!< (@ 0x00000530) Slope of 5th piece wise linear function */ 1435 __IOM uint32_t A5; /*!< (@ 0x00000534) Slope of 6th piece wise linear function */ 1436 __IM uint32_t RESERVED4[2]; 1437 __IOM uint32_t B0; /*!< (@ 0x00000540) y-intercept of 1st piece wise linear function */ 1438 __IOM uint32_t B1; /*!< (@ 0x00000544) y-intercept of 2nd piece wise linear function */ 1439 __IOM uint32_t B2; /*!< (@ 0x00000548) y-intercept of 3rd piece wise linear function */ 1440 __IOM uint32_t B3; /*!< (@ 0x0000054C) y-intercept of 4th piece wise linear function */ 1441 __IOM uint32_t B4; /*!< (@ 0x00000550) y-intercept of 5th piece wise linear function */ 1442 __IOM uint32_t B5; /*!< (@ 0x00000554) y-intercept of 6th piece wise linear function */ 1443 __IM uint32_t RESERVED5[2]; 1444 __IOM uint32_t T0; /*!< (@ 0x00000560) End point of 1st piece wise linear function */ 1445 __IOM uint32_t T1; /*!< (@ 0x00000564) End point of 2nd piece wise linear function */ 1446 __IOM uint32_t T2; /*!< (@ 0x00000568) End point of 3rd piece wise linear function */ 1447 __IOM uint32_t T3; /*!< (@ 0x0000056C) End point of 4th piece wise linear function */ 1448 __IOM uint32_t T4; /*!< (@ 0x00000570) End point of 5th piece wise linear function */ 1449 } NRF_TEMP_Type; /*!< Size = 1396 (0x574) */ 1450 1451 1452 1453 /* =========================================================================================================================== */ 1454 /* ================ RNG ================ */ 1455 /* =========================================================================================================================== */ 1456 1457 1458 /** 1459 * @brief Random Number Generator (RNG) 1460 */ 1461 1462 typedef struct { /*!< (@ 0x4000D000) RNG Structure */ 1463 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the random number generator */ 1464 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the random number generator */ 1465 __IM uint32_t RESERVED[62]; 1466 __IOM uint32_t EVENTS_VALRDY; /*!< (@ 0x00000100) Event being generated for every new random number 1467 written to the VALUE register */ 1468 __IM uint32_t RESERVED1[63]; 1469 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1470 __IM uint32_t RESERVED2[64]; 1471 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1472 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1473 __IM uint32_t RESERVED3[126]; 1474 __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */ 1475 __IM uint32_t VALUE; /*!< (@ 0x00000508) Output random number */ 1476 } NRF_RNG_Type; /*!< Size = 1292 (0x50c) */ 1477 1478 1479 1480 /* =========================================================================================================================== */ 1481 /* ================ ECB ================ */ 1482 /* =========================================================================================================================== */ 1483 1484 1485 /** 1486 * @brief AES ECB Mode Encryption (ECB) 1487 */ 1488 1489 typedef struct { /*!< (@ 0x4000E000) ECB Structure */ 1490 __OM uint32_t TASKS_STARTECB; /*!< (@ 0x00000000) Start ECB block encrypt */ 1491 __OM uint32_t TASKS_STOPECB; /*!< (@ 0x00000004) Abort a possible executing ECB operation */ 1492 __IM uint32_t RESERVED[62]; 1493 __IOM uint32_t EVENTS_ENDECB; /*!< (@ 0x00000100) ECB block encrypt complete */ 1494 __IOM uint32_t EVENTS_ERRORECB; /*!< (@ 0x00000104) ECB block encrypt aborted because of a STOPECB 1495 task or due to an error */ 1496 __IM uint32_t RESERVED1[127]; 1497 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1498 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1499 __IM uint32_t RESERVED2[126]; 1500 __IOM uint32_t ECBDATAPTR; /*!< (@ 0x00000504) ECB block encrypt memory pointers */ 1501 } NRF_ECB_Type; /*!< Size = 1288 (0x508) */ 1502 1503 1504 1505 /* =========================================================================================================================== */ 1506 /* ================ AAR ================ */ 1507 /* =========================================================================================================================== */ 1508 1509 1510 /** 1511 * @brief Accelerated Address Resolver (AAR) 1512 */ 1513 1514 typedef struct { /*!< (@ 0x4000F000) AAR Structure */ 1515 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start resolving addresses based on IRKs specified 1516 in the IRK data structure */ 1517 __IM uint32_t RESERVED; 1518 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop resolving addresses */ 1519 __IM uint32_t RESERVED1[61]; 1520 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000100) Address resolution procedure complete */ 1521 __IOM uint32_t EVENTS_RESOLVED; /*!< (@ 0x00000104) Address resolved */ 1522 __IOM uint32_t EVENTS_NOTRESOLVED; /*!< (@ 0x00000108) Address not resolved */ 1523 __IM uint32_t RESERVED2[126]; 1524 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1525 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1526 __IM uint32_t RESERVED3[61]; 1527 __IM uint32_t STATUS; /*!< (@ 0x00000400) Resolution status */ 1528 __IM uint32_t RESERVED4[63]; 1529 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable AAR */ 1530 __IOM uint32_t NIRK; /*!< (@ 0x00000504) Number of IRKs */ 1531 __IOM uint32_t IRKPTR; /*!< (@ 0x00000508) Pointer to IRK data structure */ 1532 __IM uint32_t RESERVED5; 1533 __IOM uint32_t ADDRPTR; /*!< (@ 0x00000510) Pointer to the resolvable address */ 1534 __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */ 1535 } NRF_AAR_Type; /*!< Size = 1304 (0x518) */ 1536 1537 1538 1539 /* =========================================================================================================================== */ 1540 /* ================ CCM ================ */ 1541 /* =========================================================================================================================== */ 1542 1543 1544 /** 1545 * @brief AES CCM Mode Encryption (CCM) 1546 */ 1547 1548 typedef struct { /*!< (@ 0x4000F000) CCM Structure */ 1549 __OM uint32_t TASKS_KSGEN; /*!< (@ 0x00000000) Start generation of key-stream. This operation 1550 will stop by itself when completed. */ 1551 __OM uint32_t TASKS_CRYPT; /*!< (@ 0x00000004) Start encryption/decryption. This operation will 1552 stop by itself when completed. */ 1553 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop encryption/decryption */ 1554 __OM uint32_t TASKS_RATEOVERRIDE; /*!< (@ 0x0000000C) Override DATARATE setting in MODE register with 1555 the contents of the RATEOVERRIDE register 1556 for any ongoing encryption/decryption */ 1557 __IM uint32_t RESERVED[60]; 1558 __IOM uint32_t EVENTS_ENDKSGEN; /*!< (@ 0x00000100) Key-stream generation complete */ 1559 __IOM uint32_t EVENTS_ENDCRYPT; /*!< (@ 0x00000104) Encrypt/decrypt complete */ 1560 __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000108) Deprecated register - CCM error event */ 1561 __IM uint32_t RESERVED1[61]; 1562 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1563 __IM uint32_t RESERVED2[64]; 1564 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1565 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1566 __IM uint32_t RESERVED3[61]; 1567 __IM uint32_t MICSTATUS; /*!< (@ 0x00000400) MIC check result */ 1568 __IM uint32_t RESERVED4[63]; 1569 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable */ 1570 __IOM uint32_t MODE; /*!< (@ 0x00000504) Operation mode */ 1571 __IOM uint32_t CNFPTR; /*!< (@ 0x00000508) Pointer to data structure holding AES key and 1572 NONCE vector */ 1573 __IOM uint32_t INPTR; /*!< (@ 0x0000050C) Input pointer */ 1574 __IOM uint32_t OUTPTR; /*!< (@ 0x00000510) Output pointer */ 1575 __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */ 1576 __IOM uint32_t MAXPACKETSIZE; /*!< (@ 0x00000518) Length of key-stream generated when MODE.LENGTH 1577 = Extended. */ 1578 __IOM uint32_t RATEOVERRIDE; /*!< (@ 0x0000051C) Data rate override setting. */ 1579 } NRF_CCM_Type; /*!< Size = 1312 (0x520) */ 1580 1581 1582 1583 /* =========================================================================================================================== */ 1584 /* ================ WDT ================ */ 1585 /* =========================================================================================================================== */ 1586 1587 1588 /** 1589 * @brief Watchdog Timer (WDT) 1590 */ 1591 1592 typedef struct { /*!< (@ 0x40010000) WDT Structure */ 1593 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the watchdog */ 1594 __IM uint32_t RESERVED[63]; 1595 __IOM uint32_t EVENTS_TIMEOUT; /*!< (@ 0x00000100) Watchdog timeout */ 1596 __IM uint32_t RESERVED1[128]; 1597 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1598 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1599 __IM uint32_t RESERVED2[61]; 1600 __IM uint32_t RUNSTATUS; /*!< (@ 0x00000400) Run status */ 1601 __IM uint32_t REQSTATUS; /*!< (@ 0x00000404) Request status */ 1602 __IM uint32_t RESERVED3[63]; 1603 __IOM uint32_t CRV; /*!< (@ 0x00000504) Counter reload value */ 1604 __IOM uint32_t RREN; /*!< (@ 0x00000508) Enable register for reload request registers */ 1605 __IOM uint32_t CONFIG; /*!< (@ 0x0000050C) Configuration register */ 1606 __IM uint32_t RESERVED4[60]; 1607 __OM uint32_t RR[8]; /*!< (@ 0x00000600) Description collection: Reload request n */ 1608 } NRF_WDT_Type; /*!< Size = 1568 (0x620) */ 1609 1610 1611 1612 /* =========================================================================================================================== */ 1613 /* ================ QDEC ================ */ 1614 /* =========================================================================================================================== */ 1615 1616 1617 /** 1618 * @brief Quadrature Decoder (QDEC) 1619 */ 1620 1621 typedef struct { /*!< (@ 0x40012000) QDEC Structure */ 1622 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the quadrature decoder */ 1623 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the quadrature decoder */ 1624 __OM uint32_t TASKS_READCLRACC; /*!< (@ 0x00000008) Read and clear ACC and ACCDBL */ 1625 __OM uint32_t TASKS_RDCLRACC; /*!< (@ 0x0000000C) Read and clear ACC */ 1626 __OM uint32_t TASKS_RDCLRDBL; /*!< (@ 0x00000010) Read and clear ACCDBL */ 1627 __IM uint32_t RESERVED[59]; 1628 __IOM uint32_t EVENTS_SAMPLERDY; /*!< (@ 0x00000100) Event being generated for every new sample value 1629 written to the SAMPLE register */ 1630 __IOM uint32_t EVENTS_REPORTRDY; /*!< (@ 0x00000104) Non-null report ready */ 1631 __IOM uint32_t EVENTS_ACCOF; /*!< (@ 0x00000108) ACC or ACCDBL register overflow */ 1632 __IOM uint32_t EVENTS_DBLRDY; /*!< (@ 0x0000010C) Double displacement(s) detected */ 1633 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000110) QDEC has been stopped */ 1634 __IM uint32_t RESERVED1[59]; 1635 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1636 __IM uint32_t RESERVED2[64]; 1637 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1638 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1639 __IM uint32_t RESERVED3[125]; 1640 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable the quadrature decoder */ 1641 __IOM uint32_t LEDPOL; /*!< (@ 0x00000504) LED output pin polarity */ 1642 __IOM uint32_t SAMPLEPER; /*!< (@ 0x00000508) Sample period */ 1643 __IM int32_t SAMPLE; /*!< (@ 0x0000050C) Motion sample value */ 1644 __IOM uint32_t REPORTPER; /*!< (@ 0x00000510) Number of samples to be taken before REPORTRDY 1645 and DBLRDY events can be generated */ 1646 __IM int32_t ACC; /*!< (@ 0x00000514) Register accumulating the valid transitions */ 1647 __IM int32_t ACCREAD; /*!< (@ 0x00000518) Snapshot of the ACC register, updated by the 1648 READCLRACC or RDCLRACC task */ 1649 __IOM QDEC_PSEL_Type PSEL; /*!< (@ 0x0000051C) Unspecified */ 1650 __IOM uint32_t DBFEN; /*!< (@ 0x00000528) Enable input debounce filters */ 1651 __IM uint32_t RESERVED4[5]; 1652 __IOM uint32_t LEDPRE; /*!< (@ 0x00000540) Time period the LED is switched ON prior to sampling */ 1653 __IM uint32_t ACCDBL; /*!< (@ 0x00000544) Register accumulating the number of detected 1654 double transitions */ 1655 __IM uint32_t ACCDBLREAD; /*!< (@ 0x00000548) Snapshot of the ACCDBL, updated by the READCLRACC 1656 or RDCLRDBL task */ 1657 } NRF_QDEC_Type; /*!< Size = 1356 (0x54c) */ 1658 1659 1660 1661 /* =========================================================================================================================== */ 1662 /* ================ COMP ================ */ 1663 /* =========================================================================================================================== */ 1664 1665 1666 /** 1667 * @brief Comparator (COMP) 1668 */ 1669 1670 typedef struct { /*!< (@ 0x40013000) COMP Structure */ 1671 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start comparator */ 1672 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop comparator */ 1673 __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000008) Sample comparator value */ 1674 __IM uint32_t RESERVED[61]; 1675 __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) COMP is ready and output is valid */ 1676 __IOM uint32_t EVENTS_DOWN; /*!< (@ 0x00000104) Downward crossing */ 1677 __IOM uint32_t EVENTS_UP; /*!< (@ 0x00000108) Upward crossing */ 1678 __IOM uint32_t EVENTS_CROSS; /*!< (@ 0x0000010C) Downward or upward crossing */ 1679 __IM uint32_t RESERVED1[60]; 1680 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1681 __IM uint32_t RESERVED2[63]; 1682 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1683 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1684 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1685 __IM uint32_t RESERVED3[61]; 1686 __IM uint32_t RESULT; /*!< (@ 0x00000400) Compare result */ 1687 __IM uint32_t RESERVED4[63]; 1688 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) COMP enable */ 1689 __IOM uint32_t PSEL; /*!< (@ 0x00000504) Pin select */ 1690 __IOM uint32_t REFSEL; /*!< (@ 0x00000508) Reference source select for single-ended mode */ 1691 __IOM uint32_t EXTREFSEL; /*!< (@ 0x0000050C) External reference select */ 1692 __IM uint32_t RESERVED5[8]; 1693 __IOM uint32_t TH; /*!< (@ 0x00000530) Threshold configuration for hysteresis unit */ 1694 __IOM uint32_t MODE; /*!< (@ 0x00000534) Mode configuration */ 1695 __IOM uint32_t HYST; /*!< (@ 0x00000538) Comparator hysteresis enable */ 1696 } NRF_COMP_Type; /*!< Size = 1340 (0x53c) */ 1697 1698 1699 1700 /* =========================================================================================================================== */ 1701 /* ================ EGU0 ================ */ 1702 /* =========================================================================================================================== */ 1703 1704 1705 /** 1706 * @brief Event Generator Unit 0 (EGU0) 1707 */ 1708 1709 typedef struct { /*!< (@ 0x40014000) EGU0 Structure */ 1710 __OM uint32_t TASKS_TRIGGER[16]; /*!< (@ 0x00000000) Description collection: Trigger n for triggering 1711 the corresponding TRIGGERED[n] event */ 1712 __IM uint32_t RESERVED[48]; 1713 __IOM uint32_t EVENTS_TRIGGERED[16]; /*!< (@ 0x00000100) Description collection: Event number n generated 1714 by triggering the corresponding TRIGGER[n] 1715 task */ 1716 __IM uint32_t RESERVED1[112]; 1717 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1718 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1719 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1720 } NRF_EGU_Type; /*!< Size = 780 (0x30c) */ 1721 1722 1723 1724 /* =========================================================================================================================== */ 1725 /* ================ SWI0 ================ */ 1726 /* =========================================================================================================================== */ 1727 1728 1729 /** 1730 * @brief Software interrupt 0 (SWI0) 1731 */ 1732 1733 typedef struct { /*!< (@ 0x40014000) SWI0 Structure */ 1734 __IM uint32_t UNUSED; /*!< (@ 0x00000000) Unused. */ 1735 } NRF_SWI_Type; /*!< Size = 4 (0x4) */ 1736 1737 1738 1739 /* =========================================================================================================================== */ 1740 /* ================ PWM0 ================ */ 1741 /* =========================================================================================================================== */ 1742 1743 1744 /** 1745 * @brief Pulse width modulation unit (PWM0) 1746 */ 1747 1748 typedef struct { /*!< (@ 0x4001C000) PWM0 Structure */ 1749 __IM uint32_t RESERVED; 1750 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at 1751 the end of current PWM period, and stops 1752 sequence playback */ 1753 __OM uint32_t TASKS_SEQSTART[2]; /*!< (@ 0x00000008) Description collection: Loads the first PWM value 1754 on all enabled channels from sequence n, 1755 and starts playing that sequence at the 1756 rate defined in SEQ[n]REFRESH and/or DECODER.MODE. 1757 Causes PWM generation to start if not running. */ 1758 __OM uint32_t TASKS_NEXTSTEP; /*!< (@ 0x00000010) Steps by one value in the current sequence on 1759 all enabled channels if DECODER.MODE=NextStep. 1760 Does not cause PWM generation to start if 1761 not running. */ 1762 __IM uint32_t RESERVED1[60]; 1763 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses 1764 are no longer generated */ 1765 __IOM uint32_t EVENTS_SEQSTARTED[2]; /*!< (@ 0x00000108) Description collection: First PWM period started 1766 on sequence n */ 1767 __IOM uint32_t EVENTS_SEQEND[2]; /*!< (@ 0x00000110) Description collection: Emitted at end of every 1768 sequence n, when last value from RAM has 1769 been applied to wave counter */ 1770 __IOM uint32_t EVENTS_PWMPERIODEND; /*!< (@ 0x00000118) Emitted at the end of each PWM period */ 1771 __IOM uint32_t EVENTS_LOOPSDONE; /*!< (@ 0x0000011C) Concatenated sequences have been played the amount 1772 of times defined in LOOP.CNT */ 1773 __IM uint32_t RESERVED2[56]; 1774 __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */ 1775 __IM uint32_t RESERVED3[63]; 1776 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1777 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1778 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1779 __IM uint32_t RESERVED4[125]; 1780 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PWM module enable register */ 1781 __IOM uint32_t MODE; /*!< (@ 0x00000504) Selects operating mode of the wave counter */ 1782 __IOM uint32_t COUNTERTOP; /*!< (@ 0x00000508) Value up to which the pulse generator counter 1783 counts */ 1784 __IOM uint32_t PRESCALER; /*!< (@ 0x0000050C) Configuration for PWM_CLK */ 1785 __IOM uint32_t DECODER; /*!< (@ 0x00000510) Configuration of the decoder */ 1786 __IOM uint32_t LOOP; /*!< (@ 0x00000514) Number of playbacks of a loop */ 1787 __IM uint32_t RESERVED5[2]; 1788 __IOM PWM_SEQ_Type SEQ[2]; /*!< (@ 0x00000520) Unspecified */ 1789 __IOM PWM_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */ 1790 } NRF_PWM_Type; /*!< Size = 1392 (0x570) */ 1791 1792 1793 1794 /* =========================================================================================================================== */ 1795 /* ================ PDM ================ */ 1796 /* =========================================================================================================================== */ 1797 1798 1799 /** 1800 * @brief Pulse Density Modulation (Digital Microphone) Interface (PDM) 1801 */ 1802 1803 typedef struct { /*!< (@ 0x4001D000) PDM Structure */ 1804 __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous PDM transfer */ 1805 __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PDM transfer */ 1806 __IM uint32_t RESERVED[62]; 1807 __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) PDM transfer has started */ 1808 __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) PDM transfer has finished */ 1809 __IOM uint32_t EVENTS_END; /*!< (@ 0x00000108) The PDM has written the last sample specified 1810 by SAMPLE.MAXCNT (or the last sample after 1811 a STOP task has been received) to Data RAM */ 1812 __IM uint32_t RESERVED1[125]; 1813 __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */ 1814 __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */ 1815 __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */ 1816 __IM uint32_t RESERVED2[125]; 1817 __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PDM module enable register */ 1818 __IOM uint32_t PDMCLKCTRL; /*!< (@ 0x00000504) PDM clock generator control */ 1819 __IOM uint32_t MODE; /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones' 1820 signals */ 1821 __IM uint32_t RESERVED3[3]; 1822 __IOM uint32_t GAINL; /*!< (@ 0x00000518) Left output gain adjustment */ 1823 __IOM uint32_t GAINR; /*!< (@ 0x0000051C) Right output gain adjustment */ 1824 __IM uint32_t RESERVED4[8]; 1825 __IOM PDM_PSEL_Type PSEL; /*!< (@ 0x00000540) Unspecified */ 1826 __IM uint32_t RESERVED5[6]; 1827 __IOM PDM_SAMPLE_Type SAMPLE; /*!< (@ 0x00000560) Unspecified */ 1828 } NRF_PDM_Type; /*!< Size = 1384 (0x568) */ 1829 1830 1831 1832 /* =========================================================================================================================== */ 1833 /* ================ NVMC ================ */ 1834 /* =========================================================================================================================== */ 1835 1836 1837 /** 1838 * @brief Non-volatile memory controller (NVMC) 1839 */ 1840 1841 typedef struct { /*!< (@ 0x4001E000) NVMC Structure */ 1842 __IM uint32_t RESERVED[256]; 1843 __IM uint32_t READY; /*!< (@ 0x00000400) Ready flag */ 1844 __IM uint32_t RESERVED1[64]; 1845 __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */ 1846 1847 union { 1848 __IOM uint32_t ERASEPAGE; /*!< (@ 0x00000508) Register for erasing a page in code area */ 1849 __IOM uint32_t ERASEPCR1; /*!< (@ 0x00000508) Deprecated register - Register for erasing a 1850 page in code area. Equivalent to ERASEPAGE. */ 1851 }; 1852 __IOM uint32_t ERASEALL; /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory */ 1853 __IOM uint32_t ERASEPCR0; /*!< (@ 0x00000510) Deprecated register - Register for erasing a 1854 page in code area. Equivalent to ERASEPAGE. */ 1855 __IOM uint32_t ERASEUICR; /*!< (@ 0x00000514) Register for erasing user information configuration 1856 registers */ 1857 __IOM uint32_t ERASEPAGEPARTIAL; /*!< (@ 0x00000518) Register for partial erase of a page in code 1858 area */ 1859 __IOM uint32_t ERASEPAGEPARTIALCFG; /*!< (@ 0x0000051C) Register for partial erase configuration */ 1860 } NRF_NVMC_Type; /*!< Size = 1312 (0x520) */ 1861 1862 1863 1864 /* =========================================================================================================================== */ 1865 /* ================ PPI ================ */ 1866 /* =========================================================================================================================== */ 1867 1868 1869 /** 1870 * @brief Programmable Peripheral Interconnect (PPI) 1871 */ 1872 1873 typedef struct { /*!< (@ 0x4001F000) PPI Structure */ 1874 __OM PPI_TASKS_CHG_Type TASKS_CHG[6]; /*!< (@ 0x00000000) Channel group tasks */ 1875 __IM uint32_t RESERVED[308]; 1876 __IOM uint32_t CHEN; /*!< (@ 0x00000500) Channel enable register */ 1877 __IOM uint32_t CHENSET; /*!< (@ 0x00000504) Channel enable set register */ 1878 __IOM uint32_t CHENCLR; /*!< (@ 0x00000508) Channel enable clear register */ 1879 __IM uint32_t RESERVED1; 1880 __IOM PPI_CH_Type CH[20]; /*!< (@ 0x00000510) PPI Channel */ 1881 __IM uint32_t RESERVED2[148]; 1882 __IOM uint32_t CHG[6]; /*!< (@ 0x00000800) Description collection: Channel group n */ 1883 __IM uint32_t RESERVED3[62]; 1884 __IOM PPI_FORK_Type FORK[32]; /*!< (@ 0x00000910) Fork */ 1885 } NRF_PPI_Type; /*!< Size = 2448 (0x990) */ 1886 1887 1888 /** @} */ /* End of group Device_Peripheral_peripherals */ 1889 1890 1891 /* =========================================================================================================================== */ 1892 /* ================ Device Specific Peripheral Address Map ================ */ 1893 /* =========================================================================================================================== */ 1894 1895 1896 /** @addtogroup Device_Peripheral_peripheralAddr 1897 * @{ 1898 */ 1899 1900 #define NRF_FICR_BASE 0x10000000UL 1901 #define NRF_UICR_BASE 0x10001000UL 1902 #define NRF_BPROT_BASE 0x40000000UL 1903 #define NRF_APPROTECT_BASE 0x40000000UL 1904 #define NRF_CLOCK_BASE 0x40000000UL 1905 #define NRF_POWER_BASE 0x40000000UL 1906 #define NRF_P0_BASE 0x50000000UL 1907 #define NRF_RADIO_BASE 0x40001000UL 1908 #define NRF_UART0_BASE 0x40002000UL 1909 #define NRF_UARTE0_BASE 0x40002000UL 1910 #define NRF_TWI0_BASE 0x40003000UL 1911 #define NRF_TWIM0_BASE 0x40003000UL 1912 #define NRF_TWIS0_BASE 0x40003000UL 1913 #define NRF_SPI0_BASE 0x40004000UL 1914 #define NRF_SPIM0_BASE 0x40004000UL 1915 #define NRF_SPIS0_BASE 0x40004000UL 1916 #define NRF_GPIOTE_BASE 0x40006000UL 1917 #define NRF_SAADC_BASE 0x40007000UL 1918 #define NRF_TIMER0_BASE 0x40008000UL 1919 #define NRF_TIMER1_BASE 0x40009000UL 1920 #define NRF_TIMER2_BASE 0x4000A000UL 1921 #define NRF_RTC0_BASE 0x4000B000UL 1922 #define NRF_TEMP_BASE 0x4000C000UL 1923 #define NRF_RNG_BASE 0x4000D000UL 1924 #define NRF_ECB_BASE 0x4000E000UL 1925 #define NRF_AAR_BASE 0x4000F000UL 1926 #define NRF_CCM_BASE 0x4000F000UL 1927 #define NRF_WDT_BASE 0x40010000UL 1928 #define NRF_RTC1_BASE 0x40011000UL 1929 #define NRF_QDEC_BASE 0x40012000UL 1930 #define NRF_COMP_BASE 0x40013000UL 1931 #define NRF_EGU0_BASE 0x40014000UL 1932 #define NRF_SWI0_BASE 0x40014000UL 1933 #define NRF_EGU1_BASE 0x40015000UL 1934 #define NRF_SWI1_BASE 0x40015000UL 1935 #define NRF_SWI2_BASE 0x40016000UL 1936 #define NRF_SWI3_BASE 0x40017000UL 1937 #define NRF_SWI4_BASE 0x40018000UL 1938 #define NRF_SWI5_BASE 0x40019000UL 1939 #define NRF_PWM0_BASE 0x4001C000UL 1940 #define NRF_PDM_BASE 0x4001D000UL 1941 #define NRF_NVMC_BASE 0x4001E000UL 1942 #define NRF_PPI_BASE 0x4001F000UL 1943 1944 /** @} */ /* End of group Device_Peripheral_peripheralAddr */ 1945 1946 1947 /* =========================================================================================================================== */ 1948 /* ================ Peripheral declaration ================ */ 1949 /* =========================================================================================================================== */ 1950 1951 1952 /** @addtogroup Device_Peripheral_declaration 1953 * @{ 1954 */ 1955 1956 #define NRF_FICR ((NRF_FICR_Type*) NRF_FICR_BASE) 1957 #define NRF_UICR ((NRF_UICR_Type*) NRF_UICR_BASE) 1958 #define NRF_BPROT ((NRF_BPROT_Type*) NRF_BPROT_BASE) 1959 #define NRF_APPROTECT ((NRF_APPROTECT_Type*) NRF_APPROTECT_BASE) 1960 #define NRF_CLOCK ((NRF_CLOCK_Type*) NRF_CLOCK_BASE) 1961 #define NRF_POWER ((NRF_POWER_Type*) NRF_POWER_BASE) 1962 #define NRF_P0 ((NRF_GPIO_Type*) NRF_P0_BASE) 1963 #define NRF_RADIO ((NRF_RADIO_Type*) NRF_RADIO_BASE) 1964 #define NRF_UART0 ((NRF_UART_Type*) NRF_UART0_BASE) 1965 #define NRF_UARTE0 ((NRF_UARTE_Type*) NRF_UARTE0_BASE) 1966 #define NRF_TWI0 ((NRF_TWI_Type*) NRF_TWI0_BASE) 1967 #define NRF_TWIM0 ((NRF_TWIM_Type*) NRF_TWIM0_BASE) 1968 #define NRF_TWIS0 ((NRF_TWIS_Type*) NRF_TWIS0_BASE) 1969 #define NRF_SPI0 ((NRF_SPI_Type*) NRF_SPI0_BASE) 1970 #define NRF_SPIM0 ((NRF_SPIM_Type*) NRF_SPIM0_BASE) 1971 #define NRF_SPIS0 ((NRF_SPIS_Type*) NRF_SPIS0_BASE) 1972 #define NRF_GPIOTE ((NRF_GPIOTE_Type*) NRF_GPIOTE_BASE) 1973 #define NRF_SAADC ((NRF_SAADC_Type*) NRF_SAADC_BASE) 1974 #define NRF_TIMER0 ((NRF_TIMER_Type*) NRF_TIMER0_BASE) 1975 #define NRF_TIMER1 ((NRF_TIMER_Type*) NRF_TIMER1_BASE) 1976 #define NRF_TIMER2 ((NRF_TIMER_Type*) NRF_TIMER2_BASE) 1977 #define NRF_RTC0 ((NRF_RTC_Type*) NRF_RTC0_BASE) 1978 #define NRF_TEMP ((NRF_TEMP_Type*) NRF_TEMP_BASE) 1979 #define NRF_RNG ((NRF_RNG_Type*) NRF_RNG_BASE) 1980 #define NRF_ECB ((NRF_ECB_Type*) NRF_ECB_BASE) 1981 #define NRF_AAR ((NRF_AAR_Type*) NRF_AAR_BASE) 1982 #define NRF_CCM ((NRF_CCM_Type*) NRF_CCM_BASE) 1983 #define NRF_WDT ((NRF_WDT_Type*) NRF_WDT_BASE) 1984 #define NRF_RTC1 ((NRF_RTC_Type*) NRF_RTC1_BASE) 1985 #define NRF_QDEC ((NRF_QDEC_Type*) NRF_QDEC_BASE) 1986 #define NRF_COMP ((NRF_COMP_Type*) NRF_COMP_BASE) 1987 #define NRF_EGU0 ((NRF_EGU_Type*) NRF_EGU0_BASE) 1988 #define NRF_SWI0 ((NRF_SWI_Type*) NRF_SWI0_BASE) 1989 #define NRF_EGU1 ((NRF_EGU_Type*) NRF_EGU1_BASE) 1990 #define NRF_SWI1 ((NRF_SWI_Type*) NRF_SWI1_BASE) 1991 #define NRF_SWI2 ((NRF_SWI_Type*) NRF_SWI2_BASE) 1992 #define NRF_SWI3 ((NRF_SWI_Type*) NRF_SWI3_BASE) 1993 #define NRF_SWI4 ((NRF_SWI_Type*) NRF_SWI4_BASE) 1994 #define NRF_SWI5 ((NRF_SWI_Type*) NRF_SWI5_BASE) 1995 #define NRF_PWM0 ((NRF_PWM_Type*) NRF_PWM0_BASE) 1996 #define NRF_PDM ((NRF_PDM_Type*) NRF_PDM_BASE) 1997 #define NRF_NVMC ((NRF_NVMC_Type*) NRF_NVMC_BASE) 1998 #define NRF_PPI ((NRF_PPI_Type*) NRF_PPI_BASE) 1999 2000 /** @} */ /* End of group Device_Peripheral_declaration */ 2001 2002 2003 /* ========================================= End of section using anonymous unions ========================================= */ 2004 #if defined (__CC_ARM) 2005 #pragma pop 2006 #elif defined (__ICCARM__) 2007 /* leave anonymous unions enabled */ 2008 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 2009 #pragma clang diagnostic pop 2010 #elif defined (__GNUC__) 2011 /* anonymous unions are enabled by default */ 2012 #elif defined (__TMS470__) 2013 /* anonymous unions are enabled by default */ 2014 #elif defined (__TASKING__) 2015 #pragma warning restore 2016 #elif defined (__CSMC__) 2017 /* anonymous unions are enabled by default */ 2018 #endif 2019 2020 2021 #ifdef __cplusplus 2022 } 2023 #endif 2024 2025 #endif /* NRF52810_H */ 2026 2027 2028 /** @} */ /* End of group nrf52810 */ 2029 2030 /** @} */ /* End of group Nordic Semiconductor */ 2031