原创 C5402CFG.H(枚举感知版)

2008-12-26 16:45 2559 2 2 分类: 处理器与DSP

/*---------------------------------------------------------------------------
文   件   名 :  C5402CFG.H(枚举感知版)
创   建   人 :  DSP菜鸟  HotPower@126.com
创 建 日  期 :  2006.6.09  11:19
最近修改日期 :  2008.12.25  8:18
创 建  地 点 : 西安大雁塔村队部(http://www.hotpower.org/)
版   本   号 : V4.20
修 改 理  由 :  修正和增订内容
                用枚举替代宏定义来得到智能感知的快捷.类似VC助手之类的工具软件
                的感知功能.
    由于CCS具备对枚举的智能感知,键入枚举名后即可选择。
    雷同结构或结构指针的智能感知功能。
    由于C/C++的枚举和Java的不太相同,不能作为数据类型赋值。故选择
    枚举值后应该再删除枚举名及'.'即可。
    虽然没Java枚举便捷,但可以减少查阅c5402cfg.h枚举值的次数
    本版本只是借用枚举名来迅速地查阅需要的枚举值来提高效率和降低
    错误。
备        注 : 由此文件出现的问题,DSP菜鸟不负任何责任
    程序代码全部由C/C++语言编写.并支持全部的CCS的C++选项。
                菜农将不断更新和完善本头文件。
应 用 举  例:  
    SREGs.DMA.DMSA = DMSFC0;//DMA通道0同步事件和帧寄存器
    SREGs.DMA.DMSDI.DMSFC_Regs =
                                   (DSYN_NONE << DMSFC_DSYN);//无DMA同步事件
                键入"DMSFC"加"."后智能感知到DMSFC.DMSFC_DSYN。
                键入"DMSFC_DSYN"加"."后智能感知到DMSFC_DSYN.DSYN_NONE。
    得到:
    SREGs.DMA.DMSDI.DMSFC_Regs = (DMSFC_DSYN.DSYN_NONE <<
                               DMSFC.DMSFC_DSYN);//无DMA同步事件
                整理删除"DMSFC."和"DMSFC_DSYN."从而得到上式。


    SREGs.DMA.DMSDI.DMSFC_Bits.DSYN = DSYN_NONE;//无DMA同步事件
                键入"DMSFC_DSYN"加"."后智能感知到DMSFC_DSYN.DSYN_NONE。
    得到:
    SREGs.DMA.DMSDI.DMSFC_Bits.DSYN =
                             DMSFC_DSYN.DSYN_NONE;//无DMA同步事件
                整理删除"DMSFC_DSYN."从而得到上式。


注 意 事  项 :  从本版本起可正式淘汰SREG数组指针,只是为兼容而保留.
声        明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。               
---------------------------------------------------------------------------*/



#ifndef __C5402CFG_H
#define __C5402CFG_H


#ifdef __cplusplus
extern "C"
{
#endif



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


typedef volatile unsigned long TI_LREG;
typedef volatile unsigned long * TI_PLREG;
typedef volatile long TI_ILREG;
typedef volatile unsigned long * TI_PILREG;


typedef unsigned int __TI_REG;
typedef unsigned int * __TI_PREG;
typedef int __TI_IREG;
typedef unsigned int * __TI_PIREG;


typedef unsigned long __TI_LREG;
typedef unsigned long * __TI_PLREG;
typedef long __TI_ILREG;
typedef unsigned long * __TI_PILREG;


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


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


#define Reset()   asm(" TRAP 0");//DSP复位
#define Disable() asm(" ssbx intm");//关中断
#define Enable()  asm(" rsbx intm");//开中断


/*-------------------------------------------
  以下是增订部分
-------------------------------------------*/
#define __disable_interrupt() asm(" ssbx intm");//关中断
#define __enable_interrupt()  asm(" rsbx intm");//开中断
#define __sleep() asm(" IDLE 1");//休眠
#define __no_operation() asm(" nop");//空操作
#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)0xf273u,//BD address
 DSPCODE_B       = (TI_IREG)0xf073u,//B  address
 DSPCODE_RETE    = (TI_IREG)0xf4fbu,//Rete
 DSPCODE_NOP     = (TI_IREG)0xf495u,//Nop
 DSPCODE_SP_200L = (TI_IREG)0x7718u,//STM #200,SP
 DSPCODE_SP_200H = (TI_IREG)0x00c8u//STM #200,SP
};


#define INTR(nISR)   (DSPCODE_INTR + (TI_IREG)(nISR) & 0x1f)
#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}
//注意:宏ISR_Load()调用前应该关闭中断,装载后再开放中断
#define ISR_Load(nISR, addr) {g_pfnVectors[nISR].Isr = (pfnVectorEntry)addr;}
//注意:宏ISR_UnLoad()调用前应该关闭中断,卸载后再开放中断
#define ISR_UnLoad(nISR) {g_pfnVectors[nISR].Isr = (pfnVectorEntry)DefaultIsr;}



typedef interrupt void (*pfnVectorEntry)(void);//中断函数指针
typedef struct
{
 TI_IREG Code;//嵌入汇编代码
    pfnVectorEntry Isr;//中断入口地址
 TI_IREG DataLow;//嵌入汇编代码或数据
 TI_IREG DataHi;//嵌入汇编代码或数据
}uVectorEntry;


/*
 应用:废除汇编的启动代码(中断向量表)
#pragma DATA_SECTION("vectors")
const uVectorEntry g_pfnVectors[] = {
 ISR_Reset(),   //reset      0x0080 #0//软硬件复位nISR_REST
 ISR_Default(), //nmi        0x0084 #1//非屏蔽中断nISR_NMI
 ISR_Default(), //sint17     0x0088 #2//软件中断17   
 ISR_Default(), //sint18     0x008c #3//软件中断18
 ISR_Default(), //sint19     0x0090 #4//软件中断19
 ISR_Default(), //sint20     0x0094 #5//软件中断20
 ISR_Default(), //sint21     0x0098 #6//软件中断21
 ISR_Default(), //sint22     0x009c #7//软件中断22
 ISR_Default(), //sint23     0x00a0 #8//软件中断23
 ISR_Default(), //sint24     0x00a4 #9//软件中断24
 ISR_Default(), //sint25     0x00a8 #10//软件中断25
 ISR_Default(), //sint26     0x00ac #11//软件中断26
 ISR_Default(), //sint27     0x00b0 #12//软件中断27
 ISR_Default(), //sint28     0x00b4 #13//软件中断28
 ISR_Default(), //sint29     0x00b8 #14//软件中断29
 ISR_Default(), //sint30     0x00bc #15//软件中断30
 ISR(Eint0Isr), //int0       0x00c0 #16//外部中断0
 ISR(Eint1Isr), //int1       0x00c4 #17//外部中断1
 ISR(Eint2Isr), //int2       0x00c8 #18//外部中断2
 ISR(Timer0Isr),//tint       0x00cc #19//定时器中断0
 ISR(McBSPIsr), //rint0      0x00d0 #20//McBSP0接收中断
 ISR_Default(), //xint0      0x00d4 #21//McBSP0发送中断
 ISR_Default(), //rint1      0x00d8 #22//McBSP1接收中断
 ISR(Timer1Isr),//xint1      0x00dc #23//定时器中断1
 ISR(Eint3Isr), //int3       0x00e0 #24//外部中断3
 ISR_Default(), //hpint      0x00e4 #25//HPI中断
 ISR_Default(), //           0x00e8 #26//软件中断10
 ISR_Default(), //           0x00ec #27//软件中断11
 ISR_Default(), //           0x00f0 #28//软件中断12
 ISR_Default(), //           0x00f4 #29//软件中断13
 ISR_Default(), //           0x00f8 #30//保留0
 ISR_Default(), //           0x00fc #31//保留1
};


extern "C" interrupt void DefaultIsr(void)
{
}
*/
/*----------------------------------------
        中断号定义
ISR_EVT_INT0 External User Interrupt #0
ISR_EVT_INT1 External User Interrupt #1
ISR_EVT_INT2 External User Interrupt #2
ISR_EVT_INT3 External User Interrupt #3
ISR_EVT_TINT0 Timer 0 Interrupt
ISR_EVT_HINT Host Interrupt (HPI)
ISR_EVT_DMA0 DMA Channel 0 Interrupt
ISR_EVT_DMA1 DMA Channel 1 Interrupt
ISR_EVT_DMA2 DMA Channel 2 Interrupt
ISR_EVT_DMA3 DMA Channel 3 Interrupt
ISR_EVT_DMA4 DMA Channel 4 Interrupt
ISR_EVT_DMA5 DMA Channel 5 Interrupt
ISR_EVT_RINT0 MCBSP Port #0 Receive Interrupt
ISR_EVT_XINT0 MCBSP Port #0 Transmit Interrupt
ISR_EVT_RINT2 MCBSP Port #2 Receive Interrupt
ISR_EVT_XINT2 MCBSP Port #2 Transmit Interrupt
ISR_EVT_TINT1 Timer #1 Interrupt
ISR_EVT_HPINT Host Interrupt (HPI)
ISR_EVT_RINT1 MCBSP Port #1 Receive Interrupt
ISR_EVT_XINT1 MCBSP Port #1 Transmit Interrupt
ISR_EVT_IPINT FIFO Full Interrupt
ISR_EVT_SINT14 Software Interrupt #14
ISR_EVT_WDTINT Watchdog Timer Interrupt
ISR_EVT_UART UART Interrupt
ISR_EVT_DAARCV DAA Receive Interrupt
ISR_EVT_DAA_XMT DAA Transmit Interrupt
----------------------------------------*/
/*
#define nISR_REST    0    //0x0080//软硬件复位
#define nISR_NMI       1    //0x0084//非屏蔽中断
 #define nISR_SINT16 1    //0x0084//软件中断16
#define nISR_SINT17  2    //0x0088//软件中断17
#define nISR_SINT18  3    //0x008c//软件中断18
#define nISR_SINT19  4    //0x0090//软件中断19
#define nISR_SINT20  5    //0x0094//软件中断20
#define nISR_SINT21  6    //0x0098//软件中断21
#define nISR_SINT22  7    //0x009c//软件中断22
#define nISR_SINT23  8    //0x00a0//软件中断23
#define nISR_SINT24  9    //0x00a4//软件中断24
#define nISR_SINT25  10   //0x00a8//软件中?5
#define nISR_SINT26  11   //0x00ac//软件中断26
#define nISR_SINT27  12   //0x00b0//软件中断27
#define nISR_SINT28  13   //0x00b4//软件卸?8
#define nISR_SINT29  14   //0x00b8//软件中断29
#define nISR_SINT30  15   //0x00bc//软件中断30
#define nISR_INT0  16   //0x00c0//外部中断0
 #define nISR_SINT0 16   //0x00c0//软件0
#define nISR_INT1  17   //0x00c4//外部中断1
 #define nISR_SINT1 17   //0x00c4//软件中断1
#define nISR_INT2  18   //0x00c8//外部中断2
 #define nISR_SINT2 18   //0x00c8//软件中断2
#define nISR_TINT0      19   //0x00cc//定时器中断0
#define nISR_TIMER0     19   //0x00cc//定时器中断0
 #define nISR_SINT3 19   //0x00cc//软件中断3
#define nISR_BRINT0     20   //0x00d0//McBSP0接收中断
 #define nISR_SINT4 20   //0x00d0//软件中断4
#define nISR_BXINT0     21   //0x00d4//McBSP0发送中断
 #define nISR_SINT5 21   //0x00d4//软件中断5
#define nISR_DMAC0INT   22   //0x00d8//DMA通道0中断(与DMPREC_INTOSEL无关)
 #define nISR_SINT6   22 //0x00d8//软件中断6
#define nISR_TIMER1     23   //0x00dc//定时器中断1(DMPREC_INTOSEL=0,1)
 #define nISR_DMAC1INT 23 //0x00dc//DMA通道1中断(DMPREC_INTOSEL=2)
 #define nISR_SINT7   23 //0x00dc//软件中断7
#define nISR_INT3  24   //0x00e0//外部中断3
 #define nISR_SINT8   24 //0x00e0//软件中断8
#define nISR_HPINT  25   //0x00e4//HPI中断
 #define nISR_SINT9   25 //0x00e4//软件中断9
#define nISR_BRINT1     26   //0x00e8//McBSP1接收中断(DMPREC_INTOSEL=0)
 #define nISR_DMAC2INT 26 //0x00e8//DMA通道2中断(DMPREC_INTOSEL=1,2)
 #define nISR_SINT10   26 //0x00e8//软件中断10
#define nISR_BXINT1     27   //0x00ec//McBSP1发送中断(DMPREC_INTOSEL=0)
 #define nISR_DMAC3INT 27 //0x00ec//DMA通道3中断(DMPREC_INTOSEL=1,2)
 #define nISR_SINT11   27 //0x00ec//软件中断11
#define nISR_DMAC4INT   28   //0x00f0//DMA通道4中断(与DMPREC_INTOSEL无关)
 #define nISR_SINT12   28 //0x00f0//软件中断12
#define nISR_DMAC5INT   29   //0x00f4//DMA通道5中断(与DMPREC_INTOSEL无关)
 #define nISR_SINT13   29 //0x00f4//软件中断13
#define nISR_RESINT0 30   //0x00f8//保留0
#define nISR_RESINT1 31   //0x00fc//保留1
*/


