原创 C5402CFG.H(父亲节版)

2008-6-15 22:49 3269 2 2 分类: 处理器与DSP


工程师的收藏夹
200773055547196.gif




俺的地盘俺做主

/*---------------------------------------------------------------------------
文   件   名 :  C5402CFG.H(父亲节版)
创   建   人 :  DSP菜鸟  HotPower@126.com
创 建 日  期 :  2006.6.09  11:19
最近修改日期 :  2008.6.15  21:18
创 建  地 点 : 西安大雁塔村队部(http://www.ednchina.com/blog/hotpower/)
版   本   号 : V4.01
修 改 理  由 :  修正和增订内容,全面升级为真正的位操作和废除汇编启动代码
                增加对C++多文件系统的支持
                必须在系统中同时加入C5402CFG.C


升 级 理  由 ;  全面升级后支持真正的位操作和废除汇编启动代码的"创举"
发 布 理  由 ;  今天是父亲节。菜农想对父亲说---您老真伟大!!!
                您发明的独门绝学使弟弟十几岁开始独步江湖至今.打败无数的
    权威甚至是专科专学院的大鼻子老外.
    菜农不孝未能继承您的绝学...
    从小就看您早起晚睡整日忘我读书,甚至文革也未终止过...
    孩儿只继承了您这点甚至大大超越.
    当我看到同行提起您和弟弟的名号时都不敢"拔剑"时,我为您自豪!!!
    该头文件就算献给85岁老父亲的礼物吧。
    菜农也会和您一样---站在红旗下就不畏惧任何人!!!
    菜农本是粗人,但年轻时巧遇无数高手,虽未得到真传,也不想让俺这
    一身"水学"失传...俺知道不可能再像父亲有人继承自己的绝学,那么
    就通过这网络发散吧...
    父亲---孩儿想对您说---您真伟大,儿也不会给您丢脸!!!
备        注 : 由此文件出现的问题,DSP菜鸟不负任何责任
                菜农将不断更新和完善本头文件。
升 级 方  法 :  只需在旧版C5402DEF.H或C5402CFG.H的结构成员后加.Regs即可
                例如:
    SREG->ST0 &= ~(1 << ST0_C);
    改为:
    SREG->ST0.Regs &= ~(1 << ST0_C);
    或:
    SREG->ST0.Bits.C = 0;
    
                父亲节版新旧版近似兼容使其更强大:
    SREG->ST1.Bits.XF = 1;
    SREG->ST1.Bits.CPL = 1;


    SREG->ST1.Regs = (1 << ST1_XF) | (1 << ST1_CPL);


    SREG->GPIOCR.Bits.DIR7 = 1;
    SREG->GPIOCR.Regs |= (1 << GPIOCR_DIR7);


声        明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。               
---------------------------------------------------------------------------*/



#ifndef __C5402CFG_H
#define __C5402CFG_H


#ifdef __cplusplus
extern "C"
{
#endif



/*---------------------------------------------------------*/
typedef volatile unsigned int TI_REG;
typedef volatile int TI_IREG;


#define __disable_interrupt() asm(" ssbx intm");//关中断
#define __enable_interrupt()  asm(" rsbx intm");//开中断


#define __no_operation() asm(" nop");//空操作


#define   nop()   asm(" nop");//空操作
#define __nop()   asm(" nop");//空操作
#define _nop_()   asm(" nop");//空操作


#define __sleep() asm(" IDLE 1");
#define idle()    asm(" IDLE 1");
#define idle1()   asm(" IDLE 1");//CPU暂停,CPU时钟停止\
                                ;//非屏蔽内部硬件中断\
        ;//非屏蔽外部硬件中断
#define idle2()   asm(" IDLE 2");//CPU时钟停止
#define idle3()   asm(" IDLE 3");//外设时钟停止
#define SWI_Reset()  asm(" TRAP 0");//DSP复位



/*-------------------------------------------
  以下是增订部分,去除(1<<15)编译警告
-------------------------------------------*/
#define __0                  ((TI_REG)0)
#define __1                  ((TI_REG)1)
#define __2                  ((TI_REG)2)
#define __3                  ((TI_REG)3)
#define __4                  ((TI_REG)4)
#define __5                  ((TI_REG)5)
#define __6                  ((TI_REG)6)
#define __7                  ((TI_REG)7)
#define __8                  ((TI_REG)8)
#define __9                  ((TI_REG)9)
#define __10                 ((TI_REG)10)
#define __11                 ((TI_REG)11)
#define __12                 ((TI_REG)12)
#define __13                 ((TI_REG)13)
#define __14                 ((TI_REG)14)
#define __15                 ((TI_REG)15)
/*-----------------------------------------*/


/*-------------------------------------------
    以下是不需要汇编的中断向量表定义部分
-------------------------------------------*/
extern void c_int00(void);
extern interrupt void DefaultIsr(void);


enum DspCodeEnum_Enum
{
 DSPCODE_BD = (TI_IREG)0xf273,
 DSPCODE_RETE = (TI_IREG)0xf4fb,
 DSPCODE_NOP = (TI_IREG)0xf495,//,
 DSPCODE_SP_200L = (TI_IREG)0x7718,//STM #200,SP
 DSPCODE_SP_200H = (TI_IREG)0x00c8//STM #200,SP
};


#define ISR_Reset() {DSPCODE_BD, (pfnVectorEntry)c_int00, DSPCODE_SP_200L, DSPCODE_SP_200H}
#define ISR_Return() {DSPCODE_RETE, (pfnVectorEntry)DSPCODE_NOP, DSPCODE_NOP, DSPCODE_NOP}
#define ISR_Default() {DSPCODE_BD, (pfnVectorEntry)DefaultIsr, DSPCODE_NOP, DSPCODE_NOP}
#define ISR(addr) {DSPCODE_BD, (pfnVectorEntry)addr, DSPCODE_NOP, DSPCODE_NOP}


typedef interrupt void (*pfnVectorEntry)(void);
typedef struct
{
 TI_IREG Code;
    pfnVectorEntry Isr;//中断入口地址
 TI_IREG DataLow;
 TI_IREG DataHi;
}uVectorEntry;


#define nISR_REST    0    //0x0080
#define nISR_NMI       1    //0x0084
#define nISR_SINT17  2    //0x0088
#define nISR_SINT18  3    //0x008c
#define nISR_SINT19  4    //0x0090
#define nISR_SINT20  5    //0x0094
#define nISR_SINT21  6    //0x0098
#define nISR_SINT22  7    //0x009c
#define nISR_SINT23  8    //0x00a0
#define nISR_SINT24  9    //0x00a4
#define nISR_SINT25  10   //0x00a8
#define nISR_SINT26  11   //0x00ac
#define nISR_SINT27  12   //0x00b0
#define nISR_SINT28  13   //0x00b4
#define nISR_SINT29  14   //0x00b8
#define nISR_SINT30  15   //0x00bc
#define nISR_INT0  16   //0x00c0
#define nISR_INT1  17   //0x00c4
#define nISR_INT2  18   //0x00c8
#define nISR_TINT0      19   //0x00cc
 #define nISR_TIMER0   19 //0x00cc
#define nISR_RINT0      20   //0x00d0
#define nISR_XINT0      21   //0x00d4
#define nISR_RINT1      22   //0x00d8
#define nISR_XINT1      23   //0x00dc
 #define nISR_TIMER1   23 //0x00dc
#define nISR_INT3  24   //0x00e0
#define nISR_HPINT  25   //0x00e4
#define nISR_RESINT0 26   //0x00e8
#define nISR_RESINT1 27   //0x00ec
#define nISR_RESINT2 28   //0x00f0
#define nISR_RESINT3 29   //0x00f4
#define nISR_RESINT4 30   //0x00f8
#define nISR_RESINT5 31   //0x00fc



/*----------------------------------------
        基本位定义
----------------------------------------*/
#define BIT0                0//
#define BIT1                1//
#define BIT2                2//
#define BIT3                3//
#define BIT4                4//
#define BIT5                5//
#define BIT6                6//
#define BIT7                7//
#define BIT8                8//
#define BIT9                9//
#define BIT10              10//
#define BIT11              11//
#define BIT12              12//
#define BIT13              13//
#define BIT14              14//
#define BIT15              15//


typedef volatile struct
{
 TI_REG bit15:  1;//15
 TI_REG bit14:  1;//14
 TI_REG bit13:  1;//13
 TI_REG bit12:  1;//12
 TI_REG bit11:  1;//11
 TI_REG bit10:  1;//10
 TI_REG bit9:  1;//9
 TI_REG bit8:  1;//8
 TI_REG bit7:  1;//7
 TI_REG bit6:  1;//6
 TI_REG bit5:  1;//5
 TI_REG bit4:  1;//4
 TI_REG bit3:  1;//3
 TI_REG bit2:  1;//2
 TI_REG bit1:  1;//1
 TI_REG bit0:  1;//0
}TI_BITS_BASE;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_BASE Bits;
}TI_REG_BASE;


