rtt-f030/bsp/nuc140/CMSIS/CM0/NUC1xx.h

2030 lines
50 KiB
C

/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright (c) Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
#ifndef __NUC1xx_H__
#define __NUC1xx_H__
/*
* ==========================================================================
* ---------- 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 */
/****** ARMIKMCU Swift specific Interrupt Numbers ************************************************/
BOD_IRQn = 0,
WDT_IRQn = 1,
EINT0_IRQn = 2,
EINT1_IRQn = 3,
GPAB_IRQn = 4,
GPCDE_IRQn = 5,
PWMA_IRQn = 6,
PWMB_IRQn = 7,
TMR0_IRQn = 8,
TMR1_IRQn = 9,
TMR2_IRQn = 10,
TMR3_IRQn = 11,
UART0_IRQn = 12,
UART1_IRQn = 13,
SPI0_IRQn = 14,
SPI1_IRQn = 15,
SPI2_IRQn = 16,
SPI3_IRQn = 17,
I2C0_IRQn = 18,
I2C1_IRQn = 19,
CAN0_IRQn = 20,
CAN1_IRQn = 21,
SD_IRQn = 22,
USBD_IRQn = 23,
PS2_IRQn = 24,
ACMP_IRQn = 25,
PDMA_IRQn = 26,
I2S_IRQn = 27,
PWRWU_IRQn = 28,
ADC_IRQn = 29,
DAC_IRQn = 30,
RTC_IRQn = 31
/*!< maximum of 32 Interrupts are possible */
} IRQn_Type;
/*
* ==========================================================================
* ----------- Processor and Core Peripheral Section ------------------------
* ==========================================================================
*/
/* Configuration of the Cortex-M0 Processor and Core Peripherals */
#define __MPU_PRESENT 0 /*!< armikcmu does not provide a MPU present or not */
#define __NVIC_PRIO_BITS 2 /*!< armikcmu Supports 2 Bits for the Priority Levels */
#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
#include "core_cm0.h" /* Cortex-M0 processor and core peripherals */
#include "system_NUC1xx.h" /* NUC1xx System */
// #include "System\SysInfra.h"
/**
* Initialize the system clock
*
* @param none
* @return none
*
* @brief Setup the microcontroller system
* Initialize the PLL and update the SystemFrequency variable
*/
extern void SystemInit (void);
/******************************************************************************/
/* Device Specific Peripheral registers structures */
/******************************************************************************/
/*--------------------- General Purpose Input and Ouptut ---------------------*/
typedef struct
{
__IO uint32_t PMD0:2;
__IO uint32_t PMD1:2;
__IO uint32_t PMD2:2;
__IO uint32_t PMD3:2;
__IO uint32_t PMD4:2;
__IO uint32_t PMD5:2;
__IO uint32_t PMD6:2;
__IO uint32_t PMD7:2;
__IO uint32_t PMD8:2;
__IO uint32_t PMD9:2;
__IO uint32_t PMD10:2;
__IO uint32_t PMD11:2;
__IO uint32_t PMD12:2;
__IO uint32_t PMD13:2;
__IO uint32_t PMD14:2;
__IO uint32_t PMD15:2;
} GPIO_PMD_T;
typedef __IO uint32_t GPIO_SCH_T;
typedef __IO uint32_t GPIO_DOUT_T;
typedef __IO uint32_t GPIO_DMASK_T;
typedef __IO uint32_t GPIO_PIN_T;
typedef __IO uint32_t GPIO_DBEN_T;
typedef __IO uint32_t GPIO_IMD_T;
typedef __IO uint32_t GPIO_IEN_T;
typedef __IO uint32_t GPIO_ISRC_T;
typedef struct
{
__IO uint32_t DBCLKSEL:4;
__IO uint32_t DBCLKSRC:1;
__IO uint32_t ICLK_ON:1;
__I uint32_t RESERVE:26;
} GPIO_DBNCECON_T;
typedef struct
{
GPIO_PMD_T PMD;
GPIO_SCH_T SCH;
GPIO_DOUT_T DOUT;
GPIO_DMASK_T DMASK;
GPIO_PIN_T PIN;
GPIO_DBEN_T DBEN;
GPIO_IMD_T IMD;
GPIO_IEN_T IEN;
GPIO_ISRC_T ISRC;
} GPIO_T;
/*------------------------- UART Interface Controller ------------------------*/
typedef __IO uint32_t UART_DATA_T;
typedef struct
{
__IO uint32_t RDA_IEN:1;
__IO uint32_t THRE_IEN:1;
__IO uint32_t RLS_IEN:1;
__IO uint32_t MS_IEN:1;
__IO uint32_t RTO_IEN:1;
__IO uint32_t BUF_ERR_IEN:1;
__IO uint32_t WAKE_IEN:1;
__I uint32_t RESERVE0:4;
__IO uint32_t TOC_EN:1; /* Time-out counter enable */
__IO uint32_t AUTO_RTS_EN:1;
__IO uint32_t AUTO_CTS_EN:1;
__IO uint32_t DMA_TX_EN:1;
__IO uint32_t DMA_RX_EN:1;
__I uint32_t RESERVE1:15;
__IO uint32_t nDEBUGACK_EN:1;
} UART_IER_T;
typedef struct
{
__I uint32_t RESERVE0:1;
__IO uint32_t RFR:1;
__IO uint32_t TFR:1;
__I uint32_t RESERVE1:1;
__IO uint32_t RFITL:4; /* Rx FIFO Interrupt Trigger Level */
__I uint32_t RESERVE2:8;
__IO uint32_t RTS_TRIG_LEVEL:4;
__I uint32_t RESERVE3:12;
} UART_FCR_T;
typedef struct
{
__IO uint32_t WLS:2; /* Word length select */
__IO uint32_t NSB:1; /* Number of STOP bit */
__IO uint32_t PBE:1; /* Parity bit enable */
__IO uint32_t EPE:1; /* Even parity enable */
__IO uint32_t SPE:1; /* Stick parity enable*/
__IO uint32_t BCB:1; /* Break control bit */
__I uint32_t RESERVE:25;
} UART_LCR_T;
typedef struct
{
__I uint32_t RESERVE0:1;
__IO uint32_t RTS_INV:1;
__I uint32_t RESERVE1:2;
__IO uint32_t LBME:1;
__I uint32_t RESERVE2:4;
__IO uint32_t RTS_ACT_LEVEL:1;
__I uint32_t RESERVE3:3;
__I uint32_t RTS:1; /* RTS status */
__I uint32_t RESERVE4:18;
} UART_MCR_T;
typedef struct
{
__IO uint32_t DCTS:1;
__I uint32_t RESERVE0:3;
__I uint32_t CTS:1; /* CTS status */
__I uint32_t RESERVE1:3;
__IO uint32_t CTS_ACT_LEVEL:1;
__I uint32_t RESERVE2:23;
} UART_MSR_T;
typedef struct
{
__IO uint32_t RX_OVERFLOW:1;
__I uint32_t RESERVE0:3;
__IO uint32_t PEI:1;
__IO uint32_t FEI:1;
__IO uint32_t BII:1;
__I uint32_t RESERVE1:1;
__I uint32_t RX_POINTER:6;
__I uint32_t RX_EMPTY:1;
__I uint32_t RX_FULL:1;
__I uint32_t TX_POINTER:6;
__I uint32_t TX_EMPTY:1;
__I uint32_t TX_FULL:1;
__IO uint32_t TX_OVERFLOW:1;
__I uint32_t RESERVE2:3;
__I uint32_t TE:1; /* Transmitter empty flag */
__I uint32_t RESERVE3:3;
} UART_FSR_T;
typedef struct
{
__IO uint32_t RDA_IF:1;
__IO uint32_t THRE_IF:1;
__IO uint32_t RLS_IF:1;
__IO uint32_t MODEM_IF:1;
__IO uint32_t TOUT_IF:1;
__IO uint32_t BUF_ERR_IF:1;
__IO uint32_t WAKE_IF:1;
__IO uint32_t SW_TX:1;
__IO uint32_t RDA_INT:1;
__IO uint32_t THRE_INT:1;
__IO uint32_t RLS_INT:1;
__IO uint32_t MODEM_INT:1;
__IO uint32_t TOUT_INT:1;
__IO uint32_t BUF_ERR_INT:1;
__IO uint32_t WAKE_INT:1;
__IO uint32_t SW_RX:1;
__I uint32_t RESERVE0:2;
__IO uint32_t HW_RLS_IF:1;
__IO uint32_t HW_MODEM_IF:1;
__IO uint32_t HW_TOUT_IF:1;
__IO uint32_t HW_BUF_ERR_IF:1;
__IO uint32_t HW_WAKE_IF:1;
__IO uint32_t EDMA_TX:1;
__I uint32_t RESERVE1:2;
__IO uint32_t HW_RLS_INT:1;
__IO uint32_t HW_MODEM_INT:1;
__IO uint32_t HW_TOUT_INT:1;
__IO uint32_t HW_BUF_ERR_INT:1;
__IO uint32_t HW_WAKE_INT:1;
__IO uint32_t EDMA_RX:1;
} UART_ISR_T;
typedef __IO uint32_t UART_TOR_T;
typedef struct
{
__IO uint32_t DIV:16;
__I uint32_t RESERVE0:8;
__IO uint32_t DIVX:4;
__IO uint32_t DIVX1:1;
__IO uint32_t DIVX_EN:1;
__I uint32_t RESERVE1:2;
} UART_BAUD_T;
typedef struct
{
__IO uint32_t IrDA_EN:1;
__I uint32_t RESERVE0:2;
__IO uint32_t RX_EN:1;
__IO uint32_t TX_EN:1;
__IO uint32_t TX_INV_EN:1;
__IO uint32_t RX_INV_EN:1;
__I uint32_t RESERVE1:25;
} UART_IRCR_T;
typedef struct
{
__IO uint32_t LINBCNT:4;
__I uint32_t RESERVE0:2;
__IO uint32_t LINRX_EN:1;
__IO uint32_t LINTX_EN:1;
__I uint32_t RESERVE1:24;
} UART_LINCON_T;
typedef struct
{
__IO uint32_t LIN_EN:2;
__IO uint32_t IrDA_EN:2;
__I uint32_t RESERVE0:32;
} UART_FUNSEL_T;
typedef struct
{
UART_DATA_T DATA;
UART_IER_T IER;
UART_FCR_T FCR;
UART_LCR_T LCR;
UART_MCR_T MCR;
UART_MSR_T MSR;
UART_FSR_T FSR;
UART_ISR_T ISR;
UART_TOR_T TOR;
UART_BAUD_T BAUD;
UART_IRCR_T IRCR;
UART_LINCON_T LINCON;
UART_FUNSEL_T FUNSEL;
} UART_T;
/*----------------------------- Timer Controller -----------------------------*/
typedef struct
{
__IO uint32_t PRESCALE:8;
__I uint32_t RESERVE0:8;
__IO uint32_t TDR_EN:1;
__I uint32_t RESERVE1:8;
__IO uint32_t CACT:1;
__IO uint32_t CRST:1;
__IO uint32_t MODE:2;
__IO uint32_t IE:1;
__IO uint32_t CEN:1;
__IO uint32_t nDBGACK_EN:1;
} TIMER_TCSR_T;
typedef __IO uint32_t TIMER_TICR_T;
typedef __IO uint32_t TIMER_TDR_T;
typedef struct
{
__IO uint32_t TIF:1;
__I uint32_t RESERVE:31;
} TIMER_TISR_T;
typedef struct
{
TIMER_TCSR_T TCSR;
TIMER_TICR_T TICR;
TIMER_TISR_T TISR;
TIMER_TDR_T TDR;
} TIMER_T;
/*----------------------------- WDT Controller -----------------------------*/
typedef struct
{
__IO uint32_t WTR:1;
__IO uint32_t WTRE:1;
__IO uint32_t WTRF:1;
__IO uint32_t WTIF:1;
__I uint32_t RESERVE:2;
__IO uint32_t WTIE:1;
__IO uint32_t WTE:1;
__IO uint32_t WTIS:3;
__I uint32_t RESERVE1:21;
} WDT_WTCR_T;
typedef struct
{
WDT_WTCR_T WTCR;
} WDT_T;
/*------------------------- SPI Interface Controller -------------------------*/
typedef struct
{
__IO uint32_t GO_BUSY:1;
__IO uint32_t RX_NEG:1;
__IO uint32_t TX_NEG:1;
__IO uint32_t TX_BIT_LEN:5;
__IO uint32_t TX_NUM:2;
__IO uint32_t LSB:1;
__IO uint32_t CLKP:1;
__IO uint32_t SLEEP:4;
__IO uint32_t IF:1;
__IO uint32_t IE:1;
__IO uint32_t SLAVE:1;
__IO uint32_t BYTE_SLEEP:1;
__IO uint32_t BYTE_ENDIAN:1;
__IO uint32_t FOURB:1;
__IO uint32_t TWOB:1;
__IO uint32_t VARCLK_EN:1;
__I uint32_t RESERVE:8;
} SPI_CNTRL_T;
typedef struct
{
__IO uint32_t DIVIDER:16;
__IO uint32_t DIVIDER2:16;
} SPI_DIVIDER_T;
typedef struct
{
__IO uint32_t SSR:2;
__IO uint32_t SS_LVL:1;
__IO uint32_t ASS:1;
__IO uint32_t SS_LTRIG:1;
__IO uint32_t LTRIG_FLAG:1;
__I uint32_t RESERVE:26;
} SPI_SSR_T;
typedef __I uint32_t SPI_RX_T;
typedef __O uint32_t SPI_TX_T;
typedef struct
{
__IO uint32_t JS:1;
__I uint32_t RESERVE0:3;
__IO uint32_t JS_RW:1;
__IO uint32_t CS_ACT:1;
__IO uint32_t DATA_RDY:1;
__IO uint32_t CS_DEACT:1;
__IO uint32_t READYB:1;
__I uint32_t RESERVE1:23;
} SPI_JS_T;
typedef __IO uint32_t SPI_VARCLK_T;
typedef struct
{
__IO uint32_t TX_DMA_GO:1;
__IO uint32_t RX_DMA_GO:1;
__I uint32_t RESERVE:30;
} SPI_DMA_T;
typedef struct
{
SPI_CNTRL_T CNTRL;
SPI_DIVIDER_T DIVIDER;
SPI_SSR_T SSR;
uint32_t RESERVE0;
SPI_RX_T RX[2];
uint32_t RESERVE1;
uint32_t RESERVE2;
SPI_TX_T TX[2];
uint32_t RESERVE3;
uint32_t RESERVE4;
SPI_JS_T JS;
SPI_VARCLK_T VARCLK;
SPI_DMA_T DMA;
} SPI_T;
/*------------------------------ I2C Controller ------------------------------*/
typedef struct
{
__I uint32_t RESERVE0:2;
__IO uint32_t AA:1;
__IO uint32_t SI:1;
__IO uint32_t STO:1;
__IO uint32_t STA:1;
__IO uint32_t ENSI:1;
__IO uint32_t EI:1;
__I uint32_t RESERVE1:24;
} I2C_CON_T;
typedef struct
{
__IO uint32_t GC:1;
__IO uint32_t ADDR:7;
__I uint32_t RESERVE:24;
} I2C_ADDR_T;
typedef __IO uint32_t I2C_DATA_T;
typedef __I uint32_t I2C_STATUS_T;
typedef __IO uint32_t I2C_CLK_T;
typedef struct
{
__IO uint32_t TIF:1;
__IO uint32_t DIV4:1;
__IO uint32_t ENTI:1;
__I uint32_t RESERVE:29;
} I2C_TOC_T;
typedef struct
{
__I uint32_t RESERVE0:1;
__IO uint32_t ADM:7;
__I uint32_t RESERVE1:24;
} I2C_ADRM_T;
typedef struct
{
I2C_CON_T CON;
I2C_ADDR_T ADDR0;
I2C_DATA_T DATA;
I2C_STATUS_T STATUS;
I2C_CLK_T CLK;
I2C_TOC_T TOC;
I2C_ADDR_T ADDR1;
I2C_ADDR_T ADDR2;
I2C_ADDR_T ADDR3;
I2C_ADRM_T ADRM0;
I2C_ADRM_T ADRM1;
I2C_ADRM_T ADRM2;
I2C_ADRM_T ADRM3;
} I2C_T;
/*----------------------------- RTC Controller -------------------------------*/
typedef __IO uint32_t RTC_INIR_T;
typedef struct
{
__IO uint32_t AER:16;
__I uint32_t ENF:1;
__I uint32_t RESERVE1:15;
} RTC_AER_T;
typedef struct
{
__IO uint32_t FRACTION:6;
__I uint32_t RESERVE0:2;
__IO uint32_t INTEGER:4;
__I uint32_t RESERVE1:20;
} RTC_FCR_T;
typedef struct
{
__IO uint32_t SEC1:4;
__IO uint32_t SEC10:3;
__I uint32_t RESERVE0:1;
__IO uint32_t MIN1:4;
__IO uint32_t MIN10:3;
__I uint32_t RESERVE1:1;
__IO uint32_t HR1:4;
__IO uint32_t HR10:2;
__I uint32_t RESERVE2:10;
} RTC_TLR_T;
typedef struct
{
__IO uint32_t DAY1:4;
__IO uint32_t DAY10:2;
__I uint32_t RESERVE0:2;
__IO uint32_t MON1:4;
__IO uint32_t MON10:1;
__I uint32_t RESERVE1:3;
__IO uint32_t YEAR1:4;
__IO uint32_t YEAR10:4;
__I uint32_t RESERVE2:8;
} RTC_CLR_T;
typedef struct
{
__IO uint32_t HR24:1;
__I uint32_t RESERVE:31;
} RTC_TSSR_T;
typedef struct
{
__IO uint32_t DWR:3;
__I uint32_t RESERVE:29;
} RTC_DWR_T;
typedef RTC_TLR_T RTC_TAR_T;
typedef RTC_CLR_T RTC_CAR_T;
typedef struct
{
__IO uint32_t LIR:1;
__I uint32_t RESERVE:31;
} RTC_LIR_T;
typedef struct
{
__IO uint32_t AIER:1;
__IO uint32_t TIER:1;
__I uint32_t RESERVE:30;
} RTC_RIER_T;
//typedef __IO uint32_t RTC_RIIR_T;
typedef struct
{
__IO uint32_t AI:1;
__IO uint32_t TI:1;
__I uint32_t RESERVE:30;
} RTC_RIIR_T;
typedef struct
{
__IO uint32_t TTR:3;
__I uint32_t RESERVE:30;
} RTC_TTR_T;
typedef struct
{
__IO uint32_t PTOUT:16;
__I uint32_t RESERVE0:7;
__IO uint32_t PWROFF:1;
__I uint32_t RESERVE1:8;
} RTC_PWRCON_T;
typedef struct
{
RTC_INIR_T INIR;
RTC_AER_T AER;
RTC_FCR_T FCR;
RTC_TLR_T TLR;
RTC_CLR_T CLR;
RTC_TSSR_T TSSR;
RTC_DWR_T DWR;
RTC_TAR_T TAR;
RTC_CAR_T CAR;
RTC_LIR_T LIR;
RTC_RIER_T RIER;
RTC_RIIR_T RIIR;
RTC_TTR_T TTR;
RTC_PWRCON_T PWRCON;
} RTC_T;
/*----------------------------- ADC Controller -------------------------------*/
typedef struct
{
__IO uint32_t RSLT:16;
__IO uint32_t OVERRUN:1;
__IO uint32_t VALID:1;
__I uint32_t RESERVE1:14;
} ADC_ADDR_T;
typedef struct
{
__IO uint32_t ADEN:1;
__IO uint32_t ADIE:1;
__IO uint32_t ADMD:2;
__IO uint32_t TRGS:2;
__IO uint32_t TRGCOND:2;
__IO uint32_t TRGEN:1;
__IO uint32_t PTEN:1;
__IO uint32_t DIFF:1;
__IO uint32_t ADST:1;
__I uint32_t RESERVE0:4;
__IO uint32_t ADCLKDIV:7;
__I uint32_t RESERVE1:9;
} ADC_ADCR_T;
typedef struct
{
__IO uint32_t CHEN:8;
__IO uint32_t PRESEL:2;
__I uint32_t RESERVE:22;
} ADC_ADCHER_T;
typedef struct
{
__IO uint32_t CMPEN:1;
__IO uint32_t CMPIE:1;
__IO uint32_t CMPCOND:1;
__IO uint32_t CMPCH:3;
__I uint32_t RESERVE0:2;
__IO uint32_t CMPMATCNT:4;
__I uint32_t RESERVE1:4;
__IO uint32_t CMPD:12;
__I uint32_t RESERVE2:4;
} ADC_ADCMPR_T;
typedef struct
{
__IO uint32_t ADF:1;
__IO uint32_t CMPF0:1;
__IO uint32_t CMPF1:1;
__IO uint32_t BUSY:1;
__IO uint32_t CHANNEL:3;
__I uint32_t RESERVE0:1;
__IO uint32_t VALID:8;
__IO uint32_t OVERRUN:8;
__I uint32_t RESERVE1:8;
} ADC_ADSR_T;
typedef struct
{
__IO uint32_t CALEN:1;
__IO uint32_t CALDONE:1;
__I uint32_t RESERVE:30;
} ADC_ADCALR_T;
typedef struct
{
ADC_ADDR_T ADDR[8];
ADC_ADCR_T ADCR;
ADC_ADCHER_T ADCHER;
ADC_ADCMPR_T ADCMPR[2];
ADC_ADSR_T ADSR;
ADC_ADCALR_T ADCALR;
} ADC_T;
/*---------------------- Analog Comparator Controller -------------------------*/
typedef struct
{
__IO uint32_t CMPEN:1;
__IO uint32_t CMPIE:1;
__IO uint32_t CMP_HYSEN:1;
__IO uint32_t CP:1;
__IO uint32_t CN:1;
__IO uint32_t COE:1;
__I uint32_t RESERVE:26;
} ACMP_CMPCR_T;
typedef struct
{
__IO uint32_t CMPF1:1;
__IO uint32_t CMPF2:1;
__IO uint32_t CO1:1;
__IO uint32_t CO2:1;
__I uint32_t RESERVE:28;
} ACMP_CMPSR_T;
typedef struct
{
ACMP_CMPCR_T CMPCR[2];
ACMP_CMPSR_T CMPSR;
} ACMP_T;
/*---------------------------- Clock Controller ------------------------------*/
typedef struct
{
__IO uint32_t XTL12M_EN:1;
__IO uint32_t XTL32K_EN:1;
__IO uint32_t OSC22M_EN:1;
__IO uint32_t OSC10K_EN:1;
__IO uint32_t WU_DLY:1;
__IO uint32_t WINT_EN:1;
__IO uint32_t PD_WU_STS:1;
__IO uint32_t PWR_DOWN:1;
__IO uint32_t PD_WAIT_CPU:1;
__I uint32_t RESERVE:23;
} SYSCLK_PWRCON_T;
typedef struct
{
__IO uint32_t CPU_EN:1;
__IO uint32_t PDMA_EN:1;
__IO uint32_t ISP_EN:1;
__I uint32_t RESERVE:29;
} SYSCLK_AHBCLK_T;
typedef struct
{
__IO uint32_t WDG_EN:1;
__IO uint32_t RTC_EN:1;
__IO uint32_t TMR0_EN:1;
__IO uint32_t TMR1_EN:1;
__IO uint32_t TMR2_EN:1;
__IO uint32_t TMR3_EN:1;
__I uint32_t RESERVE0:2;
__IO uint32_t I2C0_EN:1;
__IO uint32_t I2C1_EN:1;
__I uint32_t RESERVE1:2;
__IO uint32_t SPI0_EN:1;
__IO uint32_t SPI1_EN:1;
__IO uint32_t SPI2_EN:1;
__IO uint32_t SPI3_EN:1;
__IO uint32_t UART0_EN:1;
__IO uint32_t UART1_EN:1;
__I uint32_t RESERVE2:2;
__IO uint32_t PWM01_EN:1;
__IO uint32_t PWM23_EN:1;
__I uint32_t RESERVE3:2;
__IO uint32_t CAN0_EN:1;
__IO uint32_t CAN1_EN:1;
__I uint32_t RESERVE4:1;
__IO uint32_t USBD_EN:1;
__IO uint32_t ADC_EN:1;
__I uint32_t RESERVE5:1;
__IO uint32_t ACMP_EN:1;
__IO uint32_t PS2_EN:1;
} SYSCLK_APBCLK_T;
typedef struct
{
__IO uint32_t HCLK_S:3;
__IO uint32_t STCLK_S:3;
__I uint32_t RESERVE:26;
} SYSCLK_CLKSEL0_T;
typedef struct
{
__IO uint32_t WDG_S:2;
__IO uint32_t ADC_S:2;
__I uint32_t RESERVE1:4;
__IO uint32_t TMR0_S:3;
__I uint32_t RESERVE2:1;
__IO uint32_t TMR1_S:3;
__I uint32_t RESERVE3:1;
__IO uint32_t TMR2_S:3;
__I uint32_t RESERVE4:1;
__IO uint32_t TMR3_S:3;
__I uint32_t RESERVE5:1;
__IO uint32_t UART_S:2;
__IO uint32_t CAN_S:2;
__IO uint32_t PWM10_S:2;
__IO uint32_t PWM32_S:2;
} SYSCLK_CLKSEL1_T;
typedef struct
{
__IO uint32_t HCLK_N:4;
__IO uint32_t USB_N:4;
__IO uint32_t UART_N:4;
__IO uint32_t CAN_N:4;
__IO uint32_t ADC_N:8;
__I uint32_t RESERVE:8;
} SYSCLK_CLKDIV_T;
typedef struct
{
__IO uint32_t FB_DV:9;
__IO uint32_t IN_DV:5;
__IO uint32_t OUT_DV:2;
__IO uint32_t PD:1;
__IO uint32_t BP:1;
__IO uint32_t OE:1;
__IO uint32_t PLL_SRC:1;
__I uint32_t RESERVE:12;
} SYSCLK_PLLCON_T;
typedef struct
{
__IO uint32_t TEST_SEL:8;
__I uint32_t RESERVE:24;
} SYSCLK_TREG_T;
typedef struct
{
SYSCLK_PWRCON_T PWRCON;
SYSCLK_AHBCLK_T AHBCLK;
SYSCLK_APBCLK_T APBCLK;
uint32_t RESERVED0;
SYSCLK_CLKSEL0_T CLKSEL0;
SYSCLK_CLKSEL1_T CLKSEL1;
SYSCLK_CLKDIV_T CLKDIV;
uint32_t RESERVED1;
SYSCLK_PLLCON_T PLLCON;
} SYSCLK_T;
/*---------------------------- Global Controller -----------------------------*/
typedef __I uint32_t GCR_PDID_T;
typedef struct
{
__IO uint32_t RSTS_POR:1;
__IO uint32_t RSTS_PAD:1;
__IO uint32_t RSTS_WDG:1;
__IO uint32_t RSTS_LVR:1;
__IO uint32_t RSTS_BOD:1;
__IO uint32_t RSTS_MCU:1;
__IO uint32_t RSTS_PMU:1;
__I uint32_t RESERVE:25;
} GCR_RSTSRC_T;
typedef struct
{
__IO uint32_t CHIP_RST:1;
__IO uint32_t CPU_RST:1;
__IO uint32_t PDMA_RST:1;
__I uint32_t RESERVE:29;
} GCR_IPRSTC1_T;
typedef struct
{
__I uint32_t RESERVE0:1;
__IO uint32_t GPIO_RST:1;
__IO uint32_t TMR0_RST:1;
__IO uint32_t TMR1_RST:1;
__IO uint32_t TMR2_RST:1;
__IO uint32_t TMR3_RST:1;
__I uint32_t RESERVE1:2;
__IO uint32_t I2C0_RST:1;
__IO uint32_t I2C1_RST:1;
__I uint32_t RESERVE2:2;
__IO uint32_t SPI0_RST:1;
__IO uint32_t SPI1_RST:1;
__IO uint32_t SPI2_RST:1;
__IO uint32_t SPI3_RST:1;
__IO uint32_t UART0_RST:1;
__IO uint32_t UART1_RST:1;
__I uint32_t RESERVE3:2;
__IO uint32_t PWM_RST:1;
__I uint32_t RESERVE4:1;
__IO uint32_t ACMP_RST:1;
__IO uint32_t PS2_RST:1;
__IO uint32_t CAN0_RST:1;
__IO uint32_t CAN1_RST:1;
__I uint32_t RESERVE5:1;
__IO uint32_t USBD_RST:1;
__IO uint32_t ADC_RST:1;
__I uint32_t RESERVE6:3;
} GCR_IPRSTC2_T;
typedef __IO uint32_t GCR_MISCR_T;
typedef struct
{
__IO uint32_t BOD_EN:1;
__IO uint32_t BOD_VL:2;
__IO uint32_t BOD_RSTEN:1;
__IO uint32_t BOD_BYP_EN:1;
__IO uint32_t BOD_LPM:1;
__IO uint32_t BOD_OUT:1;
__IO uint32_t LVR_EN:1;
__IO uint32_t VTEMP_EN:1;
__IO uint32_t LDO_BYP:1;
__I uint32_t RESERVE1:22;
} GCR_BODCR_T;
typedef __IO uint32_t GCR_PORCR_T;
typedef struct
{
__IO uint32_t ADC0:1;
__IO uint32_t ADC1:1;
__IO uint32_t ADC2:1;
__IO uint32_t ADC3:1;
__IO uint32_t ADC4:1;
__IO uint32_t ADC5:1;
__IO uint32_t ADC6:1;
__IO uint32_t ADC7:1;
__IO uint32_t I2C0_SDA:1;
__IO uint32_t I2C0_SCL:1;
__IO uint32_t I2C1_SDA:1;
__IO uint32_t I2C1_SCL:1;
__IO uint32_t PWM0:1;
__IO uint32_t PWM1:1;
__IO uint32_t PWM2:1;
__IO uint32_t PWM3:1;
__IO uint32_t SCHMITT:16;
} GCR_GPAMFP_T;
typedef struct
{
__IO uint32_t UART0_RX:1;
__IO uint32_t UART0_TX:1;
__IO uint32_t UART0_nRTS:1;
__IO uint32_t UART0_nCTS:1;
__IO uint32_t UART1_RX:1;
__IO uint32_t UART1_TX:1;
__IO uint32_t UART1_nRTS:1;
__IO uint32_t UART1_nCTS:1;
__IO uint32_t TM0:1;
__IO uint32_t TM1:1;
__IO uint32_t TM2:1;
__IO uint32_t TM3:1;
__IO uint32_t CPO0:1;
__IO uint32_t CPO1:1;
__IO uint32_t INT0:1;
__IO uint32_t INT1:1;
__IO uint32_t SCHMITT:16;
} GCR_GPBMFP_T;
typedef struct
{
__IO uint32_t SPI0_SS0:1;
__IO uint32_t SPI0_CLK:1;
__IO uint32_t SPI0_MISO0:1;
__IO uint32_t SPI0_MOSI0:1;
__IO uint32_t SPI0_MISO1:1;
__IO uint32_t SPI0_MOSI1:1;
__IO uint32_t CPP0:1;
__IO uint32_t CPN0:1;
__IO uint32_t SPI1_SS0:1;
__IO uint32_t SPI1_CLK:1;
__IO uint32_t SPI1_MISO0:1;
__IO uint32_t SPI1_MOSI0:1;
__IO uint32_t SPI1_MISO1:1;
__IO uint32_t SPI1_MOSI1:1;
__IO uint32_t CPP1:1;
__IO uint32_t CPN1:1;
__IO uint32_t SCHMITT:16;
} GCR_GPCMFP_T;
typedef struct
{
__IO uint32_t SPI2_SS0:1;
__IO uint32_t SPI2_CLK:1;
__IO uint32_t SPI2_MISO0:1;
__IO uint32_t SPI2_MOSI0:1;
__IO uint32_t SPI2_MISO1:1;
__IO uint32_t SPI2_MOSI1:1;
__IO uint32_t CAN0_RX:1;
__IO uint32_t CAN0_TX:1;
__IO uint32_t SPI3_SS0:1;
__IO uint32_t SPI3_CLK:1;
__IO uint32_t SPI3_MISO0:1;
__IO uint32_t SPI3_MOSI0:1;
__IO uint32_t SPI3_MISO1:1;
__IO uint32_t SPI3_MOSI1:1;
__IO uint32_t CAN1_RX:1;
__IO uint32_t CAN1_TX:1;
__IO uint32_t SCHMITT:16;
} GCR_GPDMFP_T;
typedef struct
{
__I uint32_t RESERVE:16;
__IO uint32_t SCHMITT:16;
} GCR_GPEMFP_T;
typedef struct
{
__IO uint32_t SPI0_SS1:1; /* GPB10 */
__IO uint32_t SPI1_SS1:1; /* GPB9 */
__IO uint32_t SPI2_SS1:1; /* GPA7 */
__IO uint32_t SPI3_SS1:1; /* GPB14 */
__I uint32_t RESERVE:28;
} GCR_USPIMFP_T;
typedef __IO uint32_t GCR_REGLOCK_T;
typedef __IO uint32_t GCR_RCADJ_T;
typedef struct
{
__IO uint32_t INTSRC:3;
__I uint32_t RESERVE:29;
} GCR_INTSRC_T;
typedef struct
{
__IO uint32_t NMISEL:5;
__I uint32_t RESERVE0:2;
__IO uint32_t INT_TEST:1;
__I uint32_t RESERVE1:24;
} GCR_NMISEL_T;
typedef __IO uint32_t GCR_MCUIRQ_T;
typedef struct
{
GCR_PDID_T PDID;
GCR_RSTSRC_T RSTSRC;
GCR_IPRSTC1_T IPRSTC1;
GCR_IPRSTC2_T IPRSTC2;
uint32_t RESERVE0;
GCR_MISCR_T MISCR;
GCR_BODCR_T BODCR;
GCR_PORCR_T PORCR;
uint32_t RESERVE1[4];
GCR_GPAMFP_T GPAMFP;
GCR_GPBMFP_T GPBMFP;
GCR_GPCMFP_T GPCMFP;
GCR_GPDMFP_T GPDMFP;
GCR_GPEMFP_T GPEMFP;
uint32_t RESERVE2[3];
GCR_USPIMFP_T USPIMFP;
uint32_t RESERVE3[43];
GCR_REGLOCK_T REGLOCK;
uint32_t RESERVE4[3];
GCR_RCADJ_T RCADJ;
} GCR_T;
typedef struct
{
GCR_INTSRC_T INTSRC;
GCR_NMISEL_T NMISEL;
GCR_MCUIRQ_T MCUIRQ;
} GCR_INT_T;
/*-------------------------- FLASH Memory Controller -------------------------*/
typedef struct
{
__IO uint32_t ISPEN:1;
__IO uint32_t BS:1;
__I uint32_t RESERVE0:3;
__IO uint32_t LDUEN:1;
__IO uint32_t ISPFF:1;
__IO uint32_t SWRST:1;
__IO uint32_t PT:3;
__I uint32_t RESERVE1:1;
__IO uint32_t ET:3;
__I uint32_t RESERVE2:17;
} FMC_ISPCON_T;
typedef __IO uint32_t FMC_ISPADR_T;
typedef __IO uint32_t FMC_ISPDAT_T;
typedef struct
{
__IO uint32_t FCTRL:4;
__IO uint32_t FCEN:1;
__IO uint32_t FOEN:1;
__I uint32_t RESERVE:26;
} FMC_ISPCMD_T;
typedef struct
{
__IO uint32_t ISPGO:1;
__I uint32_t RESERVE:31;
} FMC_ISPTRG_T;
typedef __I uint32_t FMC_DFBADR_T;
typedef struct
{
__IO uint32_t FPSEN:1;
__IO uint32_t FATS:3;
__I uint32_t RESERVE:28;
} FMC_FATCON_T;
typedef struct
{
FMC_ISPCON_T ISPCON;
FMC_ISPADR_T ISPADR;
FMC_ISPDAT_T ISPDAT;
FMC_ISPCMD_T ISPCMD;
FMC_ISPTRG_T ISPTRG;
FMC_DFBADR_T DFBADR;
FMC_FATCON_T FATCON;
} FMC_T;
/*------------------------ PS2 Device Interface Controller -------------------*/
typedef struct
{
__IO uint32_t PS2EN:1;
__IO uint32_t TXINTEN:1;
__IO uint32_t RXINTEN:1;
__IO uint32_t TXFIFO_DEPTH:4;
__IO uint32_t ACK:1;
__IO uint32_t CLRFIFO:1;
__IO uint32_t OVERRIDE:1;
__IO uint32_t FPS2CLK:1;
__IO uint32_t FPS2DAT:1;
__I uint32_t RESERVE:20;
} PS2_CON_T;
typedef __IO uint32_t PS2_DATA_T;
typedef struct
{
__IO uint32_t PS2CLK:1;
__IO uint32_t PS2DATA:1;
__IO uint32_t FRAMERR:1;
__IO uint32_t RXPARTY:1;
__IO uint32_t RXBUSY:1;
__IO uint32_t TXBUSY:1;
__IO uint32_t RXOVF:1;
__IO uint32_t TXEMPTY:1;
__IO uint32_t BYTEIDX:4;
__I uint32_t RESERVE:20;
} PS2_STATUS_T;
typedef __IO uint32_t PS2_INTID_T;
typedef struct
{
PS2_CON_T PS2CON;
PS2_DATA_T TXDATA[4];
PS2_DATA_T RXDATA;
PS2_STATUS_T STATUS;
PS2_INTID_T INTID;
} PS2_T;
/*---------------------------- CAN Bus Controller ----------------------------*/
typedef struct
{
__IO uint32_t RSTM:1;
__IO uint32_t LOM:1;
__I uint32_t RESERVE:30;
} CAN_OPMODE_T;
typedef struct
{
__IO uint32_t TR:1;
__IO uint32_t ABRT:1;
__I uint32_t RESERVE2:3;
__IO uint32_t OVERFLOAD_EN:1;
__IO uint32_t WAKEUP_EN:1;
__IO uint32_t CAN_EN:1;
__I uint32_t RESERVE:24;
} CAN_CMD_T;
typedef struct
{
__I uint32_t RESERVE0:3;
__IO uint32_t TCS:1;
__IO uint32_t RS:1;
__IO uint32_t TS:1;
__IO uint32_t BS:1;
__IO uint32_t BS2:1;
__IO uint32_t EAS:1;
__IO uint32_t EPS:1;
__I uint32_t RESERVE1:22;
} CAN_BSR_T;
typedef struct
{
__IO uint32_t RI:1;
__IO uint32_t TI:1;
__I uint32_t RESERVE0:2;
__IO uint32_t WUI:1;
__I uint32_t RESERVE1:1;
__IO uint32_t ALI:1;
__IO uint32_t BEI:1;
__I uint32_t RESERVE2:24;
} CAN_INTR_T;
typedef struct
{
__IO uint32_t RIE:1;
__IO uint32_t TIE:1;
__I uint32_t RESERVE0:2;
__IO uint32_t WUIE:1;
__I uint32_t RESERVE1:1;
__IO uint32_t ALIE:1;
__IO uint32_t BEIE:1;
__I uint32_t RESERVE2:24;
} CAN_INTEN_T;
typedef struct
{
__IO uint32_t BRP:4;
__IO uint32_t SJW:2;
__IO uint32_t TSEG1:5;
__IO uint32_t TSEG2:4;
__IO uint32_t SAMP:1;
__I uint32_t RESERVE2:16;
} CAN_BTIMR_T;
typedef struct
{
__IO uint32_t BIT_ERR:4;
__IO uint32_t ACK_ERR:2;
__IO uint32_t CRC_ERR:5;
__IO uint32_t FORM_ERR:4;
__IO uint32_t STUFF_ERR:1;
__I uint32_t RESERVE:16;
} CAN_ERRCR_T;
typedef struct
{
__IO uint32_t RECNT:8;
__I uint32_t RESERVE:24;
} CAN_RECNTR_T;
typedef struct
{
__IO uint32_t TECNT:8;
__I uint32_t RESERVE:24;
} CAN_TECNTR_T;
typedef struct
{
__IO uint32_t TXDLC:6;
__IO uint32_t TXRTR:1;
__IO uint32_t TXFF:1;
__I uint32_t RESERVE:24;
} CAN_TXFINFO_T;
typedef struct
{
__I uint32_t RESERVE:3;
__IO uint32_t TXID:29;
} CAN_TXID_T;
typedef __IO uint32_t CAN_TXDATA_T;
typedef struct
{
__IO uint32_t RXDLC:4;
__I uint32_t RESERVE0:2;
__IO uint32_t RXRTR:1;
__IO uint32_t RXIDE:1;
__I uint32_t RESERVE1:24;
} CAN_RXFINFO_T;
typedef struct
{
__I uint32_t RESERVE:3;
__IO uint32_t RXID:29;
} CAN_RXID_T;
typedef __IO uint32_t CAN_RXDATA_T;
typedef struct
{
__I uint32_t RESERVE:3;
__IO uint32_t ACR:29;
} CAN_ACR_T;
typedef struct
{
__I uint32_t RESERVE:3;
__IO uint32_t AMR:29;
} CAN_AMR_T;
typedef struct
{
__I uint32_t RESERVE:32;
} CAN_RESERVE_T;
typedef struct
{
CAN_OPMODE_T OPMODE;
CAN_CMD_T CMD;
CAN_BSR_T BSR;
CAN_INTR_T INTR;
CAN_INTEN_T INTEN;
CAN_BTIMR_T BTIMR;
CAN_RESERVE_T PROTECT[2];
CAN_ERRCR_T ERRCR;
CAN_RESERVE_T PROTECT1;
CAN_RECNTR_T RECNTR;
CAN_TECNTR_T TECNTR;
CAN_TXFINFO_T TXFINFO;
CAN_TXID_T TXID;
CAN_TXDATA_T TXDATA[2];
CAN_RXFINFO_T RXFINFO;
CAN_RXID_T RXID;
CAN_RXDATA_T RX_DATA[2];
CAN_ACR_T ACR;
CAN_AMR_T AMR;
} CAN_T;
/*--------------------------- USB Device Controller --------------------------*/
typedef struct
{
__IO uint32_t BUS:1;
__IO uint32_t USB:1;
__IO uint32_t FLD:1;
__IO uint32_t WAKEUP:1;
__I uint32_t RESERVE0:4;
__IO uint32_t WAKEUP_EN:1;
__I uint32_t RESERVE1:6;
__IO uint32_t INNAK_EN:1;
__I uint32_t RESERVE2:16;
} USBD_IEF_T;
typedef struct
{
__IO uint32_t BUS:1;
__IO uint32_t USB:1;
__IO uint32_t FLD:1;
__IO uint32_t WAKEUP:1;
__I uint32_t RESERVE0:12;
__IO uint32_t EPTF:6;
__I uint32_t RESERVE1:9;
__IO uint32_t SETUP:1;
} USBD_EVF_T;
typedef struct
{
__IO uint32_t FADDR:7;
__I uint32_t RESERVE:25;
} USBD_FADDR_T;
typedef struct
{
__I uint32_t RESERVE0:7;
__IO uint32_t OVERRUN:1;
__IO uint32_t STS0:3;
__IO uint32_t STS1:3;
__IO uint32_t STS2:3;
__IO uint32_t STS3:3;
__IO uint32_t STS4:3;
__IO uint32_t STS5:3;
__I uint32_t RESERVE1:6;
} USBD_STS_T;
typedef struct
{
__IO uint32_t USBRST:1;
__IO uint32_t SUSPEND:1;
__IO uint32_t RESUME:1;
__IO uint32_t TIMEOUT:1;
__IO uint32_t PHY_EN:1;
__IO uint32_t RWAKEUP:1;
__I uint32_t RESERVE0:1;
__IO uint32_t USB_EN:1;
__IO uint32_t DPPU_EN:1;
__IO uint32_t PDB:1;
__I uint32_t RESERVE1:22;
} USBD_ATTR_T;
typedef struct
{
__IO uint32_t FLODET:1;
__I uint32_t RESERVE:31;
} USBD_FLODET_T;
typedef struct
{
__I uint32_t RESERVE0:3;
__IO uint32_t BUFSEG:6;
__I uint32_t RESERVE:23;
} USBD_BUFSEG_T;
typedef struct
{
__IO uint32_t MXPLD:9;
__I uint32_t RESERVE:23;
} USBD_MXPLD_T;
typedef struct
{
__IO uint32_t EPT:4;
__IO uint32_t ISOCH:1;
__IO uint32_t STATE:2;
__IO uint32_t DSQ:1;
__I uint32_t RESERVE0:1;
__IO uint32_t STALL_CTL:1;
__I uint32_t RESERVE1:22;
} USBD_CFG_T;
typedef struct
{
__IO uint32_t CFGP:1;
__IO uint32_t STALL:1;
__I uint32_t RESERVE:30;
} USBD_CFGP_T;
typedef struct
{
__IO uint32_t DRVSE0:1;
__I uint32_t RESERVE:31;
} USBD_DRVSE0_T;
typedef struct
{
__IO uint32_t BISTEN:1;
__IO uint32_t FINISH:1;
__IO uint32_t BISTFAIL:1;
__I uint32_t RESERVE:29;
} USBD_BIST_T;
typedef struct
{
__IO uint32_t PDMA_RW:1;
__IO uint32_t PDMA_EN:1;
__I uint32_t RESERVE:30;
} USBD_PDMA_T;
typedef struct
{
USBD_BUFSEG_T BUFSEG;
USBD_MXPLD_T MXPLD;
USBD_CFG_T CFG;
USBD_CFGP_T CFGP;
} USBD_EP_T;
typedef struct
{
USBD_IEF_T IEF;
USBD_EVF_T EVF;
USBD_FADDR_T FADDR;
USBD_STS_T STS;
USBD_ATTR_T ATTR;
USBD_FLODET_T FLODET;
USBD_BUFSEG_T BUFSEG;
uint32_t RESERVE0;
USBD_EP_T EP[6];
uint32_t RESERVE1[4];
USBD_DRVSE0_T DRVSE0;
uint32_t RESERVE2[3];
USBD_BIST_T BIST;
USBD_PDMA_T PDMA;
} USBD_T;
/*------------------------------ PDMA Controller -----------------------------*/
typedef struct
{
__IO uint32_t PDMACEN:1;
__IO uint32_t SW_RST:1;
__IO uint32_t MODE_SEL:2;
__IO uint32_t SAD_SEL:2;
__IO uint32_t DAD_SEL:2;
__I uint32_t RESERVE0:4;
__IO uint32_t WAR_BCR_SEL:4;
__I uint32_t RESERVE1:3;
__IO uint32_t APB_TWS:2;
__I uint32_t RESERVE2:2;
__IO uint32_t TRIG_EN:1;
__I uint32_t RESERVE3:8;
} PDMA_CSR_T;
typedef __IO uint32_t PDMA_SAR_T;
typedef __IO uint32_t PDMA_DAR_T;
typedef __IO uint32_t PDMA_BCR_T;
typedef __IO uint32_t PDMA_CSAR_T;
typedef __IO uint32_t PDMA_CDAR_T;
typedef struct
{
__IO uint32_t CBCR:24;
__I uint32_t RESERVE:8;
} PDMA_CBCR_T;
typedef struct
{
__IO uint32_t TABORT_IE:1;
__IO uint32_t BLKD_IE:1;
__IO uint32_t WAR_IE:1;
__I uint32_t RESERVE:29;
} PDMA_IER_T;
//typedef __IO uint32_t PDMA_ISR_T;
typedef struct
{
__IO uint32_t TABORT_IF:1;
__IO uint32_t BLKD_IF:1;
__I uint32_t RESERVE:6;
__IO uint32_t WAR_IF:4;
__I uint32_t RESERVE1:3;
__IO uint32_t BUSY:1;
__I uint32_t RESERVE2:15;
__IO uint32_t INTR:1;
} PDMA_ISR_T;
typedef __IO uint32_t PDMA_SBUF_T;
typedef struct
{
__IO uint32_t PDMA_RST:1;
__I uint32_t RESERVE0:7;
__IO uint32_t HCLK0_EN:1;
__IO uint32_t HCLK1_EN:1;
__IO uint32_t HCLK2_EN:1;
__IO uint32_t HCLK3_EN:1;
__IO uint32_t HCLK4_EN:1;
__IO uint32_t HCLK5_EN:1;
__IO uint32_t HCLK6_EN:1;
__IO uint32_t HCLK7_EN:1;
__IO uint32_t HCLK8_EN:1;
__IO uint32_t HCLK9_EN:1;
__IO uint32_t HCLK10_EN:1;
__IO uint32_t HCLK11_EN:1;
__I uint32_t RESERVE1:12;
} PDMA_GCRCSR_T;
typedef struct
{
__IO uint32_t UART0_RXSEL:4;
__IO uint32_t UART0_TXSEL:4;
__IO uint32_t UART1_RXSEL:4;
__IO uint32_t UART1_TXSEL:4;
__IO uint32_t USBD_RXSEL:4;
__IO uint32_t USBD_TXSEL:4;
__IO uint32_t ADC_RXSEL:4;
__IO uint32_t ADC_TXSEL:4;
} PDMA_PDSSR1_T;
typedef struct
{
__IO uint32_t SPI0_RXSEL:4;
__IO uint32_t SPI0_TXSEL:4;
__IO uint32_t SPI1_RXSEL:4;
__IO uint32_t SPI1_TXSEL:4;
__IO uint32_t SPI2_RXSEL:4;
__IO uint32_t SPI2_TXSEL:4;
__IO uint32_t SPI3_RXSEL:4;
__IO uint32_t SPI3_TXSEL:4;
} PDMA_PDSSR0_T;
typedef __IO uint32_t PDMA_GCRISR_T;
typedef struct
{
PDMA_GCRCSR_T GCRCSR;
PDMA_PDSSR0_T PDSSR0;
PDMA_PDSSR1_T PDSSR1;
PDMA_GCRISR_T GCRISR;
} PDMA_GCR_T;
typedef struct
{
PDMA_CSR_T CSR;
PDMA_SAR_T SAR;
PDMA_DAR_T DAR;
PDMA_BCR_T BCR;
uint32_t POINT;
PDMA_CSAR_T CSAR;
PDMA_CDAR_T CDAR;
PDMA_CBCR_T CBCR;
PDMA_IER_T IER;
PDMA_ISR_T ISR;
PDMA_SBUF_T SBUF[4];
} PDMA_T;
/*----------------------------- PWM Controller -------------------------------*/
typedef struct
{
__IO uint32_t CP0:8;
__IO uint32_t CP1:8;
__IO uint32_t DZI0:8;
__IO uint32_t DZI1:8;
} PWM_PPR_T;
typedef struct
{
__IO uint32_t CSR0:3;
__I uint32_t RESERVE0:1;
__IO uint32_t CSR1:3;
__I uint32_t RESERVE1:1;
__IO uint32_t CSR2:3;
__I uint32_t RESERVE2:1;
__IO uint32_t CSR3:3;
__I uint32_t RESERVE:17;
} PWM_CSR_T;
typedef struct
{
__IO uint32_t CH0EN:1;
__I uint32_t RESERVE0:1;
__IO uint32_t CH0INV:1;
__IO uint32_t CH0MOD:1;
__IO uint32_t DZEN0:1;
__IO uint32_t DZEN1:1;
__I uint32_t RESERVE1:2;
__IO uint32_t CH1EN:1;
__I uint32_t RESERVE2:1;
__IO uint32_t CH1INV:1;
__IO uint32_t CH1MOD:1;
__I uint32_t RESERVE3:4;
__IO uint32_t CH2EN:1;
__I uint32_t RESERVE4:1;
__IO uint32_t CH2INV:1;
__IO uint32_t CH2MOD:1;
__I uint32_t RESERVE5:4;
__IO uint32_t CH3EN:1;
__I uint32_t RESERVE6:1;
__IO uint32_t CH3INV:1;
__IO uint32_t CH3MOD:1;
__I uint32_t RESERVE7:4;
} PWM_PCR_T;
typedef __IO uint32_t PWM_CNR_T;
typedef __IO uint32_t PWM_CMR_T;
typedef __IO uint32_t PWM_PDR_T;
typedef struct
{
__IO uint32_t PWMIE0:1;
__IO uint32_t PWMIE1:1;
__IO uint32_t PWMIE2:1;
__IO uint32_t PWMIE3:1;
__I uint32_t RESERVE:28;
} PWM_PIER_T;
typedef struct
{
__IO uint32_t PWMIF0:1;
__IO uint32_t PWMIF1:1;
__IO uint32_t PWMIF2:1;
__IO uint32_t PWMIF3:1;
__I uint32_t RESERVE:28;
} PWM_PIIR_T;
typedef struct
{
__IO uint32_t INV0:1;
__IO uint32_t CRL_IE0:1;
__IO uint32_t CFL_IE0:1;
__IO uint32_t CAPCH0EN:1;
__IO uint32_t CAPIF0:1;
__I uint32_t RESERVE0:1;
__IO uint32_t CRLRI0:1;
__IO uint32_t CFLRI0:1;
__I uint32_t RESERVE1:8;
__IO uint32_t INV1:1;
__IO uint32_t CRL_IE1:1;
__IO uint32_t CFL_IE1:1;
__IO uint32_t CAPCH1EN:1;
__IO uint32_t CAPIF1:1;
__I uint32_t RESERVE2:1;
__IO uint32_t CRLRI1:1;
__IO uint32_t CFLRI1:1;
__I uint32_t RESERVE3:8;
} PWM_CCR0_T;
typedef struct
{
__IO uint32_t INV2:1;
__IO uint32_t CRL_IE2:1;
__IO uint32_t CFL_IE2:1;
__IO uint32_t CAPCH2EN:1;
__IO uint32_t CAPIF2:1;
__I uint32_t RESERVE0:1;
__IO uint32_t CRLRI2:1;
__IO uint32_t CFLRI2:1;
__I uint32_t RESERVE1:8;
__IO uint32_t INV3:1;
__IO uint32_t CRL_IE3:1;
__IO uint32_t CFL_IE3:1;
__IO uint32_t CAPCH3EN:1;
__IO uint32_t CAPIF3:1;
__I uint32_t RESERVE2:1;
__IO uint32_t CRLRI3:1;
__IO uint32_t CFLRI3:1;
__I uint32_t RESERVE3:8;
} PWM_CCR1_T;
typedef __IO uint32_t PWM_CRLR_T;
typedef __IO uint32_t PWM_CFLR_T;
typedef __IO uint32_t PWM_CAPENR_T;
typedef struct
{
__IO uint32_t PWM0:1;
__IO uint32_t PWM1:1;
__IO uint32_t PWM2:1;
__IO uint32_t PWM3:1;
__I uint32_t RESERVE:28;
} PWM_POE_T;
typedef struct
{
PWM_PPR_T PPR;
PWM_CSR_T CSR;
PWM_PCR_T PCR;
PWM_CNR_T CNR0;
PWM_CMR_T CMR0;
PWM_PDR_T PDR0;
PWM_CNR_T CNR1;
PWM_CMR_T CMR1;
PWM_PDR_T PDR1;
PWM_CNR_T CNR2;
PWM_CMR_T CMR2;
PWM_PDR_T PDR2;
PWM_CNR_T CNR3;
PWM_CMR_T CMR3;
PWM_PDR_T PDR3;
__I uint32_t RESERVE0;
PWM_PIER_T PIER;
PWM_PIIR_T PIIR;
__I uint32_t RESERVE1[2];
PWM_CCR0_T CCR0;
PWM_CCR1_T CCR1;
PWM_CRLR_T CRLR0;
PWM_CFLR_T CFLR0;
PWM_CRLR_T CRLR1;
PWM_CFLR_T CFLR1;
PWM_CRLR_T CRLR2;
PWM_CFLR_T CFLR2;
PWM_CRLR_T CRLR3;
PWM_CFLR_T CFLR3;
PWM_CAPENR_T CAPENR;
PWM_POE_T POE;
} PWM_T;
/******************************************************************************/
/* Peripheral memory map */
/******************************************************************************/
/* Peripheral and SRAM base address */
#define FLASH_BASE (( uint32_t)0x00000000)
#define SRAM_BASE (( uint32_t)0x20000000)
#define AHB_BASE (( uint32_t)0x50000000)
#define APB1_BASE (( uint32_t)0x40000000)
#define APB2_BASE (( uint32_t)0x40100000)
/* Peripheral memory map */
#define GPIO_BASE (AHB_BASE + 0x4000)
#define GPIOA_BASE (GPIO_BASE )
#define GPIOB_BASE (GPIO_BASE + 0x0040)
#define GPIOC_BASE (GPIO_BASE + 0x0080)
#define GPIOD_BASE (GPIO_BASE + 0x00C0)
#define GPIOE_BASE (GPIO_BASE + 0x0100)
#define GPIO_DBNCECON_BASE (GPIO_BASE + 0x0180)
#define UART0_BASE (APB1_BASE + 0x50000)
#define UART1_BASE (APB2_BASE + 0x50000)
#define TIMER0_BASE (APB1_BASE + 0x10000)
#define TIMER1_BASE (APB1_BASE + 0x10020)
#define TIMER2_BASE (APB2_BASE + 0x10000)
#define TIMER3_BASE (APB2_BASE + 0x10020)
#define WDT_BASE (APB1_BASE + 0x4000)
#define SPI0_BASE (APB1_BASE + 0x30000)
#define SPI1_BASE (APB1_BASE + 0x34000)
#define SPI2_BASE (APB2_BASE + 0x30000)
#define SPI3_BASE (APB2_BASE + 0x34000)
#define I2C0_BASE (APB1_BASE + 0x20000)
#define I2C1_BASE (APB2_BASE + 0x20000)
#define RTC_BASE (APB1_BASE + 0x08000)
#define ADC_BASE (APB1_BASE + 0xE0000)
#define ADC_ADSR (ADC_BASE + 0x30)
#define ACMP_BASE (APB1_BASE + 0xD0000)
#define SYSCLK_BASE (AHB_BASE + 0x00200)
#define GCR_BASE (AHB_BASE + 0x00000)
#define INT_BASE (AHB_BASE + 0x00300)
#define FMC_BASE (AHB_BASE + 0x0C000)
#define PS2_BASE (APB2_BASE + 0x00000)
#define CAN0_BASE (APB2_BASE + 0x80000)
#define CAN1_BASE (APB2_BASE + 0x84000)
#define USBD_BASE (APB1_BASE + 0x60000)
#define PDMA0_BASE (AHB_BASE + 0x08000)
#define PDMA1_BASE (AHB_BASE + 0x08100)
#define PDMA2_BASE (AHB_BASE + 0x08200)
#define PDMA3_BASE (AHB_BASE + 0x08300)
#define PDMA4_BASE (AHB_BASE + 0x08400)
#define PDMA5_BASE (AHB_BASE + 0x08500)
#define PDMA6_BASE (AHB_BASE + 0x08600)
#define PDMA7_BASE (AHB_BASE + 0x08700)
#define PDMA8_BASE (AHB_BASE + 0x08800)
#define PDMA9_BASE (AHB_BASE + 0x08900)
#define PDMA10_BASE (AHB_BASE + 0x08A00)
#define PDMA11_BASE (AHB_BASE + 0x08B00)
#define PDMA_GCR_BASE (AHB_BASE + 0x08F00)
#define PWM_BASE (APB1_BASE + 0x40000)
/******************************************************************************/
/* Peripheral declaration */
/******************************************************************************/
#define GPIOA ((GPIO_T *) GPIOA_BASE)
#define GPIOB ((GPIO_T *) GPIOB_BASE)
#define GPIOC ((GPIO_T *) GPIOC_BASE)
#define GPIOD ((GPIO_T *) GPIOD_BASE)
#define GPIOE ((GPIO_T *) GPIOE_BASE)
#define GPIO_DBNCECON ((GPIO_DBNCECON_T *) GPIO_DBNCECON_BASE)
#define UART0 ((UART_T *) UART0_BASE)
#define UART1 ((UART_T *) UART1_BASE)
#define TIMER0 ((TIMER_T *) TIMER0_BASE)
#define TIMER1 ((TIMER_T *) TIMER1_BASE)
#define TIMER2 ((TIMER_T *) TIMER2_BASE)
#define TIMER3 ((TIMER_T *) TIMER3_BASE)
#define WDT ((WDT_T *) WDT_BASE)
#define SPI0 ((SPI_T *) SPI0_BASE)
#define SPI1 ((SPI_T *) SPI1_BASE)
#define SPI2 ((SPI_T *) SPI2_BASE)
#define SPI3 ((SPI_T *) SPI3_BASE)
#define I2C0 ((I2C_T *) I2C0_BASE)
#define I2C1 ((I2C_T *) I2C1_BASE)
#define RTC ((RTC_T *) RTC_BASE)
#define ADC ((ADC_T *) ADC_BASE)
#define ACMP ((ACMP_T *) ACMP_BASE)
#define SYSCLK ((SYSCLK_T *) SYSCLK_BASE)
#define SYS ((GCR_T *) GCR_BASE)
#define SYSINT ((GCR_INT_T *) INT_BASE)
#define FMC ((FMC_T *) FMC_BASE)
#define PS2 ((PS2_T *) PS2_BASE)
#define CAN0 ((CAN_T *) CAN0_BASE)
#define CAN1 ((CAN_T *) CAN1_BASE)
#define USBD ((USBD_T *) USBD_BASE)
#define PDMA0 ((PDMA_T *) PDMA0_BASE)
#define PDMA1 ((PDMA_T *) PDMA1_BASE)
#define PDMA2 ((PDMA_T *) PDMA2_BASE)
#define PDMA3 ((PDMA_T *) PDMA3_BASE)
#define PDMA4 ((PDMA_T *) PDMA4_BASE)
#define PDMA5 ((PDMA_T *) PDMA5_BASE)
#define PDMA6 ((PDMA_T *) PDMA6_BASE)
#define PDMA7 ((PDMA_T *) PDMA7_BASE)
#define PDMA8 ((PDMA_T *) PDMA8_BASE)
#define PDMA9 ((PDMA_T *) PDMA9_BASE)
#define PDMA10 ((PDMA_T *) PDMA10_BASE)
#define PDMA11 ((PDMA_T *) PDMA11_BASE)
#define PDMA_GCR ((PDMA_GCR_T *) PDMA_GCR_BASE)
#define PWM ((PWM_T *) PWM_BASE)
#define UNLOCKREG(x) *((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x59;*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x16;*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x88
#define LOCKREG(x) *((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x00;
#define REGCOPY(dest, src) *((uint32_t *)&(dest)) = *((uint32_t *)&(src))
#define CLEAR(dest) *((uint32_t *)&(dest)) = 0
//=============================================================================
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 E_SUCCESS 0
#define NULL 0
#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
#endif