sh4.h
来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 1,105 行 · 第 1/4 页
H
1,105 行
#define CPG_WTCSR_WT 0x0040 // Timer mode select, 1 <=> watchdog
#define CPG_WTCSR_RSTS 0x0020 // Reset select
#define CPG_WTCSR_WOVF 0x0010 // Watchdog timer overflow
#define CPG_WTCSR_IOVF 0x0008 // Interval timer overflow
#define CPG_WTCSR_CKS 0x0007 // Clock select, periph clock div ratio
#define CPG_WTCSR_CKS_32 0x0000 // /32
#define CPG_WTCSR_CKS_64 0x0001 // /64
#define CPG_WTCSR_CKS_128 0x0002 // /128
#define CPG_WTCSR_CKS_256 0x0003 // /256
#define CPG_WTCSR_CKS_512 0x0004 // /512
#define CPG_WTCSR_CKS_1024 0x0005 // /1024
#define CPG_WTCSR_CKS_2048 0x0006 // /2048
#define CPG_WTCSR_CKS_4096 0x0007 // /4096
// Stanby control register 2
#define CPG_STBCR2_DSLP 0x80 // Deep sleep mode
//
// Real Time Clock control registers
//
#define RTC_REGBASE 0xFFC80000
#define RTC_REGSIZE 0x0040
#define RTC_R64CNT_OFFSET 0x0000
#define RTC_RSECCNT_OFFSET 0x0004
#define RTC_RMINCNT_OFFSET 0x0008
#define RTC_RHRCNT_OFFSET 0x000C
#define RTC_RWKCNT_OFFSET 0x0010
#define RTC_RDAYCNT_OFFSET 0x0014
#define RTC_RMONCNT_OFFSET 0x0018
#define RTC_RYRCNT_OFFSET 0x001C
#define RTC_RSECAR_OFFSET 0x0020
#define RTC_RMINAR_OFFSET 0x0024
#define RTC_RHRAR_OFFSET 0x0028
#define RTC_RWKAR_OFFSET 0x002C
#define RTC_RDAYAR_OFFSET 0x0030
#define RTC_RMONAR_OFFSET 0x0034
#define RTC_RCR1_OFFSET 0x0038
#define RTC_RCR2_OFFSET 0x003c
#define RTC_R64CNT RTC_REGBASE + RTC_R64CNT_OFFSET
#define RTC_RSECCNT RTC_REGBASE + RTC_RSECCNT_OFFSET
#define RTC_RMINCNT RTC_REGBASE + RTC_RMINCNT_OFFSET
#define RTC_RHRCNT RTC_REGBASE + RTC_RHRCNT_OFFSET
#define RTC_RWKCNT RTC_REGBASE + RTC_RWKCNT_OFFSET
#define RTC_RDAYCNT RTC_REGBASE + RTC_RDAYCNT_OFFSET
#define RTC_RMONCNT RTC_REGBASE + RTC_RMONCNT_OFFSET
#define RTC_RYRCNT RTC_REGBASE + RTC_RYRCNT_OFFSET
#define RTC_RSECAR RTC_REGBASE + RTC_RSECAR_OFFSET
#define RTC_RMINAR RTC_REGBASE + RTC_RMINAR_OFFSET
#define RTC_RHRAR RTC_REGBASE + RTC_RHRAR_OFFSET
#define RTC_RWKAR RTC_REGBASE + RTC_RWKAR_OFFSET
#define RTC_RDAYAR RTC_REGBASE + RTC_RDAYAR_OFFSET
#define RTC_RMONAR RTC_REGBASE + RTC_RMONAR_OFFSET
#define RTC_RCR1 RTC_REGBASE + RTC_RCR1_OFFSET
#define RTC_RCR2 RTC_REGBASE + RTC_RCR2_OFFSET
// Second Alarm Register (RSECAR)
#define RTC_RSECAR_ENB 0x80
// Minute Alarm Register (RMINAR)
#define RTC_RMINAR_ENB 0x80
// Hour Alarm Register (RHRAR)
#define RTC_RHRAR_ENB 0x80
// Day of Week Alarm Register (RWKAR)
#define RTC_RWKAR_ENB 0x80
// Day Alarm Register (RDAYAR)
#define RTC_RDAYAR_ENB 0x80
// Month Alarm Register (RMONAR)
#define RTC_RMONAR_ENB 0x80
// RTC Control Register1 (RCR1)
#define RTC_RCR1_CF 0x80
#define RTC_RCR1_CIE 0x10
#define RTC_RCR1_AIE 0x08
#define RTC_RCR1_AF 0x01
// RTC Control Register2 (RCR2)
#define RTC_RCR2_PEF 0x80
#define RTC_RCR2_RES_2 0x70 //Periodic interrupt generated every 2 second
#define RTC_RCR2_RES_1 0x60 //Periodic interrupt generated every 1 second
#define RTC_RCR2_RES_1_2 0x50 //Periodic interrupt generated every 1/2 second
#define RTC_RCR2_RES_1_4 0x40 //Periodic interrupt generated every 1/4 second
#define RTC_RCR2_RES_1_16 0x30 //Periodic interrupt generated every 1/16 second
#define RTC_RCR2_RES_1_64 0x20 //Periodic interrupt generated every 1/64 second
#define RTC_RCR2_RES_1_256 0x10 //Periodic interrupt generated every 1/256 second
#define RTC_RCR2_RES_NO_PINT 0x00 //NO periodic interrupt generation
#define RTC_RCR2_RTCEN 0x08
#define RTC_RCR2_ADJ 0x04
#define RTC_RCR2_RESET 0x02
#define RTC_RCR2_START 0x01
//
// Interrupt Controller registers
//
#define INTC_REGBASE 0xFFD00000
#define INTC_REGSIZE 0x0020
#define INTC_ICR_OFFSET 0x0000 // intr controll reg offset
#define INTC_IPRA_OFFSET 0x0004 // intr priority level A offset
#define INTC_IPRB_OFFSET 0x0008 // intr priority level B offset
#define INTC_IPRC_OFFSET 0x000C // intr priority level C offset
#define INTC_ICR (INTC_REGBASE + INTC_ICR_OFFSET)
#define INTC_IPRA (INTC_REGBASE + INTC_IPRA_OFFSET)
#define INTC_IPRB (INTC_REGBASE + INTC_IPRB_OFFSET)
#define INTC_IPRC (INTC_REGBASE + INTC_IPRC_OFFSET)
// Interrupt Control Register
#define INTC_ICR_IRL_MASK 0xFF7F
#define INTC_ICR_IRL_ENCODE 0x0000
#define INTC_ICR_IRL_INDEPENDENT 0x0080
// Interrupt Priority level setting Register A
#define INTC_IPRA_TMU0_MASK 0x0FFF
#define INTC_IPRA_TMU1_MASK 0xF0FF
#define INTC_IPRA_TMU2_MASK 0xFF0F
#define INTC_IPRA_RTC_MASK 0xFFF0
// Interrupt Priority level setting Register B
#define INTC_IPRB_WDT_MASK 0x0FFF
#define INTC_IPRB_REF_MASK 0xF0FF
#define INTC_IPRB_SCI_MASK 0xFF0F
// Interrupt Priority level setting Register C
#define INTC_IPRC_DMAC_MASK 0xF0FF
#define INTC_IPRC_SCIF_MASK 0xFF0F
#define INTC_IPRC_JTAG_MASK 0xFFF0
//
// Timer Unit registers
//
#define TMU_REGBASE 0xFFD80000
#define TMU_REGSIZE 0x0040
#define TMU_TOCR_OFFSET 0x0000 //common
#define TMU_TSTR_OFFSET 0x0004
#define TMU_TCOR0_OFFSET 0x0008 //TMU0
#define TMU_TCNT0_OFFSET 0x000C
#define TMU_TCR0_OFFSET 0x0010
#define TMU_TCOR1_OFFSET 0x0014 //TMU1
#define TMU_TCNT1_OFFSET 0x0018
#define TMU_TCR1_OFFSET 0x001C
#define TMU_TCOR2_OFFSET 0x0020 //TMU2
#define TMU_TCNT2_OFFSET 0x0024
#define TMU_TCR2_OFFSET 0x0028
#define TMU_TCPR2_OFFSET 0x002C
#define TMU_TOCR (TMU_REGBASE + TMU_TOCR_OFFSET)
#define TMU_TSTR (TMU_REGBASE + TMU_TSTR_OFFSET)
#define TMU_TCOR0 (TMU_REGBASE + TMU_TCOR0_OFFSET)
#define TMU_TCNT0 (TMU_REGBASE + TMU_TCNT0_OFFSET)
#define TMU_TCR0 (TMU_REGBASE + TMU_TCR0_OFFSET)
#define TMU_TCOR1 (TMU_REGBASE + TMU_TCOR1_OFFSET)
#define TMU_TCNT1 (TMU_REGBASE + TMU_TCNT1_OFFSET)
#define TMU_TCR1 (TMU_REGBASE + TMU_TCR1_OFFSET)
#define TMU_TCOR2 (TMU_REGBASE + TMU_TCOR2_OFFSET)
#define TMU_TCNT2 (TMU_REGBASE + TMU_TCNT2_OFFSET)
#define TMU_TCR2 (TMU_REGBASE + TMU_TCR2_OFFSET)
#define TMU_TCPR2 (TMU_REGBASE + TMU_TCPR2_OFFSET)
// Timer Start Register
#define TMU_TSTR_STR0 0x01
#define TMU_TSTR_STR1 0x02
#define TMU_TSTR_STR2 0x04
// Timer Control Register
#define TMU_TCR_UNF 0x100 // counter underflowed
#define TMU_TCR_UNIE 0x20 // underflow interrupt enable
#define TMU_TCR_RISE 0x00 // count on rising edge of clock
#define TMU_TCR_FALL 0x08 // count on falling edge of clock
#define TMU_TCR_BOTH 0x10 // count on both edges of clock
#define TMU_TCR_D4 0x00 // PERIPHERAL clock / 4
#define TMU_TCR_D16 0x01 // PERIPHERAL clock / 16
#define TMU_TCR_D64 0x02 // PERIPHERAL clock / 64
#define TMU_TCR_D256 0x03 // PERIPHERAL clock / 256
#define TMU_TCR_D1024 0x04 // PERIPHERAL clock / 1024
#define TMU_TCR_RTC 0x06 // real time clock output (16 kHz)
#define TMU_TCR_EXT 0x07 // external clock input
//
// Serial Communication Interface (SCI)
//
#define SCI_REGBASE 0xFFE00000 // SH-4 control regs
#define SCI_REGSIZE 0x0020
#define SCI_SCSMR1_OFFSET 0x0000 // Serial Mode Register
#define SCI_SCBRR1_OFFSET 0x0004 // Bit rate register
#define SCI_SCSCR1_OFFSET 0x0008 // Serial Control Register
#define SCI_SCTDR1_OFFSET 0x000c // transmit data register
#define SCI_SCSSR1_OFFSET 0x0010 // Serail Status Register
#define SCI_SCRDR1_OFFSET 0x0014 // Receive Data register
#define SCI_SCSPTR1_OFFSET 0x001c // Serial Port register
#define SCI_SCSMR1 (SCI_REGBASE + SCI_SCSMR1_OFFSET)
#define SCI_SCBRR1 (SCI_REGBASE + SCI_SCBRR1_OFFSET)
#define SCI_SCSCR1 (SCI_REGBASE + SCI_SCSCR1_OFFSET)
#define SCI_SCTDR1 (SCI_REGBASE + SCI_SCTDR1_OFFSET)
#define SCI_SCSSR1 (SCI_REGBASE + SCI_SCSSR1_OFFSET)
#define SCI_SCRDR1 (SCI_REGBASE + SCI_SCRDR1_OFFSET)
#define SCI_SCSPTR1 (SCI_REGBASE + SCI_SCSPTR1_OFFSET)
//
// Serial Communication Interface with FIFO (SCIF)
//
#define SCIF_REGBASE 0xFFE80000 // SH-4 control regs
#define SCIF_REGSIZE 0x0028
#define SCIF_SCSMR2_OFFSET 0x0000 // Serial Mode Register
#define SCIF_SCBRR2_OFFSET 0x0004 // Bit rate register
#define SCIF_SCSCR2_OFFSET 0x0008 // Serial Control Register
#define SCIF_SCFTDR2_OFFSET 0x000c // transmit FIFO data register
#define SCIF_SCFSR2_OFFSET 0x0010 // Serail Status Register
#define SCIF_SCFRDR2_OFFSET 0x0014 // Receive Data FIFO register
#define SCIF_SCFCR2_OFFSET 0x0018 // FIFO Control Register
#define SCIF_SCFDR2_OFFSET 0x001c // FIFO Data Count set register
#define SCIF_SCSPTR2_OFFSET 0x0020 // FIFO Data Count set register
#define SCIF_SCLSR2_OFFSET 0x0024 // FIFO Data Count set register
#define SCIF_SCSMR2 (SCIF_REGBASE + SCIF_SCSMR2_OFFSET)
#define SCIF_SCBRR2 (SCIF_REGBASE + SCIF_SCBRR2_OFFSET)
#define SCIF_SCSCR2 (SCIF_REGBASE + SCIF_SCSCR2_OFFSET)
#define SCIF_SCFTDR2 (SCIF_REGBASE + SCIF_SCFTDR2_OFFSET)
#define SCIF_SCFSR2 (SCIF_REGBASE + SCIF_SCFSR2_OFFSET)
#define SCIF_SCFRDR2 (SCIF_REGBASE + SCIF_SCFRDR2_OFFSET)
#define SCIF_SCFCR2 (SCIF_REGBASE + SCIF_SCFCR2_OFFSET)
#define SCIF_SCFDR2 (SCIF_REGBASE + SCIF_SCFDR2_OFFSET)
#define SCIF_SCSPTR2 (SCIF_REGBASE + SCIF_SCSPTR2_OFFSET)
#define SCIF_SCLSR2 (SCIF_REGBASE + SCIF_SCLSR2_OFFSET)
//
// The SR reg, puts us in priviledged mode, and blocks all interrupts
//
#define TM_SR 0x70000000
#define EXPEVT 0xFF000024
#define INTEVT 0xff000028
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?