/*---------------------------------------
        GPIOCR位定义
----------------------------------------*/
#define GPIOCR_DIR0         0//I/O引脚方向位0
#define GPIOCR_DIR1         1//I/O引脚方向位1
#define GPIOCR_DIR2         2//I/O引脚方向位2
#define GPIOCR_DIR3         3//I/O引脚方向位3
#define GPIOCR_DIR4         4//I/O引脚方向位4
#define GPIOCR_DIR5         5//I/O引脚方向位5
#define GPIOCR_DIR6         6//I/O引脚方向位6
#define GPIOCR_DIR7         7//I/O引脚方向位7


#define GPIOCR_TOUT1       15//定时器1输出使能位


typedef volatile struct
{
 TI_REG TOUT1:  1;////定时器1输出使能位15
 TI_REG Reserved: 7;//保留位8~14
 TI_REG DIR7:  1;//I/O引脚方向位7
 TI_REG DIR6:  1;//I/O引脚方向位6
 TI_REG DIR5:  1;//I/O引脚方向位5
 TI_REG DIR4:  1;//I/O引脚方向位4
 TI_REG DIR3:  1;//I/O引脚方向位3
 TI_REG DIR2:  1;//I/O引脚方向位2
 TI_REG DIR1:  1;//I/O引脚方向位1
 TI_REG DIR0:  1;//I/O引脚方向位0
}TI_BITS_GPIOCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_GPIOCR Bits;
}TI_REG_GPIOCR;


/*---------------------------------------
        GPIOSR位定义
----------------------------------------*/
#define GPIOSR_IO0          0//I/O引脚状态位0
#define GPIOSR_IO1          1//I/O引脚状态位1
#define GPIOSR_IO2          2//I/O引脚状态位2
#define GPIOSR_IO3          3//I/O引脚状态位3
#define GPIOSR_IO4          4//I/O引脚状态位4
#define GPIOSR_IO5          5//I/O引脚状态位5
#define GPIOSR_IO6          6//I/O引脚状态位6
#define GPIOSR_IO7          7//I/O引脚状态位7


typedef volatile struct
{
 TI_REG Reserved: 8;//保留位8~15
 TI_REG IO7:  1;//I/O引脚状态位7
 TI_REG IO6:  1;//I/O引脚状态位6
 TI_REG IO5:  1;//I/O引脚状态位5
 TI_REG IO4:  1;//I/O引脚状态位4
 TI_REG IO3:  1;//I/O引脚状态位3
 TI_REG IO2:  1;//I/O引脚状态位2
 TI_REG IO1:  1;//I/O引脚状态位1
 TI_REG IO0:  1;//I/O引脚状态位0
}TI_BITS_GPIOSR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_GPIOSR Bits;
}TI_REG_GPIOSR;


/*---------------------------------------
        HPIC位定义
----------------------------------------*/
#define HPIC_DSPINT       1//主机处理器到C5402的中断(R-0)
#define HPIC_HINT         2//C5402到主机处理器的中断引脚状态(R/W-1)
#define HPIC_HRDY         3//HRDY引脚状态(R)
#define HPIC_FETCH        4//主机取数据请求(R-0)
#define HPIC_XHPIA        5//扩展地址使能(R)


typedef volatile struct
{
 TI_REG Reserved: 10;//保留位6~15
 TI_REG XHPIA:  1;//扩展地址使能(R)5
 TI_REG FETCH:  1;//主机取数据请求(R-0)4
 TI_REG HRDY:  1;//HRDY引脚状态(R)3
 TI_REG HINT:  1;//C5402到主机处理器的中断引脚状态(R/W-1)2
 TI_REG DSPINT:  2;//主机处理器到C5402的中断(R-0)0~1
}TI_BITS_HPIC;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_HPIC Bits;
}TI_REG_HPIC;


/*---------------------------------------
        CLKMD位定义
----------------------------------------*/
#define CLKMD_PLLSTATUS    0//PLL状态位
#define CLKMD_PLLNDIV      1//PLL时钟发生器选择
#define CLKMD_PLLONOFF     2//PLL开关位
#define CLKMD_PLLCOUNT     3//PLL计数值3~10
#define CLKMD_PLLDIV      11//PLL乘法系数(除法器)
#define CLKMD_PLLMUL      12//PLL乘法系数(乘法器)12~15


typedef volatile struct
{
 TI_REG PLLMUL:  4;//PLL乘法系数(乘法器)12~15
 TI_REG PLLDIV:  1;//PLL乘法系数(除法器)
 TI_REG PLLCOUNT: 8;//PLL计数值3~10
 TI_REG PLLONOFF: 1;//PLL开关位2
 TI_REG PLLNDIV: 1;//PLL时钟发生器选择1
 TI_REG PLLSTATUS: 1;//PLL状态位0
}TI_BITS_CLKMD;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_CLKMD Bits;
}TI_REG_CLKMD;


