/****************************************************************************** * @file nano1xx.h * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File for * NANO1xx devices * @version 1.0.1 * @date 04, September, 2012 * * @note * Copyright (C) 2012-2014 Nuvoton Technology Corp. All rights reserved. ******************************************************************************/ #ifndef __NANO1xx_H #define __NANO1xx_H #ifdef __cplusplus extern "C" { #endif /** @addtogroup NANO1xx_Definitions NANO1xx Definitions This file defines all structures and symbols for NANO1xx: - registers and bitfields - peripheral base address - peripheral ID - Peripheral definitions @{ */ /******************************************************************************/ /* Processor and Core Peripherals */ /******************************************************************************/ /** @addtogroup NANO1xx_CMSIS Device CMSIS Definitions Configuration of the Cortex-M0 Processor and Core Peripherals @{ */ /* * ========================================================================== * ---------- Interrupt Number Definition ----------------------------------- * ========================================================================== */ typedef enum IRQn { /****** Cortex-M0 Processor Exceptions Numbers **************************************************/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ HardFault_IRQn = -13, /*!< 3 Cortex-M0 Hard Fault Interrupt */ SVCall_IRQn = -5, /*!< 11 Cortex-M0 SV Call Interrupt */ PendSV_IRQn = -2, /*!< 14 Cortex-M0 Pend SV Interrupt */ SysTick_IRQn = -1, /*!< 15 Cortex-M0 System Tick Interrupt */ /****** NANO1xx Specific Interrupt Numbers ******************************************************/ BOD_IRQn = 0, /*!< Brownout low voltage detected interrupt */ WDT_IRQn = 1, /*!< Watch Dog Timer interrupt */ EINT0_IRQn = 2, /*!< External signal interrupt from PB.14 pin */ EINT1_IRQn = 3, /*!< External signal interrupt from PB.15 pin */ GPABC_IRQn = 4, /*!< External signal interrupt from PA[15:0]/PB[13:0]/PC[15:0] */ GPDEF_IRQn = 5, /*!< External interrupt from PD[15:0]/PE[15:0]/PF[15:0] */ PWM0_IRQn = 6, /*!< PWM 0 interrupt */ PWM1_IRQn = 7, /*!< PWM 1 interrupt */ TMR0_IRQn = 8, /*!< Timer 0 interrupt */ TMR1_IRQn = 9, /*!< Timer 1 interrupt */ TMR2_IRQn = 10, /*!< Timer 2 interrupt */ TMR3_IRQn = 11, /*!< Timer 3 interrupt */ UART0_IRQn = 12, /*!< UART0 interrupt */ UART1_IRQn = 13, /*!< UART1 interrupt */ SPI0_IRQn = 14, /*!< SPI0 interrupt */ SPI1_IRQn = 15, /*!< SPI1 interrupt */ SPI2_IRQn = 16, /*!< SPI2 interrupt */ HIRC_IRQn = 17, /*!< HIRC interrupt */ I2C0_IRQn = 18, /*!< I2C0 interrupt */ I2C1_IRQn = 19, /*!< I2C1 interrupt */ SC2_IRQn = 20, /*!< Smart Card 2 interrupt */ SC0_IRQn = 21, /*!< Smart Card 0 interrupt */ SC1_IRQn = 22, /*!< Smart Card 1 interrupt */ USBD_IRQn = 23, /*!< USB FS Device interrupt */ TK_IRQn = 24, /*!< Touch key interrupt */ LCD_IRQn = 25, /*!< LCD interrupt */ PDMA_IRQn = 26, /*!< PDMA interrupt */ I2S_IRQn = 27, /*!< I2S interrupt */ PDWU_IRQn = 28, /*!< Power Down Wake up interrupt */ ADC_IRQn = 29, /*!< ADC interrupt */ DAC_IRQn = 30, /*!< DAC interrupt */ RTC_IRQn = 31 /*!< Real time clock interrupt */ } IRQn_Type; /* * ========================================================================== * ----------- Processor and Core Peripheral Section ------------------------ * ========================================================================== */ /* Configuration of the Cortex-M# Processor and Core Peripherals */ #define __CM0_REV 0x0201 /*!< Core Revision r2p1 */ #define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ #define __MPU_PRESENT 0 /*!< MPU present or not */ #define __FPU_PRESENT 0 /*!< FPU present or not */ /*@}*/ /* end of group NANO1xx_CMSIS */ #include "core_cm0.h" /* Cortex-M0 processor and core peripherals */ #include "system_nano1xx.h" /* NANO1xx System include file */ #include /******************************************************************************/ /* Device Specific Peripheral registers structures */ /******************************************************************************/ /** @addtogroup NANO1xx_Peripherals NANO1xx Peripherals NANO1xx Device Specific Peripheral registers structures @{ */ #if defined ( __CC_ARM ) #pragma anon_unions #endif /*------------- Global Control Register (GCR) -----------------------------*/ /** @addtogroup NANO1xx_GCR NANO1xx Global Control Register (GCR) @{ */ typedef struct { __I uint32_t PDID; /*!< Offset: 0x0000 Part Device Identification Number Register */ __IO uint32_t RST_SRC; /*!< Offset: 0x0004 System Reset Source Register */ __IO uint32_t IPRST_CTL1; /*!< Offset: 0x0008 IP Reset Control Register 1 */ __IO uint32_t IPRST_CTL2; /*!< Offset: 0x000C IP Reset Control Register 2 */ uint32_t RESERVED0[4]; __IO uint32_t TEMCTL; /*!< Offset: 0x0020 Temperature Sensor Control Register */ uint32_t RESERVED1[3]; __IO uint32_t PA_L_MFP; /*!< Offset: 0x0030 Port A low byte multiple function control Register */ __IO uint32_t PA_H_MFP; /*!< Offset: 0x0034 Port A high byte multiple function control Register */ __IO uint32_t PB_L_MFP; /*!< Offset: 0x0038 Port B low byte multiple function control Register */ __IO uint32_t PB_H_MFP; /*!< Offset: 0x003C Port B high byte multiple function control Register */ __IO uint32_t PC_L_MFP; /*!< Offset: 0x0040 Port C low byte multiple function control Register */ __IO uint32_t PC_H_MFP; /*!< Offset: 0x0044 Port C high byte multiple function control Register */ __IO uint32_t PD_L_MFP; /*!< Offset: 0x0048 Port D low byte multiple function control Register */ __IO uint32_t PD_H_MFP; /*!< Offset: 0x004C Port D high byte multiple function control Register */ __IO uint32_t PE_L_MFP; /*!< Offset: 0x0050 Port E low byte multiple function control Register */ __IO uint32_t PE_H_MFP; /*!< Offset: 0x0054 Port E high byte multiple function control Register */ __IO uint32_t PF_L_MFP; /*!< Offset: 0x0058 Port F low byte multiple function control Register */ uint32_t RESERVED3[1]; __IO uint32_t PORCTL; /*!< Offset: 0x0060 Power-On-Reset Controller Register */ __IO uint32_t BODCTL; /*!< Offset: 0x0064 Brown-out Detector Control Register */ __IO uint32_t BODSTS; /*!< Offset: 0x0068 Brown-out Detector Status Register */ __IO uint32_t VREFCTL; /*!< Offset: 0x006C Voltage reference Control Register */ uint32_t RESERVED4[4]; __IO uint32_t IRCTRIMCTL; /*!< Offset: 0x0080 HIRC Trim Control Register */ __IO uint32_t IRCTRIMIER; /*!< Offset: 0x0084 HIRC Trim Interrupt Enable Register */ __IO uint32_t IRCTRIMISR; /*!< Offset: 0x0088 HIRC Trim Interrupt Status Register */ uint32_t RESERVED5[29]; __IO uint32_t RegLockAddr; /*!< Offset: 0x0100 Register Lock Key address */ uint32_t RESERVED6[3]; __IO uint32_t RCADJ; /*!< Offset: 0x0110 RC Adjustment control register */ } GCR_TypeDef; /*@}*/ /* end of group NANO1xx_GCR */ /*------------- Clock Control Register (CLK) -----------------------------*/ /** @addtogroup NANO1xx_CLK NANO1xx Clock Control Register (CLK) @{ */ typedef struct { __IO uint32_t PWRCTL; /*!< Offset: 0x0000 System Power Down Control Register */ __IO uint32_t AHBCLK; /*!< Offset: 0x0004 AHB Devices Clock Enable Control Register */ __IO uint32_t APBCLK; /*!< Offset: 0x0008 APB Devices Clock Enable Control Register */ __IO uint32_t CLKSTATUS; /*!< Offset: 0x000C Clock Status Monitor Register */ __IO uint32_t CLKSEL0; /*!< Offset: 0x0010 Clock Source Select Control Register 0 */ __IO uint32_t CLKSEL1; /*!< Offset: 0x0014 Clock Source Select Control Register 1 */ __IO uint32_t CLKSEL2; /*!< Offset: 0x0018 Clock Source Select Control Register 2 */ __IO uint32_t CLKDIV0; /*!< Offset: 0x001C Clock Divider Number Register 0 */ __IO uint32_t CLKDIV1; /*!< Offset: 0x0020 Clock Divider Number Register 1 */ __IO uint32_t PLLCTL; /*!< Offset: 0x0024 PLL Control Register */ __IO uint32_t FRQDIV; /*!< Offset: 0x0028 Frequency Divider Control Register */ __IO uint32_t TESTCLK; /*!< Offset: 0x002C Test Clock Source Select Control Register */ __IO uint32_t WK_INTSTS; /*!< Offset: 0x0030 Wake-up interrupt status Register */ } CLK_TypeDef; /*@}*/ /* end of group NANO1xx_CLK */ /*------------- General Purpose I/O (GPIO) -----------------------------*/ /** @addtogroup NANO1xx_GPIO NANO1xx General Purpose I/O (GPIO) @{ */ typedef struct { __IO uint32_t PMD; /*!< Offset: 0x0000 GPIO Port Bit Mode Control */ __IO uint32_t OFFD; /*!< Offset: 0x0004 GPIO Port Bit Off Digital Enable */ __IO uint32_t DOUT; /*!< Offset: 0x0008 GPIO Port Data Output */ __IO uint32_t DMASK; /*!< Offset: 0x000C GPIO Port Data Output Write Mask */ __I uint32_t PIN; /*!< Offset: 0x0010 GPIO Port Pin Value */ __IO uint32_t DBEN; /*!< Offset: 0x0014 GPIO Port De-bounce Enable */ __IO uint32_t IMD; /*!< Offset: 0x0018 GPIO Port Interrupt Mode Select */ __IO uint32_t IER; /*!< Offset: 0x001C GPIO Port Interrupt Enable */ __IO uint32_t ISR; /*!< Offset: 0x0020 GPIO Port Interrupt Source Flag */ __IO uint32_t PUEN; /*!< Offset: 0x0024 GPIO Port Pull-Up Enable */ } GPIO_TypeDef; /* * GPIO De-bounce Cycle Control */ typedef struct { __IO uint32_t CON; /*!< Offset: 0x0000 GPIO De-bounce Cycle Control Register */ } GPIODBNCE_TypeDef; /* * General Purpose I/O bit mode (GPIO bit mode) */ typedef struct { __IO uint32_t GP_BIT0; /*!< Offset: 0x0000 GPIO Port Bit 0 Data Register */ __IO uint32_t GP_BIT1; /*!< Offset: 0x0004 GPIO Port Bit 1 Data Register */ __IO uint32_t GP_BIT2; /*!< Offset: 0x0008 GPIO Port Bit 2 Data Register */ __IO uint32_t GP_BIT3; /*!< Offset: 0x000C GPIO Port Bit 3 Data Register */ __IO uint32_t GP_BIT4; /*!< Offset: 0x0010 GPIO Port Bit 4 Data Register */ __IO uint32_t GP_BIT5; /*!< Offset: 0x0014 GPIO Port Bit 5 Data Register */ __IO uint32_t GP_BIT6; /*!< Offset: 0x0018 GPIO Port Bit 6 Data Register */ __IO uint32_t GP_BIT7; /*!< Offset: 0x001C GPIO Port Bit 7 Data Register */ __IO uint32_t GP_BIT8; /*!< Offset: 0x0020 GPIO Port Bit 8 Data Register */ __IO uint32_t GP_BIT9; /*!< Offset: 0x0024 GPIO Port Bit 9 Data Register */ __IO uint32_t GP_BIT10; /*!< Offset: 0x0028 GPIO Port Bit 10 Data Register */ __IO uint32_t GP_BIT11; /*!< Offset: 0x002C GPIO Port Bit 11 Data Register */ __IO uint32_t GP_BIT12; /*!< Offset: 0x0030 GPIO Port Bit 12 Data Register */ __IO uint32_t GP_BIT13; /*!< Offset: 0x0034 GPIO Port Bit 13 Data Register */ __IO uint32_t GP_BIT14; /*!< Offset: 0x0038 GPIO Port Bit 14 Data Register */ __IO uint32_t GP_BIT15; /*!< Offset: 0x003C GPIO Port Bit 15 Data Register */ } GPIOBIT_TypeDef; /*@}*/ /* end of group NANO1xx_GPIO */ /*------------- VDMA Control Register (VDMA) -----------------------------*/ /** @addtogroup NANO1xx_VDMA NANO1xx VDMA Control Register (VDMA) @{ */ typedef struct { __IO uint32_t CSR; /*!< Offset: 0x0000 VDMA Control Register */ __IO uint32_t SAR; /*!< Offset: 0x0004 VDMA Source Address Register */ __IO uint32_t DAR; /*!< Offset: 0x0008 VDMA Destination Address Register */ __IO uint32_t BCR; /*!< Offset: 0x000C VDMA Transfer Byte Count Register */ uint32_t RESERVED0; /*!< Offset: 0x0010 Reserved */ __I uint32_t CSAR; /*!< Offset: 0x0014 VDMA Current Source Address Register */ __I uint32_t CDAR; /*!< Offset: 0x0018 VDMA Current Destination Address Register */ __I uint32_t CBCR; /*!< Offset: 0x001C VDMA Current Transfer Byte Count Register */ __IO uint32_t IER; /*!< Offset: 0x0020 VDMA Interrupt Enable Register */ __IO uint32_t ISR; /*!< Offset: 0x0024 VDMA Interrupt Status Register */ uint32_t RESERVED1; /*!< Offset: 0x0028 Reserved */ __IO uint32_t SASOCR; /*!< Offset: 0x002C VDMA Source Address Stride Offset Register */ __IO uint32_t DASOCR; /*!< Offset: 0x0030 VDMA Destination Address Stride Offset Register*/ uint32_t RESERVED2[19]; /*!< Offset: 0x0034~0x007C Reserved */ __I uint32_t BUF0; /*!< Offset: 0x0080 VDMA Internal Buffer FIFO 0 */ __I uint32_t BUF1; /*!< Offset: 0x0084 VDMA Internal Buffer FIFO 1 */ } VDMA_TypeDef; /*@}*/ /* end of group NANO1xx_VDMA */ /*------------- PDMA Control Register (PDMA) -----------------------------*/ /** @addtogroup NANO1xx_PDMA NANO1xx PDMA Control Register (PDMA) @{ */ typedef struct { __IO uint32_t CSR; /*!< Offset: 0x0000 PDMA Control Register */ __IO uint32_t SAR; /*!< Offset: 0x0004 PDMA Source Address Register */ __IO uint32_t DAR; /*!< Offset: 0x0008 PDMA Destination Address Register */ __IO uint32_t BCR; /*!< Offset: 0x000C PDMA Transfer Byte Count Register */ uint32_t RESERVED0; /*!< Offset: 0x0010 Reserved */ __I uint32_t CSAR; /*!< Offset: 0x0014 PDMA Current Source Address Register */ __I uint32_t CDAR; /*!< Offset: 0x0018 PDMA Current Destination Address Register */ __I uint32_t CBCR; /*!< Offset: 0x001C PDMA Current Transfer Byte Count Register */ __IO uint32_t IER; /*!< Offset: 0x0020 PDMA Interrupt Enable Register */ __IO uint32_t ISR; /*!< Offset: 0x0024 PDMA Interrupt Status Register */ __IO uint32_t TCR; /*!< Offset: 0x0028 PDMA Timer Counter Setting Register */ uint32_t RESERVED1[21]; /*!< Offset: 0x002C~0x7C Reserved */ __I uint32_t BUF0; /*!< Offset: 0x0080 PDMA Internal Buffer FIFO */ } PDMA_TypeDef; /* * PDMA Global Control Registers */ typedef struct { __IO uint32_t CSR; /*!< Offset: 0x0000 DMA Global Control Register */ __IO uint32_t PDSSR0; /*!< Offset: 0x0004 DMA Service Selection Control Register 0 */ __IO uint32_t PDSSR1; /*!< Offset: 0x0008 DMA Service Selection Control Register 1 */ __I uint32_t ISR; /*!< Offset: 0x000C DMA Global Interrupt Register */ } PDMAGCR_TypeDef; /* * PDMA CRC Control Registers */ typedef struct { __IO uint32_t CTL; __IO uint32_t DMASAR; uint32_t RESERVED0; __IO uint32_t DMABCR; uint32_t RESERVED1; __I uint32_t DMACSAR; uint32_t RESERVED2; __I uint32_t DMACBCR; __IO uint32_t DMAIER; __IO uint32_t DMAISR; uint32_t RESERVED3[22]; __IO uint32_t WDATA; __IO uint32_t SEED; __I uint32_t CHECKSUM; } PDMACRC_TypeDef; /*@}*/ /* end of group NANO1xx_PDMA */ /*------------- Flash Memory Controller (FMC) -----------------------------*/ /** @addtogroup NANO1xx_FMC NANO1xx Flash Memory Controller Register (FMC) @{ */ typedef struct { __IO uint32_t ISPCON; /*!< Offset: 0x0000 ISP Control Register */ __IO uint32_t ISPADR; /*!< Offset: 0x0004 ISP Address Register */ __IO uint32_t ISPDAT; /*!< Offset: 0x0008 ISP Data Register */ __IO uint32_t ISPCMD; /*!< Offset: 0x000C ISP Command Register */ __IO uint32_t ISPTRG; /*!< Offset: 0x0010 ISP Trigger Register */ __I uint32_t DFBADR; /*!< Offset: 0x0014 Data Flash Start Address (CONFIG1) */ __I uint32_t RESERVED0[10]; __IO uint32_t ISPSTA; /*!< Offset: 0x0040 ISP Status Register */ } FMC_TypeDef; /*@}*/ /* end of group NANO1xx_FMC */ /*------------- External Bus Interface Control Register (EBI) -----------------------------*/ /** @addtogroup NANO1xx_EBI NANO1xx External Bus Interfacel Control Register (EBI) @{ */ typedef struct { __IO uint32_t EBICON; /*!< Offset: 0x0000 EBI general control register */ __IO uint32_t EXTIME; /*!< Offset: 0x0004 EBI timing control register */ } EBI_TypeDef; /*@}*/ /* end of group NANO1xx_EBI */ /*------------- Watchdog Timer Control Register (WDT) -----------------------------*/ /** @addtogroup NANO1xx_WDT NANO1xx Watchdog Timer Control Register (WDT) @{ */ typedef struct { __IO uint32_t CTL; /*!< Offset: 0x0000 Watchdog Timer Control Register */ __IO uint32_t IER; /*!< Offset: 0x0004 Watchdog Timer Interrupt Enable Register */ __IO uint32_t ISR; /*!< Offset: 0x0008 Watchdog Timer Interrupt Status Register */ } WDT_TypeDef; /*@}*/ /* end of group NANO1xx_WDT */ /*------------- Window Watchdog Timer Control Register (WWDT) -----------------------------*/ /** @addtogroup NANO1xx_WWDT NANO1xx Watchdog Timer Control Register (WWDT) @{ */ typedef struct { __O uint32_t RLD; /*!< Offset: 0x0000 Window Watchdog Timer Reload Counter Register */ __IO uint32_t CR; /*!< Offset: 0x0004 Window Watchdog Timer Control Register */ __IO uint32_t IER; /*!< Offset: 0x0008 Window Watchdog Timer Interrupt Enable Register */ __IO uint32_t STS; /*!< Offset: 0x000C Window Watchdog Timer Status Register */ __I uint32_t VAL; /*!< Offset: 0x0010 Window Watchdog Counter Value Register */ } WWDT_TypeDef; /*@}*/ /* end of group NANO1xx_WWDT */ /*----------------------------- Real Time Clock Controller -------------------------------*/ /** @addtogroup NANO1xx_RTC NANO1xx Real Time Clock (RTC) @{ */ typedef struct { __IO uint32_t INIR; /*!< Offset: 0x0000 RTC Initiation Register */ __IO uint32_t AER; /*!< Offset: 0x0004 RTC Access Enable Register */ __IO uint32_t FCR; /*!< Offset: 0x0008 RTC Frequency Compensation Register */ __IO uint32_t TLR; /*!< Offset: 0x000C Time Loading Register */ __IO uint32_t CLR; /*!< Offset: 0x0010 Calendar Loading Register */ __IO uint32_t TSSR; /*!< Offset: 0x0014 Time Scale Selection Register */ __IO uint32_t DWR; /*!< Offset: 0x0018 Day of the Week Register */ __IO uint32_t TAR; /*!< Offset: 0x001C Time Alarm Register */ __IO uint32_t CAR; /*!< Offset: 0x0020 Calendar Alarm Register */ __I uint32_t LIR; /*!< Offset: 0x0024 Leap year Indicator Register */ __IO uint32_t RIER; /*!< Offset: 0x0028 RTC Interrupt Enable Register */ __IO uint32_t RIIR; /*!< Offset: 0x002C RTC Interrupt Indicator Register */ __IO uint32_t TTR; /*!< Offset: 0x0030 RTC Time Tick Register */ uint32_t RESERVED0[2]; __IO uint32_t SPRCTL; /*!< Offset: 0x003C RTC Spare Functional Control Register */ __IO uint32_t SPR0; /*!< Offset: 0x0040 RTC Spare Register 0 */ __IO uint32_t SPR1; /*!< Offset: 0x0044 RTC Spare Register 1 */ __IO uint32_t SPR2; /*!< Offset: 0x0048 RTC Spare Register 2 */ __IO uint32_t SPR3; /*!< Offset: 0x004C RTC Spare Register 3 */ __IO uint32_t SPR4; /*!< Offset: 0x0050 RTC Spare Register 4 */ __IO uint32_t SPR5; /*!< Offset: 0x0054 RTC Spare Register 5 */ __IO uint32_t SPR6; /*!< Offset: 0x0058 RTC Spare Register 6 */ __IO uint32_t SPR7; /*!< Offset: 0x005C RTC Spare Register 7 */ __IO uint32_t SPR8; /*!< Offset: 0x0060 RTC Spare Register 8 */ __IO uint32_t SPR9; /*!< Offset: 0x0064 RTC Spare Register 9 */ __IO uint32_t SPR10; /*!< Offset: 0x0068 RTC Spare Register 10 */ __IO uint32_t SPR11; /*!< Offset: 0x006C RTC Spare Register 11 */ __IO uint32_t SPR12; /*!< Offset: 0x0070 RTC Spare Register 12 */ __IO uint32_t SPR13; /*!< Offset: 0x0074 RTC Spare Register 13 */ __IO uint32_t SPR14; /*!< Offset: 0x0078 RTC Spare Register 14 */ __IO uint32_t SPR15; /*!< Offset: 0x007C RTC Spare Register 15 */ __IO uint32_t SPR16; /*!< Offset: 0x0080 RTC Spare Register 16 */ __IO uint32_t SPR17; /*!< Offset: 0x0084 RTC Spare Register 17 */ __IO uint32_t SPR18; /*!< Offset: 0x0088 RTC Spare Register 18 */ __IO uint32_t SPR19; /*!< Offset: 0x008C RTC Spare Register 19 */ } RTC_TypeDef; /*@}*/ /* end of group NANO1xx_RTC */ /*----------------------------- ADC Controller -------------------------------*/ /** @addtogroup NANO1xx_ADC NANO1xx A/D Converter (ADC) @{ */ typedef struct { __I uint32_t RESULT0; /*!< Offset: 0x0000 A/D result Register 0 */ __I uint32_t RESULT1; /*!< Offset: 0x0004 A/D result Register 1 */ __I uint32_t RESULT2; /*!< Offset: 0x0008 A/D result Register 2 */ __I uint32_t RESULT3; /*!< Offset: 0x000C A/D result Register 3 */ __I uint32_t RESULT4; /*!< Offset: 0x0010 A/D result Register 4 */ __I uint32_t RESULT5; /*!< Offset: 0x0014 A/D result Register 5 */ __I uint32_t RESULT6; /*!< Offset: 0x0018 A/D result Register 6 */ __I uint32_t RESULT7; /*!< Offset: 0x001C A/D result Register 7 */ __I uint32_t RESULT8; /*!< Offset: 0x0020 A/D result Register 8 */ __I uint32_t RESULT9; /*!< Offset: 0x0024 A/D result Register 9 */ __I uint32_t RESULT10; /*!< Offset: 0x0028 A/D result Register 10 */ __I uint32_t RESULT11; /*!< Offset: 0x002C A/D result Register 11 */ __I uint32_t RESULT12; /*!< Offset: 0x0030 A/D result Register 12 */ __I uint32_t RESULT13; /*!< Offset: 0x0034 A/D result Register 13 */ __I uint32_t RESULT14; /*!< Offset: 0x0038 A/D result Register 14 */ __I uint32_t RESULT15; /*!< Offset: 0x003C A/D result Register 15 */ __I uint32_t RESULT16; /*!< Offset: 0x0040 A/D result Register 16 */ __I uint32_t RESULT17; /*!< Offset: 0x0044 A/D result Register 17 */ __IO uint32_t CR; /*!< Offset: 0x0048 A/D Control Register */ __IO uint32_t CHER; /*!< Offset: 0x004C A/D Channel Enable Register */ __IO uint32_t CMPR0; /*!< Offset: 0x0050 A/D Compare Register 0 */ __IO uint32_t CMPR1; /*!< Offset: 0x0054 A/D Compare Register 1 */ __IO uint32_t SR; /*!< Offset: 0x0058 A/D Status Register */ uint32_t RESERVED0; /*!< Offset: 0x005C Reserved */ __I uint32_t PDMA; /*!< Offset: 0x0060 A/D PDMA Current Transfer Data Register */ __IO uint32_t PWRCTL; /*!< Offset: 0x0064 A/D Power Control Register */ __IO uint32_t CALCTL; /*!< Offset: 0x0068 A/D Calibration Control Register */ __IO uint32_t CALWORD; /*!< Offset: 0x006C A/D Calibration Load Word Register */ __IO uint32_t SMPLCNT0; /*!< Offset: 0x0070 A/D Sample Register 0 */ __IO uint32_t SMPLCNT1; /*!< Offset: 0x0074 A/D Sample Register 1 */ } ADC_TypeDef; /*@}*/ /* end of group NANO1xx_ADC */ /*------------- I2S Control Register (I2S) -----------------------------*/ /** @addtogroup NANO1xx_I2S NANO1xx I2S Control Register (I2S) @{ */ typedef struct { __IO uint32_t CTRL; /*!< Offset: 0x0000 I2S Control Register */ __IO uint32_t CLKDIV; /*!< Offset: 0x0004 I2S Clock Divider Register */ __IO uint32_t INTEN; /*!< Offset: 0x0008 I2S Interrupt Enable Register */ __IO uint32_t STATUS; /*!< Offset: 0x000C I2S Status Register */ __O uint32_t TXFIFO; /*!< Offset: 0x0010 I2S Transmit FIFO Register */ __I uint32_t RXFIFO; /*!< Offset: 0x0014 I2S Receive FIFO Register */ } I2S_TypeDef; /*@}*/ /* end of group NANO1xx_I2S */ /*------------- USB Device Control Register (USBD) -----------------------------*/ /** @addtogroup NANO1xx_USBD NANO1xx USB Device Control Register (USBD) @{ */ typedef struct { __IO uint32_t CTRL; /*!< Offset: 0x0000 USB Control Register */ __I uint32_t BUSSTS; /*!< Offset: 0x0004 USB Bus Status Register */ __IO uint32_t INTEN; /*!< Offset: 0x0008 USB Interrupt Enable Register */ __IO uint32_t INTSTS; /*!< Offset: 0x000C USB Interrupt Event Status Register */ __IO uint32_t DADDR; /*!< Offset: 0x0010 USB Device's Function Address Register */ __I uint32_t EPSTS; /*!< Offset: 0x0014 USB Endpoint Status Register */ __IO uint32_t BUFSEG; /*!< Offset: 0x0018 USB Setup Token Buffer Segmentation Register */ __I uint32_t EPSTS2; /*!< Offset: 0x001C USB Endpoint Status Register 2 */ __IO uint32_t BUFSEG0; /*!< Offset: 0x0020 USB Endpoint 0 Buffer Segmentation Register */ __IO uint32_t MXPLD0; /*!< Offset: 0x0024 USB Endpoint 0 Maximal Payload Register */ __IO uint32_t CFG0; /*!< Offset: 0x0028 USB Endpoint 0 Configuration Register */ uint32_t RESERVED1; /*!< Offset: 0x002C Reserved */ __IO uint32_t BUFSEG1; /*!< Offset: 0x0030 USB Endpoint 1 Buffer Segmentation Register */ __IO uint32_t MXPLD1; /*!< Offset: 0x0034 USB Endpoint 1 Maximal Payload Register */ __IO uint32_t CFG1; /*!< Offset: 0x0038 USB Endpoint 1 Configuration Register */ uint32_t RESERVED2; /*!< Offset: 0x003C Reserved */ __IO uint32_t BUFSEG2; /*!< Offset: 0x0040 USB Endpoint 2 Buffer Segmentation Register */ __IO uint32_t MXPLD2; /*!< Offset: 0x0044 USB Endpoint 2 Maximal Payload Register */ __IO uint32_t CFG2; /*!< Offset: 0x0048 USB Endpoint 2 Configuration Register */ uint32_t RESERVED3; /*!< Offset: 0x004C Reserved */ __IO uint32_t BUFSEG3; /*!< Offset: 0x0050 USB Endpoint 3 Buffer Segmentation Register */ __IO uint32_t MXPLD3; /*!< Offset: 0x0054 USB Endpoint 3 Maximal Payload Register */ __IO uint32_t CFG3; /*!< Offset: 0x0058 USB Endpoint 3 Configuration Register */ uint32_t RESERVED4; /*!< Offset: 0x005C Reserved */ __IO uint32_t BUFSEG4; /*!< Offset: 0x0060 USB Endpoint 4 Buffer Segmentation Register */ __IO uint32_t MXPLD4; /*!< Offset: 0x0064 USB Endpoint 4 Maximal Payload Register */ __IO uint32_t CFG4; /*!< Offset: 0x0068 USB Endpoint 4 Configuration Register */ uint32_t RESERVED5; /*!< Offset: 0x006C Reserved */ __IO uint32_t BUFSEG5; /*!< Offset: 0x0070 USB Endpoint 5 Buffer Segmentation Register */ __IO uint32_t MXPLD5; /*!< Offset: 0x0074 USB Endpoint 5 Maximal Payload Register */ __IO uint32_t CFG5; /*!< Offset: 0x0078 USB Endpoint 5 Configuration Register */ uint32_t RESERVED6; /*!< Offset: 0x007C Reserved */ __IO uint32_t BUFSEG6; /*!< Offset: 0x0080 USB Endpoint 6 Buffer Segmentation Register */ __IO uint32_t MXPLD6; /*!< Offset: 0x0084 USB Endpoint 6 Maximal Payload Register */ __IO uint32_t CFG6; /*!< Offset: 0x0088 USB Endpoint 6 Configuration Register */ uint32_t RESERVED7; /*!< Offset: 0x008C Reserved */ __IO uint32_t BUFSEG7; /*!< Offset: 0x0090 USB Endpoint 7 Buffer Segmentation Register */ __IO uint32_t MXPLD7; /*!< Offset: 0x0094 USB Endpoint 7 Maximal Payload Register */ __IO uint32_t CFG7; /*!< Offset: 0x0098 USB Endpoint 7 Configuration Register */ uint32_t RESERVED8[2]; /*!< Offset: 0x009C~0x00A0 Reserved */ __IO uint32_t PDMA; /*!< Offset: 0x00A4 USB PDMA Control Register */ } USBD_TypeDef; /*@}*/ /* end of group NANO1xx_USBD */ /*------------- DAC (DAC) -----------------------------*/ /** @addtogroup NANO1xx_DAC NANO1xx DAC Control Register (DAC) @{ */ typedef struct { __IO uint32_t CTL0; /*!< Offset: 0x0000 DAC0 Control Register */ __IO uint32_t DATA0; /*!< Offset: 0x0004 DAC0 Data Register */ __IO uint32_t STS0; /*!< Offset: 0x0008 DAC0 Status Register */ uint32_t RESERVED0; /*!< Offset: 0x000C Reserved */ __IO uint32_t CTL1; /*!< Offset: 0x0010 DAC1 Control Register */ __IO uint32_t DATA1; /*!< Offset: 0x0014 DAC1 Data Register */ __IO uint32_t STS1; /*!< Offset: 0x0018 DAC1 Status Register */ uint32_t RESERVED1; /*!< Offset: 0x001C Reserved */ __IO uint32_t COMCTL; /*!< Offset: 0x0020 DAC01 Common Control Register */ } DAC_TypeDef; /*@}*/ /* end of group NANO1xx_DAC */ /*------------- LCD (LCD) -----------------------------*/ /** @addtogroup NANO1xx_LCD NANO1xx LCD Control Register (LCD) @{ */ typedef struct { __IO uint32_t CTL; /*!< Offset: 0x0000 LCD Control Register */ __IO uint32_t DISPCTL; /*!< Offset: 0x0004 LCD Display Control Register */ __IO uint32_t MEM_0; /*!< Offset: 0x0008 LCD SEG3 ~ SEG0 data */ __IO uint32_t MEM_1; /*!< Offset: 0x000C LCD SEG7 ~ SEG4 data */ __IO uint32_t MEM_2; /*!< Offset: 0x0010 LCD SEG11 ~ SEG8 data */ __IO uint32_t MEM_3; /*!< Offset: 0x0014 LCD SEG15 ~ SEG12 data */ __IO uint32_t MEM_4; /*!< Offset: 0x0018 LCD SEG19 ~ SEG16 data */ __IO uint32_t MEM_5; /*!< Offset: 0x001C LCD SEG23 ~ SEG20 data */ __IO uint32_t MEM_6; /*!< Offset: 0x0020 LCD SEG27 ~ SEG24 data */ __IO uint32_t MEM_7; /*!< Offset: 0x0024 LCD SEG31 ~ SEG28 data */ __IO uint32_t MEM_8; /*!< Offset: 0x0028 LCD SEG35 ~ SEG32 data */ __IO uint32_t MEM_9; /*!< Offset: 0x002C LCD SEG39 ~ SEG36 data */ __IO uint32_t FCR; /*!< Offset: 0x0030 LCD frame counter control register */ __IO uint32_t FCSTS; /*!< Offset: 0x0034 LCD frame counter status */ } LCD_TypeDef; /*@}*/ /* end of group NANO1xx_LCD */ /* * @brief Capacitive Touch-Key Sensing Engine */ /*------------- Touch-Key Sensing Engine -----------------------------*/ /** @addtogroup NANO1xx_TK NANO1xx TK Control Register (TK) @{ */ typedef struct { __IO uint32_t CTL1; /*!< Offset: 0x0000 Touch Key Control Register 1 */ __IO uint32_t CTL2; /*!< Offset: 0x0004 Touch Key Control Register 2 */ __IO uint32_t CTL3; /*!< Offset: 0x0008 Touch Key Control Register 3 */ __IO uint32_t STAT; /*!< Offset: 0x000C Touch Key Status Register */ __IO uint32_t DATA1; /*!< Offset: 0x0010 Touch Key Data Register 1 */ __IO uint32_t DATA2; /*!< Offset: 0x0014 Touch Key Data Register 2 */ __IO uint32_t DATA3; /*!< Offset: 0x0018 Touch Key Data Register 3 */ __IO uint32_t DATA4; /*!< Offset: 0x001C Touch Key Data Register 4 */ __IO uint32_t INTEN; /*!< Offset: 0x0020 Touch Key Interrupt Enable Register */ __IO uint32_t TK8_0_THC; /*!< Offset: 0x0024 TK8/TK0 Threshold Control Register */ __IO uint32_t TK9_1_THC; /*!< Offset: 0x0028 TK9/TK1 Threshold Control Register */ __IO uint32_t TK10_2_THC; /*!< Offset: 0x002C TK10/TK2 Threshold Control Register */ __IO uint32_t TK11_3_THC; /*!< Offset: 0x0030 TK11/TK3 Threshold Control Register */ __IO uint32_t TK12_4_THC; /*!< Offset: 0x0034 TK12/TK4 Threshold Control Register */ __IO uint32_t TK13_5_THC; /*!< Offset: 0x0038 TK13/TK5 Threshold Control Register */ __IO uint32_t TK14_6_THC; /*!< Offset: 0x003C TK14/TK6 Threshold Control Register */ __IO uint32_t TK15_7_THC; /*!< Offset: 0x0040 TK15/TK7 Threshold Control Register */ } TK_TypeDef; /*@}*/ /* end of group NANO1xx_TK */ /*------------- Timer Control Register (TIMER) -----------------------------*/ /** @addtogroup NANO1xx_TIMER NANO1xx TIMER Control Register (TIMER) @{ */ typedef struct { __IO uint32_t CTL; /*!< Offset: 0x0000 Timer Control Register */ __IO uint32_t PRECNT; /*!< Offset: 0x0004 Timer Pre-Scale Counter Register */ __IO uint32_t CMPR; /*!< Offset: 0x0008 Timer Compare Register */ __IO uint32_t IER; /*!< Offset: 0x000C Timer Interrupt Enable Register */ __IO uint32_t ISR; /*!< Offset: 0x0010 Timer Interrupt Status Register */ __I uint32_t DR; /*!< Offset: 0x0014 Timer Data Register */ __I uint32_t TCAP; /*!< Offset: 0x0018 Timer Capture Data Register */ } TIMER_TypeDef; /*@}*/ /* end of group NANO1xx_TIMER */ /*----------------------------- PWM Controller ----------------------------*/ /** @addtogroup NANO1xx_PWM NANO1xx PWM Control Register (PWM) @{ */ typedef struct { __IO uint32_t PRES; /*!< Offset: 0x0000 PWM Prescaler Register */ __IO uint32_t CLKSEL; /*!< Offset: 0x0004 PWM Clock Select Register */ __IO uint32_t CTL; /*!< Offset: 0x0008 PWM Ccontrol Register */ __IO uint32_t INTEN; /*!< Offset: 0x000C PWM Interrupt Enable Register */ __IO uint32_t INTSTS; /*!< Offset: 0x0010 PWM Interrupt Indication Register */ __IO uint32_t OE; /*!< Offset: 0x0014 PWM Output Enable Register */ uint32_t RESERVED0; /*!< Offset: 0x0018 Reserved */ __IO uint32_t DUTY0; /*!< Offset: 0x001C PWM Counter/Comparator Register 0 */ uint32_t RESERVED1[2]; /*!< Offset: 0x0020 ~ 0x0024 Reserved */ __IO uint32_t DUTY1; /*!< Offset: 0x0028 PWM Counter/Comparator Register 1 */ uint32_t RESERVED2[2]; /*!< Offset: 0x002C ~ 0x0030 Reserved */ __IO uint32_t DUTY2; /*!< Offset: 0x0034 PWM Counter/Comparator Register 2 */ uint32_t RESERVED3[2]; /*!< Offset: 0x0038 ~ 0x003C Reserved */ __IO uint32_t DUTY3; /*!< Offset: 0x0040 PWM Counter/Comparator Register 3 */ uint32_t RESERVED4[4]; /*!< Offset: 0x0044 ~ 0x0050 Reserved */ __IO uint32_t CAPCTL; /*!< Offset: 0x0054 Capture Control Register */ __IO uint32_t CAPINTEN; /*!< Offset: 0x0058 Capture Interrupt Enable Register */ __IO uint32_t CAPINTSTS; /*!< Offset: 0x005C Capture Interrupt Indication Register */ __I uint32_t CRL0; /*!< Offset: 0x0060 Capture Rising Latch Register 0 */ __I uint32_t CFL0; /*!< Offset: 0x0064 Capture Falling Latch Register 0 */ __I uint32_t CRL1; /*!< Offset: 0x0068 Capture Rising Latch Register 1 */ __I uint32_t CFL1; /*!< Offset: 0x006C Capture Falling Latch Register 1 */ __I uint32_t CRL2; /*!< Offset: 0x0070 Capture Rising Latch Register 2 */ __I uint32_t CFL2; /*!< Offset: 0x0074 Capture Falling Latch Register 2 */ __I uint32_t CRL3; /*!< Offset: 0x0078 Capture Rising Latch Register 3 */ __I uint32_t CFL3; /*!< Offset: 0x007C Capture Falling Latch Register 3 */ __I uint32_t CH0PDMA; /*!< Offset: 0x0080 PDMA channel 0 captured data */ __I uint32_t CH2PDMA; /*!< Offset: 0x0084 PDMA channel 1 captured data */ } PWM_TypeDef; /*@}*/ /* end of group NANO1xx_PWM */ /*-------------------- Serial Peripheral Interface (SPI) ----------------------*/ /** @addtogroup NANO1xx_SPI NANO1xx Serial Peripheral Interface (SPI) @{ */ typedef struct { __IO uint32_t CTL; /*!< Offset: 0x0000 SPI Control Register */ __IO uint32_t STATUS; /*!< Offset: 0x0004 SPI Status Register */ __IO uint32_t CLKDIV; /*!< Offset: 0x0008 SPI Serial Clock Divider Register */ __IO uint32_t SSR; /*!< Offset: 0x000C SPI Slave Select Register */ __I uint32_t RX0; /*!< Offset: 0x0010 SPI Receive Data FIFO Register 0 */ __I uint32_t RX1; /*!< Offset: 0x0014 SPI Receive Data FIFO Register 1 */ uint32_t RESERVED0; uint32_t RESERVED1; __O uint32_t TX0; /*!< Offset: 0x0020 SPI Transmit Data FIFO Register 0 */ __O uint32_t TX1; /*!< Offset: 0x0024 SPI Transmit Data FIFO Register 1 */ uint32_t RESERVED2; uint32_t RESERVED3; uint32_t RESERVED4; __IO uint32_t VARCLK; /*!< Offset: 0x0034 SPI Variable Clock Pattern Flag Register */ __IO uint32_t PDMA; /*!< Offset: 0x0038 SPI PDMA Control Register */ __IO uint32_t FF_CTL; /*!< Offset: 0x003C SPI FIFO Control Register */ } SPI_TypeDef; /*@}*/ /* end of group NANO1xx_SPI */ /*------------- UART -----------------------------*/ /** @addtogroup NANO1xx_UART NANO1xx UART Control Register (UART) @{ */ typedef struct { union { __I uint32_t RBR; /*!< Offset: 0x0000 UART Receive Buffer Register */ __O uint32_t THR; /*!< Offset: 0x0000 UART Transmit Holding Register */ }; __IO uint32_t CTL; /*!< Offset: 0x0004 UART Control State Register */ __IO uint32_t TLCTL; /*!< Offset: 0x0008 UART Transfer Line Control Register */ __IO uint32_t IER; /*!< Offset: 0x000C UART Interrupt Enable Register */ __IO uint32_t ISR; /*!< Offset: 0x0010 UART Interrupt Status Register */ __IO uint32_t TRSR; /*!< Offset: 0x0014 UART Transfer State Status Register */ __IO uint32_t FSR; /*!< Offset: 0x0018 UART FIFO State Status Register */ __IO uint32_t MCSR; /*!< Offset: 0x001C UART Modem State Status Register */ __IO uint32_t TMCTL; /*!< Offset: 0x0020 UART Time-Out Control State Register */ __IO uint32_t BAUD; /*!< Offset: 0x0024 UART Baud Rate Divisor Register */ uint32_t RESERVED0[2]; __IO uint32_t IRCR; /*!< Offset: 0x0030 UART IrDA Control Register */ __IO uint32_t ALT_CTL; /*!< Offset: 0x0034 UART Alternate Control State Register */ __IO uint32_t FUN_SEL; /*!< Offset: 0x0038 UART Function Select Register */ } UART_TypeDef; /*@}*/ /* end of group NANO1xx_UART */ /* * @brief GPIO shadow registers */ /*------------- GPIO Shadow Registers (SHADOW) -----------------------------*/ /** @addtogroup NANO1xx_SHADOW NANO1xx GPIO Shadow Register (SHADOW) @{ */ typedef struct { __I uint32_t GPA_SHADOW; /*!< Offset: 0x0000 GPIO Port A Pin Value Shadow Register */ __I uint32_t GPB_SHADOW; /*!< Offset: 0x0004 GPIO Port B Pin Value Shadow Register */ __I uint32_t GPC_SHADOW; /*!< Offset: 0x0008 GPIO Port C Pin Value Shadow Register */ __I uint32_t GPD_SHADOW; /*!< Offset: 0x000C GPIO Port D Pin Value Shadow Register */ __I uint32_t GPE_SHADOW; /*!< Offset: 0x0010 GPIO Port E Pin Value Shadow Register */ __I uint32_t GPF_SHADOW; /*!< Offset: 0x0014 GPIO Port F Pin Value Shadow Register */ } SHADOW_TypeDef; /*@}*/ /* end of group NANO1xx_SHADOW */ /*------------- I2C Serial Interface Controller (Master/Slave) (I2C) -----------------------------*/ /** @addtogroup NANO1xx_I2C NANO1xx I2C Controller Register (I2C) @{ */ typedef struct { __IO uint32_t CON; /*!< Offset: 0x0000 I2C Control Register */ __IO uint32_t INTSTS; /*!< Offset: 0x0004 I2C Control Flag Register */ __I uint32_t STATUS; /*!< Offset: 0x0008 I2C Status Register */ __IO uint32_t DIV; /*!< Offset: 0x000C I2C Clock Divided Register */ __IO uint32_t TOUT; /*!< Offset: 0x0010 I2C Time Out Control Register */ __IO uint32_t DATA; /*!< Offset: 0x0014 I2C Data Register */ __IO uint32_t SADDR0; /*!< Offset: 0x0018 Slave Address Register 0 */ __IO uint32_t SADDR1; /*!< Offset: 0x001C Slave Address Register 1 */ uint32_t RESERVED0; uint32_t RESERVED1; __IO uint32_t SAMASK0; /*!< Offset: 0x0028 Slave Address Mask Register 0 */ __IO uint32_t SAMASK1; /*!< Offset: 0x002C Slave Address Mask Register 1 */ uint32_t RESERVED2[4]; __IO uint32_t WKUPCON; /*!< Offset: 0x003C I2C Wake-up Control Register */ __IO uint32_t WKUPSTS; /*!< Offset: 0x0040 I2C Wake-up Status Register */ } I2C_TypeDef; /*@}*/ /* end of group NANO1xx_I2C */ /*------------- Smart Card Control Register (SC) -----------------------------*/ /** @addtogroup NANO1xx_SC NANO1xx Smart Card Control Register (SC) @{ */ typedef struct { union { __I uint32_t RBR; /*!< Offset: 0x0000 SC Receiving Buffer Register */ __O uint32_t THR; /*!< Offset: 0x0000 SC Transmit Holding Register */ }; __IO uint32_t CTL; /*!< Offset: 0x0004 SC Control Register */ __IO uint32_t ALTCTL; /*!< Offset: 0x0008 SC Alternate Control Register */ __IO uint32_t EGTR; /*!< Offset: 0x000C SC Extend Guard Time Register */ __IO uint32_t RFTMR; /*!< Offset: 0x0010 SC Receive Buffer Time-Out Register */ __IO uint32_t ETUCR; /*!< Offset: 0x0014 SC ETU Control Register */ __IO uint32_t IER; /*!< Offset: 0x0018 SC Interrupt Enable Register */ __IO uint32_t ISR; /*!< Offset: 0x001C SC Interrupt Status Register */ __IO uint32_t TRSR; /*!< Offset: 0x0020 SC Transfer Status Register */ __IO uint32_t PINCSR; /*!< Offset: 0x0024 SC Pin Control State Register */ __IO uint32_t TMR0; /*!< Offset: 0x0028 SC Internal Timer Control Register 0 */ __IO uint32_t TMR1; /*!< Offset: 0x002C SC Internal Timer Control Register 1 */ __IO uint32_t TMR2; /*!< Offset: 0x0030 SC Internal Timer Control Register 2 */ __IO uint32_t UACTL; /*!< Offset: 0x0034 SC UART Mode Control Register */ __I uint32_t TDRA; __I uint32_t TDRB; } SC_TypeDef; /*@}*/ /* end of group NANO1xx_SC */ #if defined ( __CC_ARM ) #pragma no_anon_unions #endif /*@}*/ /* end of group NANO1xx_Peripherals */ /******************************************************************************/ /* Peripheral memory map */ /******************************************************************************/ /** @addtogroup NANO1xx_MemoryMap NANO1xx Memory Mapping @{ */ /* Peripheral and SRAM base address */ //#define _FLASH_BASE (0x00000000UL) /*!< (FLASH ) Base Address */ #define SRAM_BASE (0x20000000UL) /*!< (SRAM ) Base Address */ #define PERIPH_BASE (0x40000000UL) /*!< (Peripheral) Base Address */ /* Peripheral memory map */ #define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE + 0x100000) #define AHBPERIPH_BASE (PERIPH_BASE + 0x10000000) #define WDT_BASE (APB1PERIPH_BASE + 0x04000) #define WWDT_BASE (APB1PERIPH_BASE + 0x04100) #define RTC_BASE (APB1PERIPH_BASE + 0x08000) #define TIMER0_BASE (APB1PERIPH_BASE + 0x10000) #define TIMER1_BASE (APB1PERIPH_BASE + 0x10100) #define I2C0_BASE (APB1PERIPH_BASE + 0x20000) #define SPI0_BASE (APB1PERIPH_BASE + 0x30000) #define PWM0_BASE (APB1PERIPH_BASE + 0x40000) #define UART0_BASE (APB1PERIPH_BASE + 0x50000) #define USBD_BASE (APB1PERIPH_BASE + 0x60000) #define USBD_SRAM_BASE (APB1PERIPH_BASE + 0x60100) #define DAC_BASE (APB1PERIPH_BASE + 0xA0000) #define LCD_BASE (APB1PERIPH_BASE + 0xB0000) #define TK_BASE (APB1PERIPH_BASE + 0xC0000) #define SPI2_BASE (APB1PERIPH_BASE + 0xD0000) #define ADC_BASE (APB1PERIPH_BASE + 0xE0000) #define TIMER2_BASE (APB2PERIPH_BASE + 0x10000) #define TIMER3_BASE (APB2PERIPH_BASE + 0x10100) #define SHADOW_BASE (APB1PERIPH_BASE + 0x10200) #define I2C1_BASE (APB2PERIPH_BASE + 0x20000) #define SPI1_BASE (APB2PERIPH_BASE + 0x30000) #define PWM1_BASE (APB2PERIPH_BASE + 0x40000) #define UART1_BASE (APB2PERIPH_BASE + 0x50000) #define SC0_BASE (APB2PERIPH_BASE + 0x90000) #define I2S_BASE (APB2PERIPH_BASE + 0xA0000) #define SC1_BASE (APB2PERIPH_BASE + 0xB0000) #define SC2_BASE (APB2PERIPH_BASE + 0xC0000) #define GCR_BASE (AHBPERIPH_BASE + 0x00000) #define CLK_BASE (AHBPERIPH_BASE + 0x00200) #define INTID_BASE (AHBPERIPH_BASE + 0x00300) #define GPIOA_BASE (AHBPERIPH_BASE + 0x04000) #define GPIOB_BASE (AHBPERIPH_BASE + 0x04040) #define GPIOC_BASE (AHBPERIPH_BASE + 0x04080) #define GPIOD_BASE (AHBPERIPH_BASE + 0x040C0) #define GPIOE_BASE (AHBPERIPH_BASE + 0x04100) #define GPIOF_BASE (AHBPERIPH_BASE + 0x04140) #define GPIODBNCE_BASE (AHBPERIPH_BASE + 0x04180) #define GPIOBITA_BASE (AHBPERIPH_BASE + 0x04200) #define GPIOBITB_BASE (AHBPERIPH_BASE + 0x04240) #define GPIOBITC_BASE (AHBPERIPH_BASE + 0x04280) #define GPIOBITD_BASE (AHBPERIPH_BASE + 0x042C0) #define GPIOBITE_BASE (AHBPERIPH_BASE + 0x04300) #define GPIOBITF_BASE (AHBPERIPH_BASE + 0x04340) #define VDMA_BASE (AHBPERIPH_BASE + 0x08000) #define PDMA1_BASE (AHBPERIPH_BASE + 0x08100) #define PDMA2_BASE (AHBPERIPH_BASE + 0x08200) #define PDMA3_BASE (AHBPERIPH_BASE + 0x08300) #define PDMA4_BASE (AHBPERIPH_BASE + 0x08400) #define PDMA5_BASE (AHBPERIPH_BASE + 0x08500) #define PDMA6_BASE (AHBPERIPH_BASE + 0x08600) #define PDMACRC_BASE (AHBPERIPH_BASE + 0x08E00) #define PDMAGCR_BASE (AHBPERIPH_BASE + 0x08F00) #define FMC_BASE (AHBPERIPH_BASE + 0x0C000) #define EBI_BASE (AHBPERIPH_BASE + 0x10000) /*@}*/ /* end of group _MemoryMap */ /******************************************************************************/ /* Peripheral declaration */ /******************************************************************************/ /** @addtogroup NANO1xx_PeripheralDecl NANO1xx Peripheral Declaration @{ */ #define WDT ((WDT_TypeDef *) WDT_BASE) #define WWDT ((WWDT_TypeDef *) WWDT_BASE) #define RTC ((RTC_TypeDef *) RTC_BASE) #define TIMER0 ((TIMER_TypeDef *) TIMER0_BASE) #define TIMER1 ((TIMER_TypeDef *) TIMER1_BASE) #define TIMER2 ((TIMER_TypeDef *) TIMER2_BASE) #define TIMER3 ((TIMER_TypeDef *) TIMER3_BASE) #define SHADOW ((SHADOW_TypeDef *) SHADOW_BASE) #define I2C0 ((I2C_TypeDef *) I2C0_BASE) #define I2C1 ((I2C_TypeDef *) I2C1_BASE) #define SPI0 ((SPI_TypeDef *) SPI0_BASE) #define SPI1 ((SPI_TypeDef *) SPI1_BASE) #define SPI2 ((SPI_TypeDef *) SPI2_BASE) #define PWM0 ((PWM_TypeDef *) PWM0_BASE) #define PWM1 ((PWM_TypeDef *) PWM1_BASE) #define UART0 ((UART_TypeDef *) UART0_BASE) #define UART1 ((UART_TypeDef *) UART1_BASE) #define USBD ((USBD_TypeDef *) USBD_BASE) #define DAC ((DAC_TypeDef *) DAC_BASE) #define LCD ((LCD_TypeDef *) LCD_BASE) #define TK ((TK_TypeDef *) TK_BASE) #define ADC ((ADC_TypeDef *) ADC_BASE) #define SC0 ((SC_TypeDef *) SC0_BASE) #define I2S ((I2S_TypeDef *) I2S_BASE) #define SC1 ((SC_TypeDef *) SC1_BASE) #define SC2 ((SC_TypeDef *) SC2_BASE) #define GCR ((GCR_TypeDef *) GCR_BASE) #define CLK ((CLK_TypeDef *) CLK_BASE) #define INTID ((INTID_TypeDef *) INTID_BASE) #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) #define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) #define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) #define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) #define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) #define GPIODBNCE ((GPIODBNCE_TypeDef *) GPIODBNCE_BASE) #define GPIOBITA ((GPIOBIT_TypeDef *) GPIOBITA_BASE) #define GPIOBITB ((GPIOBIT_TypeDef *) GPIOBITB_BASE) #define GPIOBITC ((GPIOBIT_TypeDef *) GPIOBITC_BASE) #define GPIOBITD ((GPIOBIT_TypeDef *) GPIOBITD_BASE) #define GPIOBITE ((GPIOBIT_TypeDef *) GPIOBITE_BASE) #define GPIOBITF ((GPIOBIT_TypeDef *) GPIOBITF_BASE) #define VDMA ((VDMA_TypeDef *) VDMA_BASE) #define PDMA1 ((PDMA_TypeDef *) PDMA1_BASE) #define PDMA2 ((PDMA_TypeDef *) PDMA2_BASE) #define PDMA3 ((PDMA_TypeDef *) PDMA3_BASE) #define PDMA4 ((PDMA_TypeDef *) PDMA4_BASE) #define PDMA5 ((PDMA_TypeDef *) PDMA5_BASE) #define PDMA6 ((PDMA_TypeDef *) PDMA6_BASE) #define PDMACRC ((PDMACRC_TypeDef *) PDMACRC_BASE) #define PDMAGCR ((PDMAGCR_TypeDef *) PDMAGCR_BASE) #define FMC ((FMC_TypeDef *) FMC_BASE) #define EBI ((EBI_TypeDef *) EBI_BASE) /*@}*/ /* end of group NANO1xx_PeripheralDecl */ /******************************************************************************/ /* Device Specific Constants */ /******************************************************************************/ /** @addtogroup NANO1xx_Exported_Constants NANO1xx Exported Constants NANO1xx Device Specific Constantss @{ */ /******************************************************************************/ /* GCR */ /******************************************************************************/ /********************* Bit definition of RSTSRC register **********************/ #define GCR_RSTSRC_POR ((uint32_t)0x00000001) /*!RegLockAddr = 0x59; GCR->RegLockAddr = 0x16; GCR->RegLockAddr = 0x88;} /*!< Unlock protected register */ #define LOCKREG(x) GCR->RegLockAddr = 0x00 /*!< Lock protected register */ /******************************************************************************/ /* Multi-Function Pin */ /******************************************************************************/ /*!PortA14->UART0 TX; PortA15->UART0 RX */ #define MFP_UART0_TO_PORTA() (GCR->PA_H_MFP = GCR->PA_H_MFP &~(PA15_MFP_MASK|PA14_MFP_MASK) | (PA15_MFP_UART0_TX|PA14_MFP_UART0_RX)) /*!UART1 TX; PortA2->UART1 RX */ #define MFP_UART1_TO_PORTA() (GCR->PA_L_MFP = GCR->PA_L_MFP &~(PA3_MFP_MASK|PA2_MFP_MASK)|(PA2_MFP_UART1_TX|PA3_MFP_UART1_RX)) /*!UART0 RX; PortB1->UART0 TX */ #define MFP_UART0_TO_PORTB() (GCR->PB_L_MFP = GCR->PB_L_MFP &~(PB0_MFP_MASK|PB1_MFP_MASK)|(PB0_MFP_UART0_RX|PB1_MFP_UART0_TX)) /*!UART0 RX; PortB1->UART0 TX; PortB2->RTS; PortB3->CTS */ #define MFP_FULL_UART0_TO_PORTB() (GCR->PB_L_MFP = GCR->PB_L_MFP &~0x0000ffff|0x00001111) /*!UART1 RX; PortB5->UART1 TX */ #define MFP_UART1_TO_PORTB() (GCR->PB_L_MFP = GCR->PB_L_MFP &~(PB4_MFP_MASK|PB5_MFP_MASK)|(PB4_MFP_UART1_RX|PB5_MFP_UART1_TX)) /*!UART0 RX; PortB5->UART0 TX; PortB6->RTS; PortB7->CTS */ #define MFP_FULL_UART1_TO_PORTB() (GCR->PB_L_MFP = GCR->PB_L_MFP &~0xffff0000|0x11110000) /*!Enable 8-BIT EBI: PA6~7->AD7~6, PA10->nWE, PA11->nRE, PB6->ALE, PB7->nCS, PB12~13->AD0~1, PC6~7->AD4~5, PC14~15->AD2~3, PC8->XCLK */ #define MFP_8BIT_EBI() { \ GCR->PA_L_MFP = GCR->PA_L_MFP &~(PA6_MFP_MASK|PA7_MFP_MASK)|(PA6_MFP_EBI_AD7|PA7_MFP_EBI_AD6); \ GCR->PA_H_MFP = GCR->PA_H_MFP &~(PA10_MFP_MASK|PA11_MFP_MASK)|(PA10_MFP_EBI_NWE|PA11_MFP_EBI_NRE); \ GCR->PB_L_MFP = GCR->PB_L_MFP &~(PB6_MFP_MASK|PB7_MFP_MASK)|(PB6_MFP_EBI_ALE|PB7_MFP_EBI_NCS); \ GCR->PB_H_MFP = GCR->PB_H_MFP &~(PB12_MFP_MASK|PB13_MFP_MASK)|(PB12_MFP_EBI_AD0|PB13_MFP_EBI_AD1); \ GCR->PC_L_MFP = GCR->PC_L_MFP &~(PC6_MFP_MASK|PC7_MFP_MASK)|(PC6_MFP_EBI_AD4|PC7_MFP_EBI_AD5); \ GCR->PC_H_MFP = GCR->PC_H_MFP &~0xff00000f|0x22000002; \ } /*!Enable 16-BIT EBI: PA6~7->AD7~6, PA10->nWE, PA11->nRE, PB6->ALE, PB7->nCS, PB12~13->AD0~1, PC6~7->AD4~5, PC14~15->AD2~3, PC8->XCLK PA1~5->AD12~8, PA12~14->AD13~15, PB2->nWRL, PB3->nWRH */ #define MFP_16BIT_EBI() { \ GCR->PA_L_MFP = GCR->PA_L_MFP &~0xfffffff0|0x22222220; \ GCR->PA_H_MFP = GCR->PA_H_MFP &~0x0fffff00|0x02222200; \ GCR->PB_L_MFP = GCR->PB_L_MFP &~0xff00ff00|0x22002200; \ GCR->PB_H_MFP = GCR->PB_H_MFP &~(PB12_MFP_MASK|PB13_MFP_MASK)|(PB12_MFP_EBI_AD0|PB13_MFP_EBI_AD1); \ GCR->PC_L_MFP = GCR->PC_L_MFP &~(PC6_MFP_MASK|PC7_MFP_MASK)|(PC6_MFP_EBI_AD4|PC7_MFP_EBI_AD5); \ GCR->PC_H_MFP = GCR->PC_H_MFP &~0xff00000f|0x22000002; \ } /*!CLK, PA9->DAT, PA10->PWR, PA11->RST, PB4->Card Detection */ #define MFP_SC0_TO_PORTA() { \ GCR->PA_H_MFP = GCR->PA_H_MFP &~0x0000ffff|0x00003333; \ GCR->PB_L_MFP = GCR->PB_L_MFP &~PB4_MFP_MASK|PB4_MFP_SC0_CD; \ } /*!CLK, PC1->DAT, PC2->PWR, PC3->RST, PC6->Card Detection */ #define MFP_SC1_TO_PORTC() (GCR->PC_L_MFP = GCR->PC_L_MFP &~0x0f00ffff|0x04004444) /*!CLK, PD1->DAT, PD2->PWR, PD3->RST, PD4->Card Detection */ #define MFP_SC1_TO_PORTD() (GCR->PD_L_MFP = GCR->PD_L_MFP &~0x000fffff|0x00044444) /*!Card Detection, PA4->PWR, PA5->RST, PA6->CLK, PA7->DAT */ #define MFP_SC2_TO_PORTA() (GCR->PA_L_MFP = GCR->PA_L_MFP &~0xffff000f|0x44440004) /*!PWR, PB9->RST, PB10->CLK, PB11->DAT, PB14->Card Detection */ #define MFP_SC2_TO_PORTB() (GCR->PB_H_MFP = GCR->PB_H_MFP &~0x0f00ffff|0x04004444) /*!mclk; GPC0->ws, GPC1->bclk, GPC2->din, GPC3->dout */ #define MFP_I2S_TO_PORTC() { \ GCR->PA_H_MFP = GCR->PA_H_MFP &~PA15_MFP_MASK|PA15_MFP_I2S_MCLK; \ GCR->PC_L_MFP = GCR->PC_L_MFP &~0x0000ffff|0x00002222; \ } /*!mclk; GPD2->ws, GPD3->bclk, GPD4->din, GPD5->dout */ #define MFP_I2S_TO_PORTD() { \ GCR->PE_L_MFP = GCR->PE_L_MFP &~PE0_MFP_MASK|PE0_MFP_I2S_MCLK; \ GCR->PD_L_MFP = GCR->PD_L_MFP & ~0x00ffff00|0x00222200; \ } /*!EXT0 */ #define MFP_EXT_INT0_TO_PB14() (GCR->PB_H_MFP = GCR->PB_H_MFP & ~PB14_MFP_MASK | PB14_MFP_EXT_INT0) /*!EXT0 */ #define MFP_EXT_INT0_TO_PB9() (GCR->PB_H_MFP = GCR->PB_H_MFP & ~PB9_MFP_MASK | PB9_MFP_EXT_INT0) /*!EXT0 */ #define MFP_EXT_INT0_TO_PB8() (GCR->PB_H_MFP = GCR->PB_H_MFP & ~PB8_MFP_MASK | PB8_MFP_EXT_INT0) /*!EXT0 */ #define MFP_EXT_INT0_TO_PC12() (GCR->PC_H_MFP = GCR->PC_H_MFP & ~PC12_MFP_MASK | PC12_MFP_EXT_INT0) /*!EXT0 */ #define MFP_EXT_INT0_TO_PF0() (GCR->PF_L_MFP = GCR->PF_L_MFP & ~PF0_MFP_MASK | PF0_MFP_EXT_INT0) /*!EXT1 */ #define MFP_EXT_INT1_TO_PB15() (GCR->PB_H_MFP = GCR->PB_H_MFP & ~PB15_MFP_MASK | PB15_MFP_EXT_INT1) /*!EXT1 */ #define MFP_EXT_INT1_TO_PC13() (GCR->PC_H_MFP = GCR->PC_H_MFP & ~PC13_MFP_MASK | PC13_MFP_EXT_INT1) /*!EXT1 */ #define MFP_EXT_INT1_TO_PF1() (GCR->PF_L_MFP = GCR->PF_L_MFP & ~PF1_MFP_MASK | PF1_MFP_EXT_INT1) /*!SS1, GPC0->SS0; GPC1->CLK, GPC2->MISO0, GPC3->MOSI0, GPC4->MISO1, GPC5->MOSI1 */ #define MFP_SPI0_TO_PORTC1(){ \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB10_MFP_MASK|PB10_MFP_SPI0_SS1; \ GCR->PC_L_MFP = GCR->PC_L_MFP & ~0x00ffffff|0x00111111; \ } /*!MOSI0, GPB11->MISO0, GPC0->SS0; GPC1->CLK, GPC4->MISO1, GPC5->MOSI1, NO SS1 */ #define MFP_SPI0_TO_PORTC2(){ \ GCR->PB_H_MFP = GCR->PB_H_MFP &~(PB10_MFP_MASK|PB11_MFP_MASK)|(PB10_MFP_SPI0_MOSI0|PB11_MFP_SPI0_MISO0); \ GCR->PC_L_MFP = GCR->PC_L_MFP & ~0x00ff00ff|0x00110011; \ } /*!SS1, GPE1->SS0; GPE2->CLK, GPE3->MISO0, GPE4->MOSI0, GPC4->MISO1, GPC5->MOSI1 */ #define MFP_SPI0_TO_PORTE() { \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB10_MFP_MASK|PB10_MFP_SPI0_SS1; \ GCR->PC_L_MFP = GCR->PC_L_MFP & ~0x00ff0000|0x00110000; \ GCR->PE_L_MFP = GCR->PE_L_MFP & ~0x000ffff0|0x00066660; \ } /*!MOSI0, GPB1->MISO0; GPB2->CLK, GPB3->SS0, GPB9->SS1, GPC12->MISO1, GPC13->MOSI1 */ #define MFP_SPI1_TO_PORTB() { \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB9_MFP_MASK|PB9_MFP_SPI1_SS1; \ GCR->PB_L_MFP = GCR->PB_L_MFP & ~0x0000ffff|0x00003333; \ GCR->PC_H_MFP = GCR->PC_H_MFP & ~0x00ff0000|0x00110000; \ } /*!SS1, GPC8->SS0; GPC9->CLK, GPC10->MISO0, GPC11->MOSI0, GPC12->MISO1, GPC13->MOSI1 */ #define MFP_SPI1_TO_PORTC() { \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB9_MFP_MASK|PB9_MFP_SPI1_SS1; \ GCR->PC_H_MFP = GCR->PC_L_MFP & ~0x00ffffff|0x00111111; \ } /*!CLK, GPA8->SS0, GPA10->MISO0, GPA11->MOSI0, GPD4->MISO1, GPD5->MOSI1, GPB14->SS1 */ #define MFP_SPI2_TO_PORTA() { \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB14_MFP_MASK|PB14_MFP_SPI2_SS1; \ GCR->PD_L_MFP = GCR->PD_L_MFP & ~0x00ff0000|0x00330000; \ GCR->PA_H_MFP = GCR->PA_H_MFP & ~0x0000ffff|0x00004444; \ } /*!CLK, GPB4->SS0, GPB6->MISO0, GPB7->MOSI0, GPD4->MISO1, GPD5->MOSI1, GPB14->SS1 */ #define MFP_SPI2_TO_PORTB() { \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB14_MFP_MASK|PB14_MFP_SPI2_SS1; \ GCR->PD_L_MFP = GCR->PD_L_MFP & ~0x00ff0000|0x00330000; \ GCR->PB_L_MFP = GCR->PB_L_MFP & ~0xffff0000|0x44440000; \ } /*!CLK, GPD0->SS0, GPD2->MISO0, GPD3->MOSI0, GPD4->MISO1, GPD5->MOSI1, GPB14->SS1 */ #define MFP_SPI2_TO_PORTD() { \ GCR->PB_H_MFP = GCR->PB_H_MFP &~PB14_MFP_MASK|PB14_MFP_SPI2_SS1; \ GCR->PD_L_MFP = GCR->PD_L_MFP & ~0x00ffffff|0x00333333; \ } /*!PA_L_MFP |= 0x77770000; /* seg 36 ~ 39 */\ GCR->PA_H_MFP |= 0x7777; /* seg 20 ~ 23 */\ GCR->PB_L_MFP = 0x77777777; /* seg 10 ~ 13, 4 ~ 7 */\ GCR->PB_H_MFP = 0x77777777; /* LCD V1 ~ V3, seg 30 ~ 31, 24 ~ 26 */\ GCR->PC_L_MFP |= 0x777777; /* LCD COM3 ~ COM0, DH1/DH2 */\ GCR->PC_H_MFP |= 0x77000000; /* seg 32 ~ 33 */\ GCR->PD_L_MFP |= 0x77770000; /* seg 2 ~ 3, 34 ~ 35 */\ GCR->PD_H_MFP = 0x77777777; /* seg 0 ~ 1, 14 ~ 19 */\ GCR->PE_L_MFP |= 0x70000000; /* seg 8 */\ GCR->PE_H_MFP |= 0x77700007; /* seg 9, 27 ~ 29 */\ GPIOB->OFFD |= 0xE000000; /* V1, V2 and V3 */\ GPIOC->OFFD |= 0x30000; /* DH1 and DH2 */\ GPIOC->OFFD |= 0x3C0000; /* COM0~3 */\ GPIOA->OFFD |= 0x0FF00000; /* SEG0~39 */\ GPIOB->OFFD |= 0xF1FF0000;\ GPIOC->OFFD |= 0xC0000000;\ GPIOD->OFFD |= 0xFFF00000;\ GPIOE->OFFD |= 0xE1800000;\ } /*!PA_L_MFP |= 0x77777700; /* seg 18 ~ 23 */\ GCR->PA_H_MFP = 0x77777777; /* seg 6 ~ 9, 24 ~ 27 */\ GCR->PB_L_MFP = 0x77777777; /* COM2, COM3, seg 0 ~ 5 */\ GCR->PB_H_MFP = 0x77777777; /* LCD V1 ~ V3, seg 10 ~ 14 */\ GCR->PC_L_MFP |= 0x70007777; /* LCD COM1 ~ COM0, DH1/DH2, seg 17 */\ GCR->PC_H_MFP |= 0x77007777; /* seg 28 ~ 31, 15 ~ 16 */\ GPIOB->OFFD |= 0xE000000; /* V1, V2 and V3 */\ GPIOC->OFFD |= 0x30000; /* DH1 and DH2 */\ GPIOC->OFFD |= 0xC0000; /* COM0~3 */\ GPIOB->OFFD |= 0xC0000;\ GPIOA->OFFD |= 0xFFFC0000; /* SEG0~39 */\ GPIOB->OFFD |= 0xF1F30000;\ GPIOC->OFFD |= 0xCF800000;\ } /*@}*/ /* end of group NANO1xx_Exported_Macros */ /******************************************************************************/ /* Legacy Constants */ /******************************************************************************/ /** @addtogroup NANO1xx_legacy_Constants NANO1xx Legacy Constants NANO1xx Legacy Constants @{ */ typedef volatile unsigned char vu8; typedef volatile unsigned long vu32; typedef volatile unsigned short vu16; #define M8(adr) (*((vu8 *) (adr))) #define M16(adr) (*((vu16 *) (adr))) #define M32(adr) (*((vu32 *) (adr))) #define outpw(port,value) *((volatile unsigned int *)(port))=value #define inpw(port) (*((volatile unsigned int *)(port))) #define outpb(port,value) *((volatile unsigned char *)(port))=value #define inpb(port) (*((volatile unsigned char *)(port))) #define outps(port,value) *((volatile unsigned short *)(port))=value #define inps(port) (*((volatile unsigned short *)(port))) #define outp32(port,value) *((volatile unsigned int *)(port))=value #define inp32(port) (*((volatile unsigned int *)(port))) #define outp8(port,value) *((volatile unsigned char *)(port))=value #define inp8(port) (*((volatile unsigned char *)(port))) #define outp16(port,value) *((volatile unsigned short *)(port))=value #define inp16(port) (*((volatile unsigned short *)(port))) #ifndef E_SUCCESS #define E_SUCCESS (0) #endif #ifndef NULL #define NULL (0) #endif #define TRUE (1) #define FALSE (0) #define ENABLE (1) #define DISABLE (0) /* Define one bit mask */ #define BIT0 (0x00000001) #define BIT1 (0x00000002) #define BIT2 (0x00000004) #define BIT3 (0x00000008) #define BIT4 (0x00000010) #define BIT5 (0x00000020) #define BIT6 (0x00000040) #define BIT7 (0x00000080) #define BIT8 (0x00000100) #define BIT9 (0x00000200) #define BIT10 (0x00000400) #define BIT11 (0x00000800) #define BIT12 (0x00001000) #define BIT13 (0x00002000) #define BIT14 (0x00004000) #define BIT15 (0x00008000) #define BIT16 (0x00010000) #define BIT17 (0x00020000) #define BIT18 (0x00040000) #define BIT19 (0x00080000) #define BIT20 (0x00100000) #define BIT21 (0x00200000) #define BIT22 (0x00400000) #define BIT23 (0x00800000) #define BIT24 (0x01000000) #define BIT25 (0x02000000) #define BIT26 (0x04000000) #define BIT27 (0x08000000) #define BIT28 (0x10000000) #define BIT29 (0x20000000) #define BIT30 (0x40000000) #define BIT31 (0x80000000) /*@}*/ /* end of group NANO1xx_legacy_Constants */ /*@}*/ /* end of group NANO1xx_Definitions */ #ifdef __cplusplus } #endif #endif /* __NANO1xx_H */ /*** (C) COPYRIGHT 2012 Nuvoton Technology Corp. ***/