/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : 75x_map.h
* Author             : MCD Application Team
* Date First Issued  : 03/10/2006
* Description        : This file contains all the peripheral register's definitions
*                      and memory mapping.
********************************************************************************
* History:
* 07/17/2006 : V1.0
* 03/10/2006 : V0.1
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __75x_MAP_H
#define __75x_MAP_H

#ifndef EXT
  #define EXT extern
#endif /* EXT */

/* Includes ------------------------------------------------------------------*/
#include "75x_conf.h"
#include "75x_type.h"

/* Exported types ------------------------------------------------------------*/
/******************************************************************************/
/*                          IP registers structures               	      */
/******************************************************************************/

/*------------------------ Analog to Digital Converter -----------------------*/
typedef struct
{
  vu16 CLR0;
  u16  EMPTY1;
  vu16 CLR1;
  u16  EMPTY2;
  vu16 CLR2;
  u16  EMPTY3;
  vu16 CLR3;
  u16  EMPTY4;
  vu16 CLR4;
  u16  EMPTY5;
  vu16 TRA0;
  u16  EMPTY6;
  vu16 TRA1;
  u16  EMPTY7;
  vu16 TRA2;
  u16  EMPTY8;
  vu16 TRA3;
  u16  EMPTY9;
  vu16 TRB0;
  u16  EMPTY10;
  vu16 TRB1;
  u16  EMPTY11;
  vu16 TRB2;
  u16  EMPTY12;
  vu16 TRB3;
  u16  EMPTY13;
  vu16 DMAR;
  u16  EMPTY14[7];
  vu16 DMAE;
  u16  EMPTY15 ;
  vu16 PBR;
  u16  EMPTY16;
  vu16 IMR;
  u16  EMPTY17;
  vu16 D0;
  u16  EMPTY18;
  vu16 D1;
  u16  EMPTY19;
  vu16 D2;
  u16  EMPTY20;
  vu16 D3;
  u16  EMPTY21;
  vu16 D4;
  u16  EMPTY22;
  vu16 D5;
  u16  EMPTY23;
  vu16 D6;
  u16  EMPTY24;
  vu16 D7;
  u16  EMPTY25;
  vu16 D8;
  u16  EMPTY26;
  vu16 D9;
  u16  EMPTY27;
  vu16 D10;
  u16  EMPTY28;
  vu16 D11;
  u16  EMPTY29;
  vu16 D12;
  u16  EMPTY30;
  vu16 D13;
  u16  EMPTY31;
  vu16 D14;
  u16  EMPTY32;
  vu16 D15;
  u16  EMPTY33;
} ADC_TypeDef;

/*------------------------ Controller Area Network ---------------------------*/
typedef struct
{
  vu16 CRR;			
  u16  EMPTY1;
  vu16 CMR;			
  u16  EMPTY2;
  vu16 M1R;			
  u16  EMPTY3;
  vu16 M2R;			
  u16  EMPTY4;
  vu16 A1R;			
  u16  EMPTY5;
  vu16 A2R;			
  u16  EMPTY6;
  vu16 MCR;			
  u16  EMPTY7;
  vu16 DA1R;		
  u16  EMPTY8;
  vu16 DA2R;		
  u16  EMPTY9;
  vu16 DB1R;		
  u16  EMPTY10;
  vu16 DB2R;		
  u16  EMPTY11[27];
} CAN_MsgObj_TypeDef;

typedef struct
{
  vu16 CR;			
  u16  EMPTY1;
  vu16 SR;			
  u16  EMPTY2;
  vu16 ERR;			
  u16  EMPTY3;
  vu16 BTR;			
  u16  EMPTY4;
  vu16 IDR;			
  u16  EMPTY5;
  vu16 TESTR;		
  u16  EMPTY6;
  vu16 BRPR;		
  u16  EMPTY7[3];
  CAN_MsgObj_TypeDef sMsgObj[2];
  u16  EMPTY8[16];
  vu16 TXR1R;		
  u16  EMPTY9;
  vu16 TXR2R;		
  u16  EMPTY10[13];
  vu16 ND1R;		
  u16  EMPTY11;
  vu16 ND2R;		
  u16  EMPTY12[13];
  vu16 IP1R;		
  u16  EMPTY13;
  vu16 IP2R;		
  u16  EMPTY14[13];
  vu16 MV1R;		
  u16  EMPTY15;
  vu16 MV2R;		
  u16  EMPTY16;
} CAN_TypeDef;

