原创 DSP2812初学教程之C2000软件开发基础(1)

2008-9-24 09:43 2660 4 4 分类: 处理器与DSP

 


应该大家没人用汇编来写DSP程序,看懂TI提供的那部分C程序,还是需要下面这些知识的。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1SCI寄存器的宏定义


/********************************************************************


 


* 采用宏定义的方法定义的头文件


 


********************************************************************/


 


#define Uint16 unsigned int


 


#define Uint32 unsigned long


 


#define SCICCRA (volatile Uint16 *)0×7050 // 0×7050 SCI-A 通信控制寄存器


 


#define SCICTL<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1A (volatile Uint16 *)0×7051 // 0×7051 SCI-A 控制寄存器1


 


#define SCIHBAUDA (volatile Uint16 *)0×7052 // 0×7052 SCI-A 波特率设置寄存器,高位


 


#define SCILBAUDA (volatile Uint16 *)0×7053 // 0×7053 SCI-A 波特率设置寄存器,低位


 


 


#define SCICTL2A (volatile Uint16 *)0×7054 // 0×7054 SCI-A 控制寄存器2


 


#define SCIRXSTA (volatile Uint16 *)0×7055 // 0×7055 SCI-A 接收状态寄存器


 


#define SCIRXEMUA (volatile Uint16 *)0×7056 // 0×7056 SCI-A 接收仿真数据缓冲寄存器


 


#define SCIRXBUFA (volatile Uint16 *)0×7057 // 0×7057 SCI-A 接收数据寄存器


 


#define SCITXBUFA (volatile Uint16 *)0×7059 // 0×7059 SCI-A 发送数据缓冲


 


#define SCIFFTXA (volatile Uint16 *)0×705A // 0×705A SCI-A FIFO发送


 


#define SCIFFRXA (volatile Uint16 *)0×705B // 0×705B SCI-A FIFO接收


 


#define SCIFFCTA (volatile Uint16 *)0×705C // 0×705C SCI-A FIFO控制


 


#define SCIPRIA (volatile Uint16 *)0×705F // 0×705F SCI-A 优先级控制


 


#define SCICCRB (volatile Uint16 *)0×7750 // 0×7750 SCI-B 通信控制


 


#define SCICTL1B (volatile Uint16 *)0×7751 // 0×7751 SCI-B 控制寄存器1


 


#define SCIHBAUDB (volatile Uint16 *)0×7752 // 0×7752 SCI-B 波特率设置寄存器,高位


 


#define SCILBAUDB (volatile Uint16 *)0×7753 // 0×7753 SCI-B 波特率设置寄存器,低位


 


#define SCICTL2B (volatile Uint16 *)0×7754 // 0×7754 SCI-B 控制寄存器2


 


#define SCIRXSTB (volatile Uint16 *)0×7755 // 0×7755 SCI-B 接收状态


 


#define SCIRXEMUB (volatile Uint16 *)0×7756 // 0×7756 SCI-B 接收仿真数据缓冲


 


#define SCIRXBUFB (volatile Uint16 *)0×7757 // 0×7757 SCI-B 接收数据缓冲


 


#define SCITXBUFB (volatile Uint16 *)0×7759 // 0×7759 SCI-B 发送数据缓冲


 


#define SCIFFTXB (volatile Uint16 *)0×775A // 0×775A SCI-B FIFO发送


 


#define SCIFFRXB (volatile Uint16 *)0×775B // 0×775B SCI-B FIFO接收


 


#define SCIFFCTB (volatile Uint16 *)0×775C // 0×775C SCI-B FIFO控制


 


#define SCIPRIB (volatile Uint16 *)0×775F // 0×775F SCI-B 优先级控制


 


 


2、采用宏定义方法访问SCI寄存器


/********************************************************************


 


* 采用 #define macros访问寄存器


 


********************************************************************/


 



 


*SCICTL1A = 0×0003; //写整个控制寄存器1


 


*SCICTL1B |= 0×0001; //使能 RX


 


 


3SCI寄存器文件结构定义


/********************************************************************


 


* SCI 头文件


 


*SCI外设定义寄存器文件架构


 


********************************************************************/


 


#define Uint16 unsigned int


 


#define Uint32 unsigned long


 


struct SCI_REGS {


 


Uint16 SCICCR_REG SCICCR; // 通信控制寄存器


 


Uint16 SCICTL1_REG SCICTL1; // 控制寄存器1


 


Uint16 SCIHBAUD; // SCI 波特率设置寄存器,高位


 


Uint16 SCILBAUD; // SCI 波特率设置寄存器,低位


 


Uint16 SCICTL2_REG SCICTL2; // 控制寄存器 2


 


Uint16 SCIRXST_REG SCIRXST; // 接收状态寄存器


 


Uint16 SCIRXEMU; // 接收仿真数据缓冲寄存器


 


Uint16 SCIRXBUF_REG SCIRXBUF; // 接收数据缓冲寄存器


 


Uint16 rsvd1; // 保留存储空间


 


Uint16 SCITXBUF; // 发送数据缓冲寄存器


 


Uint16 SCIFFTX_REG SCIFFTX; // FIFO 发送寄存器


 


Uint16 SCIFFRX_REG SCIFFRX; // FIFO 接收寄存器


 


Uint16 SCIFFCT_REG SCIFFCT; // FIFO 控制寄存器


 


Uint16 rsvd2; //保留存储空间


 


Uint16 rsvd3; //保留存储空间


 


Uint16 SCIPRI_REG SCIPRI; // FIFO优先级控制寄存器


 


};


 


 


4SCI寄存器文件结构变量


/********************************************************************


 


* 采用寄存器文件结构的源码文件


 


* 为每个SCI寄存器文件创建一个变量


 


********************************************************************/


 


volatile struct SCI_REGS SciaRegs;


 


volatile struct SCI_REGS ScibRegs;

PARTNER CONTENT

文章评论0条评论)

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