/*----------------------------------------
        中断号枚举
----------------------------------------*/
enum nISR
{
 nISR_REST    = 0,    //0x0080//软硬件复位
 nISR_NMI       = 1,    //0x0084//非屏蔽中断
 nISR_SINT16 = 1,    //0x0084//软件中断16
 nISR_SINT17   =2,    //0x0088//软件中断17
 nISR_SINT18  = 3,    //0x008c//软件中断18
 nISR_SINT19  = 4,    //0x0090//软件中断19
 nISR_SINT20  = 5,    //0x0094//软件中断20
 nISR_SINT21  = 6,    //0x0098//软件中断21
 nISR_SINT22  = 7,    //0x009c//软件中断22
 nISR_SINT23  = 8,    //0x00a0//软件中断23
 nISR_SINT24  = 9,    //0x00a4//软件中断24
 nISR_SINT25  = 10,   //0x00a8//软件中?5
 nISR_SINT26  = 11,   //0x00ac//软件中断26
 nISR_SINT27  = 12,   //0x00b0//软件中断27
 nISR_SINT28  = 13,   //0x00b4//软件中断28
 nISR_SINT29  = 14,   //0x00b8//软件中断29
 nISR_SINT30  = 15,   //0x00bc//软件中断30
 nISR_INT0  = 16,   //0x00c0//外部中断0
 nISR_SINT0 = 16,   //0x00c0//软件0
 nISR_INT1  = 17,   //0x00c4//外部中断1
 nISR_SINT1 = 17,   //0x00c4//软件中断1
 nISR_INT2  = 18,   //0x00c8//外部中断2
 nISR_SINT2 = 18,   //0x00c8//软件中断2
 nISR_TINT0      = 19,   //0x00cc//定时器中断0
 nISR_TIMER0     = 19,   //0x00cc//定时器中断0
 nISR_SINT3 = 19,   //0x00cc//软件中断3
 nISR_BRINT0     = 20,   //0x00d0//McBSP0接收中断
 nISR_SINT4 = 20,   //0x00d0//软件中断4
 nISR_BXINT0     = 21,   //0x00d4//McBSP0发送中断
 nISR_SINT5 = 21,   //0x00d4//软件中断5
 nISR_DMAC0INT   = 22,   //0x00d8//DMA通道0中断(与DMPREC_INTOSEL无关)
 nISR_SINT6   = 22, //0x00d8//软件中断6
 nISR_TIMER1     = 23,   //0x00dc//定时器中断1(DMPREC_INTOSEL=0,1)
 nISR_DMAC1INT = 23, //0x00dc//DMA通道1中断(DMPREC_INTOSEL=2)
 nISR_SINT7   = 23, //0x00dc//软件中断7
 nISR_INT3  = 24,   //0x00e0//外部中断3
 nISR_SINT8   = 24, //0x00e0//软件中断8
 nISR_HPINT  = 25,   //0x00e4//HPI中断
 nISR_SINT9   = 25, //0x00e4//软件中断9
 nISR_BRINT1     = 26,   //0x00e8//McBSP1接收中断(DMPREC_INTOSEL=0)
 nISR_DMAC2INT = 26, //0x00e8//DMA通道2中断(DMPREC_INTOSEL=1,2)
 nISR_SINT10   = 26, //0x00e8//软件中断10
 nISR_BXINT1     = 27,   //0x00ec//McBSP1发送中断(DMPREC_INTOSEL=0)
 nISR_DMAC3INT = 27, //0x00ec//DMA通道3中断(DMPREC_INTOSEL=1,2)
 nISR_SINT11   = 27, //0x00ec//软件中断11
 nISR_DMAC4INT   = 28,   //0x00f0//DMA通道4中断(与DMPREC_INTOSEL无关)
 nISR_SINT12   = 28, //0x00f0//软件中断12
 nISR_DMAC5INT   = 29,   //0x00f4//DMA通道5中断(与DMPREC_INTOSEL无关)
 nISR_SINT13   = 29, //0x00f4//软件中断13
 nISR_RESINT0 = 30,   //0x00f8//保留0
 nISR_RESINT1 = 31   //0x00fc//保留1
};