/*--------------------------- Configuration Register -------------------------*/
typedef struct
{
  vu32 GLCONF;
} CFG_TypeDef;

/*-------------------------------- DMA Controller ----------------------------*/
typedef struct
{
  vu16  SOURCEL;
  u16   EMPTY1;
  vu16  SOURCEH;
  u16   EMPTY2;
  vu16  DESTL;
  u16   EMPTY3;
  vu16  DESTH;
  u16   EMPTY4;
  vu16  MAX;
  u16   EMPTY5;
  vu16  CTRL;
  u16   EMPTY6;
  vuc16 SOCURRH;
  u16   EMPTY7;
  vuc16 SOCURRL;
  u16   EMPTY8;
  vuc16 DECURRH;
  u16   EMPTY9;
  vuc16 DECURRL;
  u16   EMPTY10;
  vuc16 TCNT;
  u16   EMPTY11;
  vu16  LUBUFF;
  u16   EMPTY12;
} DMA_Stream_TypeDef;

typedef struct
{
  vu16 MASK;
  u16  EMPTY4;
  vu16 CLR;
  u16  EMPTY5;
  vuc16 STATUS;
  u16  EMPTY6;
  vu16 LAST;       
  u16  EMPTY7;
} DMA_TypeDef;

/*----------------------- Enhanced Interrupt Controller ----------------------*/
typedef struct
{
  vu32 ICR; 
  vuc32 CICR;   
  vu32 CIPR;
  u32  EMPTY1;
  vu32 FIER;
  vu32 FIPR;
  vu32 IVR;
  vu32 FIR;
  vu32 IER;
  u32  EMPTY2[7];
  vu32 IPR;
  u32  EMPTY3[7];
  vu32 SIRn[32];
} EIC_TypeDef;

/*------------------------- External Interrupt Controller --------------------*/
typedef struct
{
  vu32 MR;
  vu32 TSR;
  vu32 SWIR;
  vu32 PR;
} EXTIT_TypeDef;

/*-------------------------- General Purpose IO ports ------------------------*/
typedef struct
{
  vu32 PC0;
  vu32 PC1;
  vu32 PC2;
  vu32 PD;
  vu32 PM;
} GPIO_TypeDef;

typedef struct
{
  vu32 REMAP0R;
  vu32 REMAP1R;
} GPIOREMAP_TypeDef;

/*--------------------------------- I2C interface ----------------------------*/
typedef struct
{
  vu8 CR; 
  u8  EMPTY1[3];
  vu8 SR1;
  u8  EMPTY2[3];
  vu8 SR2;
  u8  EMPTY3[3];
  vu8 CCR;
  u8  EMPTY4[3];
  vu8 OAR1;
  u8  EMPTY5[3];
  vu8 OAR2;
  u8  EMPTY6[3];
  vu8 DR;
  u8  EMPTY7[3];
  vu8 ECCR;
  u8  EMPTY8[3];
} I2C_TypeDef;

/*---------------------------- Power, Reset and Clocks -----------------------*/
typedef  struct
{
  vu32 CLKCTL;
  vu32 RFSR;
  vu32 PWRCTRL;
  u32  EMPTY1;
  vu32 PCLKEN;
  vu32 PSWRES;
  u32  EMPTY2[2];
  vu32 BKP0;
  vu32 BKP1;
} MRCC_TypeDef;

/*-------------------------------- Real Time Clock ---------------------------*/
typedef struct
{
  vu16 CRH;
  u16  EMPTY;
  vu16 CRL;
  u16  EMPTY1;
  vu16 PRLH;
  u16  EMPTY2;
  vu16 PRLL;
  u16  EMPTY3;
  vu16 DIVH;
  u16  EMPTY4;
  vu16 DIVL;
  u16  EMPTY5;
  vu16 CNTH;
  u16  EMPTY6;
  vu16 CNTL;
  u16  EMPTY7;
  vu16 ALRH;
  u16  EMPTY8;
  vu16 ALRL;
  u16  EMPTY9;
} RTC_TypeDef;

/*---------------------------- Serial Memory Interface -----------------------*/
typedef struct
{
  vu32 CR1;
  vu32 CR2;
  vu32 SR;
  vu32 TR;
  vuc32 RR;
} SMI_TypeDef;

