应该大家没人用汇编来写DSP程序,看懂TI提供的那部分C程序,还是需要下面这些知识的。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
例1、SCI寄存器的宏定义
/********************************************************************
* 采用宏定义的方法定义的头文件
********************************************************************/
#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
例3、SCI寄存器文件结构定义
/********************************************************************
* 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优先级控制寄存器
};
例4、SCI寄存器文件结构变量
/********************************************************************
* 采用寄存器文件结构的源码文件
* 为每个SCI寄存器文件创建一个变量
********************************************************************/
volatile struct SCI_REGS SciaRegs;
volatile struct SCI_REGS ScibRegs;
文章评论(0条评论)
登录后参与讨论