enum ISR//雷同CSL的ISR枚举
{
 ISR_EVT_RS  = 0,//Reset
 ISR_EVT_NMI  = 1,//Non-Maskable Interrupt (NMI)
 ISR_EVT_SINT0 = 16,//Software Interrupt #0
 ISR_EVT_SINT1 = 17,//Software Interrupt #1
 ISR_EVT_SINT2 = 18,//Software Interrupt #2
 ISR_EVT_SINT3 = 19,//Software Interrupt #3
 ISR_EVT_SINT4 = 20,//Software Interrupt #4
 ISR_EVT_SINT5 = 21,//Software Interrupt #5
 ISR_EVT_SINT6 = 22,//Software Interrupt #6
 ISR_EVT_SINT7 = 23,//Software Interrupt #7
 ISR_EVT_SINT8 = 24,//Software Interrupt #8
 ISR_EVT_SINT9 = 25,//Software Interrupt #9
 ISR_EVT_SINT10 = 26,//Software Interrupt #10
 ISR_EVT_SINT11 = 27,//Software Interrupt #11
 ISR_EVT_SINT12 = 28,//Software Interrupt #12
 ISR_EVT_SINT13 = 29,//Software Interrupt #13
 ISR_EVT_SINT16 = 1,//Software Interrupt #16
 ISR_EVT_SINT17 = 2,//Software Interrupt #17
 ISR_EVT_SINT18 = 3,//Software Interrupt #18
 ISR_EVT_SINT19 = 4,//Software Interrupt #19
 ISR_EVT_SINT20 = 5,//Software Interrupt #20
 ISR_EVT_SINT21 = 6,//Software Interrupt #21
 ISR_EVT_SINT22 = 7,//Software Interrupt #22
 ISR_EVT_SINT23 = 8,//Software Interrupt #23
 ISR_EVT_SINT24 = 9,//Software Interrupt #24
 ISR_EVT_SINT25 = 10,//Software Interrupt #25
 ISR_EVT_SINT26 = 11,//Software Interrupt #26
 ISR_EVT_SINT27 = 12,//Software Interrupt #27
 ISR_EVT_SINT28 = 13,//Software Interrupt #28
 ISR_EVT_SINT29 = 14,//Software Interrupt #29
 ISR_EVT_SINT30 = 15,//Software Interrupt #30
 ISR_EVT_INT0 = 16,//External User Interrupt #0
 ISR_EVT_INT1 = 17,//External User Interrupt #1
 ISR_EVT_INT2 = 18,//External User Interrupt #2
 ISR_EVT_INT3 = 24,//External User Interrupt #3
 ISR_EVT_TINT0 = 19,//Timer 0 Interrupt
 ISR_EVT_HINT = 25,//Host Interrupt (HPI)
 ISR_EVT_DMA0 = 22,//DMA Channel 0 Interrupt
 ISR_EVT_DMA1 = 23,//DMA Channel 1 Interrupt
 ISR_EVT_DMA2 = 26,//DMA Channel 2 Interrupt
 ISR_EVT_DMA3 = 27,//DMA Channel 3 Interrupt
 ISR_EVT_DMA4 = 28,//DMA Channel 4 Interrupt
 ISR_EVT_DMA5 = 29,//DMA Channel 5 Interrupt
 ISR_EVT_RINT0 = 20,//MCBSP Port #0 Receive Interrupt
 ISR_EVT_XINT0 = 21,//MCBSP Port #0 Transmit Interrupt
 ISR_EVT_TINT1 = 23,//Timer #1 Interrupt
 ISR_EVT_HPINT = 25,//Host Interrupt (HPI)
 ISR_EVT_RINT1 = 26,//MCBSP Port #1 Receive Interrupt
 ISR_EVT_XINT1 = 27 //MCBSP Port #1 Transmit Interrupt
};


/*----------------------------------------
        基本位定义
----------------------------------------*/
/*
#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//
*/


/*----------------------------------------
        基本位枚举
----------------------------------------*/
enum BIT
{
 BIT0                = 0,//
 BIT1                = 1,//
 BIT2                = 2,//
 BIT3                = 3,//
 BIT4                = 4,//
 BIT5                = 5,//
 BIT6                = 6,//
 BIT7                = 7,//
 BIT8                = 8,//
 BIT9                = 9,//
 BIT10               = 10,//
 BIT11               = 11,//
 BIT12               = 12,//
 BIT13               = 13,//
 BIT14               = 14,//
 BIT15               = 15//
};


//不解为何5402和一般的位域次序相反
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, *TI_BITS_PBASE;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_BASE Bits;
}TI_REG_BASE, *TI_REG_PBASE;


/*---------------------------------------
        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引脚方向?
#define GPIOCR_DIR7         7//I/O引脚方向位7


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


/*---------------------------------------
        GPIOCR位枚举
----------------------------------------*/
enum GPIOCR
{
 GPIOCR_DIR0         = 0,//I/O引脚方向位0
 GPIOCR_DIR1         = 1,//I/O引脚方向位1
 GPIOCR_DIR2         = 2,//I/O引脚方向位2
 GPIOCR_DIR3         = 3,//I/O引脚方向位3
 GPIOCR_DIR4         = 4,//I/O引脚方向位4
 GPIOCR_DIR5         = 5,//I/O引脚方向位5
 GPIOCR_DIR6         = 6,//I/O引脚方向?
 GPIOCR_DIR7         = 7,//I/O引脚方向位7


 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, *TI_BITS_PGPIOCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_GPIOCR Bits;
}TI_REG_GPIOCR, *TI_REG_PGPIOCR;


/*---------------------------------------
        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
*/


/*---------------------------------------
        GPIOSR位枚举
----------------------------------------*/
enum GPIOSR
{
 GPIOSR_IO0          = 0,//I/O引脚状态位0
 GPIOSR_IO1          = 1,//I/O引脚状态位1
 GPIOSR_IO2          = 2,//I/O引脚状态位2
 GPIOSR_IO3          = 3,//I/O引脚状态位3
 GPIOSR_IO4          = 4,//I/O引脚状态位4
 GPIOSR_IO5          = 5,//I/O引脚状态位5
 GPIOSR_IO6          = 6,//I/O引脚状态位6
 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, *TI_BITS_PGPIOSR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_GPIOSR Bits;
}TI_REG_GPIOSR, *TI_REG_PGPIOSR;


/*---------------------------------------
        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)
*/


/*---------------------------------------
        HPIC位枚举
----------------------------------------*/
enum HPIC
{
 HPIC_DSPINT       = 1,//主机处理器到C5402的中断(R-0)
 HPIC_HINT         = 2,//C5402到主机处理器的中断引脚状态(R/W-1)
 HPIC_HRDY         = 3,//HRDY引脚状态(R)
 HPIC_FETCH        = 4,//主机取数据请求(R-0)
 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, *TI_BITS_PHPIC;


typedef volatile union
{
 TI_REG   Regs;
 TI_BITS_HPIC Bits;
}TI_REG_HPIC, *TI_REG_PHPIC;


/*---------------------------------------
        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
*/
/*---------------------------------------
        CLKMD位枚举
----------------------------------------*/
enum CLKMD
{
 CLKMD_PLLSTATUS    = 0,//PLL状态位
 CLKMD_PLLNDIV      = 1,//PLL时钟发生器选择
 CLKMD_PLLONOFF     = 2,//PLL开关位
 CLKMD_PLLCOUNT     = 3,//PLL计数值3~10
 CLKMD_PLLDIV       = 11,//PLL乘法系数(除法器)
 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, *TI_BITS_PCLKMD;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_CLKMD Bits;
}TI_REG_CLKMD, *TI_REG_PCLKMD;


/*---------------------------------------
        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
*/


/*---------------------------------------
        PMST位枚举
----------------------------------------*/
enum PMST
{
 PMST_SST          = 0,//存储饱和位
 PMST_SMUL         = 1,//乘法饱和位
 PMST_CLKOFF       = 2,//CLKOUT禁止位
 PMST_DROM         = 3,//数据ROM位
 PMST_AVIS         = 4,//地址可见性模式位
 PMST_OVLY         = 5,//RAM重叠位
 PMST_MP_MC        = 6,//微处理器/微计算机模式位
 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, *TI_BITS_PPMST;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_PMST Bits;
}TI_REG_PMST, *TI_REG_PPMST;


/*---------------------------------------
        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//
*/


/*---------------------------------------
        TCR位枚举
----------------------------------------*/
enum TCR
{
 TCR_TDDR         = 0,//定时器分频系数0~3
 TCR_TSS          = 4,//定时器停止状态
 TCR_TRB          = 5,//定时器重载
 TCR_PSC          = 6,//计数器预定标计数器6~9
 TCR_FREE         = 10,//
 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, *TI_BITS_PTCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_TCR Bits;
}TI_REG_TCR, *TI_REG_PTCR;


/*---------------------------------------
        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通道中?
#define IFR_DMAC4  12//DMA通道中断4
#define IFR_DMAC5  13//DMA通道中断5
*/


/*---------------------------------------
        IFR位枚举
----------------------------------------*/
enum IFR
{
 IFR_INT0   = 0,//外部中断0
 IFR_INT1   = 1,//外部中断1
 IFR_INT2   = 2,//外部中断2
 IFR_TINT0   = 3,//定时中断0


 IFR_BRINT0   = 4,//McBSP接收中断0
 IFR_BXINT0   = 5,//McBSP发送中断0


 IFR_TINT1   = 7,//定时中断1


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


 IFR_DMAC0   = 6,//DMA通道中断0
 IFR_DMAC1   = 7,//DMA通道中断1


 IFR_DMAC2   = 10,//DMA通道中断2
 IFR_DMAC3   = 11,//DMA通道中?
 IFR_DMAC4   = 12,//DMA通道中断4
 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 BXINT1:  1;//McBSP发送中断1  11
 TI_REG DMAC3:  1;//DMA通道中断3  11


// TI_REG BRINT1:  1;//McBSP接收中断1  10
 TI_REG DMAC2:  1;//DMA通道中断2  10



 TI_REG HPINT:  1;//主机接口中断9
 TI_REG INT3:  1;//外部中断3  8


// TI_REG TINT1:  1;//定时中断1     7
 TI_REG DMAC1:  1;//DMA通道中断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_DMA, *TI_BITS_PIFR_DMA;


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 BXINT1:  1;//McBSP发送中断1  11
// TI_REG DMAC3:  1;//DMA通道中断3  11


 TI_REG BRINT1:  1;//McBSP接收中断1  10
// TI_REG DMAC2:  1;//DMA通道中断2  10



 TI_REG HPINT:  1;//主机接口中断9
 TI_REG INT3:  1;//外部中断3  8


 TI_REG TINT1:  1;//定时中断1     7
// TI_REG DMAC1:  1;//DMA通道中断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, *TI_BITS_PIFR;


typedef volatile union
{
 TI_REG    Regs;
 TI_BITS_IFR      Bits;
 TI_BITS_IFR_DMA DMA_Bits;//增加对DMA的支持
}TI_REG_IFR, *TI_REG_PIFR;


/*---------------------------------------
        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
*/


/*---------------------------------------
        IMR位枚举
----------------------------------------*/
enum IMR
{
 IMR_INT0   = 0,//外部中断0
 IMR_INT1   = 1,//外部中断1
 IMR_INT2   = 2,//外部中断2
 IMR_TINT0   = 3,//定时中断0


 IMR_BRINT0   = 4,//McBSP接收中断0
 IMR_BXINT0   = 5,//McBSP发送中断0


