文档详情

定时器实验.doc

发布:2017-06-06约5.38千字共8页下载文档
文本预览下载声明
定时器实验 一、 实验目的 1. 了解DSP汇编程序与C语言程序的构成; 2. 了解DSP程序各段的含义; 3. 熟悉如何编写中断服务程序; 4. 掌握片内定时器的设置方法; 5. 掌握长时间间隔的定时器的处理 二 、实验内容(要求) 1. DSP的初始设置; 2. DSP中断向量表的建立; 3. 定时器的使用; 三 、实验原理(背景知识) 1 通用TIMER 简介 TMS320VC5402 的定时器的说明: VC5416 中有两个可编程的片上定时器,总共包含有三个可由用户设置的寄存 器,并可以申请主机的中断。这三个寄存器分别为TIM、PRD、TCR。这些寄存器 与对应的存贮空间地址如下表所示: 时间寄存器(TIM)是一个16 位的存贮器映射寄存器,它的值由周期寄存器来进行装载,并且做减一操作。 周期寄存器(PRD)是一个16 位的存贮器映射寄存器,它是用来重装时间寄存器(TIM)寄存器的值的。 定时器控制寄存器(TCR)是一个16 位的存贮器映射寄存器,包含了定时器的控制与状态信息。 2、CMD 文件简介 cmd 文件用于DSP 代码的定位。由3 部分组成: (1)输入/输出定义: .obj 文件:链接器要链接的目标文件。 .lib 文件:链接器要链接的库文件。 .map 文件:链接器生成的交叉索引文件。 .out 文件:链接器生成的可执行代码;链接器选项。 (2) MEMORY 命令:描述系统实际的硬件资源。 (3.) SECTIONS 命令:描述段如何定位。 下面例子则可说明其基本格式: -o sample.out (可缺省) -m sample.map (可缺省) -stack 100 (可缺省) sample.obj meminit.obj (可缺省) -l rts.lib (可缺省) MEMORY { PAGE 0: RESEVE: org = 00h len = 0x80 PAGE 0: PROG1: org = 0x0100 len = 0x1200 PAGE 0: VECT: org = 0x0080, len = 0x80 PAGE 1: RESEVE1: org = 00h len = 0x1300 PAGE 1: DARAM2: org = 0x1300 len = 0x400 PAGE 1: DARAM1: org = 0x1700 len = 0x2900 } SECTIONS{ .text : PROG1 PAGE 0 .cinit : PROG1 PAGE 0 .switch: PROG1 PAGE 0 .vectors: VECT PAGE 0 .const: DARAM1 PAGE 1 .bss : DARAM1 PAGE 1 .stack : DARAM2 PAGE 1 .system: DARAM2 PAGE 1 .data : DARAM2 PAGE 1 } 下面介绍一下CMD 文件中常用的程序段名与含义 .cinit 存放C 程序中的已初始化的变量初值和常数表; .const 存放C 程序中的字符常量和用const 声明的常量; .text 存放C 程序的代码; .bss 为C 程序中的未初始化的全局和静态变量保留存储空间; .far 为C 程序中用far 声明的全局和静态变量保留空间; .stack 为C 程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果; .sysmem 用于C 程序中malloc、calloc 和realloc 函数动态分配存储空间 .vectors 用于自定义的“.vectors”段,这里是中断向量表 .switch 用于C程序中的switch语句 .data 已初始化的数据段 3 中断向量表文件 中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般用中断向量表文件编制中断向量表,中断向量表文件
显示全部
相似文档