/*--------------------------------- Timer Base -------------------------------*/
typedef struct
{
  vu16 CR;
  u16  EMPTY1;
  vu16 SCR;
  u16  EMPTY2;
  vu16 IMCR;
  u16  EMPTY3[7];
  vu16 RSR;
  u16  EMPTY4;
  vu16 RER;
  u16  EMPTY5;
  vu16 ISR;
  u16  EMPTY6;
  vu16 CNT;
  u16  EMPTY7;
  vu16 PSC;
  u16  EMPTY8[3];
  vu16 ARR;
  u16  EMPTY9[13];
  vu16 ICR1;
  u16  EMPTY10;
} TB_TypeDef;

/*------------------------------------ TIM -----------------------------------*/
typedef struct
{
  vu16 CR;
  u16  EMPTY1;
  vu16 SCR;
  u16  EMPTY2;
  vu16 IMCR;
  u16  EMPTY3;
  vu16 OMR1;
  u16  EMPTY4[5];
  vu16 RSR;
  u16  EMPTY5;
  vu16 RER;
  u16  EMPTY6;
  vu16 ISR;
  u16  EMPTY7;
  vu16 CNT;
  u16  EMPTY8;
  vu16 PSC;
  u16  EMPTY9[3];
  vu16 ARR;
  u16  EMPTY10;
  vu16 OCR1;
  u16  EMPTY11;
  vu16 OCR2;
  u16  EMPTY12[9];
  vu16 ICR1;
  u16  EMPTY13;
  vu16 ICR2;
  u16  EMPTY14[9];
  vu16 DMAB;
  u16  EMPTY15;
} TIM_TypeDef;

/*------------------------------------ PWM -----------------------------------*/
typedef struct
{
  vu16 CR;
  u16  EMPTY1;
  vu16 SCR;
  u16  EMPTY2[3];
  vu16 OMR1;
  u16  EMPTY3;
  vu16 OMR2;
  u16  EMPTY4[3];
  vu16 RSR;
  u16  EMPTY5;
  vu16 RER;
  u16  EMPTY6;
  vu16 ISR;
  u16  EMPTY7;
  vu16 CNT;
  u16  EMPTY8;
  vu16 PSC;
  u16  EMPTY9;
  vu16 RCR;
  u16  EMPTY10;
  vu16 ARR;
  u16  EMPTY11;
  vu16 OCR1;
  u16  EMPTY12;
  vu16 OCR2;
  u16  EMPTY13;
  vu16 OCR3;
  u16  EMPTY14[15];
  vu16 DTR;
  u16  EMPTY15;
  vu16 DMAB;
  u16  EMPTY16;
} PWM_TypeDef;

/*----------------------- Synchronous Serial Peripheral ----------------------*/
typedef struct
{
  vu32 CR0;
  vu32 CR1;
  vu32 DR;
  vu32 SR;
  vu32 PR;
  vu32 IMSCR;
  vu32 RISR;
  vu32 MISR;
  vu32 ICR;
  vu32 DMACR;
} SSP_TypeDef;

/*---------------- Universal Asynchronous Receiver Transmitter ---------------*/
typedef struct
{
  vu16 DR;
  u16  EMPTY;
  vu16 RSR;
  u16  EMPTY1[9];
  vu16 FR;
  u16  EMPTY2;
  vu16 BKR;
  u16  EMPTY3[3];
  vu16 IBRD;
  u16  EMPTY4;
  vu16 FBRD;
  u16  EMPTY5;
  vu16 LCR;
  u16  EMPTY6;
  vu16 CR;
  u16  EMPTY7;
  vu16 IFLS;
  u16  EMPTY8;
  vu16 IMSC;
  u16  EMPTY9;
  vu16 RIS;
  u16  EMPTY10;
  vu16 MIS;
  u16  EMPTY11;
  vu16 ICR;
  u16  EMPTY12;
  vu16 DMACR;
  u16  EMPTY13;
} UART_TypeDef;

/*---------------------------------- WATCHDOG --------------------------------*/
typedef struct
{
  vu16 CR;
  u16  EMPTY1;
  vu16 PR;
  u16 EMPTY2;
  vu16 VR;
  u16  EMPTY3;
  vu16 CNT;
  u16  EMPTY4;
  vu16 SR;
  u16  EMPTY5;
  vu16 MR;
  u16  EMPTY6;
  vu16 KR;
  u16  EMPTY7;
} WDG_TypeDef;

