1、82第 4 章 C 语言程序编写和调试环境简介4.1 C 编译器概述4.2 TMS320C2x/C2xx/C5x C 编译器环境介绍4.3 利用 TMS320C2x/C2xx/C5x C 编译器开发应用程序的步骤4.4 头文件和命令文件示例 1头文件 LF2407REGS.H在该头文件中,寄存器都以指针方式进行寻址。/*; File Name : LF2407regs.h; Originator : Texas Instrument-Chongqing University DSPs Lab.; Description: LF2407 Peripheral Registers + other
2、useful definitions;*/*-; 片内外围寄存器定义;-*/*C2xx 内核寄存器;*/volatile unsigned int *IMR = (volatile unsigned int *)0x0004;/*中断屏蔽寄存器*/volatile unsigned int *GREG = (volatile unsigned int *)0x0005;/*全局变量定位寄存器*/volatile unsigned int* IFR = (volatile unsigned int *) 0x0006;/*中断标志寄存器*/volatile unsigned int* ABRPT
3、 = (volatile unsigned int *) 0x01f;/* 分析断点*/ioport unsigned portFFFF;#define WSGR portFFFF/*系统模块寄存器;*/volatile unsigned int * PIRQR0 = (volatile unsigned int *) 0x7010;/* 外围中断请求寄存器 0*/volatile unsigned int * PIRQR1 = (volatile unsigned int *) 0x7011;83/* 外围中断请求寄存器 1*/volatile unsigned int * PIRQR2 =
4、 (volatile unsigned int *) 0x7012;/* 外围中断请求寄存器 2*/volatile unsigned int * PIACKR0 = (volatile unsigned int *) 0x7014;/* 外围中断应答寄存器 0*/volatile unsigned int * PIACKR1 = (volatile unsigned int *) 0x7015;/* 外围中断应答寄存器 1*/volatile unsigned int * PIACKR2 = (volatile unsigned int *) 0x7016;/* 外围中断应答寄存器 2*/v
5、olatile unsigned int * SCSR1 = (volatile unsigned int *) 0x7018;/* 系统控制和状态寄存器 1*/volatile unsigned int * SCSR2 = (volatile unsigned int *) 0x7019;/* 系统控制和状态寄存器 2*/volatile unsigned int * DIN = (volatile unsigned int *) 0x701C;/*期间识别寄存器*/volatile unsigned int * PVIR = (volatile unsigned int *) 0x701E
6、;/* 外围中断向量寄存器*/*看门狗/ 实时中断(RTI) / 锁相环 (PLL) 寄存器;*/volatile unsigned int * WDCNTR = (volatile unsigned int *) 0x7023;/*看门狗计数寄存器*/volatile unsigned int * WDKEY = (volatile unsigned int *) 0x7025;/* 看门狗 Key 寄存器*/volatile unsigned int * WDCR = (volatile unsigned int *) 0x7029;/* 看门狗控制寄存器*/ /*外围串行接口(SPI)寄
7、存器;*/volatile unsigned int * SPICCR = (volatile unsigned int *) 0x7040;/* SPI配置控制寄存器 1 */volatile unsigned int * SPICTL = (volatile unsigned int *) 0x7041;/* SPI 运行控制寄存器 2 */volatile unsigned int * SPISTS = (volatile unsigned int *) 0x7042;/* SPI 状态寄存器 */volatile unsigned int * SPIBRR = (volatile un
8、signed int *) 0x7044;/* SPI 波特率控制寄存器 */volatile unsigned int * SPIEMU = (volatile unsigned int *) 0x7046;/* SPI 仿真缓冲寄存器 */volatile unsigned int * SPIRXBUF = (volatile unsigned int *) 0x7047;84/* SPI 串行输入缓冲寄存器 */volatile unsigned int * SPITXBUF = (volatile unsigned int *) 0x7048;/* SPI 串行输出缓冲寄存器 */vo
9、latile unsigned int * SPIDAT = (volatile unsigned int *) 0x7049;/* SPI 串行数据寄存器 */volatile unsigned int * SPIPC1 = (volatile unsigned int *) 0x704D;/* SPI 端口控制寄存器 1 */volatile unsigned int * SPIPC2 = (volatile unsigned int *) 0x704E;/* SPI端口控制寄存器 2 */volatile unsigned int * SPIPRI = (volatile unsigne
10、d int *) 0x7023;/* SPI 优先级控制寄存器 */* 串行通信接口寄存器;*/volatile unsigned int * SCICCR = (volatile unsigned int *) 0x7050;/* SCI 通讯控制寄存器*/volatile unsigned int * SCICTL1 = (volatile unsigned int *) 0x7051;/* SCI 控制寄存器 1*/volatile unsigned int * SCIHBAUD = (volatile unsigned int *) 0x7052;/* SCI 波特率控制寄存器高位*/
11、volatile unsigned int * SCILBAUD = (volatile unsigned int *) 0x7053;/* SCI 波特率控制寄存器低位*/volatile unsigned int * SCICTL2 = (volatile unsigned int *) 0x7054;/* SCI 控制寄存器 2*/volatile unsigned int * SCIRXST = (volatile unsigned int *) 0x7055;/* SCI 接收状态寄存器*/volatile unsigned int * SCIRXEMU = (volatile un
12、signed int *) 0x7056;/* SCI EMU 数据缓冲寄存器*/volatile unsigned int * SCIRXBUF = (volatile unsigned int *) 0x7057;/* SCI 接收数据缓冲寄存器 */volatile unsigned int * SCITXBUF = (volatile unsigned int *) 0x7059;/* SCI发送数据缓冲寄存器 */volatile unsigned int * SCIPRI = (volatile unsigned int *) 0x705F;/* SCI 优先级控制寄存器 */*
13、外围中断配置寄存器;*/volatile unsigned int * XINT1CR = (volatile unsigned int *) 0x7070;/* Int1 配置寄存器*/volatile unsigned int * XINT2CR = (volatile unsigned int *) 0x7071;85/* Int2 配置寄存器*/* 数字 I/O 控制寄存器。;*/volatile unsigned int * MCRA = (volatile unsigned int *) 0x7090;/* I/O 复用控制寄存器 A*/ volatile unsigned int
14、 * MCRB = (volatile unsigned int *) 0x7092;/* I/O 复用控制寄存器 B*/volatile unsigned int * MCRC = (volatile unsigned int *) 0x7094;/* I/O 复用控制寄存器 C*/volatile unsigned int * IPSRA = (volatile unsigned int *) 0x7094;/*输入状态寄存器 A*/volatile unsigned int * IPSRB = (volatile unsigned int *) 0x7096;/*输入状态寄存器 B*/v
15、olatile unsigned int * PADATDIR = (volatile unsigned int *) 0x7098;/* I/O 端口 A 数据和方向控制寄存器*/ volatile unsigned int * PBDATDIR = (volatile unsigned int *) 0x709A;/* I/O 端口 B 数据和方向控制寄存器*/volatile unsigned int * PCDATDIR = (volatile unsigned int *) 0x709C;/* I/O 端口 C 数据和方向控制寄存器*/volatile unsigned int *
16、PDDATDIR = (volatile unsigned int *) 0x709E;/* I/O 端口 D 数据和方向控制寄存器*/volatile unsigned int * PEDATDIR = (volatile unsigned int *) 0x7095;/* I/O 端口 E 数据和方向控制寄存器*/ volatile unsigned int * PFDATDIR = (volatile unsigned int *) 0x7096;/* I/O 端口 F 数据和方向控制寄存器*/ /*ADC 寄存器定义;-*/volatile unsigned int * ADCTRL1
17、 = (volatile unsigned int *) 0x70A0;/* ADC控制寄存器 1*/volatile unsigned int * ADCTRL2 = (volatile unsigned int *) 0x70A1;/* ADC控制寄存器 2*/ volatile unsigned int * MAXCONV = (volatile unsigned int *) 0x70A2;/*最大转换通道寄存器*/ volatile unsigned int * CHSELSEQ1 = (volatile unsigned int *) 0x70A3;/*通道选择域 :结果 3,2,
18、1,0*/ volatile unsigned int * CHSELSEQ2 = (volatile unsigned int *) 0x70A4;/*通道选择域 :结果 7,6,5,4*/volatile unsigned int * CHSELSEQ3 = (volatile unsigned int *) 0x70A5;86/*通道选择域 :结果 11,10,9,8*/volatile unsigned int * CHSELSEQ4 = (volatile unsigned int *) 0x70A6;/*通道选择域 :结果 15,14,13,12*/ volatile unsign
19、ed int * AUTO_SEQ_SR = (volatile unsigned int *) 0x70A7;/* 自动排序状态寄存器 */ volatile unsigned int * RESULT0 = (volatile unsigned int *) 0x70A8;/* 转换结果寄存器 0*/ volatile unsigned int * RESULT1 = (volatile unsigned int *) 0x70A9;/* 转换结果寄存器 1*/ volatile unsigned int * RESULT2 = (volatile unsigned int *) 0x70
20、AA;/* 转换结果寄存器 2*/ volatile unsigned int * RESULT3 = (volatile unsigned int *) 0x70AB;/* 转换结果寄存器 3*/ volatile unsigned int * RESULT4 = (volatile unsigned int *) 0x70AC;/* 转换结果寄存器 4*/volatile unsigned int * RESULT5 = (volatile unsigned int *) 0x70AD;/* 转换结果寄存器 5*/ volatile unsigned int * RESULT6 = (vo
21、latile unsigned int *) 0x70AE;/* 转换结果寄存器 6*/ volatile unsigned int * RESULT7 = (volatile unsigned int *) 0x70AF;/* 转换结果寄存器 7*/ volatile unsigned int * RESULT8 = (volatile unsigned int *) 0x70B0;/* 转换结果寄存器 8*/volatile unsigned int * RESULT9 = (volatile unsigned int *) 0x70B1;/* 转换结果寄存器 9*/ volatile u
22、nsigned int * RESULT10 = (volatile unsigned int *) 0x70B2;/* 转换结果寄存器 10*/volatile unsigned int * RESULT11 = (volatile unsigned int *) 0x70B3;/* 转换结果寄存器 11*/ volatile unsigned int * RESULT12 = (volatile unsigned int *) 0x70B4;/* 转换结果寄存器 12*/ volatile unsigned int * RESULT13 = (volatile unsigned int *
23、) 0x70B5;/* 转换结果寄存器 13*/ volatile unsigned int * RESULT14 = (volatile unsigned int *) 0x70B6;/* 转换结果寄存器 14*/ volatile unsigned int * RESULT15 = (volatile unsigned int *) 0x70B7;/* 转换结果寄存器 15*/volatile unsigned int * CALIBRATION = (volatile unsigned int *) 0x70B8;87/* 校准寄存器*/*局部控制网络(CAN) 寄存器 ;*/volat
24、ile unsigned int * CANMDER = (volatile unsigned int *) 0x7100;/* 邮包方向/使能寄存器*/ volatile unsigned int * CANTCR = (volatile unsigned int *) 0x7101;/* 发送控制寄存器*/ volatile unsigned int * CANRCR = (volatile unsigned int *) 0x7102;/* 接收控制寄存器*/ volatile unsigned int * CANMCR = (volatile unsigned int *) 0x710
25、3;/* 主动控制寄存器*/volatile unsigned int * CANBCR2 = (volatile unsigned int *) 0x7104;/* 位配置寄存器 2*/ volatile unsigned int * CANBCR1 = (volatile unsigned int *) 0x7105;/* 位配置寄存器 1*/ volatile unsigned int * CANESR = (volatile unsigned int *) 0x7106;/* 错误状态寄存器*/ volatile unsigned int * CANGSR = (volatile un
26、signed int *) 0x7107;/* 全局状态寄存器 */volatile unsigned int * CANCEC = (volatile unsigned int *) 0x7108;/* CAN 错误计数寄存器*/volatile unsigned int * CANIFR = (volatile unsigned int *) 0x7109;/* CAN 中断标志寄存器*/volatile unsigned int * CANIMR = (volatile unsigned int *) 0x710A;/* CAN 中断屏蔽寄存器 */ volatile unsigned
27、int * CANLAM0H= (volatile unsigned int *) 0x710B;/* 局部接收屏蔽寄存器 0 高位*/volatile unsigned int * CANLAM0L = (volatile unsigned int *) 0x710C;/* 局部接收屏蔽寄存器 0 低位*/volatile unsigned int * CANLAM1H = (volatile unsigned int *) 0x710D;/* 局部接收屏蔽寄存器 1 高位*/ volatile unsigned int * CANLAM1L = (volatile unsigned int
28、 *) 0x710E;/* 局部接收屏蔽寄存器 1 低位*/volatile unsigned int * CANMSGID0L = (volatile unsigned int *) 0x7200;/* 对于邮包 0的信息标志符 低位 */ volatile unsigned int * CANMSGID0H = (volatile unsigned int *) 0x7201;88/* 对于邮包 0的信息标志符 高位 */ volatile unsigned int * CANMSGCTRL0= (volatile unsigned int *) 0x7202;/*对于邮包 0的信息控制域
29、*/volatile unsigned int * CANMBX0A = (volatile unsigned int *) 0x7204;/* 邮包 0 A*/volatile unsigned int * CANMBX0B =(volatile unsigned int *) 0x7205;/* 邮包 0 B*/volatile unsigned int * CANMBX0C = (volatile unsigned int *) 0x7206;/* 邮包 0 C*/volatile unsigned int * CANMBX0D = (volatile unsigned int *) 0
30、x7207;/* 邮包 0 D*/volatile unsigned int * CANMSGID1L = (volatile unsigned int *) 0x7208;/* 对于邮包 1的信息标志符 低位 */ volatile unsigned int * CANMSGID1H = (volatile unsigned int *) 0x7209;/* 对于邮包 1的信息标志符 高位 */volatile unsigned int * CANMSGCTRL1= (volatile unsigned int *) 0x720A;/*对于邮包 1的信息控制域*/volatile unsig
31、ned int * CANMBX1A = (volatile unsigned int *) 0x720C;/*邮包 1 A*/volatile unsigned int * CANMBX1B = (volatile unsigned int *) 0x720D;/* 邮包 1 B*/volatile unsigned int * CANMBX1C = (volatile unsigned int *) 0x720E;/* 邮包 1 C*/volatile unsigned int * CANMBX1D = (volatile unsigned int *) 0x720F;/* 邮包 1 D*
32、/volatile unsigned int * CANMSGID2L = (volatile unsigned int *) 0x7210;/* 对于邮包 2的信息标志符 低位 */ volatile unsigned int * CANMSGID2H = (volatile unsigned int *) 0x7211;/* 对于邮包 2的信息标志符 高位 */volatile unsigned int * CANMSGCTRL2 = (volatile unsigned int *) 0x7212;/*对于邮包 2的信息控制域*/volatile unsigned int * CANMB
33、X2A = (volatile unsigned int *) 0x7214;/* 邮包 2 A*/volatile unsigned int * CANMBX2B = (volatile unsigned int *) 0x7215;/*邮包 2 B*/89volatile unsigned int * CANMBX2C = (volatile unsigned int *) 0x7216;/*邮包 2 C*/volatile unsigned int * CANMBX2D = (volatile unsigned int *) 0x7217;/*邮包 2 D*/volatile unsig
34、ned int * CANMSGID3L = (volatile unsigned int *) 0x7218;/* 对于邮包 3的信息标志符 低位 */ volatile unsigned int * CANMSGID3H = (volatile unsigned int *) 0x7219;/* 对于邮包 3的信息标志符 高位 */volatile unsigned int * CANMSGCTRL3 = (volatile unsigned int *) 0x721A;/*对于邮包 3的信息控制域*/volatile unsigned int * CANMBX3A = (volatile
35、 unsigned int *) 0x721C;/* 邮包 3 A*/volatile unsigned int * CANMBX3B = (volatile unsigned int *) 0x721D;/* 邮包 3 B*/volatile unsigned int * CANMBX3C = (volatile unsigned int *) 0x721E;/* 邮包 3 C*/volatile unsigned int * CANMBX3D =(volatile unsigned int *) 0x721F;/* 邮包 3 D*/volatile unsigned int * CANMS
36、GID4L = (volatile unsigned int *) 0x7220;/* 对于邮包 4的信息标志符 低位 */ volatile unsigned int * CANMSGID4H = (volatile unsigned int *) 0x7221;/* 对于邮包 4的信息标志符 高位 */volatile unsigned int * CANMSGCTRL4= (volatile unsigned int *) 0x7222;/*对于邮包 4的信息控制域*/volatile unsigned int * CANMBX4A = (volatile unsigned int *)
37、 0x7224;/* 邮包 4 A*/volatile unsigned int * CANMBX4B = (volatile unsigned int *) 0x7225;/* 邮包 4 B*/volatile unsigned int * CANMBX4C = (volatile unsigned int *) 0x7226;/* 邮包 4 C*/volatile unsigned int * CANMBX4D = (volatile unsigned int *) 0x7227;/* 邮包 4 D*/volatile unsigned int * CANMSGID5L = (volati
38、le unsigned int *) 0x7228;/* 对于邮包 5的信息标志符 低位 */volatile unsigned int * CANMSGID5H = (volatile unsigned int *) 0x7229;/* 对于邮包 5的信息标志符 高位 */volatile unsigned int * CANMSGCTRL5 = (volatile unsigned int *) 0x722A;/*对于邮包 5的信息控制域*/90volatile unsigned int * CANMBX5A = (volatile unsigned int *) 0x722C;/* 邮包
39、 5 A*/volatile unsigned int * CANMBX5B = (volatile unsigned int *) 0x722D;/* 邮包 5 B*/volatile unsigned int * CANMBX5C = (volatile unsigned int *) 0x722E;/* 邮包 5 C*/volatile unsigned int * CANMBX5D = (volatile unsigned int *) 0x722F;/*邮包 5 D*/*事件管理器 (EV)/ 事件管理器 A (EVA) 寄存器;*/volatile unsigned int * G
40、PTCONA = (volatile unsigned int *) 0x7400;/* 通用定时器控制寄存器*/volatile unsigned int * T1CNT = (volatile unsigned int *) 0x7401;/* T1 计数器*/volatile unsigned int * T1CMP = (volatile unsigned int *) 0x7402;/* T1 比较值寄存器*/volatile unsigned int * T1PER = (volatile unsigned int *) 0x7403;/* T1 周期寄存器*/volatile u
41、nsigned int * T1CON = (volatile unsigned int *) 0x7404;/* T1 控制寄存器*/volatile unsigned int * T2CNT = (volatile unsigned int *) 0x7405;/* T2 计数器*/volatile unsigned int * T2CMP = (volatile unsigned int *) 0x7406;/* T2 比较值寄存器*/volatile unsigned int * T2PER = (volatile unsigned int *) 0x7407;/* T2 周期寄存器*
42、/volatile unsigned int * T2CON = (volatile unsigned int *) 0x7408;/* T2 控制寄存器*/volatile unsigned int * COMCONA = (volatile unsigned int *) 0x7411;/* 比较控制寄存器*/volatile unsigned int * ACTRA = (volatile unsigned int *) 0x7413;/* 比较输出动作控制寄存器*/volatile unsigned int * DBTCONA = (volatile unsigned int *) 0
43、x7415;/* 死区控制寄存器*/volatile unsigned int * CMPR1 = (volatile unsigned int *) 0x7417;/* 比较值 1*/volatile unsigned int * CMPR2 = (volatile unsigned int *) 0x7418;/* 比较值 2*/91volatile unsigned int * CMPR3 = (volatile unsigned int *) 0x7419;/* 比较值 3*/volatile unsigned int * CAPCONA = (volatile unsigned in
44、t *) 0x7420;/* 捕捉控制寄存器*/volatile unsigned int * CAPFIFOA = (volatile unsigned int *) 0x7422;/* 捕捉 FIFO A 状态寄存器*/volatile unsigned int * CAP1FIFO = (volatile unsigned int *) 0x7423;/* 捕捉 1 FIFO 顶部*/volatile unsigned int * CAP2FIFO = (volatile unsigned int *) 0x7424;/* 捕捉 2 FIFO 顶部*/volatile unsigned
45、int * CAP3FIFO = (volatile unsigned int *) 0x7425;/* 捕捉 3 FIFO 顶部*/volatile unsigned int * CAP1FBOT = (volatile unsigned int *) 0x7427;/* 捕捉 1 FIFO 底部 */volatile unsigned int * CAP2FBOT = (volatile unsigned int *) 0x7428;/* 捕捉 2 FIFO 底部 */volatile unsigned int * CAP3FBOT = (volatile unsigned int *)
46、0x7429; /* 捕捉 2 FIFO 底部 */volatile unsigned int * EVAIMRA = (volatile unsigned int *) 0x742C;/* EVA 中断屏蔽寄存器 A*/volatile unsigned int * EVAIMRB = (volatile unsigned int *) 0x742D;/* EVA中断屏蔽寄存器 B*/volatile unsigned int * EVAIMRC = (volatile unsigned int *) 0x742E;/* EVA 中断屏蔽寄存器 C*/volatile unsigned int * EVAIFRA = (volatile unsigned int *) 0x742F;/* EVA中断标志寄存器 A*/volatile unsigned int * EVAIFRB = (volatile unsigned int *) 0x7430;/* EVA 中断标志寄存器 B*/volatile unsigned int * EVAIFRC = (volatile unsigned int *) 0x7431;/* EVA中断标志寄存器 C*/*事件管理器 B (EVB) 寄存器;