/*---------------------------------------
        PMST位定义
----------------------------------------*/
#define PMST_SST          0//存储饱和位
#define PMST_SMUL         1//乘法饱和位
#define PMST_CLKOFF       2//CLKOUT禁止位
#define PMST_DROM         3//数据ROM位
#define PMST_AVIS         4//地址可见性模式位
#define PMST_OVLY         5//RAM重叠位
#define PMST_MP_MC        6//微处理器/微计算机模式位
#define PMST_IPTR         7//中断向量指针7~15


typedef volatile struct
{
 TI_REG IPTR:  9;//中断向量指针7~15
 TI_REG MP_MC:  1;//微处理器/微计算机模式位6
 TI_REG OVLY:  1;//RAM重叠位5
 TI_REG AVIS:  1;//地址可见性模式位4
 TI_REG DROM:  1;//数据ROM位3
 TI_REG CLKOFF:  1;//CLKOUT禁止位2
 TI_REG SMUL:  1;//乘法饱和位1
 TI_REG SST:  1;//存储饱和位0
}TI_BITS_PMST;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_PMST Bits;
}TI_REG_PMST;


/*---------------------------------------
        TCR位定义
----------------------------------------*/
#define TCR_TDDR         0//定时器分频系数0~3
#define TCR_TSS          4//定时器停止状态
#define TCR_TRB          5//定时器重载
#define TCR_PSC          6//计数器预定标计数器6~9
#define TCR_FREE        10//
#define TCR_SOFT        11//


typedef volatile struct
{
 TI_REG Reserved: 4;//保留位12~15
 TI_REG SOFT:  1;//11
 TI_REG FREE:  1;//10
 TI_REG PSC:  4;//计数器预定标计数器6~9
 TI_REG TRB:  1;//定时器重载5
 TI_REG TSS:  1;//定时器停止状态4
 TI_REG TDDR:  4;//定时器分频系数0~3
}TI_BITS_TCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_TCR Bits;
}TI_REG_TCR;


/*---------------------------------------
        IFR位定义
----------------------------------------*/
#define IFR_INT0   0//外部中断0
#define IFR_INT1   1//外部中断1
#define IFR_INT2   2//外部中断2
#define IFR_TINT0   3//定时中断0


#define IFR_BRINT0   4//McBSP接收中断0
#define IFR_BXINT0   5//McBSP发送中断0


#define IFR_TINT1   7//定时中断1


#define IFR_INT3   8//外部中断3
#define IFR_HPINT   9//主机接口中断
#define IFR_BRINT1  10//McBSP接收中断1
#define IFR_BXINT1  11//McBSP发送中断1


#define IFR_DMAC0   6//DMA通道中断0
#define IFR_DMAC1   7//DMA通道中断1


#define IFR_DMAC2  10//DMA通道中断2
#define IFR_DMAC3  11//DMA通道中断3
#define IFR_DMAC4  12//DMA通道中断4
#define IFR_DMAC5  13//DMA通道中断5


typedef volatile struct
{
 TI_REG Reserved: 2;//保留位14~15
 TI_REG DMAC5:  1;//DMA通道中断5  13
 TI_REG DMAC4:  1;//DMA通道中断4  12


// TI_REG DMAC3:  1;//DMA通道中断5  11
// TI_REG DMAC2:  1;//DMA通道中断6  10


 TI_REG BXINT1:  1;//McBSP发送中断1  11
 TI_REG BRINT1:  1;//McBSP接收中断1  10



 TI_REG HPINT:  1;//主机接口中断9
 TI_REG INT3:  1;//外部中断3  8
// TI_REG DMAC1:  1;//DMA通道中断2  7
 TI_REG TINT1:  1;//定时中断1     7
 TI_REG DMAC0:  1;//DMA通道中断0  6


 TI_REG BXINT0:  1;//McBSP发送中断0  5
 TI_REG BRINT0:  1;//McBSP接收中断0  4


 TI_REG TINT0:  1;//定时中断0       3
 TI_REG INT2:  1;//外部中断2       2
 TI_REG INT1:  1;//外部中断1       1
 TI_REG INT0:  1;//外部中断0       0
}TI_BITS_IFR;


typedef volatile union
{
 TI_REG   Regs;
 TI_BITS_IFR Bits;
}TI_REG_IFR;


/*---------------------------------------
        IMR位定义
----------------------------------------*/
#define IMR_INT0   0//外部中断0
#define IMR_INT1   1//外部中断1
#define IMR_INT2   2//外部中断2
#define IMR_TINT0   3//定时中断0


#define IMR_BRINT0   4//McBSP接收中断0
#define IMR_BXINT0   5//McBSP发送中断0


#define IMR_TINT1   7//定时中断1


#define IMR_INT3   8//外部中断3
#define IMR_HPINT   9//主机接口中断
#define IMR_BRINT1  10//McBSP接收中断1
#define IMR_BXINT1  11//McBSP发送中断1


#define IMR_DMAC0   6//DMA通道中断0
#define IMR_DMAC1   7//DMA通道中断1


#define IMR_DMAC2  10//DMA通道中断2
#define IMR_DMAC3  11//DMA通道中断3
#define IMR_DMAC4  12//DMA通道中断4
#define IMR_DMAC5  13//DMA通道中断5


typedef volatile struct
{
 TI_REG Reserved: 2;//保留位14~15
 TI_REG DMAC5:  1;//DMA通道中断5  13
 TI_REG DMAC4:  1;//DMA通道中断4  12


// TI_REG DMAC3:  1;//DMA通道中断5  11
// TI_REG DMAC2:  1;//DMA通道中断6  10


 TI_REG BXINT1:  1;//McBSP发送中断1  11
 TI_REG BRINT1:  1;//McBSP接收中断1  10



 TI_REG HPINT:  1;//主机接口中断9
 TI_REG INT3:  1;//外部中断3  8
// TI_REG DMAC1:  1;//DMA通道中断2  7
 TI_REG TINT1:  1;//定时中断1     7
 TI_REG DMAC0:  1;//DMA通道中断0  6


 TI_REG BXINT0:  1;//McBSP发送中断0  5
 TI_REG BRINT0:  1;//McBSP接收中断0  4


 TI_REG TINT0:  1;//定时中断0       3
 TI_REG INT2:  1;//外部中断2       2
 TI_REG INT1:  1;//外部中断1       1
 TI_REG INT0:  1;//外部中断0       0
}TI_BITS_IMR;


typedef volatile union
{
 TI_REG   Regs;
 TI_BITS_IMR Bits;
}TI_REG_IMR;


/*---------------------------------------
        ST0位定义
----------------------------------------*/
#define ST0_DP       0//数据存储器页面指针0~8,共9位
#define ST0_OVB      9//累加器B溢出标志位
#define ST0_OVA     10//累加器A溢出标志位
#define ST0_C       11//进位或不借位标志
#define ST0_TC      12//测试/控制标志位
#define ST0_ARP     13//辅助寄存器(AR)指针13~15,共3位


