1203 lines
		
	
	
		
			84 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			1203 lines
		
	
	
		
			84 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | 
 | ||
|  | /****************************************************************************************************//**
 | ||
|  |  * @file     nrf51.h | ||
|  |  * | ||
|  |  * @brief    CMSIS Cortex-M0 Peripheral Access Layer Header File for | ||
|  |  *           nrf51 from Nordic Semiconductor. | ||
|  |  * | ||
|  |  * @version  V522 | ||
|  |  * @date     3. October 2017 | ||
|  |  * | ||
|  |  * @note     Generated with SVDConv V2.81d  | ||
|  |  *           from CMSIS SVD File 'nrf51.svd' Version 522, | ||
|  |  * | ||
|  |  * @par      Copyright (c) 2010 - 2017, Nordic Semiconductor ASA | ||
|  |  *            | ||
|  |  *           All rights reserved. | ||
|  |  *            | ||
|  |  *           Redistribution and use in source and binary forms, with or without modification, | ||
|  |  *           are permitted provided that the following conditions are met: | ||
|  |  *            | ||
|  |  *           1. Redistributions of source code must retain the above copyright notice, this | ||
|  |  *           list of conditions and the following disclaimer. | ||
|  |  *            | ||
|  |  *           2. Redistributions in binary form, except as embedded into a Nordic | ||
|  |  *           Semiconductor ASA integrated circuit in a product or a software update for | ||
|  |  *           such product, must reproduce the above copyright notice, this list of | ||
|  |  *           conditions and the following disclaimer in the documentation and/or other | ||
|  |  *           materials provided with the distribution. | ||
|  |  *            | ||
|  |  *           3. Neither the name of Nordic Semiconductor ASA nor the names of its | ||
|  |  *           contributors may be used to endorse or promote products derived from this | ||
|  |  *           software without specific prior written permission. | ||
|  |  *            | ||
|  |  *           4. This software, with or without modification, must only be used with a | ||
|  |  *           Nordic Semiconductor ASA integrated circuit. | ||
|  |  *            | ||
|  |  *           5. Any software provided in binary form under this license must not be reverse | ||
|  |  *           engineered, decompiled, modified and/or disassembled. | ||
|  |  *            | ||
|  |  *           THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS | ||
|  |  *           OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
|  |  *           OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
|  |  *           DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE | ||
|  |  *           LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
|  |  *           CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | ||
|  |  *           GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
|  |  *           HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
|  |  *           LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||
|  |  *           OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
|  |  *            | ||
|  |  * | ||
|  |  *******************************************************************************************************/ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /** @addtogroup Nordic Semiconductor
 | ||
|  |   * @{ | ||
|  |   */ | ||
|  | 
 | ||
|  | /** @addtogroup nrf51
 | ||
|  |   * @{ | ||
|  |   */ | ||
|  | 
 | ||
|  | #ifndef NRF51_H
 | ||
|  | #define NRF51_H
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* -------------------------  Interrupt Number Definition  ------------------------ */ | ||
|  | 
 | ||
|  | typedef enum { | ||
|  | /* -------------------  Cortex-M0 Processor Exceptions Numbers  ------------------- */ | ||
|  |   Reset_IRQn                    = -15,              /*!<   1  Reset Vector, invoked on Power up and warm reset                 */ | ||
|  |   NonMaskableInt_IRQn           = -14,              /*!<   2  Non maskable Interrupt, cannot be stopped or preempted           */ | ||
|  |   HardFault_IRQn                = -13,              /*!<   3  Hard Fault, all classes of Fault                                 */ | ||
|  |   SVCall_IRQn                   =  -5,              /*!<  11  System Service Call via SVC instruction                          */ | ||
|  |   DebugMonitor_IRQn             =  -4,              /*!<  12  Debug Monitor                                                    */ | ||
|  |   PendSV_IRQn                   =  -2,              /*!<  14  Pendable request for system service                              */ | ||
|  |   SysTick_IRQn                  =  -1,              /*!<  15  System Tick Timer                                                */ | ||
|  | /* ----------------------  nrf51 Specific Interrupt Numbers  ---------------------- */ | ||
|  |   POWER_CLOCK_IRQn              =   0,              /*!<   0  POWER_CLOCK                                                      */ | ||
|  |   RADIO_IRQn                    =   1,              /*!<   1  RADIO                                                            */ | ||
|  |   UART0_IRQn                    =   2,              /*!<   2  UART0                                                            */ | ||
|  |   SPI0_TWI0_IRQn                =   3,              /*!<   3  SPI0_TWI0                                                        */ | ||
|  |   SPI1_TWI1_IRQn                =   4,              /*!<   4  SPI1_TWI1                                                        */ | ||
|  |   GPIOTE_IRQn                   =   6,              /*!<   6  GPIOTE                                                           */ | ||
|  |   ADC_IRQn                      =   7,              /*!<   7  ADC                                                              */ | ||
|  |   TIMER0_IRQn                   =   8,              /*!<   8  TIMER0                                                           */ | ||
|  |   TIMER1_IRQn                   =   9,              /*!<   9  TIMER1                                                           */ | ||
|  |   TIMER2_IRQn                   =  10,              /*!<  10  TIMER2                                                           */ | ||
|  |   RTC0_IRQn                     =  11,              /*!<  11  RTC0                                                             */ | ||
|  |   TEMP_IRQn                     =  12,              /*!<  12  TEMP                                                             */ | ||
|  |   RNG_IRQn                      =  13,              /*!<  13  RNG                                                              */ | ||
|  |   ECB_IRQn                      =  14,              /*!<  14  ECB                                                              */ | ||
|  |   CCM_AAR_IRQn                  =  15,              /*!<  15  CCM_AAR                                                          */ | ||
|  |   WDT_IRQn                      =  16,              /*!<  16  WDT                                                              */ | ||
|  |   RTC1_IRQn                     =  17,              /*!<  17  RTC1                                                             */ | ||
|  |   QDEC_IRQn                     =  18,              /*!<  18  QDEC                                                             */ | ||
|  |   LPCOMP_IRQn                   =  19,              /*!<  19  LPCOMP                                                           */ | ||
|  |   SWI0_IRQn                     =  20,              /*!<  20  SWI0                                                             */ | ||
|  |   SWI1_IRQn                     =  21,              /*!<  21  SWI1                                                             */ | ||
|  |   SWI2_IRQn                     =  22,              /*!<  22  SWI2                                                             */ | ||
|  |   SWI3_IRQn                     =  23,              /*!<  23  SWI3                                                             */ | ||
|  |   SWI4_IRQn                     =  24,              /*!<  24  SWI4                                                             */ | ||
|  |   SWI5_IRQn                     =  25               /*!<  25  SWI5                                                             */ | ||
|  | } IRQn_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /** @addtogroup Configuration_of_CMSIS
 | ||
|  |   * @{ | ||
|  |   */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================      Processor and Core Peripheral Section     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | /* ----------------Configuration of the Cortex-M0 Processor and Core Peripherals---------------- */ | ||
|  | #define __CM0_REV                 0x0301            /*!< Cortex-M0 Core Revision                                               */
 | ||
|  | #define __MPU_PRESENT                  0            /*!< MPU present or not                                                    */
 | ||
|  | #define __NVIC_PRIO_BITS               2            /*!< Number of Bits used for Priority Levels                               */
 | ||
|  | #define __Vendor_SysTickConfig         0            /*!< Set to 1 if different SysTick Config is used                          */
 | ||
|  | /** @} */ /* End of group Configuration_of_CMSIS */ | ||
|  | 
 | ||
|  | #include "core_cm0.h"                               /*!< Cortex-M0 processor and core peripherals                              */
 | ||
|  | #include "system_nrf51.h"                           /*!< nrf51 System                                                          */
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================       Device Specific Peripheral Section       ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /** @addtogroup Device_Peripheral_Registers
 | ||
|  |   * @{ | ||
|  |   */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /* -------------------  Start of section using anonymous unions  ------------------ */ | ||
|  | #if defined(__CC_ARM)
 | ||
|  |   #pragma push
 | ||
|  |   #pragma anon_unions
 | ||
|  | #elif defined(__ICCARM__)
 | ||
|  |   #pragma language=extended
 | ||
|  | #elif defined(__GNUC__)
 | ||
|  |   /* anonymous unions are enabled by default */ | ||
|  | #elif defined(__TMS470__)
 | ||
|  | /* anonymous unions are enabled by default */ | ||
|  | #elif defined(__TASKING__)
 | ||