/*******************************************************************************
*                      Peripherals' Base addresses
*******************************************************************************/

#define SRAM_BASE      0x40000000

#define CONFIG_BASE    0x60000000

#define SMIR_BASE      0x90000000

#define PERIPH_BASE    0xFFFF0000

#define CFG_BASE            (CONFIG_BASE + 0x0010)
#define MRCC_BASE           (CONFIG_BASE + 0x0020)
#define ADC_BASE            (PERIPH_BASE + 0x8400)
#define TB_BASE             (PERIPH_BASE + 0x8800)
#define TIM0_BASE           (PERIPH_BASE + 0x8C00)
#define TIM1_BASE           (PERIPH_BASE + 0x9000)
#define TIM2_BASE           (PERIPH_BASE + 0x9400)
#define PWM_BASE            (PERIPH_BASE + 0x9800)
#define WDG_BASE            (PERIPH_BASE + 0xB000)
#define SSP0_BASE           (PERIPH_BASE + 0xB800)
#define SSP1_BASE           (PERIPH_BASE + 0xBC00)
#define CAN_BASE            (PERIPH_BASE + 0xC400)
#define I2C_BASE            (PERIPH_BASE + 0xCC00)
#define UART0_BASE          (PERIPH_BASE + 0xD400)
#define UART1_BASE          (PERIPH_BASE + 0xD800)
#define UART2_BASE          (PERIPH_BASE + 0xDC00)
#define GPIO0_BASE          (PERIPH_BASE + 0xE400)
#define GPIOREMAP_BASE      (PERIPH_BASE + 0xE420)
#define GPIO1_BASE          (PERIPH_BASE + 0xE440)
#define GPIO2_BASE          (PERIPH_BASE + 0xE480)
#define DMA_BASE            (PERIPH_BASE + 0xECF0)
#define DMA_Stream0_BASE    (PERIPH_BASE + 0xEC00)
#define DMA_Stream1_BASE    (PERIPH_BASE + 0xEC40)
#define DMA_Stream2_BASE    (PERIPH_BASE + 0xEC80)
#define DMA_Stream3_BASE    (PERIPH_BASE + 0xECC0)
#define RTC_BASE            (PERIPH_BASE + 0xF000)
#define EXTIT_BASE          (PERIPH_BASE + 0xF400)
#define EIC_BASE            (PERIPH_BASE + 0xF800)

/*******************************************************************************
                            IPs' declaration
*******************************************************************************/

/*------------------- Non Debug Mode -----------------------------------------*/

#ifndef DEBUG
  #define SMI            ((SMI_TypeDef *)           SMIR_BASE)
  #define CFG            ((CFG_TypeDef *)           CFG_BASE)
  #define MRCC           ((MRCC_TypeDef *)          MRCC_BASE)
  #define ADC            ((ADC_TypeDef *)           ADC_BASE)
  #define TB             ((TB_TypeDef *)            TB_BASE)
  #define TIM0           ((TIM_TypeDef *)           TIM0_BASE)
  #define TIM1           ((TIM_TypeDef *)           TIM1_BASE)
  #define TIM2           ((TIM_TypeDef *)           TIM2_BASE)
  #define PWM            ((PWM_TypeDef *)           PWM_BASE)
  #define WDG            ((WDG_TypeDef *)           WDG_BASE)
  #define SSP0           ((SSP_TypeDef *)           SSP0_BASE)
  #define SSP1           ((SSP_TypeDef *)           SSP1_BASE)
  #define CAN            ((CAN_TypeDef *)           CAN_BASE)
  #define I2C            ((I2C_TypeDef *)           I2C_BASE)
  #define UART0          ((UART_TypeDef *)          UART0_BASE)
  #define UART1          ((UART_TypeDef *)          UART1_BASE)
  #define UART2          ((UART_TypeDef *)          UART2_BASE)
  #define GPIO0          ((GPIO_TypeDef *)          GPIO0_BASE)
  #define GPIOREMAP      ((GPIOREMAP_TypeDef *)     GPIOREMAP_BASE)
  #define GPIO1          ((GPIO_TypeDef *)          GPIO1_BASE)
  #define GPIO2          ((GPIO_TypeDef *)          GPIO2_BASE)
  #define DMA            ((DMA_TypeDef *)           DMA_BASE)
  #define DMA_Stream0    ((DMA_Stream_TypeDef *)    DMA_Stream0_BASE)
  #define DMA_Stream1    ((DMA_Stream_TypeDef *)    DMA_Stream1_BASE)
  #define DMA_Stream2    ((DMA_Stream_TypeDef *)    DMA_Stream2_BASE)
  #define DMA_Stream3    ((DMA_Stream_TypeDef *)    DMA_Stream3_BASE)
  #define RTC            ((RTC_TypeDef *)           RTC_BASE)
  #define EXTIT          ((EXTIT_TypeDef *)         EXTIT_BASE)
  #define EIC            ((EIC_TypeDef *)           EIC_BASE)