typedef volatile struct
{
 TI_REG ARP: 3;//辅助寄存器(AR)指针13~15,共3位
 TI_REG TC:  1;//测试/控制标志位12
 TI_REG C:     1;//进位或不借位标志11
 TI_REG OVA:    1;//累加器A溢出标志位10
 TI_REG OVB:    1;//累加器B溢出标志位9
 TI_REG DP:  9;//数据存储器页面指针0~8,共9位  
}TI_BITS_ST0;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_ST0 Bits;
}TI_REG_ST0;


/*---------------------------------------
        ST1位定义
----------------------------------------*/
#define ST1_ASM      0//累加器模式位0~4
#define ST1_CMPT     5//修改模式位
#define ST1_FRCT     6//小数方式位
#define ST1_C16      7//双16位/双精度算术模式位
#define ST1_SXM      8//符号扩展模式位
#define ST1_OVM      9//溢出模式位
#define ST1_INTM    11//中断模式位
#define ST1_HM      12//保持模式位
#define ST1_XF      13//XF引脚状态位
#define ST1_CPL     14//相对直接寻址译码髂J轿?
#define ST1_BRAF    15//块重复操作标志位


typedef volatile struct
{
 TI_REG BRAF: 1;//块重复操作标志位15
 TI_REG CPL: 1;//相对直接寻址译码器模式位14
 TI_REG XF:  1;//XF引脚状态位13
 TI_REG HM:  1;//保持模式位12
 TI_REG INTM: 1;//中断模式位11
 TI_REG OVM: 2;//溢出模式位9~10
 TI_REG SXM: 1;//符号扩展模式位8
 TI_REG C16:    1;//双16位/双精度算术模式位7
 TI_REG FRCT:   1;//小数方式位6
 TI_REG CMPT:   1;//修改模式位5
 TI_REG ASM: 5;//累加器模式位0~4   
}TI_BITS_ST1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_ST1 Bits;
}TI_REG_ST1;


/*---------------------------------------
        BSCR位定义
----------------------------------------*/
#define BSCR_EXIO      0//外部总线接口关断位
#define BSCR_BH        1//总线保持位BH
#define BSCR_HBH       2//主机接口总线保持位


#define BSCR_IPIRQ     8//CPU处理器之间的中断请求位
#define BSCR_PSDS     11//程序空间读/数据空间读访问
#define BSCR_BNKCMP   12//分区比较位12~15


typedef volatile struct
{
 TI_REG BNKCMP:  4;//分区比较位12~15
 TI_REG PSDS:  3;//程序空间读/数据空间读访问9~11
 TI_REG IPIRQ:  1;///CPU处理器之间的中断请求位8
 TI_REG Reserved: 5;//保留位3~7
 TI_REG HBH:  1;//主机接口总线保持位2
 TI_REG BH:   1;//总线保持位1
 TI_REG EXIO:  1;//外部总线接口关断位0
}TI_BITS_BSCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_BSCR Bits;
}TI_REG_BSCR;


/*---------------------------------------
        DMPREC位定义
----------------------------------------*/
#define DMPREC_DE        0//DMA通道使能0~5
#define DMPREC_DE0       0//DMA0通道使能
#define DMPREC_DE1       1//DMA1通道使能
#define DMPREC_DE2       2//DMA2通道使能
#define DMPREC_DE3       3//DMA3通道使能
#define DMPREC_DE4       4//DMA4通道使能
#define DMPREC_DE5       5//DMA5通道使能


#define DMPREC_INTOSEL   6//中断多路控制位6~7


#define DMPREC_DPRC      8//DMA通道优先级控制位0~5
#define DMPREC_DPRC0     8//DMA0通道优先级控制
#define DMPREC_DPRC1     9//DMA1通道优先级控制
#define DMPREC_DPRC2    10//DMA2通道优先级控制
#define DMPREC_DPRC3    11//DMA3通道优先级控制
#define DMPREC_DPRC4    12//DMA4通道优先级控制
#define DMPREC_DPRC5    13//DMA5通道优先级控制
#define DMPREC_FREE     15//


typedef volatile struct
{
 TI_REG FREE:  1;//15
 TI_REG Reserved: 1;//保留位14
 TI_REG DPRC5:  1;//DMA5通道优先级控制13
 TI_REG DPRC4:  1;//DMA4通道优先级控制12
 TI_REG DPRC3:  1;//DMA3通道优先级控制11
 TI_REG DPRC2:  1;//DMA2通道优先级控制10
 TI_REG DPRC1:  1;//DMA1通道优先级控制9
 TI_REG DPRC0:  1;//DMA0通道优先级控制8
 TI_REG INTOSE:  1;//中断多路控制位6~7
 TI_REG DE5:  1;//DMA5通道使能5
 TI_REG DE4:  1;//DMA4通道使能4
 TI_REG DE3:  1;//DMA3通道使能3
 TI_REG DE2:  1;//DMA2通道使能2
 TI_REG DE1:  1;//DMA1通道使能1
 TI_REG DE0:  1;//DMA0通道使能0
}TI_BITS_DMPREC;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_DMPREC Bits;
}TI_REG_DMPREC;


/*---------------------------------------
        SPC位定义??????
----------------------------------------*/
#define SPC_DLB       1//数据回送模式位
#define SPC_FO        2//数据格式位
#define SPC_FSM       3//帧同步模式位
#define SPC_MCM       4//时钟模式位
#define SPC_TXM       5//发送模式位
#define SPC_XRST      6//发送器复位
#define SPC_RRST      7//接收器复位
#define SPC_IN0       8//输入0
#define SPC_IN1       9//输入1
#define SPC_RRDY     10//接收准备位
#define SPC_XRDY     11//发送准备位
#define SPC_XSREMPTY 12//发送移位寄存器空
#define SPC_RSRFULL  13//接收移位寄存器满
#define SPC_FREE     14//
#define SPC_SOFT     15//


typedef volatile struct
{
 TI_REG SOFT:  1;//15
 TI_REG FREE:  1;//14
 TI_REG RSRFULL: 1;//接收移位寄存器满13
 TI_REG XSREMPTY: 1;//发送移位寄存器空12
 TI_REG XRDY:  1;//发送准备位11
 TI_REG RRDY:  1;//接收准备位10
 TI_REG IN1:  1;//输入1 9
 TI_REG IN0:  1;//输入0 8
 TI_REG RRST:  1;//接收器复位 7
 TI_REG XRST:  1;//发送器复位 6
 TI_REG TXM:  1;//发送模式位 5
 TI_REG MCM:  1;//时钟模式位 4
 TI_REG FSM:  1;//帧同步模式位 3
 TI_REG FO:   1;//数据格式位 2
 TI_REG DLB:  2;//数据回送模式位 0~1  ????
}TI_BITS_SPC;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SPC Bits;
}TI_REG_SPC;