 IMR_TINT1   = 7,//定时中断1


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


 IMR_DMAC0   = 6,//DMA通道中断0
 IMR_DMAC1   = 7,//DMA通道中断1


 IMR_DMAC2   = 10,//DMA通道中断2
 IMR_DMAC3   = 11,//DMA通道中断3
 IMR_DMAC4   = 12,//DMA通道中断4
 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 BXINT1:  1;//McBSP发送中断1  11
 TI_REG DMAC3:  1;//DMA通道中断3  11



// TI_REG BRINT1:  1;//McBSP接收中断1  10
 TI_REG DMAC2:  1;//DMA通道中断2  10



 TI_REG HPINT:  1;//主机接口中断9
 TI_REG INT3:  1;//外部中断3  8


// TI_REG TINT1:  1;//定时中断1     7
 TI_REG DMAC1:  1;//DMA通道中断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_DMA, *TI_BITS_PIMR_DMA;


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 BXINT1:  1;//McBSP发送中断1  11
// TI_REG DMAC3:  1;//DMA通道中断3  11



 TI_REG BRINT1:  1;//McBSP接收中断1  10
// TI_REG DMAC2:  1;//DMA通道中断2  10



 TI_REG HPINT:  1;//主机接口中断9
 TI_REG INT3:  1;//外部中断3  8


 TI_REG TINT1:  1;//定时中断1     7
// TI_REG DMAC1:  1;//DMA通道中断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, *TI_BITS_PIMR;


typedef volatile union
{
 TI_REG    Regs;
 TI_BITS_IMR      Bits;
 TI_BITS_IMR_DMA DMA_Bits;//增加对DMA的支持
}TI_REG_IMR, *TI_REG_PIMR;


/*-------------------------------------------------------------
应用举例:
 SREGs.DMA.DMPREC.Bits.INTOSEL = DMPREC_INTOSEL_CH1_TO_CH3;
 SREGs.IFR.DMA_Bits.DMAC1 = 1;
 SREGs.IMR.DMA_Bits.DMAC1 = 1;


 SREGs.DMA.DMPREC.Bits.INTOSEL = DMPREC_INTOSEL_CH2_CH3;
 SREGs.IFR.DMA_Bits.DMAC2 = 1;
 SREGs.IMR.DMA_Bits.DMAC2 = 1;
--------------------------------------------------------------*/


/*---------------------------------------
        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位
*/


/*---------------------------------------
        ST0位枚举
----------------------------------------*/
enum ST0
{
 ST0_DP       = 0,//数据存储器页面指针0~8,共9位
 ST0_OVB      = 9,//累加器B溢出曛疚?
 ST0_OVA      = 10,//累加器A溢出标志位
 ST0_C        = 11,//进位或不借位标志
 ST0_TC       = 12,//测试/控制标志位
 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, *TI_BITS_PST0;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_ST0 Bits;
}TI_REG_ST0, *TI_REG_PST0;


/*---------------------------------------
        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//块重复操作标志位
*/


/*---------------------------------------
        ST1位枚举
----------------------------------------*/
enum ST1
{
 ST1_ASM      = 0,//累加器模式位0~4
 ST1_CMPT     = 5,//修改模式位
 ST1_FRCT     = 6,//小数方式位
 ST1_C16      = 7,//双16位/双精度算术模式位
 ST1_SXM      = 8,//符号扩展模式位
 ST1_OVM      = 9,//溢出模式位
 ST1_INTM     = 11,//中断模式位
 ST1_HM       = 12,//保持模式位
 ST1_XF       = 13,//XF引脚状态位
 ST1_CPL      = 14,//相对直接寻址译码髂J轿?
 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, *TI_BITS_PST1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_ST1 Bits;
}TI_REG_ST1, *TI_REG_PST1;


/*---------------------------------------
        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
*/


/*---------------------------------------
        BSCR位枚举
----------------------------------------*/
enum BSCR
{
 BSCR_EXIO      = 0,//外部总线接口关断位
 BSCR_BH        = 1,//总线保持位BH
 BSCR_HBH       = 2,//主机接口总线保持位


 BSCR_IPIRQ     = 8,//CPU处理器之间的中断请求位
 BSCR_PSDS      = 11,//程序空间读/数据空间读访问
 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, *TI_BITS_PBSCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_BSCR Bits;
}TI_REG_BSCR, *TI_REG_PBSCR;


/*---------------------------------------
        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//
*/


/*---------------------------------------
        SPC位枚举
----------------------------------------*/
enum SPC
{
 SPC_DLB       = 1,//数据回送模式位
 SPC_FO        = 2,//数据格式位
 SPC_FSM       = 3,//帧同步模式位
 SPC_MCM       = 4,//时钟模式位
 SPC_TXM       = 5,//发送模式位
 SPC_XRST      = 6,//发送器复位
 SPC_RRST      = 7,//接收器复位
 SPC_IN0       = 8,//输入0
 SPC_IN1       = 9,//输入1
 SPC_RRDY      = 10,//接收准备位
 SPC_XRDY      = 11,//发送准备位
 SPC_XSREMPTY  = 12,//发送移位寄存器空
 SPC_RSRFULL   = 13,//接收移位寄存器满
 SPC_FREE      = 14,//
 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, *TI_BITS_PSPC;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SPC Bits;
}TI_REG_SPC, *TI_REG_PSPC;


/*---------------------------------------
        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//自动缓冲接收停止位
*/


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