#else   /* DEBUG */
  #ifdef _SMI
    EXT SMI_TypeDef           *SMI;
  #endif /*_SMI */

  #ifdef _CFG
    EXT CFG_TypeDef           *CFG;
  #endif /*_CFG */

  #ifdef _MRCC
    EXT MRCC_TypeDef          *MRCC;
  #endif /*_MRCC */

  #ifdef _ADC
    EXT ADC_TypeDef           *ADC;
  #endif /*_ADC */  

  #ifdef _TB
    EXT TB_TypeDef            *TB;
  #endif /*_TB */

  #ifdef _TIM0
    EXT TIM_TypeDef           *TIM0;
  #endif /*_TIM0 */

  #ifdef _TIM1
    EXT TIM_TypeDef           *TIM1;
  #endif /*_TIM1 */

  #ifdef _TIM2
    EXT TIM_TypeDef           *TIM2;
  #endif /*_TIM2 */

  #ifdef _PWM
    EXT PWM_TypeDef           *PWM;
  #endif /*_PWM */

  #ifdef _WDG
    EXT WDG_TypeDef           *WDG;
  #endif /*_WDG */

  #ifdef _SSP0
    EXT SSP_TypeDef           *SSP0;
  #endif /*_SSP0 */

  #ifdef _SSP1
    EXT SSP_TypeDef           *SSP1;
  #endif /*_SSP1 */

  #ifdef _CAN
    EXT CAN_TypeDef           *CAN;
  #endif /*_CAN */

  #ifdef _I2C
    EXT I2C_TypeDef           *I2C;
  #endif /*_I2C */

  #ifdef _UART0
    EXT UART_TypeDef          *UART0;
  #endif /*_UART0 */

  #ifdef _UART1
    EXT UART_TypeDef          *UART1;
  #endif /*_UART1 */

  #ifdef _UART2
    EXT UART_TypeDef          *UART2;
  #endif /*_UART2 */

  #ifdef _GPIO0
    EXT GPIO_TypeDef          *GPIO0;
  #endif /*_GPIO0 */

  #ifdef _GPIOREMAP
    EXT GPIOREMAP_TypeDef     *GPIOREMAP;
  #endif /*_GPIOREMAP */

  #ifdef _GPIO1
    EXT GPIO_TypeDef          *GPIO1;
  #endif /*_GPIO1 */

  #ifdef _GPIO2
    EXT GPIO_TypeDef          *GPIO2;
  #endif /*_GPIO2 */

  #ifdef _DMA
    EXT DMA_TypeDef           *DMA;
  #endif /*_DMA */

  #ifdef _DMA_Stream0
    EXT DMA_Stream_TypeDef    *DMA_Stream0;
  #endif /*_DMA_Stream0 */

  #ifdef _DMA_Stream1
    EXT DMA_Stream_TypeDef    *DMA_Stream1;
  #endif /*_DMA_Stream1 */

  #ifdef _DMA_Stream2
    EXT DMA_Stream_TypeDef    *DMA_Stream2;
  #endif /*_DMA_Stream2 */

  #ifdef _DMA_Stream3
    EXT DMA_Stream_TypeDef    *DMA_Stream3;
  #endif /*_DMA_Stream3 */

  #ifdef _RTC
    EXT RTC_TypeDef           *RTC;
  #endif /*_RTC */

  #ifdef _EXTIT
    EXT EXTIT_TypeDef         *EXTIT;
  #endif /*_EXTIT */

  #ifdef _EIC
    EXT EIC_TypeDef           *EIC;
  #endif /*_EIC */
  
#endif  /* DEBUG */

/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */

#endif /* __75x_MAP_H */

/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