/*---------------------------------------
        BSPCE位定义
----------------------------------------*/
#define BSPCE_CLKDV   0//内部发送时钟分频系数0~4
#define BSPCE_FSP   5//帧同步信号极性设置
#define BSPCE_CLKP   6//时钟极性设置
#define BSPCE_FE   7//格式扩展
#define BSPCE_FIG   8//帧同步信号忽略
#define BSPCE_PCM   9//脉冲编码模式
#define BSPCE_ABU  10//自动缓冲单元控制10~15  ???


#define BSPCE_BXE   10//自动缓冲发送使能
#define BSPCE_XH    11//发送缓冲半满
#define BSPCE_HALTX  12//自动缓冲发送停止位
#define BSPCE_BRE   13//自动缓冲接收使能
#define BSPCE_RH    14//接收缓冲半满
#define BSPCE_HALTR  15//自动缓冲接收停止位


typedef volatile struct
{
 TI_REG HALTR:  1;//自动缓冲接收停止位15
 TI_REG RH:   1;//接收缓冲半满14
 TI_REG BRE:  1;//自动缓冲接收使能13
 TI_REG HALTX:  1;//自动缓冲发送停止位12
 TI_REG XH:   1;//发送准备位11
 TI_REG BXE:  1;//接收准备位10


 TI_REG PCM:  1;//脉冲编码模式9
 TI_REG FIG:  1;//帧同步信号忽略8
 TI_REG FE:   1;//格式扩展7
 TI_REG CLKP:  1;//时钟极性设置6
 TI_REG FSP:  1;//帧同步信号极性设置5
 TI_REG CLKDV:  5;//内部发送时钟分频系数0~4
}TI_BITS_BSPCE;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_BSPCE Bits;
}TI_REG_BSPCE;


/*---------------------------------------
        SPCR1位定义
----------------------------------------*/
#define SPCR1_RRST     0//接收器复位
#define SPCR1_RRDY     1//接收准备好
#define SPCR1_RFULL    2//接收移位寄存器满
#define SPCR1_RSYNCERR 3//接收同步错
#define SPCR1_RINTM    4//接收中断模式4~5
#define SPCR1_ABIS     6//ABIS模式
#define SPCR1_DXENA    7//DX使能
#define SPCR1_CLKSTP  11//时钟停止模式11~12
#define SPCR1_RJUST   13//接收符号扩展及判别模式13~14
#define SPCR1_DLB     15//数字循环返回


typedef volatile struct
{
 TI_REG DLB:  1;//数字循环返回15
 TI_REG RJUST:  2;//接收符号扩展及判别模式13~14
 TI_REG CLKSTP:  2;//时钟停止模式11~12
 TI_REG Reserved: 3;//保留位8~10
 TI_REG DXENA:  1;//DX使能7
 TI_REG ABIS:  1;//ABIS模式6
 TI_REG RINTM:  2;//接收中断模式4~5
 TI_REG RSYNCERR: 1;//接收同步错3
 TI_REG RFULL:  1;//接收移位寄存器满2
 TI_REG RRDY:  1;//接收准备好1
 TI_REG RRST:  1;//接收器复位0


}TI_BITS_SPCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SPCR1 Bits;
}TI_REG_SPCR1;


/*---------------------------------------
        SPCR2位定义
----------------------------------------*/
#define SPCR2_XRST     0//发送器复位
#define SPCR2_XRDY     1//发送准备好
#define SPCR2_XEMPTY   2//发送移位寄存器空
#define SPCR2_XSYNCERR 3//发生同步错误
#define SPCR2_XINTM    4//发送中断模式4~5
#define SPCR2_GRST     6//采样率发生器复位
#define SPCR2_FRST     7//帧同步发生器复位
#define SPCR2_SOFT     8//软件模式
#define SPCR2_FREE     9//自由运行模式


typedef volatile struct
{
 TI_REG Reserved: 6;//保留位10~15
 TI_REG FREE:  1;//自由运行模式9
 TI_REG SOFT:  1;//软件模式8
 TI_REG FRST:  1;//帧同步发生器复位7
 TI_REG GRST:  1;//采样率发生器复位6
 TI_REG XINTM:  2;//发送中断模式4~5
 TI_REG XSYNCERR: 1;//发生同步错误3
 TI_REG XEMPTY:  1;//发送移位寄存器空2
 TI_REG XRDY:  1;//发送准备好好1
 TI_REG XRST:  1;//发送器复位0
}TI_BITS_SPCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SPCR2 Bits;
}TI_REG_SPCR2;


/*---------------------------------------
        PCR位定义
----------------------------------------*/
#define PCR_CLKRP      0//接收时钟极性
#define PCR_CLKXP      1//发送时钟极性
#define PCR_FSRP       2//接收帧同步脉冲极性
#define PCR_FSXP       3//发送帧同步脉冲极性
#define PCR_DR_STAT    4//DR引脚状态位
#define PCR_DX_STAT    5//DX引脚状态位
#define PCR_CLKS_STAT  6//CLKS引脚状态位


#define PCR_CLKRM      8//接收器时钟模式位
#define PCR_CLKXM      9//发送器时钟模式位
#define PCR_FSRM      10//接收帧同步模式位
#define PCR_FSXM      11//发送帧同步模式位
#define PCR_RIOEN     12//接收通用I/O模式位
#define PCR_XIOEN     13//发送通用I/O模式位


typedef volatile struct
{
 TI_REG Reserved0: 2;//保留位14~15
 TI_REG XIOEN:  1;//发送通用I/O模式位13
 TI_REG SOFT:  1;//接收通用I/O模式位12
 TI_REG FRST:  1;//发送帧同步模式位11
 TI_REG GRST:  1;//接收帧同步模式位10
 TI_REG XINTM:  2;//发送器时钟模式位9
 TI_REG XSYNCERR: 1;//接收器时钟模式位8
 TI_REG Reserved1: 1;//保留位7
 TI_REG CLKS_STAT: 1;//CLKS引脚状态位6
 TI_REG DX_STAT: 1;//DX引脚状态位5
 TI_REG DR_STAT: 1;//DR引脚状态位4
 TI_REG FSXP:  1;//发送帧同步脉冲极性3
 TI_REG FSRP:  1;//接收帧同步脉冲极性2
 TI_REG CLKXP:  1;//发送时钟极性1
 TI_REG CLKRP:  1;//接收时钟极性0
}TI_BITS_PCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_PCR Bits;
}TI_REG_PCR;


/*---------------------------------------
        RCR1位定义
----------------------------------------*/
#define RCR1_RWDLEN1   5//5~7
#define RCR1_RFRLEN1   8//8~14