|  |   #pragma warning 586
 | ||
|  | #else
 | ||
|  |   #warning Not supported compiler type
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |   __O  uint32_t  EN;                                /*!< Enable channel group.                                                 */ | ||
|  |   __O  uint32_t  DIS;                               /*!< Disable channel group.                                                */ | ||
|  | } PPI_TASKS_CHG_Type; | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |   __IO uint32_t  EEP;                               /*!< Channel event end-point.                                              */ | ||
|  |   __IO uint32_t  TEP;                               /*!< Channel task end-point.                                               */ | ||
|  | } PPI_CH_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      POWER                     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Power Control. (POWER) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< POWER Structure                                                       */ | ||
|  |   __I  uint32_t  RESERVED0[30]; | ||
|  |   __O  uint32_t  TASKS_CONSTLAT;                    /*!< Enable constant latency mode.                                         */ | ||
|  |   __O  uint32_t  TASKS_LOWPWR;                      /*!< Enable low power mode (variable latency).                             */ | ||
|  |   __I  uint32_t  RESERVED1[34]; | ||
|  |   __IO uint32_t  EVENTS_POFWARN;                    /*!< Power failure warning.                                                */ | ||
|  |   __I  uint32_t  RESERVED2[126]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[61]; | ||
|  |   __IO uint32_t  RESETREAS;                         /*!< Reset reason.                                                         */ | ||
|  |   __I  uint32_t  RESERVED4[9]; | ||
|  |   __I  uint32_t  RAMSTATUS;                         /*!< Ram status register.                                                  */ | ||
|  |   __I  uint32_t  RESERVED5[53]; | ||
|  |   __O  uint32_t  SYSTEMOFF;                         /*!< System off register.                                                  */ | ||
|  |   __I  uint32_t  RESERVED6[3]; | ||
|  |   __IO uint32_t  POFCON;                            /*!< Power failure configuration.                                          */ | ||
|  |   __I  uint32_t  RESERVED7[2]; | ||
|  |   __IO uint32_t  GPREGRET;                          /*!< General purpose retention register. This register is a retained
 | ||
|  |                                                          register.                                                             */ | ||
|  |   __I  uint32_t  RESERVED8; | ||
|  |   __IO uint32_t  RAMON;                             /*!< Ram on/off.                                                           */ | ||
|  |   __I  uint32_t  RESERVED9[7]; | ||
|  |   __IO uint32_t  RESET;                             /*!< Pin reset functionality configuration register. This register
 | ||
|  |                                                          is a retained register.                                               */ | ||
|  |   __I  uint32_t  RESERVED10[3]; | ||
|  |   __IO uint32_t  RAMONB;                            /*!< Ram on/off.                                                           */ | ||
|  |   __I  uint32_t  RESERVED11[8]; | ||
|  |   __IO uint32_t  DCDCEN;                            /*!< DCDC converter enable configuration register.                         */ | ||
|  |   __I  uint32_t  RESERVED12[291]; | ||
|  |   __IO uint32_t  DCDCFORCE;                         /*!< DCDC power-up force register.                                         */ | ||
|  | } NRF_POWER_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      CLOCK                     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Clock control. (CLOCK) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< CLOCK Structure                                                       */ | ||
|  |   __O  uint32_t  TASKS_HFCLKSTART;                  /*!< Start HFCLK clock source.                                             */ | ||
|  |   __O  uint32_t  TASKS_HFCLKSTOP;                   /*!< Stop HFCLK clock source.                                              */ | ||
|  |   __O  uint32_t  TASKS_LFCLKSTART;                  /*!< Start LFCLK clock source.                                             */ | ||
|  |   __O  uint32_t  TASKS_LFCLKSTOP;                   /*!< Stop LFCLK clock source.                                              */ | ||
|  |   __O  uint32_t  TASKS_CAL;                         /*!< Start calibration of LFCLK RC oscillator.                             */ | ||
|  |   __O  uint32_t  TASKS_CTSTART;                     /*!< Start calibration timer.                                              */ | ||
|  |   __O  uint32_t  TASKS_CTSTOP;                      /*!< Stop calibration timer.                                               */ | ||
|  |   __I  uint32_t  RESERVED0[57]; | ||
|  |   __IO uint32_t  EVENTS_HFCLKSTARTED;               /*!< HFCLK oscillator started.                                             */ | ||
|  |   __IO uint32_t  EVENTS_LFCLKSTARTED;               /*!< LFCLK oscillator started.                                             */ | ||
|  |   __I  uint32_t  RESERVED1; | ||
|  |   __IO uint32_t  EVENTS_DONE;                       /*!< Calibration of LFCLK RC oscillator completed.                         */ | ||
|  |   __IO uint32_t  EVENTS_CTTO;                       /*!< Calibration timer timeout.                                            */ | ||
|  |   __I  uint32_t  RESERVED2[124]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[63]; | ||
|  |   __I  uint32_t  HFCLKRUN;                          /*!< Task HFCLKSTART trigger status.                                       */ | ||
|  |   __I  uint32_t  HFCLKSTAT;                         /*!< High frequency clock status.                                          */ | ||
|  |   __I  uint32_t  RESERVED4; | ||
|  |   __I  uint32_t  LFCLKRUN;                          /*!< Task LFCLKSTART triggered status.                                     */ | ||
|  |   __I  uint32_t  LFCLKSTAT;                         /*!< Low frequency clock status.                                           */ | ||
|  |   __I  uint32_t  LFCLKSRCCOPY;                      /*!< Clock source for the LFCLK clock, set when task LKCLKSTART is
 | ||
|  |                                                          triggered.                                                            */ | ||
|  |   __I  uint32_t  RESERVED5[62]; | ||
|  |   __IO uint32_t  LFCLKSRC;                          /*!< Clock source for the LFCLK clock.                                     */ | ||
|  |   __I  uint32_t  RESERVED6[7]; | ||
|  |   __IO uint32_t  CTIV;                              /*!< Calibration timer interval.                                           */ | ||
|  |   __I  uint32_t  RESERVED7[5]; | ||
|  |   __IO uint32_t  XTALFREQ;                          /*!< Crystal frequency.                                                    */ | ||
|  | } NRF_CLOCK_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       MPU                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Memory Protection Unit. (MPU) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< MPU Structure                                                         */ | ||
|  |   __I  uint32_t  RESERVED0[330]; | ||
|  |   __IO uint32_t  PERR0;                             /*!< Configuration of peripherals in mpu regions.                          */ | ||
|  |   __IO uint32_t  RLENR0;                            /*!< Length of RAM region 0.                                               */ | ||
|  |   __I  uint32_t  RESERVED1[52]; | ||
|  |   __IO uint32_t  PROTENSET0;                        /*!< Erase and write protection bit enable set register.                   */ | ||
|  |   __IO uint32_t  PROTENSET1;                        /*!< Erase and write protection bit enable set register.                   */ | ||
|  |   __IO uint32_t  DISABLEINDEBUG;                    /*!< Disable erase and write protection mechanism in debug mode.           */ | ||
|  |   __IO uint32_t  PROTBLOCKSIZE;                     /*!< Erase and write protection block size.                                */ | ||
|  | } NRF_MPU_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      RADIO                     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief The radio. (RADIO) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< RADIO Structure                                                       */ | ||
|  |   __O  uint32_t  TASKS_TXEN;                        /*!< Enable radio in TX mode.                                              */ | ||
|  |   __O  uint32_t  TASKS_RXEN;                        /*!< Enable radio in RX mode.                                              */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start radio.                                                          */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop radio.                                                           */ | ||
|  |   __O  uint32_t  TASKS_DISABLE;                     /*!< Disable radio.                                                        */ | ||
|  |   __O  uint32_t  TASKS_RSSISTART;                   /*!< Start the RSSI and take one sample of the receive signal strength.    */ | ||
|  |   __O  uint32_t  TASKS_RSSISTOP;                    /*!< Stop the RSSI measurement.                                            */ | ||
|  |   __O  uint32_t  TASKS_BCSTART;                     /*!< Start the bit counter.                                                */ | ||
|  |   __O  uint32_t  TASKS_BCSTOP;                      /*!< Stop the bit counter.                                                 */ | ||
|  |   __I  uint32_t  RESERVED0[55]; | ||
|  |   __IO uint32_t  EVENTS_READY;                      /*!< Ready event.                                                          */ | ||
|  |   __IO uint32_t  EVENTS_ADDRESS;                    /*!< Address event.                                                        */ | ||
|  |   __IO uint32_t  EVENTS_PAYLOAD;                    /*!< Payload event.                                                        */ | ||
|  |   __IO uint32_t  EVENTS_END;                        /*!< End event.                                                            */ | ||
|  |   __IO uint32_t  EVENTS_DISABLED;                   /*!< Disable event.                                                        */ | ||
|  |   __IO uint32_t  EVENTS_DEVMATCH;                   /*!< A device address match occurred on the last received packet.          */ | ||
|  |   __IO uint32_t  EVENTS_DEVMISS;                    /*!< No device address match occurred on the last received packet.         */ | ||
|  |   __IO uint32_t  EVENTS_RSSIEND;                    /*!< Sampling of the receive signal strength complete. A new RSSI
 | ||
|  |                                                          sample is ready for readout at the RSSISAMPLE register.               */ | ||
|  |   __I  uint32_t  RESERVED1[2]; | ||
|  |   __IO uint32_t  EVENTS_BCMATCH;                    /*!< Bit counter reached bit count value specified in BCC register.        */ | ||
|  |   __I  uint32_t  RESERVED2[53]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for the radio.                                              */ | ||
|  |   __I  uint32_t  RESERVED3[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED4[61]; | ||
|  |   __I  uint32_t  CRCSTATUS;                         /*!< CRC status of received packet.                                        */ | ||
|  |   __I  uint32_t  RESERVED5; | ||
|  |   __I  uint32_t  RXMATCH;                           /*!< Received address.                                                     */ | ||
|  |   __I  uint32_t  RXCRC;                             /*!< Received CRC.                                                         */ | ||
|  |   __I  uint32_t  DAI;                               /*!< Device address match index.                                           */ | ||
|  |   __I  uint32_t  RESERVED6[60]; | ||
|  |   __IO uint32_t  PACKETPTR;                         /*!< Packet pointer. Decision point: START task.                           */ | ||
|  |   __IO uint32_t  FREQUENCY;                         /*!< Frequency.                                                            */ | ||
|  |   __IO uint32_t  TXPOWER;                           /*!< Output power.                                                         */ | ||
|  |   __IO uint32_t  MODE;                              /*!< Data rate and modulation.                                             */ | ||
|  |   __IO uint32_t  PCNF0;                             /*!< Packet configuration 0.                                               */ | ||
|  |   __IO uint32_t  PCNF1;                             /*!< Packet configuration 1.                                               */ | ||
|  |   __IO uint32_t  BASE0;                             /*!< Radio base address 0. Decision point: START task.                     */ | ||
|  |   __IO uint32_t  BASE1;                             /*!< Radio base address 1. Decision point: START task.                     */ | ||
|  |   __IO uint32_t  PREFIX0;                           /*!< Prefixes bytes for logical addresses 0 to 3.                          */ | ||
|  |   __IO uint32_t  PREFIX1;                           /*!< Prefixes bytes for logical addresses 4 to 7.                          */ | ||
|  |   __IO uint32_t  TXADDRESS;                         /*!< Transmit address select.                                              */ | ||
|  |   __IO uint32_t  RXADDRESSES;                       /*!< Receive address select.                                               */ | ||
|  |   __IO uint32_t  CRCCNF;                            /*!< CRC configuration.                                                    */ | ||
|  |   __IO uint32_t  CRCPOLY;                           /*!< CRC polynomial.                                                       */ | ||
|  |   __IO uint32_t  CRCINIT;                           /*!< CRC initial value.                                                    */ | ||
|  |   __IO uint32_t  TEST;                              /*!< Test features enable register.                                        */ | ||
|  |   __IO uint32_t  TIFS;                              /*!< Inter Frame Spacing in microseconds.                                  */ | ||
|  |   __I  uint32_t  RSSISAMPLE;                        /*!< RSSI sample.                                                          */ | ||
|  |   __I  uint32_t  RESERVED7; | ||
|  |   __I  uint32_t  STATE;                             /*!< Current radio state.                                                  */ | ||
|  |   __IO uint32_t  DATAWHITEIV;                       /*!< Data whitening initial value.                                         */ | ||
|  |   __I  uint32_t  RESERVED8[2]; | ||
|  |   __IO uint32_t  BCC;                               /*!< Bit counter compare.                                                  */ | ||
|  |   __I  uint32_t  RESERVED9[39]; | ||
|  |   __IO uint32_t  DAB[8];                            /*!< Device address base segment.                                          */ | ||
|  |   __IO uint32_t  DAP[8];                            /*!< Device address prefix.                                                */ | ||
|  |   __IO uint32_t  DACNF;                             /*!< Device address match configuration.                                   */ | ||
|  |   __I  uint32_t  RESERVED10[56]; | ||
|  |   __IO uint32_t  OVERRIDE0;                         /*!< Trim value override register 0.                                       */ | ||
|  |   __IO uint32_t  OVERRIDE1;                         /*!< Trim value override register 1.                                       */ | ||
|  |   __IO uint32_t  OVERRIDE2;                         /*!< Trim value override register 2.                                       */ | ||
|  |   __IO uint32_t  OVERRIDE3;                         /*!< Trim value override register 3.                                       */ | ||
|  |   __IO uint32_t  OVERRIDE4;                         /*!< Trim value override register 4.                                       */ | ||
|  |   __I  uint32_t  RESERVED11[561]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_RADIO_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      UART                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Universal Asynchronous Receiver/Transmitter. (UART) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< UART Structure                                                        */ | ||
|  |   __O  uint32_t  TASKS_STARTRX;                     /*!< Start UART receiver.                                                  */ | ||
|  |   __O  uint32_t  TASKS_STOPRX;                      /*!< Stop UART receiver.                                                   */ | ||
|  |   __O  uint32_t  TASKS_STARTTX;                     /*!< Start UART transmitter.                                               */ | ||
|  |   __O  uint32_t  TASKS_STOPTX;                      /*!< Stop UART transmitter.                                                */ | ||
|  |   __I  uint32_t  RESERVED0[3]; | ||
|  |   __O  uint32_t  TASKS_SUSPEND;                     /*!< Suspend UART.                                                         */ | ||
|  |   __I  uint32_t  RESERVED1[56]; | ||
|  |   __IO uint32_t  EVENTS_CTS;                        /*!< CTS activated.                                                        */ | ||
|  |   __IO uint32_t  EVENTS_NCTS;                       /*!< CTS deactivated.                                                      */ | ||
|  |   __IO uint32_t  EVENTS_RXDRDY;                     /*!< Data received in RXD.                                                 */ | ||
|  |   __I  uint32_t  RESERVED2[4]; | ||
|  |   __IO uint32_t  EVENTS_TXDRDY;                     /*!< Data sent from TXD.                                                   */ | ||
|  |   __I  uint32_t  RESERVED3; | ||
|  |   __IO uint32_t  EVENTS_ERROR;                      /*!< Error detected.                                                       */ | ||
|  |   __I  uint32_t  RESERVED4[7]; | ||
|  |   __IO uint32_t  EVENTS_RXTO;                       /*!< Receiver timeout.                                                     */ | ||
|  |   __I  uint32_t  RESERVED5[46]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for UART.                                                   */ | ||
|  |   __I  uint32_t  RESERVED6[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED7[93]; | ||
|  |   __IO uint32_t  ERRORSRC;                          /*!< Error source. Write error field to 1 to clear error.                  */ | ||
|  |   __I  uint32_t  RESERVED8[31]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable UART and acquire IOs.                                          */ | ||
|  |   __I  uint32_t  RESERVED9; | ||
|  |   __IO uint32_t  PSELRTS;                           /*!< Pin select for RTS.                                                   */ | ||
|  |   __IO uint32_t  PSELTXD;                           /*!< Pin select for TXD.                                                   */ | ||
|  |   __IO uint32_t  PSELCTS;                           /*!< Pin select for CTS.                                                   */ | ||
|  |   __IO uint32_t  PSELRXD;                           /*!< Pin select for RXD.                                                   */ | ||
|  |   __I  uint32_t  RXD;                               /*!< RXD register. On read action the buffer pointer is displaced.
 | ||
|  |                                                          Once read the character is consumed. If read when no character | ||
|  |                                                           available, the UART will stop working.                               */ | ||
|  |   __O  uint32_t  TXD;                               /*!< TXD register.                                                         */ | ||
|  |   __I  uint32_t  RESERVED10; | ||
|  |   __IO uint32_t  BAUDRATE;                          /*!< UART Baudrate.                                                        */ | ||
|  |   __I  uint32_t  RESERVED11[17]; | ||
|  |   __IO uint32_t  CONFIG;                            /*!< Configuration of parity and hardware flow control register.           */ | ||
|  |   __I  uint32_t  RESERVED12[675]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_UART_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       SPI                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief SPI master 0. (SPI) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< SPI Structure                                                         */ | ||
|  |   __I  uint32_t  RESERVED0[66]; | ||
|  |   __IO uint32_t  EVENTS_READY;                      /*!< TXD byte sent and RXD byte received.                                  */ | ||
|  |   __I  uint32_t  RESERVED1[126]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED2[125]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable SPI.                                                           */ | ||
|  |   __I  uint32_t  RESERVED3; | ||
|  |   __IO uint32_t  PSELSCK;                           /*!< Pin select for SCK.                                                   */ | ||
|  |   __IO uint32_t  PSELMOSI;                          /*!< Pin select for MOSI.                                                  */ | ||
|  |   __IO uint32_t  PSELMISO;                          /*!< Pin select for MISO.                                                  */ | ||
|  |   __I  uint32_t  RESERVED4; | ||
|  |   __I  uint32_t  RXD;                               /*!< RX data.                                                              */ | ||
|  |   __IO uint32_t  TXD;                               /*!< TX data.                                                              */ | ||
|  |   __I  uint32_t  RESERVED5; | ||
|  |   __IO uint32_t  FREQUENCY;                         /*!< SPI frequency                                                         */ | ||
|  |   __I  uint32_t  RESERVED6[11]; | ||
|  |   __IO uint32_t  CONFIG;                            /*!< Configuration register.                                               */ | ||
|  |   __I  uint32_t  RESERVED7[681]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_SPI_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       TWI                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Two-wire interface master 0. (TWI) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< TWI Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_STARTRX;                     /*!< Start 2-Wire master receive sequence.                                 */ | ||
|  |   __I  uint32_t  RESERVED0; | ||
|  |   __O  uint32_t  TASKS_STARTTX;                     /*!< Start 2-Wire master transmit sequence.                                */ | ||
|  |   __I  uint32_t  RESERVED1[2]; | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop 2-Wire transaction.                                              */ | ||
|  |   __I  uint32_t  RESERVED2; | ||
|  |   __O  uint32_t  TASKS_SUSPEND;                     /*!< Suspend 2-Wire transaction.                                           */ | ||
|  |   __O  uint32_t  TASKS_RESUME;                      /*!< Resume 2-Wire transaction.                                            */ | ||
|  |   __I  uint32_t  RESERVED3[56]; | ||
|  |   __IO uint32_t  EVENTS_STOPPED;                    /*!< Two-wire stopped.                                                     */ | ||
|  |   __IO uint32_t  EVENTS_RXDREADY;                   /*!< Two-wire ready to deliver new RXD byte received.                      */ | ||
|  |   __I  uint32_t  RESERVED4[4]; | ||
|  |   __IO uint32_t  EVENTS_TXDSENT;                    /*!< Two-wire finished sending last TXD byte.                              */ | ||
|  |   __I  uint32_t  RESERVED5; | ||
|  |   __IO uint32_t  EVENTS_ERROR;                      /*!< Two-wire error detected.                                              */ | ||
|  |   __I  uint32_t  RESERVED6[4]; | ||
|  |   __IO uint32_t  EVENTS_BB;                         /*!< Two-wire byte boundary.                                               */ | ||
|  |   __I  uint32_t  RESERVED7[3]; | ||
|  |   __IO uint32_t  EVENTS_SUSPENDED;                  /*!< Two-wire suspended.                                                   */ | ||
|  |   __I  uint32_t  RESERVED8[45]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for TWI.                                                    */ | ||
|  |   __I  uint32_t  RESERVED9[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED10[110]; | ||
|  |   __IO uint32_t  ERRORSRC;                          /*!< Two-wire error source. Write error field to 1 to clear error.         */ | ||
|  |   __I  uint32_t  RESERVED11[14]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable two-wire master.                                               */ | ||
|  |   __I  uint32_t  RESERVED12; | ||
|  |   __IO uint32_t  PSELSCL;                           /*!< Pin select for SCL.                                                   */ | ||
|  |   __IO uint32_t  PSELSDA;                           /*!< Pin select for SDA.                                                   */ | ||
|  |   __I  uint32_t  RESERVED13[2]; | ||
|  |   __I  uint32_t  RXD;                               /*!< RX data register.                                                     */ | ||
|  |   __IO uint32_t  TXD;                               /*!< TX data register.                                                     */ | ||
|  |   __I  uint32_t  RESERVED14; | ||
|  |   __IO uint32_t  FREQUENCY;                         /*!< Two-wire frequency.                                                   */ | ||
|  |   __I  uint32_t  RESERVED15[24]; | ||
|  |   __IO uint32_t  ADDRESS;                           /*!< Address used in the two-wire transfer.                                */ | ||
|  |   __I  uint32_t  RESERVED16[668]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_TWI_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      SPIS                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief SPI slave 1. (SPIS) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< SPIS Structure                                                        */ | ||
|  |   __I  uint32_t  RESERVED0[9]; | ||
|  |   __O  uint32_t  TASKS_ACQUIRE;                     /*!< Acquire SPI semaphore.                                                */ | ||
|  |   __O  uint32_t  TASKS_RELEASE;                     /*!< Release SPI semaphore.                                                */ | ||
|  |   __I  uint32_t  RESERVED1[54]; | ||
|  |   __IO uint32_t  EVENTS_END;                        /*!< Granted transaction completed.                                        */ | ||
|  |   __I  uint32_t  RESERVED2[2]; | ||
|  |   __IO uint32_t  EVENTS_ENDRX;                      /*!< End of RXD buffer reached                                             */ | ||
|  |   __I  uint32_t  RESERVED3[5]; | ||
|  |   __IO uint32_t  EVENTS_ACQUIRED;                   /*!< Semaphore acquired.                                                   */ | ||
|  |   __I  uint32_t  RESERVED4[53]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for SPIS.                                                   */ | ||
|  |   __I  uint32_t  RESERVED5[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED6[61]; | ||
|  |   __I  uint32_t  SEMSTAT;                           /*!< Semaphore status.                                                     */ | ||
|  |   __I  uint32_t  RESERVED7[15]; | ||
|  |   __IO uint32_t  STATUS;                            /*!< Status from last transaction.                                         */ | ||
|  |   __I  uint32_t  RESERVED8[47]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable SPIS.                                                          */ | ||
|  |   __I  uint32_t  RESERVED9; | ||
|  |   __IO uint32_t  PSELSCK;                           /*!< Pin select for SCK.                                                   */ | ||
|  |   __IO uint32_t  PSELMISO;                          /*!< Pin select for MISO.                                                  */ | ||
|  |   __IO uint32_t  PSELMOSI;                          /*!< Pin select for MOSI.                                                  */ | ||
|  |   __IO uint32_t  PSELCSN;                           /*!< Pin select for CSN.                                                   */ | ||
|  |   __I  uint32_t  RESERVED10[7]; | ||
|  |   __IO uint32_t  RXDPTR;                            /*!< RX data pointer.                                                      */ | ||
|  |   __IO uint32_t  MAXRX;                             /*!< Maximum number of bytes in the receive buffer.                        */ | ||
|  |   __I  uint32_t  AMOUNTRX;                          /*!< Number of bytes received in last granted transaction.                 */ | ||
|  |   __I  uint32_t  RESERVED11; | ||
|  |   __IO uint32_t  TXDPTR;                            /*!< TX data pointer.                                                      */ | ||
|  |   __IO uint32_t  MAXTX;                             /*!< Maximum number of bytes in the transmit buffer.                       */ | ||
|  |   __I  uint32_t  AMOUNTTX;                          /*!< Number of bytes transmitted in last granted transaction.              */ | ||
|  |   __I  uint32_t  RESERVED12; | ||
|  |   __IO uint32_t  CONFIG;                            /*!< Configuration register.                                               */ | ||
|  |   __I  uint32_t  RESERVED13; | ||
|  |   __IO uint32_t  DEF;                               /*!< Default character.                                                    */ | ||
|  |   __I  uint32_t  RESERVED14[24]; | ||
|  |   __IO uint32_t  ORC;                               /*!< Over-read character.                                                  */ | ||
|  |   __I  uint32_t  RESERVED15[654]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_SPIS_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                     GPIOTE                     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief GPIO tasks and events. (GPIOTE) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< GPIOTE Structure                                                      */ | ||
|  |   __O  uint32_t  TASKS_OUT[4];                      /*!< Tasks asssociated with GPIOTE channels.                               */ | ||
|  |   __I  uint32_t  RESERVED0[60]; | ||
|  |   __IO uint32_t  EVENTS_IN[4];                      /*!< Tasks asssociated with GPIOTE channels.                               */ | ||
|  |   __I  uint32_t  RESERVED1[27]; | ||
|  |   __IO uint32_t  EVENTS_PORT;                       /*!< Event generated from multiple pins.                                   */ | ||
|  |   __I  uint32_t  RESERVED2[97]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[129]; | ||
|  |   __IO uint32_t  CONFIG[4];                         /*!< Channel configuration registers.                                      */ | ||
|  |   __I  uint32_t  RESERVED4[695]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_GPIOTE_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       ADC                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Analog to digital converter. (ADC) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< ADC Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start an ADC conversion.                                              */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop ADC.                                                             */ | ||
|  |   __I  uint32_t  RESERVED0[62]; | ||
|  |   __IO uint32_t  EVENTS_END;                        /*!< ADC conversion complete.                                              */ | ||
|  |   __I  uint32_t  RESERVED1[128]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED2[61]; | ||
|  |   __I  uint32_t  BUSY;                              /*!< ADC busy register.                                                    */ | ||
|  |   __I  uint32_t  RESERVED3[63]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< ADC enable.                                                           */ | ||
|  |   __IO uint32_t  CONFIG;                            /*!< ADC configuration register.                                           */ | ||
|  |   __I  uint32_t  RESULT;                            /*!< Result of ADC conversion.                                             */ | ||
|  |   __I  uint32_t  RESERVED4[700]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_ADC_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      TIMER                     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Timer 0. (TIMER) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< TIMER Structure                                                       */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start Timer.                                                          */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop Timer.                                                           */ | ||
|  |   __O  uint32_t  TASKS_COUNT;                       /*!< Increment Timer (In counter mode).                                    */ | ||
|  |   __O  uint32_t  TASKS_CLEAR;                       /*!< Clear timer.                                                          */ | ||
|  |   __O  uint32_t  TASKS_SHUTDOWN;                    /*!< Shutdown timer.                                                       */ | ||
|  |   __I  uint32_t  RESERVED0[11]; | ||
|  |   __O  uint32_t  TASKS_CAPTURE[4];                  /*!< Capture Timer value to CC[n] registers.                               */ | ||
|  |   __I  uint32_t  RESERVED1[60]; | ||
|  |   __IO uint32_t  EVENTS_COMPARE[4];                 /*!< Compare event on CC[n] match.                                         */ | ||
|  |   __I  uint32_t  RESERVED2[44]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for Timer.                                                  */ | ||
|  |   __I  uint32_t  RESERVED3[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED4[126]; | ||
|  |   __IO uint32_t  MODE;                              /*!< Timer Mode selection.                                                 */ | ||
|  |   __IO uint32_t  BITMODE;                           /*!< Sets timer behaviour.                                                 */ | ||
|  |   __I  uint32_t  RESERVED5; | ||
|  |   __IO uint32_t  PRESCALER;                         /*!< 4-bit prescaler to source clock frequency (max value 9). Source
 | ||
|  |                                                          clock frequency is divided by 2^SCALE.                                */ | ||
|  |   __I  uint32_t  RESERVED6[11]; | ||
|  |   __IO uint32_t  CC[4];                             /*!< Capture/compare registers.                                            */ | ||
|  |   __I  uint32_t  RESERVED7[683]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_TIMER_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       RTC                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Real time counter 0. (RTC) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< RTC Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start RTC Counter.                                                    */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop RTC Counter.                                                     */ | ||
|  |   __O  uint32_t  TASKS_CLEAR;                       /*!< Clear RTC Counter.                                                    */ | ||
|  |   __O  uint32_t  TASKS_TRIGOVRFLW;                  /*!< Set COUNTER to 0xFFFFFFF0.                                            */ | ||
|  |   __I  uint32_t  RESERVED0[60]; | ||
|  |   __IO uint32_t  EVENTS_TICK;                       /*!< Event on COUNTER increment.                                           */ | ||
|  |   __IO uint32_t  EVENTS_OVRFLW;                     /*!< Event on COUNTER overflow.                                            */ | ||
|  |   __I  uint32_t  RESERVED1[14]; | ||
|  |   __IO uint32_t  EVENTS_COMPARE[4];                 /*!< Compare event on CC[n] match.                                         */ | ||
|  |   __I  uint32_t  RESERVED2[109]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[13]; | ||
|  |   __IO uint32_t  EVTEN;                             /*!< Configures event enable routing to PPI for each RTC event.            */ | ||
|  |   __IO uint32_t  EVTENSET;                          /*!< Enable events routing to PPI. The reading of this register gives
 | ||
|  |                                                          the value of EVTEN.                                                   */ | ||
|  |   __IO uint32_t  EVTENCLR;                          /*!< Disable events routing to PPI. The reading of this register
 | ||
|  |                                                          gives the value of EVTEN.                                             */ | ||
|  |   __I  uint32_t  RESERVED4[110]; | ||
|  |   __I  uint32_t  COUNTER;                           /*!< Current COUNTER value.                                                */ | ||
|  |   __IO uint32_t  PRESCALER;                         /*!< 12-bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).
 | ||
|  |                                                          Must be written when RTC is STOPed.                                   */ | ||
|  |   __I  uint32_t  RESERVED5[13]; | ||
|  |   __IO uint32_t  CC[4];                             /*!< Capture/compare registers.                                            */ | ||
|  |   __I  uint32_t  RESERVED6[683]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_RTC_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      TEMP                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Temperature Sensor. (TEMP) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< TEMP Structure                                                        */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start temperature measurement.                                        */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop temperature measurement.                                         */ | ||
|  |   __I  uint32_t  RESERVED0[62]; | ||
|  |   __IO uint32_t  EVENTS_DATARDY;                    /*!< Temperature measurement complete, data ready event.                   */ | ||
|  |   __I  uint32_t  RESERVED1[128]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED2[127]; | ||
|  |   __I  int32_t   TEMP;                              /*!< Die temperature in degC, 2's complement format, 0.25 degC pecision.   */ | ||
|  |   __I  uint32_t  RESERVED3[700]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_TEMP_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       RNG                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Random Number Generator. (RNG) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< RNG Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start the random number generator.                                    */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop the random number generator.                                     */ | ||
|  |   __I  uint32_t  RESERVED0[62]; | ||
|  |   __IO uint32_t  EVENTS_VALRDY;                     /*!< New random number generated and written to VALUE register.            */ | ||
|  |   __I  uint32_t  RESERVED1[63]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for the RNG.                                                */ | ||
|  |   __I  uint32_t  RESERVED2[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register                                         */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register                                       */ | ||
|  |   __I  uint32_t  RESERVED3[126]; | ||
|  |   __IO uint32_t  CONFIG;                            /*!< Configuration register.                                               */ | ||
|  |   __I  uint32_t  VALUE;                             /*!< RNG random number.                                                    */ | ||
|  |   __I  uint32_t  RESERVED4[700]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_RNG_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       ECB                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief AES ECB Mode Encryption. (ECB) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< ECB Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_STARTECB;                    /*!< Start ECB block encrypt. If a crypto operation is running, this
 | ||
|  |                                                          will not initiate a new encryption and the ERRORECB event will | ||
|  |                                                           be triggered.                                                        */ | ||
|  |   __O  uint32_t  TASKS_STOPECB;                     /*!< Stop current ECB encryption. If a crypto operation is running,
 | ||
|  |                                                          this will will trigger the ERRORECB event.                            */ | ||
|  |   __I  uint32_t  RESERVED0[62]; | ||
|  |   __IO uint32_t  EVENTS_ENDECB;                     /*!< ECB block encrypt complete.                                           */ | ||
|  |   __IO uint32_t  EVENTS_ERRORECB;                   /*!< ECB block encrypt aborted due to a STOPECB task or due to an
 | ||
|  |                                                          error.                                                                */ | ||
|  |   __I  uint32_t  RESERVED1[127]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED2[126]; | ||
|  |   __IO uint32_t  ECBDATAPTR;                        /*!< ECB block encrypt memory pointer.                                     */ | ||
|  |   __I  uint32_t  RESERVED3[701]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_ECB_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       AAR                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Accelerated Address Resolver. (AAR) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< AAR Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start resolving addresses based on IRKs specified in the IRK
 | ||
|  |                                                          data structure.                                                       */ | ||
|  |   __I  uint32_t  RESERVED0; | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop resolving addresses.                                             */ | ||
|  |   __I  uint32_t  RESERVED1[61]; | ||
|  |   __IO uint32_t  EVENTS_END;                        /*!< Address resolution procedure completed.                               */ | ||
|  |   __IO uint32_t  EVENTS_RESOLVED;                   /*!< Address resolved.                                                     */ | ||
|  |   __IO uint32_t  EVENTS_NOTRESOLVED;                /*!< Address not resolved.                                                 */ | ||
|  |   __I  uint32_t  RESERVED2[126]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[61]; | ||
|  |   __I  uint32_t  STATUS;                            /*!< Resolution status.                                                    */ | ||
|  |   __I  uint32_t  RESERVED4[63]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable AAR.                                                           */ | ||
|  |   __IO uint32_t  NIRK;                              /*!< Number of Identity root Keys in the IRK data structure.               */ | ||
|  |   __IO uint32_t  IRKPTR;                            /*!< Pointer to the IRK data structure.                                    */ | ||
|  |   __I  uint32_t  RESERVED5; | ||
|  |   __IO uint32_t  ADDRPTR;                           /*!< Pointer to the resolvable address (6 bytes).                          */ | ||
|  |   __IO uint32_t  SCRATCHPTR;                        /*!< Pointer to a scratch data area used for temporary storage during
 | ||
|  |                                                          resolution. A minimum of 3 bytes must be reserved.                    */ | ||
|  |   __I  uint32_t  RESERVED6[697]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_AAR_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       CCM                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief AES CCM Mode Encryption. (CCM) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< CCM Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_KSGEN;                       /*!< Start generation of key-stream. This operation will stop by
 | ||
|  |                                                          itself when completed.                                                */ | ||
|  |   __O  uint32_t  TASKS_CRYPT;                       /*!< Start encrypt/decrypt. This operation will stop by itself when
 | ||
|  |                                                          completed.                                                            */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop encrypt/decrypt.                                                 */ | ||
|  |   __I  uint32_t  RESERVED0[61]; | ||
|  |   __IO uint32_t  EVENTS_ENDKSGEN;                   /*!< Keystream generation completed.                                       */ | ||
|  |   __IO uint32_t  EVENTS_ENDCRYPT;                   /*!< Encrypt/decrypt completed.                                            */ | ||
|  |   __IO uint32_t  EVENTS_ERROR;                      /*!< Error happened.                                                       */ | ||
|  |   __I  uint32_t  RESERVED1[61]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for the CCM.                                                */ | ||
|  |   __I  uint32_t  RESERVED2[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[61]; | ||
|  |   __I  uint32_t  MICSTATUS;                         /*!< CCM RX MIC check result.                                              */ | ||
|  |   __I  uint32_t  RESERVED4[63]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< CCM enable.                                                           */ | ||
|  |   __IO uint32_t  MODE;                              /*!< Operation mode.                                                       */ | ||
|  |   __IO uint32_t  CNFPTR;                            /*!< Pointer to a data structure holding AES key and NONCE vector.         */ | ||
|  |   __IO uint32_t  INPTR;                             /*!< Pointer to the input packet.                                          */ | ||
|  |   __IO uint32_t  OUTPTR;                            /*!< Pointer to the output packet.                                         */ | ||
|  |   __IO uint32_t  SCRATCHPTR;                        /*!< Pointer to a scratch data area used for temporary storage during
 | ||
|  |                                                          resolution. A minimum of 43 bytes must be reserved.                   */ | ||
|  |   __I  uint32_t  RESERVED5[697]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_CCM_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       WDT                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Watchdog Timer. (WDT) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< WDT Structure                                                         */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start the watchdog.                                                   */ | ||
|  |   __I  uint32_t  RESERVED0[63]; | ||
|  |   __IO uint32_t  EVENTS_TIMEOUT;                    /*!< Watchdog timeout.                                                     */ | ||
|  |   __I  uint32_t  RESERVED1[128]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED2[61]; | ||
|  |   __I  uint32_t  RUNSTATUS;                         /*!< Watchdog running status.                                              */ | ||
|  |   __I  uint32_t  REQSTATUS;                         /*!< Request status.                                                       */ | ||
|  |   __I  uint32_t  RESERVED3[63]; | ||
|  |   __IO uint32_t  CRV;                               /*!< Counter reload value in number of 32kiHz clock cycles.                */ | ||
|  |   __IO uint32_t  RREN;                              /*!< Reload request enable.                                                */ | ||
|  |   __IO uint32_t  CONFIG;                            /*!< Configuration register.                                               */ | ||
|  |   __I  uint32_t  RESERVED4[60]; | ||
|  |   __O  uint32_t  RR[8];                             /*!< Reload requests registers.                                            */ | ||
|  |   __I  uint32_t  RESERVED5[631]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_WDT_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      QDEC                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Rotary decoder. (QDEC) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< QDEC Structure                                                        */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start the quadrature decoder.                                         */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop the quadrature decoder.                                          */ | ||
|  |   __O  uint32_t  TASKS_READCLRACC;                  /*!< Transfers the content from ACC registers to ACCREAD registers,
 | ||
|  |                                                          and clears the ACC registers.                                         */ | ||
|  |   __I  uint32_t  RESERVED0[61]; | ||
|  |   __IO uint32_t  EVENTS_SAMPLERDY;                  /*!< A new sample is written to the sample register.                       */ | ||
|  |   __IO uint32_t  EVENTS_REPORTRDY;                  /*!< REPORTPER number of samples accumulated in ACC register, and
 | ||
|  |                                                          ACC register different than zero.                                     */ | ||
|  |   __IO uint32_t  EVENTS_ACCOF;                      /*!< ACC or ACCDBL register overflow.                                      */ | ||
|  |   __I  uint32_t  RESERVED1[61]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for the QDEC.                                               */ | ||
|  |   __I  uint32_t  RESERVED2[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[125]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable the QDEC.                                                      */ | ||
|  |   __IO uint32_t  LEDPOL;                            /*!< LED output pin polarity.                                              */ | ||
|  |   __IO uint32_t  SAMPLEPER;                         /*!< Sample period.                                                        */ | ||
|  |   __I  int32_t   SAMPLE;                            /*!< Motion sample value.                                                  */ | ||
|  |   __IO uint32_t  REPORTPER;                         /*!< Number of samples to generate an EVENT_REPORTRDY.                     */ | ||
|  |   __I  int32_t   ACC;                               /*!< Accumulated valid transitions register.                               */ | ||
|  |   __I  int32_t   ACCREAD;                           /*!< Snapshot of ACC register. Value generated by the TASKS_READCLEACC
 | ||
|  |                                                          task.                                                                 */ | ||
|  |   __IO uint32_t  PSELLED;                           /*!< Pin select for LED output.                                            */ | ||
|  |   __IO uint32_t  PSELA;                             /*!< Pin select for phase A input.                                         */ | ||
|  |   __IO uint32_t  PSELB;                             /*!< Pin select for phase B input.                                         */ | ||
|  |   __IO uint32_t  DBFEN;                             /*!< Enable debouncer input filters.                                       */ | ||
|  |   __I  uint32_t  RESERVED4[5]; | ||
|  |   __IO uint32_t  LEDPRE;                            /*!< Time LED is switched ON before the sample.                            */ | ||
|  |   __I  uint32_t  ACCDBL;                            /*!< Accumulated double (error) transitions register.                      */ | ||
|  |   __I  uint32_t  ACCDBLREAD;                        /*!< Snapshot of ACCDBL register. Value generated by the TASKS_READCLEACC
 | ||
|  |                                                          task.                                                                 */ | ||
|  |   __I  uint32_t  RESERVED5[684]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_QDEC_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                     LPCOMP                     ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Low power comparator. (LPCOMP) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< LPCOMP Structure                                                      */ | ||
|  |   __O  uint32_t  TASKS_START;                       /*!< Start the comparator.                                                 */ | ||
|  |   __O  uint32_t  TASKS_STOP;                        /*!< Stop the comparator.                                                  */ | ||
|  |   __O  uint32_t  TASKS_SAMPLE;                      /*!< Sample comparator value.                                              */ | ||
|  |   __I  uint32_t  RESERVED0[61]; | ||
|  |   __IO uint32_t  EVENTS_READY;                      /*!< LPCOMP is ready and output is valid.                                  */ | ||
|  |   __IO uint32_t  EVENTS_DOWN;                       /*!< Input voltage crossed the threshold going down.                       */ | ||
|  |   __IO uint32_t  EVENTS_UP;                         /*!< Input voltage crossed the threshold going up.                         */ | ||
|  |   __IO uint32_t  EVENTS_CROSS;                      /*!< Input voltage crossed the threshold in any direction.                 */ | ||
|  |   __I  uint32_t  RESERVED1[60]; | ||
|  |   __IO uint32_t  SHORTS;                            /*!< Shortcuts for the LPCOMP.                                             */ | ||
|  |   __I  uint32_t  RESERVED2[64]; | ||
|  |   __IO uint32_t  INTENSET;                          /*!< Interrupt enable set register.                                        */ | ||
|  |   __IO uint32_t  INTENCLR;                          /*!< Interrupt enable clear register.                                      */ | ||
|  |   __I  uint32_t  RESERVED3[61]; | ||
|  |   __I  uint32_t  RESULT;                            /*!< Result of last compare.                                               */ | ||
|  |   __I  uint32_t  RESERVED4[63]; | ||
|  |   __IO uint32_t  ENABLE;                            /*!< Enable the LPCOMP.                                                    */ | ||
|  |   __IO uint32_t  PSEL;                              /*!< Input pin select.                                                     */ | ||
|  |   __IO uint32_t  REFSEL;                            /*!< Reference select.                                                     */ | ||
|  |   __IO uint32_t  EXTREFSEL;                         /*!< External reference select.                                            */ | ||
|  |   __I  uint32_t  RESERVED5[4]; | ||
|  |   __IO uint32_t  ANADETECT;                         /*!< Analog detect configuration.                                          */ | ||
|  |   __I  uint32_t  RESERVED6[694]; | ||
|  |   __IO uint32_t  POWER;                             /*!< Peripheral power control.                                             */ | ||
|  | } NRF_LPCOMP_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       SWI                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief SW Interrupts. (SWI) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< SWI Structure                                                         */ | ||
|  |   __I  uint32_t  UNUSED;                            /*!< Unused.                                                               */ | ||
|  | } NRF_SWI_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      NVMC                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Non Volatile Memory Controller. (NVMC) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< NVMC Structure                                                        */ | ||
|  |   __I  uint32_t  RESERVED0[256]; | ||
|  |   __I  uint32_t  READY;                             /*!< Ready flag.                                                           */ | ||
|  |   __I  uint32_t  RESERVED1[64]; | ||
|  |   __IO uint32_t  CONFIG;                            /*!< Configuration register.                                               */ | ||
|  |    | ||
|  |   union { | ||
|  |     __IO uint32_t  ERASEPCR1;                       /*!< Register for erasing a non-protected non-volatile memory page.        */ | ||
|  |     __IO uint32_t  ERASEPAGE;                       /*!< Register for erasing a non-protected non-volatile memory page.        */ | ||
|  |   }; | ||
|  |   __IO uint32_t  ERASEALL;                          /*!< Register for erasing all non-volatile user memory.                    */ | ||
|  |   __IO uint32_t  ERASEPCR0;                         /*!< Register for erasing a protected non-volatile memory page.            */ | ||
|  |   __IO uint32_t  ERASEUICR;                         /*!< Register for start erasing User Information Congfiguration Registers. */ | ||
|  | } NRF_NVMC_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                       PPI                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief PPI controller. (PPI) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< PPI Structure                                                         */ | ||
|  |   PPI_TASKS_CHG_Type TASKS_CHG[4];                  /*!< Channel group tasks.                                                  */ | ||
|  |   __I  uint32_t  RESERVED0[312]; | ||
|  |   __IO uint32_t  CHEN;                              /*!< Channel enable.                                                       */ | ||
|  |   __IO uint32_t  CHENSET;                           /*!< Channel enable set.                                                   */ | ||
|  |   __IO uint32_t  CHENCLR;                           /*!< Channel enable clear.                                                 */ | ||
|  |   __I  uint32_t  RESERVED1; | ||
|  |   PPI_CH_Type CH[16];                               /*!< PPI Channel.                                                          */ | ||
|  |   __I  uint32_t  RESERVED2[156]; | ||
|  |   __IO uint32_t  CHG[4];                            /*!< Channel group configuration.                                          */ | ||
|  | } NRF_PPI_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      FICR                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief Factory Information Configuration. (FICR) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< FICR Structure                                                        */ | ||
|  |   __I  uint32_t  RESERVED0[4]; | ||
|  |   __I  uint32_t  CODEPAGESIZE;                      /*!< Code memory page size in bytes.                                       */ | ||
|  |   __I  uint32_t  CODESIZE;                          /*!< Code memory size in pages.                                            */ | ||
|  |   __I  uint32_t  RESERVED1[4]; | ||
|  |   __I  uint32_t  CLENR0;                            /*!< Length of code region 0 in bytes.                                     */ | ||
|  |   __I  uint32_t  PPFC;                              /*!< Pre-programmed factory code present.                                  */ | ||
|  |   __I  uint32_t  RESERVED2; | ||
|  |   __I  uint32_t  NUMRAMBLOCK;                       /*!< Number of individualy controllable RAM blocks.                        */ | ||
|  |    | ||
|  |   union { | ||
|  |     __I  uint32_t  SIZERAMBLOCK[4];                 /*!< Deprecated array of size of RAM block in bytes. This name is
 | ||
|  |                                                          kept for backward compatinility purposes. Use SIZERAMBLOCKS | ||
|  |                                                           instead.                                                             */ | ||
|  |     __I  uint32_t  SIZERAMBLOCKS;                   /*!< Size of RAM blocks in bytes.                                          */ | ||
|  |   }; | ||
|  |   __I  uint32_t  RESERVED3[5]; | ||
|  |   __I  uint32_t  CONFIGID;                          /*!< Configuration identifier.                                             */ | ||
|  |   __I  uint32_t  DEVICEID[2];                       /*!< Device identifier.                                                    */ | ||
|  |   __I  uint32_t  RESERVED4[6]; | ||
|  |   __I  uint32_t  ER[4];                             /*!< Encryption root.                                                      */ | ||
|  |   __I  uint32_t  IR[4];                             /*!< Identity root.                                                        */ | ||
|  |   __I  uint32_t  DEVICEADDRTYPE;                    /*!< Device address type.                                                  */ | ||
|  |   __I  uint32_t  DEVICEADDR[2];                     /*!< Device address.                                                       */ | ||
|  |   __I  uint32_t  OVERRIDEEN;                        /*!< Radio calibration override enable.                                    */ | ||
|  |   __I  uint32_t  NRF_1MBIT[5];                      /*!< Override values for the OVERRIDEn registers in RADIO for NRF_1Mbit
 | ||
|  |                                                          mode.                                                                 */ | ||
|  |   __I  uint32_t  RESERVED5[10]; | ||
|  |   __I  uint32_t  BLE_1MBIT[5];                      /*!< Override values for the OVERRIDEn registers in RADIO for BLE_1Mbit
 | ||
|  |                                                          mode.                                                                 */ | ||
|  | } NRF_FICR_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      UICR                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief User Information Configuration. (UICR) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< UICR Structure                                                        */ | ||
|  |   __IO uint32_t  CLENR0;                            /*!< Length of code region 0.                                              */ | ||
|  |   __IO uint32_t  RBPCONF;                           /*!< Readback protection configuration.                                    */ | ||
|  |   __IO uint32_t  XTALFREQ;                          /*!< Reset value for CLOCK XTALFREQ register.                              */ | ||
|  |   __I  uint32_t  RESERVED0; | ||
|  |   __I  uint32_t  FWID;                              /*!< Firmware ID.                                                          */ | ||
|  |    | ||
|  |   union { | ||
|  |     __IO uint32_t  NRFFW[15];                       /*!< Reserved for Nordic firmware design.                                  */ | ||
|  |     __IO uint32_t  BOOTLOADERADDR;                  /*!< Bootloader start address.                                             */ | ||
|  |   }; | ||
|  |   __IO uint32_t  NRFHW[12];                         /*!< Reserved for Nordic hardware design.                                  */ | ||
|  |   __IO uint32_t  CUSTOMER[32];                      /*!< Reserved for customer.                                                */ | ||
|  | } NRF_UICR_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================                      GPIO                      ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief General purpose input and output. (GPIO) | ||
|  |   */ | ||
|  | 
 | ||
|  | typedef struct {                                    /*!< GPIO Structure                                                        */ | ||
|  |   __I  uint32_t  RESERVED0[321]; | ||
|  |   __IO uint32_t  OUT;                               /*!< Write GPIO port.                                                      */ | ||
|  |   __IO uint32_t  OUTSET;                            /*!< Set individual bits in GPIO port.                                     */ | ||
|  |   __IO uint32_t  OUTCLR;                            /*!< Clear individual bits in GPIO port.                                   */ | ||
|  |   __I  uint32_t  IN;                                /*!< Read GPIO port.                                                       */ | ||
|  |   __IO uint32_t  DIR;                               /*!< Direction of GPIO pins.                                               */ | ||
|  |   __IO uint32_t  DIRSET;                            /*!< DIR set register.                                                     */ | ||
|  |   __IO uint32_t  DIRCLR;                            /*!< DIR clear register.                                                   */ | ||
|  |   __I  uint32_t  RESERVED1[120]; | ||
|  |   __IO uint32_t  PIN_CNF[32];                       /*!< Configuration of GPIO pins.                                           */ | ||
|  | } NRF_GPIO_Type; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* --------------------  End of section using anonymous unions  ------------------- */ | ||
|  | #if defined(__CC_ARM)
 | ||
|  |   #pragma pop
 | ||
|  | #elif defined(__ICCARM__)
 | ||
|  |   /* leave anonymous unions enabled */ | ||
|  | #elif defined(__GNUC__)
 | ||
|  |   /* anonymous unions are enabled by default */ | ||
|  | #elif defined(__TMS470__)
 | ||
|  |   /* anonymous unions are enabled by default */ | ||
|  | #elif defined(__TASKING__)
 | ||
|  |   #pragma warning restore
 | ||
|  | #else
 | ||
|  |   #warning Not supported compiler type
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================              Peripheral memory map             ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | #define NRF_POWER_BASE                  0x40000000UL
 | ||
|  | #define NRF_CLOCK_BASE                  0x40000000UL
 | ||
|  | #define NRF_MPU_BASE                    0x40000000UL
 | ||
|  | #define NRF_RADIO_BASE                  0x40001000UL
 | ||
|  | #define NRF_UART0_BASE                  0x40002000UL
 | ||
|  | #define NRF_SPI0_BASE                   0x40003000UL
 | ||
|  | #define NRF_TWI0_BASE                   0x40003000UL
 | ||
|  | #define NRF_SPI1_BASE                   0x40004000UL
 | ||
|  | #define NRF_TWI1_BASE                   0x40004000UL
 | ||
|  | #define NRF_SPIS1_BASE                  0x40004000UL
 | ||
|  | #define NRF_GPIOTE_BASE                 0x40006000UL
 | ||
|  | #define NRF_ADC_BASE                    0x40007000UL
 | ||
|  | #define NRF_TIMER0_BASE                 0x40008000UL
 | ||
|  | #define NRF_TIMER1_BASE                 0x40009000UL
 | ||
|  | #define NRF_TIMER2_BASE                 0x4000A000UL
 | ||
|  | #define NRF_RTC0_BASE                   0x4000B000UL
 | ||
|  | #define NRF_TEMP_BASE                   0x4000C000UL
 | ||
|  | #define NRF_RNG_BASE                    0x4000D000UL
 | ||
|  | #define NRF_ECB_BASE                    0x4000E000UL
 | ||
|  | #define NRF_AAR_BASE                    0x4000F000UL
 | ||
|  | #define NRF_CCM_BASE                    0x4000F000UL
 | ||
|  | #define NRF_WDT_BASE                    0x40010000UL
 | ||
|  | #define NRF_RTC1_BASE                   0x40011000UL
 | ||
|  | #define NRF_QDEC_BASE                   0x40012000UL
 | ||
|  | #define NRF_LPCOMP_BASE                 0x40013000UL
 | ||
|  | #define NRF_SWI_BASE                    0x40014000UL
 | ||
|  | #define NRF_NVMC_BASE                   0x4001E000UL
 | ||
|  | #define NRF_PPI_BASE                    0x4001F000UL
 | ||
|  | #define NRF_FICR_BASE                   0x10000000UL
 | ||
|  | #define NRF_UICR_BASE                   0x10001000UL
 | ||
|  | #define NRF_GPIO_BASE                   0x50000000UL
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* ================================================================================ */ | ||
|  | /* ================             Peripheral declaration             ================ */ | ||
|  | /* ================================================================================ */ | ||
|  | 
 | ||
|  | #define NRF_POWER                       ((NRF_POWER_Type          *) NRF_POWER_BASE)
 | ||
|  | #define NRF_CLOCK                       ((NRF_CLOCK_Type          *) NRF_CLOCK_BASE)
 | ||
|  | #define NRF_MPU                         ((NRF_MPU_Type            *) NRF_MPU_BASE)
 | ||
|  | #define NRF_RADIO                       ((NRF_RADIO_Type          *) NRF_RADIO_BASE)
 | ||
|  | #define NRF_UART0                       ((NRF_UART_Type           *) NRF_UART0_BASE)
 | ||
|  | #define NRF_SPI0                        ((NRF_SPI_Type            *) NRF_SPI0_BASE)
 | ||
|  | #define NRF_TWI0                        ((NRF_TWI_Type            *) NRF_TWI0_BASE)
 | ||
|  | #define NRF_SPI1                        ((NRF_SPI_Type            *) NRF_SPI1_BASE)
 | ||
|  | #define NRF_TWI1                        ((NRF_TWI_Type            *) NRF_TWI1_BASE)
 | ||
|  | #define NRF_SPIS1                       ((NRF_SPIS_Type           *) NRF_SPIS1_BASE)
 | ||
|  | #define NRF_GPIOTE                      ((NRF_GPIOTE_Type         *) NRF_GPIOTE_BASE)
 | ||
|  | #define NRF_ADC                         ((NRF_ADC_Type            *) NRF_ADC_BASE)
 | ||
|  | #define NRF_TIMER0                      ((NRF_TIMER_Type          *) NRF_TIMER0_BASE)
 | ||
|  | #define NRF_TIMER1                      ((NRF_TIMER_Type          *) NRF_TIMER1_BASE)
 | ||
|  | #define NRF_TIMER2                      ((NRF_TIMER_Type          *) NRF_TIMER2_BASE)
 | ||
|  | #define NRF_RTC0                        ((NRF_RTC_Type            *) NRF_RTC0_BASE)
 | ||
|  | #define NRF_TEMP                        ((NRF_TEMP_Type           *) NRF_TEMP_BASE)
 | ||
|  | #define NRF_RNG                         ((NRF_RNG_Type            *) NRF_RNG_BASE)
 | ||
|  | #define NRF_ECB                         ((NRF_ECB_Type            *) NRF_ECB_BASE)
 | ||
|  | #define NRF_AAR                         ((NRF_AAR_Type            *) NRF_AAR_BASE)
 | ||
|  | #define NRF_CCM                         ((NRF_CCM_Type            *) NRF_CCM_BASE)
 | ||
|  | #define NRF_WDT                         ((NRF_WDT_Type            *) NRF_WDT_BASE)
 | ||
|  | #define NRF_RTC1                        ((NRF_RTC_Type            *) NRF_RTC1_BASE)
 | ||
|  | #define NRF_QDEC                        ((NRF_QDEC_Type           *) NRF_QDEC_BASE)
 | ||
|  | #define NRF_LPCOMP                      ((NRF_LPCOMP_Type         *) NRF_LPCOMP_BASE)
 | ||
|  | #define NRF_SWI                         ((NRF_SWI_Type            *) NRF_SWI_BASE)
 | ||
|  | #define NRF_NVMC                        ((NRF_NVMC_Type           *) NRF_NVMC_BASE)
 | ||
|  | #define NRF_PPI                         ((NRF_PPI_Type            *) NRF_PPI_BASE)
 | ||
|  | #define NRF_FICR                        ((NRF_FICR_Type           *) NRF_FICR_BASE)
 | ||
|  | #define NRF_UICR                        ((NRF_UICR_Type           *) NRF_UICR_BASE)
 | ||
|  | #define NRF_GPIO                        ((NRF_GPIO_Type           *) NRF_GPIO_BASE)
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /** @} */ /* End of group Device_Peripheral_Registers */ | ||
|  | /** @} */ /* End of group nrf51 */ | ||
|  | /** @} */ /* End of group Nordic Semiconductor */ | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif  /* nrf51_H */
 | ||
|  | 
 |