 BSPCE_BXE    = 10,//自动缓冲发送使能
 BSPCE_XH     = 11,//发送缓冲半满
 BSPCE_HALTX   = 12,//自动缓冲发送停止位
 BSPCE_BRE    = 13,//自动缓冲接收使
 BSPCE_RH     = 14,//接收缓冲半满
 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, *TI_BITS_PBSPCE;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_BSPCE Bits;
}TI_REG_BSPCE, *TI_REG_PBSPCE;


/*---------------------------------------
        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//数字循环返回
*/


/*---------------------------------------
        SPCR1位枚举
----------------------------------------*/
enum SPCR1
{
 SPCR1_RRST     = 0,//接收器复位
 SPCR1_RRDY     = 1,//接收准备好
 SPCR1_RFULL    = 2,//接收移位寄存器满
 SPCR1_RSYNCERR = 3,//接收同步错
 SPCR1_RINTM    = 4,//接收中断模式4~5
 SPCR1_ABIS     = 6,//ABIS模式
 SPCR1_DXENA    = 7,//DX使能
 SPCR1_CLKSTP   = 11,//时钟停止模式11~12
 SPCR1_RJUST    = 13,//接收符号扩展及判别模式13~14
 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, *TI_BITS_PSPCR1;


typedef volatile union
{
 TI_REG    Regs;
 TI_BITS_SPCR1 Bits;
}TI_REG_SPCR1, *TI_REG_PSPCR1;


/*---------------------------------------
        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//自由运行模式
*/


/*---------------------------------------
        SPCR2位枚举
----------------------------------------*/
enum SPCR2
{
 SPCR2_XRST     = 0,//发送器复位
 SPCR2_XRDY     = 1,//发送准备好
 SPCR2_XEMPTY   = 2,//发送移位寄存器空
 SPCR2_XSYNCERR = 3,//发生同步错误
 SPCR2_XINTM    = 4,//发送中断模式4~5
 SPCR2_GRST     = 6,//采样率发生器复位
 SPCR2_FRST     = 7,//帧同步发生器复位
 SPCR2_SOFT     = 8,//软件模式
 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, *TI_BITS_PSPCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SPCR2 Bits;
}TI_REG_SPCR2, *TI_REG_PSPCR2;


/*---------------------------------------
        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模式位
*/


/*---------------------------------------
        PCR位枚举
----------------------------------------*/
enum PCR
{
 PCR_CLKRP      = 0,//接收时钟极性
 PCR_CLKXP      = 1,//发送时钟极性
 PCR_FSRP       = 2,//接收帧同步脉冲极性
 PCR_FSXP       = 3,//发送帧同步脉冲极性
 PCR_DR_STAT    = 4,//DR引脚状态位
 PCR_DX_STAT    = 5,//DX引脚状态位
 PCR_CLKS_STAT  = 6,//CLKS引脚状态位


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


typedef volatile struct
{
 TI_REG Reserved0: 2;//保留位14~15
 TI_REG XIOEN:  1;//发送通用I/O模式位13
 TI_REG RIOEN:     1;//接收通用I/O模式位12
 TI_REG FSXM:     1;//发送帧同步模式位11
 TI_REG FSRM:  1;//接收帧同步模式位10
 TI_REG CLKXM:  1;//发送器时钟模式位9
 TI_REG CLKRM:     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, *TI_BITS_PPCR;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_PCR Bits;
}TI_REG_PCR, *TI_REG_PPCR;


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


/*---------------------------------------
        RCR1位枚举
----------------------------------------*/
enum RCR1
{
 RCR1_RWDLEN1   = 5,//5~7
 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, *TI_BITS_PRCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_RCR1 Bits;
}TI_REG_RCR1, *TI_REG_PRCR1;


/*---------------------------------------
        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//接收相位
*/


/*---------------------------------------
        RCR2位枚举
----------------------------------------*/
enum RCR2
{
 RCR2_RDATDLY   = 0,//0~1
 RCR2_RFIG      = 2,//
 RCR2_RCOMPAND  = 3,//3~4
 RCR2_RWDLEN2   = 5,//5~6
 RCR2_RFRLEN2   = 8,//8~14
 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, *TI_BITS_PRCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_RCR2 Bits;
}TI_REG_RCR2, *TI_REG_PRCR2;


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


/*---------------------------------------
        XCR1位枚举
----------------------------------------*/
enum XCR1
{
 XCR1_XWDLEN1   = 5,//5~7  *本次修改*
 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, *TI_BITS_PXCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_XCR1 Bits;
}TI_REG_XCR1, *TI_REG_PXCR1;


/*---------------------------------------
        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//发送相位
*/


/*---------------------------------------
        XCR2位枚举
----------------------------------------*/
enum XCR2
{
 XCR2_XDATDLY   = 0,//0~1
 XCR2_XFIG      = 2,//
 XCR2_XCOMPAND  = 3,//3~4
 XCR2_XWDLEN2   = 5,//5~6
 XCR2_XFRLEN2   = 8,//8~14
 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, *TI_BITS_PXCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_XCR2 Bits;
}TI_REG_XCR2, *TI_REG_PXCR2;


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


/*---------------------------------------
        SRGR1位枚举
----------------------------------------*/
enum SRGR1
{
 SRGR1_CLKGDV   = 0,//0~7
 SRGR1_FWID     = 8//8~15
};


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


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SRGR1 Bits;
}TI_REG_SRGR1, *TI_REG_PSRGR1;


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


/*---------------------------------------
        SRGR2位枚举
----------------------------------------*/
enum SRGR2
{
 SRGR2_FPER    = 0,//0~11//修正处
 SRGR2_FSGM    = 12,//
 SRGR2_CLKSM   = 13,//
 SRGR2_CLKSP   = 14,//
 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, *TI_BITS_PSRGR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_SRGR2 Bits;
}TI_REG_SRGR2, *TI_REG_PSRGR2;


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


/*---------------------------------------
        MCR1位枚举
----------------------------------------*/
enum MCR1
{
 MCR1_RMCM      = 0,//0
 MCR1_RCBLK     = 2,//2~4
 MCR1_RPABLK    = 5,//5~6
 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, *TI_BITS_PMCR1;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_MCR1 Bits;
}TI_REG_MCR1, *TI_REG_PMCR1;


/*---------------------------------------
        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
*/


/*---------------------------------------
        MCR2位枚举
----------------------------------------*/
enum MCR2
{
 MCR2_XMCM     = 0,//0~1
 MCR2_XCBLK    = 2,//2~4
 MCR2_XPABLK   = 5,//5~6
 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, *TI_BITS_PMCR2;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_MCR2 Bits;
}TI_REG_MCR2, *TI_REG_PMCR2;


/*---------------------------------------
        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
*/


/*---------------------------------------
        RCERA位枚举
----------------------------------------*/
enum RCERA
{
 RCERA_0       = 0,
 RCERA_1       = 1,
 RCERA_2       = 2,
 RCERA_3       = 3,
 RCERA_4       = 4,
 RCERA_5       = 5,
 RCERA_6       = 6,
 RCERA_7       = 7,
 RCERA_8       = 8,
 RCERA_9       = 9,
 RCERA_10      = 10,
 RCERA_11      = 11,
 RCERA_12      = 12,
 RCERA_13      = 13,
 RCERA_14      = 14,
 RCERA_15      = 15
};


/*
typedef volatile struct
{
 TI_REG RCERA_15:  1;//15
 TI_REG RCERA_14:  1;//14
 TI_REG RCERA_13:  1;//13
 TI_REG RCERA_12:  1;//12
 TI_REG RCERA_11:  1;//11
 TI_REG RCERA_10:  1;//10
 TI_REG RCERA_9:  1;//9
 TI_REG RCERA_8:  1;//8
 TI_REG RCERA_7:  1;//7
 TI_REG RCERA_6:  1;//6
 TI_REG RCERA_5:  1;//5
 TI_REG RCERA_4:  1;//4
 TI_REG RCERA_3:  1;//3
 TI_REG RCERA_2:  1;//2
 TI_REG RCERA_1:  1;//1
 TI_REG RCERA_0:  1;//0
}TI_BITS_RCERA, *TI_BITS_PRCERA;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_PRCERA Bits;
}TI_REG_RCERA, *TI_REG_PRCERA;
*/
/*---------------------------------------
        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
*/


/*---------------------------------------
        RCERB位枚举
----------------------------------------*/
enum RCERB
{
 RCERB_0       = 0,
 RCERB_1       = 1,
 RCERB_2       = 2,
 RCERB_3       = 3,
 RCERB_4       = 4,
 RCERB_5       = 5,
 RCERB_6       = 6,
 RCERB_7       = 7,
 RCERB_8       = 8,
 RCERB_9       = 9,
 RCERB_10      = 10,
 RCERB_11      = 11,
 RCERB_12      = 12,
 RCERB_13      = 13,
 RCERB_14      = 14,
 RCERB_15      = 15
};


/*
typedef volatile struct
{
 TI_REG RCERB_15:  1;//15
 TI_REG RCERB_14:  1;//14
 TI_REG RCERB_13:  1;//13
 TI_REG RCERB_12:  1;//12
 TI_REG RCERB_11:  1;//11
 TI_REG RCERB_10:  1;//10
 TI_REG RCERB_9:  1;//9
 TI_REG RCERB_8:  1;//8
 TI_REG RCERB_7:  1;//7
 TI_REG RCERB_6:  1;//6
 TI_REG RCERB_5:  1;//5
 TI_REG RCERB_4:  1;//4
 TI_REG RCERB_3:  1;//3
 TI_REG RCERB_2:  1;//2
 TI_REG RCERB_1:  1;//1
 TI_REG RCERB_0:  1;//0
}TI_BITS_RCERB, *TI_BITS_PRCERB;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_PRCERB Bits;
}TI_REG_RCERB, *TI_REG_PRCERB;
*/
/*---------------------------------------
        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
*/
/*---------------------------------------
        XCERA位枚举
----------------------------------------*/
enum XCERA
{
 XCERA_0       = 0,
 XCERA_1       = 1,
 XCERA_2       = 2,
 XCERA_3       = 3,
 XCERA_4       = 4,
 XCERA_5       = 5,
 XCERA_6       = 6,
 XCERA_7       = 7,
 XCERA_8       = 8,
 XCERA_9       = 9,
 XCERA_10      =10,
 XCERA_11      =11,
 XCERA_12      =12,
 XCERA_13      =13,
 XCERA_14      =14,
 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_14      14
#define XCERB_15      15
*/


/*---------------------------------------
        XCERB位枚举
----------------------------------------*/
enum XCERB
{
 XCERB_0       = 0,
 XCERB_1       = 1,
 XCERB_2       = 2,
 XCERB_3       = 3,
 XCERB_4       = 4,
 XCERB_5       = 5,
 XCERB_6       = 6,
 XCERB_7       = 7,
 XCERB_8       = 8,
 XCERB_9       = 9,
 XCERB_10      = 10,
 XCERB_11      = 11,
 XCERB_12      = 12,
 XCERB_13      = 13,
 XCERB_14      = 14,
 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;//引脚控制寄存器
*/


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


/*---------------------------------------*/
// MCBSP虚拟位寻址
/*---------------------------------------*/
typedef volatile union
{
 TI_REG         Regs;


 TI_REG      SPCR1_Regs;
 TI_BITS_SPCR1  SPCR1_Bits;


 TI_REG         SPCR2_Regs;
 TI_BITS_SPCR2  SPCR2_Bits;


 TI_REG         RCR1_Regs;
 TI_BITS_RCR1   RCR1_Bits;


 TI_REG         RCR2_Regs;
 TI_BITS_RCR2   RCR2_Bits;


 TI_REG         XCR1_Regs;
 TI_BITS_XCR1   XCR1_Bits;


 TI_REG         XCR2_Regs;
 TI_BITS_XCR2   XCR2_Bits;


 TI_REG         SRGR1_Regs;
 TI_BITS_SRGR1  SRGR1_Bits;


 TI_REG         SRGR2_Regs;
 TI_BITS_SRGR2  SRGR2_Bits;


 TI_REG         MCR1_Regs;
 TI_BITS_MCR1   MCR1_Bits;


 TI_REG         MCR2_Regs;
 TI_BITS_MCR2   MCR2_Bits;


 TI_REG         RCERA_Regs;
 TI_REG         RCERB_Regs;
 TI_REG         XCERA_Regs;
 TI_REG         XCERB_Regs;


 TI_REG         PCR_Regs;
 TI_BITS_PCR    PCR_Bits;
}TI_REG_SPSD, *TI_REG_PSPSD;
/*---------------------------------------*/



typedef volatile struct _TI_McBSPData {
  TI_REG DRR2;//数据接收寄存器2
  TI_REG DRR1;//数据接收寄存器1
  TI_REG DXR2;//数据发送寄存器2
  TI_REG DXR1;//数据发送寄存器1
}TI_McBSPDATA, *TI_PMcBSPDATA;



typedef volatile struct _TI_McBSPAddr {
  TI_REG SPSA;//子区寻址寄存器
  TI_REG_SPSD SPSD;//子区数据寄存器
}TI_McBSPADDR, *TI_PMcBSPADDR;



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 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]; //保留4个空位
  TI_REG SPSA;//子区寻址寄存器(0x48)
  TI_REG_SPSD SPSD;//子区数据寄存器(0x49)
}TI_McBSP1, *TI_PMcBSP1;


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



/*--------------------------------------------------------------------------
应用举例:
间接访问(结构指针)
  McBSP0->DXR1 = 0xaa;//向串口0数据发送寄存器1发送数据0xaa
  McBSP0->SPSA = SPCR1;//设置子地址SPCR1
  McBSP0->SPSD.SPCR1_Bits.RJUST = 1;//设置子地址SPCR1的数据位RJUST
物理直接访问(结构)
  SREGs.McBSPDATA0.DXR1 = 0xaa;//向串口0数据发送寄存器1发送数据0xaa
  SREGs.McBSPADDR0.SPSA = SPCR1;//设置子地址SPCR1
  SREGs.McBSPADDR0.SPSD0.SPCR1_Bits.RJUST = 1;//设置子地址SPCR1的数据位RJUST
---------------------------------------------------------------------------*/


/*---------------------------------------
        子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全局帧计数重载寄存器
*/


/*---------------------------------------
        子DMA地址枚举
----------------------------------------*/
enum DMSA
{
 DMSRC0   = 0x00,//DMA通道0源地址寄存器
 DMDST0   = 0x01,//DMA通道0目的地址寄存器
 DMCTR0   = 0x02,//DMA通道0单元计数寄存器
 DMSFC0   = 0x03,//DMA通道0同步事件和帧寄存器
 DMMCR0   = 0x04,//DMA通道0传输模式控制寄存器


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


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


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


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


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


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


/*---------------------------------------
  DMSFC位定义
----------------------------------------*/
/*
#define DMSFC_FRAMECNT   0//DMA帧计数位0~7
#define DMSFC_DBLW      11//DMA双字模式位11
 #define DMSFC_DBLW_WORD   0//DMA单字模式
 #define DMSFC_DBLW_DWORD  1//DMA双字模式
#define DMSFC_DSYN      12//DMA同步事件位12~15
    #define DMSFC_DSYN_NONE   0//无DMA事件
 #define DMSFC_DSYN_REVT0  1//McBSP0接收事件
 #define DMSFC_DSYN_XEVT0  2//McBSP0发送事件
 #define DMSFC_DSYN_REVT1  5//McBSP1接收事件
 #define DMSFC_DSYN_XEVT1  6//McBSP1发送事件
 #define DMSFC_DSYN_TINT0 13//Timer0中断事件
 #define DMSFC_DSYN_TINT1 15//Timer1中断事件
 #define DMSFC_DSYN_INT3  14//EInt3中断事件
*/
/*---------------------------------------
  DMSFC_DBLW位域枚举
----------------------------------------*/
enum DMSFC_DBLW
{
 DBLW_WORD  = 0,//DMA单字模式
 DBLW_DWORD = 1//DMA双字模式
};


/*---------------------------------------
  DMSFC_DSYN位域枚举
----------------------------------------*/
enum DMSFC_DSYN
{
 DSYN_NONE  = 0,//无DMA事件
 DSYN_REVT0 = 1,//McBSP0接收事件
 DSYN_XEVT0 = 2,//McBSP0发送事件
 DSYN_REVT1 = 5,//McBSP1接收事件
 DSYN_XEVT1 = 6,//McBSP1发送事件
 DSYN_TINT0 = 13,//Timer0中断事件
 DSYN_TINT1 = 15,//Timer1中断事件
 DSYN_INT3  = 14//EInt3中断事件
};


/*---------------------------------------
  DMSFC位枚举
----------------------------------------*/
enum DMSFC
{
 DMSFC_FRAMECNT   = 0,//DMA帧计数位0~7
 DMSFC_DBLW      = 11,//DMA双字模式位11
/*
  DMSFC_DBLW_WORD  = 0,//DMA单字模式
  DMSFC_DBLW_DWORD = 1,//DMA双字模式
*/
 DMSFC_DSYN      = 12//DMA同步事件位12~15
/*
  DMSFC_DSYN_NONE  = 0,//无DMA事件
  DMSFC_DSYN_REVT0 = 1,//McBSP0接收事件
  DMSFC_DSYN_XEVT0 = 2,//McBSP0发送事件
  DMSFC_DSYN_REVT1 = 5,//McBSP1接收事件
  DMSFC_DSYN_XEVT1 = 6,//McBSP1发送事件
  DMSFC_DSYN_TINT0 = 13,//Timer0中断事件
  DMSFC_DSYN_TINT1 = 15,//Timer1中断事件
  DMSFC_DSYN_INT3  = 14//EInt3中断事件
*/
};


typedef volatile struct
{
 TI_REG DSYN:  4;//DMA同步事件位12~15
 TI_REG DBLW:  1;//DMA双字模式位11
 TI_REG Reserved: 3;//保留位8~10
 TI_REG FRAMECNT: 8;//DMA帧计数位0~7
}TI_BITS_DMSFC, *TI_BITS_PDMSFC;


/*---------------------------------------
  DMMCR位定义
----------------------------------------*/
/*
#define DMMCR_DMD        0//DMA目的地址空间选择位 0~1
 #define DMMCR_DMD_PROGRAM 0//选择程序区
 #define DMMCR_DMD_DATA  1//选择数据区
 #define DMMCR_DMD_IO  2//选择IO区
#define DMMCR_DIND       2//DMA目的地址传输偏置量模式位 2~4
 #define DMMCR_DIND_NOMOD     0//操作后目的地址
 #define DMMCR_DIND_POSTINC     1//操作后目的地址增加1
 #define DMMCR_DIND_POSTDEC     2//操作后目的地址减少1
 #define DMMCR_DIND_DMIDX0     3//
 #define DMMCR_DIND_DMIDX1  4//
 #define DMMCR_DIND_DMFRI0     5//
 #define DMMCR_DIND_DMFRI1  6//
#define DMMCR_DMS        6//DMA源地址空间选择位 6~7
 #define DMMCR_DMS_PROGRAM 0//选择程序区
 #define DMMCR_DMS_DATA  1//选择数据区
 #define DMMCR_DMS_IO  2//选择IO区


#define DMMCR_SIND       8//DMA源地址传输偏置量模式位 8~10
 #define DMMCR_SIND_NOMOD     0//
 #define DMMCR_SIND_POSTINC     1//
 #define DMMCR_SIND_POSTDEC     2//
 #define DMMCR_SIND_DMIDX0     3//
 #define DMMCR_SIND_DMIDX1  4//
 #define DMMCR_SIND_DMFRI0     5//
 #define DMMCR_SIND_DMFRI1  6//
#define DMMCR_CTMOD     12//DMA传输计数器模式控制位 12
 #define DMMCR_CTMOD_MULTIFRAME 0//
 #define DMMCR_CTMOD_ABU      1//
#define DMMCR_IMOD      13//DMA中断产生模式位 13
 #define DMMCR_IMOD_OFF     0//(CTMOD=1)仅在缓冲区满时产生中断
 #define DMMCR_IMOD_ON     1//(CTMOD=1)在缓冲区满或半满时产生中断
#define DMMCR_DINM      14//DMA中断产生屏蔽位 14
 #define DMMCR_DINM_OFF     0//不产生中断
 #define DMMCR_DINM_ON     1//基于IMOD位产生中断
#define DMMCR_AUTOINIT  15//DMA自动初始化模式位 15
 #define DMMCR_AUTOINIT_OFF 0//禁止自动初始化
 #define DMMCR_AUTOINIT_ON 1//自动初始化使能
*/


/*---------------------------------------
  DMMCR_DMD位域枚举
----------------------------------------*/
enum DMMCR_DMD
{
 DMD_PROGRAM = 0,//选择目的程序区
 DMD_DATA = 1,//选择目的数据区
 DMD_IO  = 2//选择目的IO区
};


/*---------------------------------------
  DMMCR_DIND位域枚举
----------------------------------------*/
enum DMMCR_DIND
{
 DIND_NOMOD     = 0,//操作后目的地址不变
 DIND_POSTINC = 1,//操作后目的地址增加1
 DIND_POSTDEC = 2,//操作后目的地址减少1
 DIND_DMIDX0     = 3,//
 DIND_DMIDX1  = 4,//
 DIND_DMFRI0     = 5,//
 DIND_DMFRI1  = 6//
};


/*---------------------------------------
  DMMCR_DMS位域枚举
----------------------------------------*/
enum DMMCR_DMS
{
 DMS_PROGRAM = 0,//选择源程序区
 DMS_DATA = 1,//选择源数据区
 DMS_IO  = 2//选择源IO区
};


/*---------------------------------------
  DMMCR_SIND位域枚举
----------------------------------------*/
enum DMMCR_SIND
{
 SIND_NOMOD     = 0,//操作后源地址不变
 SIND_POSTINC = 1,//操作后源地址增加1
 SIND_POSTDEC = 2,//操作后源地址减少1
 SIND_DMIDX0     = 3,//
 SIND_DMIDX1  = 4,//
 SIND_DMFRI0     = 5,//
 SIND_DMFRI1  = 6//
};


/*---------------------------------------
  DMMCR_CTMOD位域枚举
----------------------------------------*/
enum DMMCR_CTMOD
{
 CTMOD_MULTIFRAME = 0,//
 CTMOD_ABU      = 1//
};


/*---------------------------------------
  DMMCR_IMOD位域枚举
----------------------------------------*/
enum DMMCR_IMOD
{
 IMOD_OFF = 0,//(CTMOD=1)仅在缓冲区满时产生中断
 IMOD_ON     = 1//(CTMOD=1)在缓冲区满或半满时产生中断
};


/*---------------------------------------
  DMMCR_DINM位域枚举
----------------------------------------*/
enum DMMCR_DINM
{
 DINM_OFF = 0,//不产生中断
 DINM_ON     = 1//基于IMOD位产生中断
};


/*---------------------------------------
  DMMCR_AUTOINIT位域枚举
----------------------------------------*/
enum DMMCR_AUTOINIT
{
 AUTOINIT_OFF = 0,//禁止自动初始化
 AUTOINIT_ON  = 1//自动初始化使能
};


/*---------------------------------------
  DMMCR位枚举
----------------------------------------*/
enum DMMCR
{
 DMMCR_DMD        = 0,//DMA目的地址空间选择位 0~1
/*
  DMMCR_DMD_PROGRAM = 0,//选择程序区
  DMMCR_DMD_DATA  = 1,//选择数据区
  DMMCR_DMD_IO  = 2,//选择IO区
*/
 DMMCR_DIND       = 2,//DMA目的地址传输偏置量模式位 2~4
/*
  DMMCR_DIND_NOMOD     = 0,//操作后目的地址
  DMMCR_DIND_POSTINC     = 1,//操作后目的地址增加1
  DMMCR_DIND_POSTDEC     = 2,//操作后目的地址减少1
  DMMCR_DIND_DMIDX0     = 3,//
  DMMCR_DIND_DMIDX1  = 4,//
  DMMCR_DIND_DMFRI0     = 5,//
  DMMCR_DIND_DMFRI1  = 6,//
*/
 DMMCR_DMS        = 6,//DMA源地址空间选择位 6~7
/*
  DMMCR_DMS_PROGRAM = 0,//选择程序区
  DMMCR_DMS_DATA  = 1,//选择数据区
  DMMCR_DMS_IO  = 2,//选择IO区
*/
 DMMCR_SIND       = 8,//DMA源地址传输偏置量模式位 8~10
/*
  DMMCR_SIND_NOMOD     = 0,//
  DMMCR_SIND_POSTINC     = 1,//
  DMMCR_SIND_POSTDEC     = 2,//
  DMMCR_SIND_DMIDX0     = 3,//
  DMMCR_SIND_DMIDX1  = 4,//
  DMMCR_SIND_DMFRI0     = 5,//
  DMMCR_SIND_DMFRI1  = 6,//
*/
 DMMCR_CTMOD     = 12,//DMA传输计数器模式控制位 12
/*
  DMMCR_CTMOD_MULTIFRAME = 0,//
  DMMCR_CTMOD_ABU      = 1,//
*/
 DMMCR_IMOD      = 13,//DMA中断产生模式位 13
/*
  DMMCR_IMOD_OFF     = 0,//(CTMOD=1)仅在缓冲区满时产生中断
  DMMCR_IMOD_ON     = 1,//(CTMOD=1)在缓冲区满或半满时产生中断
*/
 DMMCR_DINM      = 14,//DMA中断产生屏蔽位 14
/*
  DMMCR_DINM_OFF     = 0,//不产生中断
  DMMCR_DINM_ON     = 1,//基于IMOD位产生中断
*/
 DMMCR_AUTOINIT  = 15//DMA自动初始化模式位 15
/*
  DMMCR_AUTOINIT_OFF = 0,//禁止自动初始化
  DMMCR_AUTOINIT_ON = 1//自动初始化使能
*/
};


typedef volatile struct
{
 TI_REG AUTOINIT: 1;//DMA自动初始化模式位15
 TI_REG DINM:  1;//DMA中断产生屏蔽位14
 TI_REG IMOD:  1;//DMA中断产生模式位13
 TI_REG CTMOD:  1;//DMA传输计数器模式控制位12
 TI_REG Reserved0: 1;//保留位11
 TI_REG SIND:     3;//DMA源地址传输偏置量模式位8~10
 TI_REG DMS:     2;//DMA源地址空间选择位6~7
 TI_REG Reserved1: 1;//保留位5
 TI_REG DIND:     2;//DMA目的地址传输偏置量模式位2~4
 TI_REG DMD:     2;//DMA目的地址空间选择位0~1
}TI_BITS_DMMCR, *TI_BITS_PDMMCR;


/*---------------------------------------*/
// DMA虚拟位寻址
/*---------------------------------------*/
typedef volatile union
{
 TI_REG         Regs;//DMA通道寄存器
 TI_REG      DMSRC_Regs;//DMA通道源地址寄存器
 TI_REG      DMSRC0_Regs;//DMA通道0源地址寄存器
 TI_REG      DMSRC1_Regs;//DMA通道1源地址寄存器
 TI_REG      DMSRC2_Regs;//DMA通道2源地址寄存器
 TI_REG      DMSRC3_Regs;//DMA通道3源地址寄存器
 TI_REG      DMSRC4_Regs;//DMA通道4源地址寄存器
 TI_REG      DMSRC5_Regs;//DMA通道5源地址寄存器


 TI_REG      DMDST_Regs;//DMA通道目的地址寄存器
 TI_REG      DMDST0_Regs;//DMA通道0目的地址寄存器
 TI_REG      DMDST1_Regs;//DMA通道1目的地址寄存器
 TI_REG      DMDST2_Regs;//DMA通道2目的地址寄存器
 TI_REG      DMDST3_Regs;//DMA通道3目的地址寄存器
 TI_REG      DMDST4_Regs;//DMA通道4目的地址寄存器
 TI_REG      DMDST5_Regs;//DMA通道5目的地址寄存器


 TI_REG      DMCTR_Regs;//DMA通道单元计数寄存器
 TI_REG      DMCTR0_Regs;//DMA通道0单元计数寄存器
 TI_REG      DMCTR1_Regs;//DMA通道1单元计数寄存器
 TI_REG      DMCTR2_Regs;//DMA通道2单元计数寄存器
 TI_REG      DMCTR3_Regs;//DMA通道3单元计数寄存器
 TI_REG      DMCTR4_Regs;//DMA通道4单元计数寄存器
 TI_REG      DMCTR5_Regs;//DMA通道5单元计数寄存器


 TI_BITS_DMSFC  DMSFC_Bits;//DMA通道同步事件和帧寄存器
 TI_BITS_DMSFC  DMSFC0_Bits;//DMA通道0同步事件和帧寄存器
 TI_BITS_DMSFC  DMSFC1_Bits;//DMA通道1同步事件和帧寄存器
 TI_BITS_DMSFC  DMSFC2_Bits;//DMA通道2同步事件和帧寄存器
 TI_BITS_DMSFC  DMSFC3_Bits;//DMA通道3同步事件和帧寄存器
 TI_BITS_DMSFC  DMSFC4_Bits;//DMA通道4同步事件和帧寄存器
 TI_BITS_DMSFC  DMSFC5_Bits;//DMA通道5同步事件和帧寄存器


 TI_REG      DMSFC_Regs;//DMA通道同步事件和帧寄存器
 TI_REG      DMSFC0_Regs;//DMA通道0同步事件和帧寄存器
 TI_REG      DMSFC1_Regs;//DMA通道1同步事件和帧寄存器
 TI_REG      DMSFC2_Regs;//DMA通道2同步事件和帧寄存器
 TI_REG      DMSFC3_Regs;//DMA通道3同步事件和帧寄存器
 TI_REG      DMSFC4_Regs;//DMA通道4同步事件和帧寄存器
 TI_REG      DMSFC5_Regs;//DMA通道5同步事件和帧寄存器



 TI_BITS_DMMCR  DMMCR_Bits;//DMA通道传输模式控制寄存器
 TI_BITS_DMMCR  DMMCR0_Bits;//DMA通道0传输模式控制寄存器
 TI_BITS_DMMCR  DMMCR1_Bits;//DMA通道1传输模式控制寄存器
 TI_BITS_DMMCR  DMMCR2_Bits;//DMA通道2传输模式控制寄存器
 TI_BITS_DMMCR  DMMCR3_Bits;//DMA通道3传输模式控制寄存器
 TI_BITS_DMMCR  DMMCR4_Bits;//DMA通道4传输模式控制寄存器
 TI_BITS_DMMCR  DMMCR5_Bits;//DMA通道5传输模式控制寄存器


 TI_REG      DMMCR_Regs;//DMA通道传输模式控制寄存器
 TI_REG      DMMCR0_Regs;//DMA通道0传输模式控制寄存器
 TI_REG      DMMCR1_Regs;//DMA通道1传输模式控制寄存器
 TI_REG      DMMCR2_Regs;//DMA通道2传输模式控制寄存器
 TI_REG      DMMCR3_Regs;//DMA通道3传输模式控制寄存器
 TI_REG      DMMCR4_Regs;//DMA通道4传输模式控制寄存器
 TI_REG      DMMCR5_Regs;//DMA通道5传输模式控制寄存器


 TI_REG      DMSRCP_Regs;//DMA源程序页地址(公用的通道)
 TI_REG      DMDSTP_Regs;//DMA目的程序页地址(公用的通道)
 
 TI_REG      DMIDX0_Regs;//DMA单元变址寄存器0
 TI_REG      DMIDX1_Regs;//DMA单元变址寄存器1
 TI_REG      DMFRI0_Regs;//DMA帧变址寄存器0
 TI_REG      DMFRI1_Regs;//DMA帧变址寄存器1
 TI_REG      DMGSA_Regs;//DMA全局源地址重载寄存器
 TI_REG      DMGDA_Regs;//DMA全局目的地址重载寄存器
 TI_REG      DMGCR_Regs;//DMA全局计数重载寄存器
 TI_REG      DMGFR_Regs;//DMA全局帧计数重载寄存器


}TI_REG_DMSD, *TI_REG_PDMSD;
/*---------------------------------------*/


/*---------------------------------------
        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 (SINT7,SINT10,SINT11)
    #define DMPREC_INTOSEL_NONE       0//     Timer1,RINT1,XINT1
    #define DMPREC_INTOSEL_CH2_CH3    1//     Timer1,DMA2, DMA3
    #define DMPREC_INTOSEL_CH1_TO_CH3 2//       DMA1,DMA2, DMA3 


#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//
 #define DMPREC_FREE_OFF     0//
 #define DMPREC_FREE_ON      1//
*/
/*---------------------------------------
        DMPREC_INTOSEL位域枚举
----------------------------------------*/
enum DMPREC_INTOSEL
{
 INTOSEL_NONE       = 0,//     Timer1,RINT1,XINT1
 INTOSEL_CH2_CH3    = 1,//     Timer1,DMA2, DMA3
 INTOSEL_CH1_TO_CH3 = 2//       DMA1,DMA2, DMA3 
};


/*---------------------------------------
        DMPREC_FREE位域枚举
----------------------------------------*/
enum DMPREC_FREE
{
 FREE_OFF     = 0,//
 FREE_ON      = 1//
};


/*---------------------------------------
        DMPREC位枚举
----------------------------------------*/
enum DMPREC
{
 DMPREC_DE        = 0,//DMA通道使能0~5
 DMPREC_DE0       = 0,//DMA0通道使能
 DMPREC_DE1       = 1,//DMA1通道使能
 DMPREC_DE2       = 2,//DMA2ǖ朗鼓?
 DMPREC_DE3       = 3,//DMA3通道使能
 DMPREC_DE4       = 4,//DMA4通道使能
 DMPREC_DE5       = 5,//DMA5通道使能