typedef volatile struct
{
 TI_REG Reserved0: 1;//保留位15
 TI_REG RFRLEN1: 7;//8~14
 TI_REG RWDLEN1: 1;//5~7
 TI_REG Reserved1: 5;//保留位0~4
}TI_BITS_RCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_RCR1 Bits;
}TI_REG_RCR1;


/*---------------------------------------
        RCR2位定义
----------------------------------------*/
#define RCR2_RDATDLY   0//0~1
#define RCR2_RFIG      2//
#define RCR2_RCOMPAND  3//3~4
#define RCR2_RWDLEN2   5//5~6
#define RCR2_RFRLEN2   8//8~14
#define RCR2_RPHASE   15//接收相位


typedef volatile struct
{
 TI_REG RPHASE:  1;//接收相位15
 TI_REG RFRLEN2: 7;//8~14
 TI_REG Reserved: 1;//保留位7
 TI_REG RWDLEN2: 2;//5~6
 TI_REG RCOMPAND: 2;//3~4
 TI_REG RFIG:  1;//2
 TI_REG RDATDLY: 2;//0~1
}TI_BITS_RCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_RCR2 Bits;
}TI_REG_RCR2;


/*---------------------------------------
        XCR1位定义(*本次修改*)
----------------------------------------*/
#define XCR1_XWDLEN1   5//5~7  *本次修改*
#define XCR1_XFRLEN1   8//8~14 *本次修改*


typedef volatile struct
{
 TI_REG Reserved0: 1;//保留位15
 TI_REG XFRLEN1: 7;//8~14
 TI_REG XWDLEN1: 1;//5~7
 TI_REG Reserved1: 5;//保留位0~4
}TI_BITS_XCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_XCR1 Bits;
}TI_REG_XCR1;


/*---------------------------------------
        XCR2位定义(*本次修改*)
----------------------------------------*/
#define XCR2_XDATDLY   0//0~1
#define XCR2_XFIG      2//
#define XCR2_XCOMPAND  3//3~4
#define XCR2_XWDLEN2   5//5~6
#define XCR2_XFRLEN2   8//8~14
#define XCR2_XPHASE   15//发送相位


typedef volatile struct
{
 TI_REG XPHASE:  1;//发送相位15
 TI_REG XFRLEN2: 7;//8~14
 TI_REG Reserved: 1;//保留位7
 TI_REG XWDLEN2: 2;//5~6
 TI_REG XCOMPAND: 2;//3~4
 TI_REG XFIG:  1;//2
 TI_REG XDATDLY: 2;//0~1
}TI_BITS_XCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_XCR2 Bits;
}TI_REG_XCR2;


/*---------------------------------------
        SRGR1位定义
----------------------------------------*/
#define SRGR1_CLKGDV   0//0~7
#define SRGR1_FWID     8//8~15


typedef volatile struct
{
 TI_REG FWID:  8;//8~15
 TI_REG CLKGDV:  8;//0~7
}TI_BITS_SRGR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SRGR1 Bits;
}TI_REG_SRGR1;


/*---------------------------------------
        SRGR2位定义
----------------------------------------*/
#define SRGR2_FPER     0//0~11//修正处
#define SRGR2_FSGM    12//
#define SRGR2_CLKSM   13//
#define SRGR2_CLKSP   14//
#define SRGR2_GSYNC   15//


typedef volatile struct
{
 TI_REG GSYNC:  1;//15
 TI_REG CLKSP:  1;//14
 TI_REG CLKSM:  1;//13
 TI_REG FSGM:  1;//12
 TI_REG FPER:    12;//0~11//修正处
}TI_BITS_SRGR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SRGR2 Bits;
}TI_REG_SRGR2;


/*---------------------------------------
        MCR1位定义
----------------------------------------*/
#define MCR1_RMCM      0//0
#define MCR1_RCBLK     2//2~4
#define MCR1_RPABLK    5//5~6
#define MCR1_RPBBLK    7//7~8


typedef volatile struct
{
 TI_REG Reserved0: 7;//9~15
 TI_REG RPBBLK:  2;//7~8
 TI_REG RPABLK:  2;//5~6
 TI_REG RCBLK:  3;//2~4
 TI_REG Reserved1: 1;//3
 TI_REG RMCM:     1;//0
}TI_BITS_MCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_MCR1 Bits;
}TI_REG_MCR1;


/*---------------------------------------
        MCR2位定义
----------------------------------------*/
#define MCR2_XMCM      0//0~1
#define MCR2_XCBLK     2//2~4
#define MCR2_XPABLK    5//5~6
#define MCR2_XPBBLK    7//7~8


typedef volatile struct
{
 TI_REG Reserved0: 7;//9~15
 TI_REG XPBBLK:  2;//7~8
 TI_REG XPABLK:  2;//5~6
 TI_REG XCBLK:  3;//2~4
 TI_REG Reserved1: 1;//3
 TI_REG XMCM:     1;//0
}TI_BITS_MCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_MCR2 Bits;
}TI_REG_MCR2;


/*---------------------------------------
        RCERA位定义
----------------------------------------*/
#define RCERA_0        0
#define RCERA_1        1
#define RCERA_2        2
#define RCERA_3        3
#define RCERA_4        4
#define RCERA_5        5
#define RCERA_6        6
#define RCERA_7        7
#define RCERA_8        8
#define RCERA_9        9
#define RCERA_10      10
#define RCERA_11      11
#define RCERA_12      12
#define RCERA_13      13
#define RCERA_14      14
#define RCERA_15      15


#define TI_REG_RCERA TI_REG_BASE
/*---------------------------------------
        RCERB位定义
----------------------------------------*/
#define RCERB_0        0
#define RCERB_1        1
#define RCERB_2        2
#define RCERB_3        3
#define RCERB_4        4
#define RCERB_5        5
#define RCERB_6        6
#define RCERB_7        7
#define RCERB_8        8
#define RCERB_9        9
#define RCERB_10      10
#define RCERB_11      11
#define RCERB_12      12
#define RCERB_13      13
#define RCERB_14      14
#define RCERB_15      15


#define TI_REG_RCERB TI_REG_BASE
/*---------------------------------------
        XCERA位定义
----------------------------------------*/
#define XCERA_0        0
#define XCERA_1        1
#define XCERA_2        2
#define XCERA_3        3
#define XCERA_4        4
#define XCERA_5        5
#define XCERA_6        6
#define XCERA_7        7
#define XCERA_8        8
#define XCERA_9        9
#define XCERA_10      10
#define XCERA_11      11
#define XCERA_12      12
#define XCERA_13      13
#define XCERA_14      14
#define XCERA_15      15


#define TI_REG_XCERA TI_REG_BASE
/*---------------------------------------
        XCERB位定义
----------------------------------------*/
#define XCERB_0        0
#define XCERB_1        1
#define XCERB_2        2
#define XCERB_3        3
#define XCERB_4        4
#define XCERB_5        5
#define XCERB_6        6
#define XCERB_7        7
#define XCERB_8        8
#define XCERB_9        9
#define XCERB_10      10
#define XCERB_11      11
#define XCERB_12      12
#define XCERB_13      13
#define XCERB_15      15


#define TI_REG_XCERB TI_REG_BASE
/*---------------------------------------
        子McBSP地址定义
----------------------------------------*/
#define SPCR1           0x00;//串行接口控制寄存器1
#define SPCR2   0x01;//串行接口控制寄存器2
#define RCR1   0x02;//接收控制寄存器1
#define RCR2   0x03;//接收控制寄存器2
#define XCR1   0x04;//发送控制寄存器1
#define XCR2   0x05;//发送控制寄存器2
#define SRGR1   0x06;//采样率发生器寄存器1
#define SRGR2   0x07;//采样率发生器寄存器2
#define MCR1   0x08;//多通道寄存器1
#define MCR2   0x09;//多通道寄存器2
#define RCERA   0x0a;//接收通道使能寄存器段A
#define RCERB   0x0b;//接收通道使能寄存器段B
#define XCERA   0x0c;//发送通道使能寄存器段A
#define XCERB   0x0d;//发送通道使能寄存器段B
#define PCR    0x0e;//引脚控制寄存器


/*---------------------------------------
        子DMA地址定义
----------------------------------------*/
#define DMSRC0   0x00;//DMA通道0源地址寄存器
#define DMDST0   0x01;//DMA通道0目的地址寄存器
#define DMCTR0   0x02;//DMA通道0单元计数寄存器
#define DMSFC0   0x03;//DMA通道0同步事件和帧寄存器
#define DMMCR0   0x04;//DMA通道0传输模式控制寄存器


#define DMSRC1   0x05;//DMA通道1源地址寄存器
#define DMDST1   0x06;//DMA通道1目的地址寄存器
#define DMCTR1   0x07;//DMA通道1单元计数寄存器
#define DMSFC1   0x08;//DMA通道1同步事件和帧寄存器
#define DMMCR1   0x09;//DMA通道1传输模式控制寄存器


#define DMSRC2   0x0a;//DMA通道2源地址寄存器
#define DMDST2   0x0b;//DMA通道2目的地址寄存器
#define DMCTR2   0x0c;//DMA通道2单元计数寄存器
#define DMSFC2   0x0d;//DMA通道2同步事件和帧寄存器
#define DMMCR2   0x0e;//DMA通道2传输模式控制寄存器


#define DMSRC3   0x0f;//DMA通道3源地址寄存器
#define DMDST3   0x10;//DMA通道3目的地址寄存器
#define DMCTR3   0x11;//DMA通道3单元计数寄存器
#define DMSFC3   0x12;//DMA通道3同步事件和帧寄存器
#define DMMCR3   0x13;//DMA通道3传输模式控制寄存器


#define DMSRC4   0x14;//DMA通道4源地址寄存器
#define DMDST4   0x15;//DMA通道4目的地址寄存器
#define DMCTR4   0x16;//DMA通道4单元计数寄存器
#define DMSFC4   0x17;//DMA通道4同步事件和帧寄存器
#define DMMCR4   0x18;//DMA通道4传输模式控制寄存器


#define DMSRC5   0x19;//DMA通道5源地址寄存器
#define DMDST5   0x1a;//DMA通道5目的地址寄存器
#define DMCTR5   0x1b;//DMA通道5单元计数寄存器
#define DMSFC5   0x1c;//DMA通道5同步事件和帧寄存器
#define DMMCR5   0x1d;//DMA通道5传输模式控制寄存器


#define DMSRCP   0x1e;//DMA源程序页地址(公用的通道)
#define DMDSTP   0x1f;//DMA目的程序页地址(公用的通道)
 
#define DMIDX0   0x20;//DMA单元变址寄存器0
#define DMIDX1   0x21;//DMA单元变址寄存器1
#define DMFRI0   0x22;//DMA帧变址寄存器0
#define DMFRI1   0x23;//DMA帧变址寄存器1
#define DMGSA   0x24;//DMA全局源地址重载寄存器
#define DMGDA   0x25;//DMA全局目的地址重载寄存器
#define DMGCR   0x26;//DMA全局计数重载寄存器
#define DMGFR   0x27;//DMA全局帧计数重载寄存器


typedef volatile struct _TI_SREG {
//0x0000
  TI_REG_IMR IMR;//中断屏蔽寄存器(0x00)
  TI_REG_IFR IFR;//中断标志寄存器(0x01)
  TI_REG   Reserved0[4]; //保留4个空位
  TI_REG_ST0  ST0;//状态寄存器0(0x06)
  TI_REG_ST1  ST1;
//  TI_REG ST1;//状态寄存器1(0x07)
  TI_REG AL;//累加器A低16位(0x08)
  TI_REG AH;//累加器A高16位(0x09)
  TI_REG AG;//累加器A保护位(0x0a)
  TI_REG BL;//累加器B低16位(0x0b)
  TI_REG BH;//累加器B高16位(0x0c)
  TI_REG BG;//累加器B保护位(0x0d)
  TI_REG TREG;//临时寄存器(0x0e)
  TI_REG TRN;//发送寄存器(0x0f)
//0x0010
  TI_REG AR0;//辅助寄存器0(0x10)
  TI_REG AR1;//辅助寄存器1(0x11)
  TI_REG AR2;//辅助寄存器2(0x12)
  TI_REG AR3;//辅助寄存器3(0x13)
  TI_REG AR4;//辅助寄存器4(0x14)
  TI_REG AR5;//辅助寄存器5(0x15)
  TI_REG AR6;//辅助寄存器6(0x16)
  TI_REG AR7;//辅助寄存器7(0x17)
  TI_REG SP;//堆栈指针(0x18)
  TI_REG BK;//缓冲大小寄存器(0x19)
  TI_REG BRC;//块重复计数器(0x1a)
  TI_REG RSA;//块重复起始地址寄存器(0x1b)
  TI_REG REA;//块重复结束地址寄存器(0x1c)
  TI_REG_PMST PMST;//处理器工作模式状态寄存器(0x1d)
  TI_REG XPC;//程序计数器扩展寄存器(0x1e)
  TI_REG Reserved1[1]; //保留1个空位(0x1f)
//0x0020
  TI_REG DRR20;//数据接收寄存器2(0x20)
  TI_REG DRR10;//数据接收寄存器1(0x21)
  TI_REG DXR20;//数据发送寄存器2(0x22)
  TI_REG DXR10;//数据发送寄存器1(0x23)
  TI_REG TIM;//定时器寄存器     (0x24)
  TI_REG PRD;//定时器周期寄存器 (0x25)
  TI_REG_TCR TCR;//定时器控制寄存器 (0x26)
  TI_REG Reserved2[1]; //保留1个空位(0x27)
  TI_REG SWWSR;//软件等待状态寄存器(0x28)
  TI_REG_BSCR BSCR;//分区状态寄存器(0x29)
  TI_REG Reserved3[1]; //保留1个空位(0x2a)
  TI_REG SWCR;//软件等待状态控制寄存器(0x2b)
  TI_REG_HPIC HPIC;//HPI控制寄存器(0x2c)
  TI_REG Reserved4[3]; //保留3个空位(0x2d~0x2f)
//0x0030
  TI_REG TIM1;//定时器寄存器1(0x30)
  TI_REG PRD1;//定时器周期寄存器1(0x31)
  TI_REG TCR1;//定时器控制寄存器1(0x32)
  TI_REG Reserved5[5]; //保留5个空位(0x33~37)
  TI_REG SPSA0;//子区寻址寄存器0(0x38)
  TI_REG SPSD0;//子区数据寄存器0(0x39)
  TI_REG Reserved6[2]; //保留2个空位(0x3a~0x3b)
  TI_REG_GPIOCR GPIOCR;//GPIO控制寄存器(0x3c)
  TI_REG_GPIOSR GPIOSR;//GPIO状态寄存器(0x3d)
  TI_REG Reserved7[2]; //保留2个空位(0x3e,0x3f)
//0x0040
  TI_REG DRR21;//数据接收寄存器2(0x40)
  TI_REG DRR11;//数据接收寄存器1(0x41)
  TI_REG DXR21;//数据发送寄存器2(0x42)
  TI_REG DXR11;//数据发送寄存器1(0x43)
  TI_REG Reserved8[4]; //保留4个空位(0x44~0x47)
  TI_REG SPSA1;//子区寻址寄存器1(0x48)
  TI_REG SPSD1;//子区数据寄存器1(0x49)
  TI_REG Reserved9[10]; //保留10个空位(0x4a)
  TI_REG_DMPREC DMPREC;
  //DMA通道优先级和使能控制寄存器(0x54)
  TI_REG DMSA;//DMA子区寻址寄存器(0x55)
  TI_REG DMSDI;//带子区寻址自动增加的DMA子区数据寄存器(0x56)
  TI_REG DMSDN;//子区数据寄存器(0x57)
  TI_REG_CLKMD CLKMD;//时钟模式寄存器(0x58)
  TI_REG Reserved10[7]; //保留7个空位(0x59~0x5f)
}TI_SREG, *TI_PSREG;