 DMPREC_INTOSEL   = 6,//中断多路控制位6~7 (SINT7,SINT10,SINT11)
/*
     DMPREC_INTOSEL_NONE       = 0,//     Timer1,RINT1,XINT1
     DMPREC_INTOSEL_CH2_CH3    = 1,//     Timer1,DMA2, DMA3
     DMPREC_INTOSEL_CH1_TO_CH3 = 2,//       DMA1,DMA2, DMA3 
*/
 DMPREC_DPRC      = 8,//DMA通道优先级控制位0~5
 DMPREC_DPRC0     = 8,//DMA0通道优先级控制
 DMPREC_DPRC1     = 9,//DMA1通道优先级控制
 DMPREC_DPRC2     = 10,//DMA2通道优先级控制
 DMPREC_DPRC3     = 11,//DMA3通道优先级控制
 DMPREC_DPRC4     = 12,//DMA4通道优先级控制
 DMPREC_DPRC5     = 13,//DMA5通道优先级控制
 DMPREC_FREE      = 15//
/*
  DMPREC_FREE_OFF     = 0,//
  DMPREC_FREE_ON      = 1//
*/
};


typedef volatile struct
{
 TI_REG FREE:  1;//DMA在仿真时的动作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 INTOSEL: 2;//中断多路控制位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, *TI_BITS_PDMPREC;


typedef volatile union
{
 TI_REG  Regs;
 TI_BITS_DMPREC Bits;
}TI_REG_DMPREC, *TI_REG_PDMPREC;


typedef volatile struct _TI_DMA {
  TI_REG_DMPREC DMPREC;//DMA通道优先级和使能控制寄存器(0x54)
  TI_REG DMSA;//DMA子区寻址寄存器(0x55)
  TI_REG_DMSD DMSDI;//带子区寻址自动增加的DMA子区数据寄存器(0x56)
  TI_REG_DMSD 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 TCR;//定时器控制寄存器
}TI_TIMER, *TI_PTIMER;


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


typedef volatile union
{
 TI_REG  Regs;
 TI_PREG     Ptr;
}TI_REG_SP, *TI_REG_PSP;


typedef volatile union
{
 TI_REG  Regs;
 TI_PREG     Ptr;
}TI_REG_ARX, *TI_REG_PARX;


typedef volatile struct _TI_SREG {
//0x0000
  TI_REG_IMR IMR;//中断屏蔽寄存器(0x00)
  TI_REG_IFR IFR;//中断标志寄存器(0x01)
  TI_REG Reserved0[4]; //保留4个空位(0x02~0x05)
  TI_REG_ST0 ST0;//状态寄存器0(0x06)
  TI_REG_ST1 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_ARX AR0;//辅助寄存器0(0x10)
  TI_REG_ARX AR1;//辅助寄存器1(0x11)
  TI_REG_ARX AR2;//辅助寄存器2(0x12)
  TI_REG_ARX AR3;//辅助寄存器3(0x13)
  TI_REG_ARX AR4;//辅助寄存器4(0x14)
  TI_REG_ARX AR5;//辅助寄存器5(0x15)
  TI_REG_ARX AR6;//辅助寄存器6(0x16)
  TI_REG_ARX AR7;//辅助寄存器7(0x17)
  TI_REG_SP   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_McBSPDATA McBSPDATA0;//McBSP数据寄存器0(0x20~0x23)
/*
  TI_REG DRR20;//数据接收寄存器2(0x20)
  TI_REG DRR10;//数据接收寄存器1(0x21)
  TI_REG DXR20;//数据发送寄存器2(0x22)
  TI_REG DXR10;//数据发送寄存器1(0x23)
*/
  TI_TIMER TIMER0;//定时器寄存器0(0x24~0x26)
/*
  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_TIMER TIMER1;//定时器寄存器1(0x30~0x32)
/*
  TI_REG TIM1;//定时器寄存器1(0x30)
  TI_REG PRD1;//定时器周期寄存器1(0x31)
  TI_REG TCR1;//定时器控制寄存器1(0x32)
*/
  TI_REG Reserved5[5]; //保留5个空位(0x33~37)
  TI_McBSPADDR McBSPADDR0;//McBSP地址寄存器0(0x38~0x39)
/*
  TI_REG SPSA0;//子区寻址寄存器0(0x38)
  TI_REG_SPSD 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_McBSPDATA McBSPDATA1;//McBSP数据寄存器1(0x40~0x43)
/*
  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_McBSPADDR McBSPADDR1;//McBSP地址寄存器1(0x48~0x49)
/*
  TI_REG SPSA1;//子区寻址寄存器1(0x48)
  TI_REG_SPSD SPSD1;//子区数据寄存器1(0x49)
*/
  TI_REG Reserved9[10]; //保留10个空位(0x4a,0x4b,...0x53)
  TI_DMA DMA;//DMA通道寄存器(0x54~0x57)
/*
  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)//定义硬件结构指针(硬件地址)


/*--------------------------------------------------------------------------
应用举例:
//1.以结构指针寄存器模式寻址
  SREG->IMR.Regs = 0x0000;
  SREG->IFR.Regs = 0xffff;
  SREG->PMST.Regs = (0x1ff << PMST_IPTR) |  \
               (1 << PMST_MP_MC) | (1 << PMST_OVLY) | (1 << PMST_CLKOFF);
  SREG->IMR.Regs = (1 << IMR_TINT0);//允许TINT0中断
   __enable_interrupt();//开中断
  for(;;) {
    SREG->ST1.Regs ^= (1 << ST1_XF);
  }


//2.以结构指针寄存器位模式寻址
  SREG->IMR.Regs = 0x0000;
  SREG->IFR.Regs = 0xffff;


  SREG->PMST.Regs = 0;
  SREG->PMST.Bits.IPTR = 0x1ff;
  SREG->PMST.Bits.MP_MC = true;
  SREG->PMST.Bits.OVLY = true;
  SREG->PMST.Bits.CLKOFF = true;


  SREG->IMR.Bits.TINT0 = ture;//允许TINT0中断
  __enable_interrupt();//开中断
  for(;;) {
    SREG->ST1.Bits.XF = !SREG->ST1.Bits.XF;
  }


//3.以结构寄存器位模式直接寻址
  SREGs.IMR.Regs = 0x0000;
  SREGs.IFR.Regs = 0xffff;


  SREGs.PMST.Regs = 0;
  SREGs.PMST.Bits.IPTR = 0x1ff;
  SREGs.PMST.Bits.MP_MC = true;
  SREGs.PMST.Bits.OVLY = true;
  SREGs.PMST.Bits.CLKOFF = true;


  SREGs.IMR.Bits.TINT0 = ture;//允许TINT0中断
  __enable_interrupt();//开中断
  for(;;) {
    SREGs.ST1.Bits.XF = !SREGs.ST1.Bits.XF;
  }


---------------------------------------------------------------------------*/


extern void _delay_loop_(unsigned int);


//结构型,建议使用
extern TI_SREG SREGs;//定义全局结构变量SREGs(直接寻址,速度最快)


//结构指针型以后可能将被淘汰(主要用于在Watch内查看SREGs的内容)
extern const TI_PSREG SREG;//定义全局结构指针变量SREG
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
/*--------------------------------------------------------------------------
应用举例(仔细注意其写法的微小差异):
  TIMER0->TCR.Regs |= (1 << TCR_TSS);//乇定时器0
  TIMER0->PRD = 250;//设置定时周期
  TIMER0->TCR.Regs &= ~(1 << TCR_TSS);//启动定时器0

  TIMER0->TCR.Bits.TSS = 1;//关闭定时器0
  TIMER0->PRD = 250;//设置定时周期
  TIMER0->TCR.Bits.TSS = 0;//启动定时器0

  SREG->TIMER0.TCRTCR.Bits.TSS = 1;//关闭定时器0
  SREG->TIMER0.PRD = 250;//设置定时周期
  SREG->TIMER0.TCR.Bits.TSS = 0;//启动定时器0

  SREGs.TIMER0.TCR.Bits.TSS = 1;//关闭定时?
  SREGs.TIMER0.PRD = 250;//设置定时周期0
  SREGs.TIMER0.TCR.Bits.TSS = 0;//启动定时器0


  TIMER1->TCR.Bits.TSS = 1;//关闭定时器1
  TIMER1->PRD = 250;//设置定时周期
  TIMER1->TCR.Bits.TSS = 0;//启动定时器1

  SREGs.TIMER1.TCR.Bits.TSS = 1;//乇斩ㄊ逼?
  SREGs.TIMER1.PRD = 250;//设置定时周期1
  SREGs.TIMER1.TCR.Bits.TSS = 0;//启动定时器1
---------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif


#endif  // __C5402CFG_H

PARTNER CONTENT

文章评论0条评论)

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