#define TI_BASE_SREG  ((TI_SREG *)  0x0000)//定义硬件结构指针(硬件地址)


/*--------------------------------------------------------------------------
应用举例:
  SREG->IMR = 0x0000;
  SREG->IFR = 0xffff;
  SREG->PMST = (0x1ff << PMST_IPTR) |  \
               (1 << PMST_MP_MC) | (1 << PMST_OVLY) | (1 << PMST_CLKOFF);
  SREG->IMR = (1 << IMR_TINT0);//允许TINT0中断
  Enable();//开中断
  for(;;) {
    SREG->ST1 ^= (1 << ST1_XF);
  }
---------------------------------------------------------------------------*/


typedef volatile struct _TI_McBSP0 {
  TI_REG DRR2;//数据接收寄存器2(0x20)
  TI_REG DRR1;//数据接收寄存器1(0x21)
  TI_REG DXR2;//数据发送寄存器2(0x22)
  TI_REG DXR1;//数据发送寄存器1(0x23)
  TI_REG Reserved[20]; //保留20个空位
  TI_REG SPSA;//子区寻址寄存器(0x38)
  TI_REG SPSD;//子区数据寄存器(0x39)
}TI_McBSP0, *TI_PMcBSP0;


#define TI_BASE_McBSP0  ((TI_McBSP0 *)  0x0020)//定义硬件结构指针(硬件地址)



typedef volatile struct _TI_McBSP1 {
  TI_REG DRR2;//数据接收寄存器2(0x40)
  TI_REG DRR1;//数据接收寄存器1(0x41)
  TI_REG DXR2;//数据发送寄存器2(0x42)
  TI_REG DXR1;//数据发送寄存器1(0x43)
  TI_REG Reserved[4]; //保留20个空位
  TI_REG SPSA;//子区寻址寄存器(0x48)
  TI_REG SPSD;//子区数据寄存器(0x49)
}TI_McBSP1, *TI_PMcBSP1;


#define TI_BASE_McBSP1  ((TI_McBSP1 *)  0x0040)//定义硬件结构指针(硬件地址)



/*--------------------------------------------------------------------------
应用举例:
  McBSP0->DXR10 = 0xaa;//向串口0数据发送寄存器1发送数据0xaa
  McBSP0->SPSA0 = SPCR1;//设置子地址(串行接口控制寄存器1)
  McBSP0->SPSD0 = 0x00;//SPCR1 = 0x00//向串口1串行接口控制寄存器1发送命令0x00
---------------------------------------------------------------------------*/



typedef volatile struct _TI_DMA {
  TI_REG DMPREC;//DMA通道优先级和使能控制寄存器(0x54)
  TI_REG DMSA;//DMA子区寻址寄存器(0x55)
  TI_REG DMSDI;//带子区寻址自动增加的DMA子区数据寄存器(0x56)
  TI_REG DMSDN;//子区数据寄存器(0x57)
}TI_DMA, *TI_PDMA;


#define TI_BASE_DMA  ((TI_DMA *)  0x0054)//定义硬件结构指针(硬件地址)



typedef volatile struct _TI_TIMER {
  TI_REG TIM;//定时器寄存器
  TI_REG PRD;//定时器周期寄存器
  TI_REG TCR;//定时器控制寄存器
}TI_TIMER, *TI_PTIMER;


#define TI_BASE_TIMER0  ((TI_TIMER *)  0x0024)//定义硬件结构指针(硬件地址)
#define TI_BASE_TIMER1  ((TI_TIMER *)  0x0030)//定义硬件结构指针(硬件地址)


extern void _delay_loop_(unsigned int);
extern const TI_PSREG SREG;//定义全局结构指针变量REGS
extern const TI_PMcBSP0 McBSP0;//定义全局结构指针变量McBSP0
extern const TI_PMcBSP1 McBSP1;//定义全局结构指针变量McBSP1
extern const TI_PDMA DMA;//定义全局结构指针变量DMA
extern const TI_PTIMER TIMER0;//定义全局结构指针变量TIMER0
extern const TI_PTIMER TIMER1;//定义全局结构指针变量TIMER1



/*--------------------------------------------------------------------------
应用举例:
  SREG->IMR = 0x0000;
  SREG->IFR = 0xffff;
  TIMER0->PRD = 250;//设置定时周期
  TIMER0->TCR &= ~(1 << TCR_TSS);//启动定时器0
  SREG->IMR = (1 << IMR_TINT0);//允许TINT0中断
  Enable();//开中断
---------------------------------------------------------------------------*/


#ifdef __cplusplus
}
#endif


#endif  // __C5402CFG_H

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条