DSP实验讲义(修改)
- 格式:doc
- 大小:430.50 KB
- 文档页数:15
实验1 矩阵、序列及系统的时域表示与运算一、实验目的掌握用MA TLAB 表示离散时间信号和系统,以及它们的运算和显示。
二、实验内容与要求 (在预习报告中写出生成如下序列的程序) 请在实验报告中记录以下程序和结果1. 用MA TLAB 产生并画出下列序列的样本。
a .()()()1010()1[221],025m x n m n m n m n δδ==+----≤≤∑b .()()()()()()22()[56]10200.5[410]n x n n u n u n n u n u n δ=+--++---c .()3()0.9cos(0.2/3),020n x n n n ππ=+≤≤d .()24()10cos(0.0008),0100x n n w n n π=+≤≤,式中()w n 是在[-1,1]之间均匀分布的随机序列,你如何表征这个序列?在实验报告回答用matlab 生成随机序列的函数e .(){}5...,1,2,3,2,1,2,3,2,...x n ↑= 为周期的,画出5个周期。
2.若线性时不变系统的单位样值响应为)()6.0()(n u n h n =,输入序列)10()()(--=n u n u n x ,求系统的输出)(n y ,并画出其波形图。
(思考:你可以用几种方法来实现?) 在实验报告回答表示LTI 系统的方法和求解输出响应的方法在实验报告回答:函数plot 、stem 、subplot 、xlabel 、ylabel 、title 、hold on/off 的作用三、实验所用部分函数如下1.单位冲激序列(信号)生成函数impseq[x,n] = impseq(n0,n1,n2)2.阶跃序列(信号)生成函数stepseq[x,n] = stepseq(n0,n1,n2)3.序列(信号)相加函数sigadd[y,n] = sigadd(x1,n1,x2,n2)以上为MATLAB 没有,需外加入的函数(将相应函数拷贝到自己当前目录下)4. 正(余)弦生成函数sin 、cosy = sin(x) ,y = cos(x) (注意:x以弧度为单位)5. 随机序列生成函数rand,用法如:Y = rand (n) 生成n×n阶的均匀分布随机阵;Y = rand (m, n) 生成m×n阶的随机阵;rand 返回在[0,1]区间上的一个随机数;将上面的rand写成randn则可以生成均值为0、方差为1的正态分布的随机变量。
目录第1章Code Composer Studio 入门指导 (1)第2章实验指导 (6)2.1 数据存取实验 (6)2.2 定时器实验 (10)2.3 音频信号发生实验 (14)2.4 直流电机控制实验 (18)第1章Code Composer Studio 入门指导一.实验目的1.掌握Code Composer Studio2.2 的安装和配置。
2.了解DSP 开发系统和计算机与目标系统的连接方法。
3.了解Code Composer Studio 2.2 软件操作环境和基本功能,了解TMS320C2xxx 软件开发过程。
⑴学习创建工程和管理工程的方法。
⑵了解基本的编译和调试功能。
⑶学习使用观察窗口。
⑷了解图形功能的使用。
二.实验设备1.PC 兼容机一台;操作系统为Windows2000 (或WindowsNT、Windows98、WindowsXP),以下假定操作系统为Windows2000。
2.ICETEK-LF2407-USB-EDU(或ICETEK-LF2407-PP-EDU)实验箱一台。
B 连接电缆一条(如使用PP 型仿真器换成并口电缆一条)。
三.实验原理★开发TMS320C2xxx 应用系统一般需要以下几个调试工具来完成:*软件集成开发环境(Code Composer Studio 2.2):完成系统的软件开发,进行软件和硬件仿真调试。
它也是硬件调试的辅助手段。
*开发系统(ICETEK 5100 USB 或ICETEK 5100 PP):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
*评估模块(ICETEK LF2407-A 或ICETEK LF2407-C 等):提供软件运行和调试的平台和用户系统开发的参照。
★Code Composer Studio 2.2 主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP 上运行调试。
实验准备第一章 CCS介绍1.1 CCS功能CCS 是TI 公司推出的功能强大的软件开发环境,现在该集成软件环境可以用于TI 各系列DSP 系统的软件程序开发。
CCS 主要具有以下特性和功能:集成可视化代码编辑界面,可以直接编写C/C++、汇编、头文件以及CMD 文件等;集成代码生成工具,包括汇编器、C 编译器、C++编译器和链接器等;集成基本调试工具,可以完成执行代码的装入、寄存器和存储器的查看、反汇编器、变量窗口的显示等功能,同时还支持C 源代码级的调试;支持多DSP 的调试;集成断点工具,包括设置硬件断点、数据空间读/写断点,条件断点等;集成探针工具(Probe Points),可用于算法仿真,数据监视等用途;提供代码分析工具(Profile Points),可用于计算某段代码执行时消耗的时钟数,从而能够对代码的执行效率做出评估;提供数据的图形显示工具,可绘制时域/频域波形等图像;支持通过GEL (通用扩展语言)来扩展CCS 的功能,可以实现用户自定义的控制面板/菜单、自动修改变量或配置参数等功能;支持RTDX (实时数据交换)技术,可在不打断目标系统运行的情况下,实现DSP 与其他应用程序(OLE )间的数据交换;提供开放式的plug-ins 技术,支持其他第三方的ActiveX 插件,支持包括软件仿真在内的各种仿真器(需要安装相应的驱动程序);提供DSP/BIOS工具,增强了对代码的实时分析能力,如分析代码的执行效率、调度程序执行的优先级、方便了对系统资源的管理或使用(代码/数据空间的分配、中断服务程序的调用、定时器的使用等等),减小了开发人员对DSP 硬件知识的依赖程度,从而缩短了软件系统的开发进程。
1.2 CCS界面CCS 的主界面如图1.1所示。
工程管理器主要用于统一管理各工程中所包含的文件,在工程管理器窗口中,可以添加、删除、激活和编辑工程中的源文件,同时也可以对编译器、汇编器和链接器的参数进行设置。
DSP实验教案范文一、实验目的:1.了解数字信号处理(DSP)的基本概念和原理。
2.掌握DSP实验中使用的基本仪器和设备。
3.学会使用MATLAB进行DSP实验仿真。
4.熟悉DSP实验中常用的算法和技术。
5.培养学生的分析和解决问题的能力。
二、实验内容:1.DSP基本原理实验:1.1数字信号的采集与重构。
1.2数字滤波器设计与实现。
1.3快速傅里叶变换(FFT)的原理和应用。
2.语音信号处理实验:2.1语音信号的特征提取。
2.2语音信号的降噪和增强。
2.3语音信号的压缩与解压缩。
3.图像信号处理实验:3.1图像的滤波与增强。
3.2图像的分割与识别。
3.3图像的压缩与解压缩。
4.VLSI实验:4.1VLSI设计流程与工具介绍。
4.2VLSI数字滤波器设计与实现。
4.3VLSI图像处理器设计与实现。
三、实验步骤:1.实验前准备:1.1阅读相关教材和实验指导书。
1.2准备实验所需的仪器、设备和软件。
1.3清理实验平台,确保安全和正常工作。
2.实验过程:2.1DSP基本原理实验:2.1.1数字信号的采集与重构实验:在MATLAB环境中使用声卡进行音频采集,将采集到的模拟信号进行数字化处理,并将数字信号重构为模拟信号并输出。
通过比较输入信号和输出信号的差异来验证数字信号的采集和重构过程。
2.1.2数字滤波器设计与实现实验:使用MATLAB对滤波器进行设计和仿真,包括滤波器类型的选择、滤波器参数的确定和滤波器的实现。
通过比较滤波器前后信号的频谱和时域波形来验证滤波器的效果。
2.1.3快速傅里叶变换(FFT)实验:使用MATLAB对信号进行FFT变换,并观察变换结果的频谱和时域波形。
通过对比不同信号的FFT结果,分析信号的频谱特性和频域变化。
2.2语音信号处理实验:2.2.1语音信号的特征提取实验:使用MATLAB对语音信号进行预处理,包括语音信号的分段、端点检测和去除噪声。
通过计算和提取语音信号的特征参数,如基频、共振峰等,来分析语音信号的特征。
DSP原理及应用实验手册目录实验1 Code Composer Studio入门 (1)实验2 定时器实验 (4)实验3、步进电机控制 (9)实验4 直流电机控制 (11)实验1 Code Composer Studio 入门一、实验目的1.掌握Code Composer Studio3.3的配置步骤过程。
2.了解Code Composer Studio 3.3软件的操作环境和基本功能,了解TMS320C24x 软件开发过程。
3.学习创建工程和管理工程的方法,了解基本的编译和调试功能,学习使用观察窗口,了解图形功能的使用。
二、实验设备PC 兼容机一台,操作系统为Windows XP ,安装Code Composer Studio 3.3软件,TMS320C24x 开发板。
三、实验原理Code Composer Studio 3.3主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP 上运行调试。
用户系统的软件部分可以由CCS 建立的工程文件进行管理,工程一般包含: -源程序文件:C 语言或汇编语言文件(*.C 或*.ASM ) -头文件(*.H )-命令文件(*.CMD ) -库文件(*.LIB, *.OBJ)四、实验步骤用仿真器把电脑和2407开发板进行连接。
实验步骤:设置CCS 仿真环境—启动CCS —新建工程—添加文件—编译工程—下载—调试—查看运行过程和结果。
1.设置Code Composer Studio 3.3仿真环境(硬件仿真)。
操作:双击桌面上图1-1所示图标,在出现的窗口中按图1-2所示的标号顺序删除原有的配置(若DSP 芯片和仿真器相同,可以直接点击 Save &Quit 后进入步骤3)。
接下来按图1-3所示的标号顺序进行设置。
(选择仿真器类型,选择DSP 芯片,添加.gel 文件)图1-1 CCS 设置图标① 鼠标右键单击此项② 鼠标左键单击删除此配置 图1-2 移除设置窗口中的原有设备3.启动Code Composer Studio 3.3操作:双击桌面上CCS 3.3图标启动CCS3.3(也可以在退出CCS 3.3设置环境时启动CCS 3.3)。
DSP技术实验讲义河北工业大学廊坊分校编制2017年2月前言随着信息技术革命的深入和计算机技术的飞速发展,数字信号处理技术已经逐渐发展成为一门关键的技术学科。
DSP(Digital Signal Processor)芯片,即数字信号处理器,是专门为快速实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,其处理速度已高达2000MIPS。
目前,在微电子技术发展的带动下,DSP芯片的发展日新月异,功能日益强大,性价比不断上升,开发环境不断改进。
DSP技术也正以极快的速度被应用通信、自动控制、雷达、军事、航天航空、医疗、家用电器、电子系统、信号处理系统、电力系统等诸多领域,而且新的应用领域还在不断地被发掘。
在当今的数字化时代背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的旗手。
所以业界对DSP工程师的需求每年成倍增长。
为了对学生进行系统、全面的DSP应用技能培养,许多高等院校已经开设了DSP课程及DSP实验。
拥有一套高质量DSP实验设备,将会对学生的学习带来事半功倍的效果。
我公司生产的THRSC-1型DSP综合实验/开发系统实验箱将是您理想的选择。
DSP芯片在自动控制、信号处理、通信技术、网络设备、仪器仪表等领域已经得到了广泛的应用,DSP为数字信号处理提供了高效而可靠的硬件基础。
目前,应用最广泛的DSP芯片是TI(德州仪器)公司的产品,占到全球市场的60%左右,并广泛应用于各个领域。
TI 公司DSP的主流产品包括TMS320C2000系列(代表芯片:TMS320F240、TMS320F2407、TMS320F2812等)、TMS320C5000系列(代表芯片:TMS320LC5402、TMS320vc5509等)、TMS320C6000系列(代表芯片:TMS320C642、TMS320C6416、TMS320C6713等)。
“THRSC-1型双DSP高级实验/开发系统“是采用当前在数字信号处理与控制领域最流行的两种DSP芯片而设计的。
DSP实验指导书-图文数字信号处理E某PIV教学实验系统110实验五离散余弦变换(DCT)算法实验一、实验目的学习DCT算法的实现方法。
二、实验设备计算机,CCS2.0版软件,实验箱,DSP仿真器。
三、实验原理离散余弦变换与离散傅立叶变换紧密相关的,属于正弦类正交变换,由于其优良的去冗余性能及高效快速算法的可实现性,被广泛用于语音及图象的有损和无损压缩。
在开始实验之前,应了解以下基本原理。
1.语音或图象的压缩手段;2.DCT变换在数据压缩中的作用与应用。
四、实验步骤1.阅读本实验所提供的样例子程序;2.运行样例程序,分析结果;3.样例程序实验操作说明A.实验前准备1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;系统上电;2)“A/D转换单元”的拨码开关设置:JP3拨码开关:码位123456备注ON:将“模拟信号源”单元的信号输入到AD7822OFF:OFF:OFF:OFF:OFF:SW2拨码开关:SW21ON2ON3ON4备注码位ONAD7822的采样时钟为250KHZ,且中断给CPU2的中断2数字信号处理E某PIV教学实验系统111S23拨码开关:码位1、2B.实验启动CCS2.0,Project/Open打开“Algorithm”目录中“e某p05_cpu2”子目录下“E某p-DCT-AD.pjt”工程文件;双击“E某p-DCT-AD.pjt”及“Source”可查看各源程序;加载“E某p-DCT-AD.out”;在主程序中,在flag=0处设置断点;单击“Run”运备注OFF,不混频行程序,程序将运行至断点处停止;数字信号处理E某PIV教学实验系统112用View/Graph/Time/Frequency打开两个图形观察窗口;采用双踪观察在启始地址分别为某和y,长度为128的单元中数值的变化,数值类型为32位浮点型,这两个数组分别存放的是经A/D转换的输入信号和对该信号进行DCT变换的结果;再打开一个图形观察窗口,设置观察变量为z;变量z为输入信号的DCT变换及逆DCT变换的结果,长度128,32位浮点型,即输入信号的重构信号;调整各图形观察窗口,观察正变换与逆变换结果;单击“Animate”运行程序,调整各图形观察窗口,动态观察变换结果;改变输入信号的波形、频率、幅值,动态观察变换结果;数字信号处理E某PIV教学实验系统113单击“Halt”暂停程序运行,关闭窗口,实验结束;实验结果:在CCS2.0环境,同步观察输入信号及其DCT变换结果。
前言随着数字电子技术不断发展,人们对数字信号处理的要求也越来越高,传统意义上的微处理器已不能满足现代数字电子技术发展的要求,而数字信号处理器(DSP )在近20多年的发展与普及后,应用领域几乎涵盖了所有的行业:通信、信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。
目前大多数学校都是理论结合实验进行教学,围绕该课程所开的实验课程皆为阶段性理论的验证实验,实验设备也仅是为验证某些算法和理论所使用,实验的项目相对来说比较单一和固定,实验设备的利用效率低下,其实验设备缺少研发和形成一个数字信号处理产品的能力。
目前,我校的通信工程专业开设了《数字信号处理》、《语音信号处理》、《数字图像处理》等信号处理相关课程,但尚缺乏一个动手实践和灵活应用的实验平台。
数字信号处理器由于其优异的运算能力和独特的硬件结构,是一个理想的选择。
结合当前的情况,本实验讲义从培养应用型人才的角度出发,并充分借鉴各大高校的先进试验教学管理技术,开发并设计了相应的DSP 实验项目。
本实验讲义将实验分为三个模块,即基础实验、应用实验、扩展实验,以满足不同能力和需求的学生的需要。
本实验讲义在《DSP 原理及应用实验教学改革课题》支持下编写完成。
不足之处,请广大师生指正。
目录基础实验1 CCS软件的使用 . ........................................... - 5 - 基础实验2:简单应用程序的调试 ..................................... - 17 - 应用实验1: DSP数据存取实验 . ....................................... - 21 - 应用实验2: GPIO控制实验 . .......................................... - 24 - 应用程序3:定时器控制实验 ......................................... - 27 - 应用实验4: DMA读写实验 . ........................................... - 31 - 应用实验5: UART控制实验 . .......................................... - 36 - 应用实验6: A/D采样实验 . ........................................... - 41 - 应用实验7:有限冲击响应滤波器(FIR算法实验 . ........................ - 44 - 应用实验8:快速傅立叶变换(FFT算法实验 ............................ - 49 - 扩展实验1:语音回声实验 ........................................... - 55 - 扩展实验2:语音和声实验 ........................................... - 57 - 扩展实验3:交通灯实验 ............................................. - 60 - 附录A .............................................................. - 64 - 附录B .............................................................. - 73 -基础实验1 CCS 软件的使用1. 实验目的:1. 熟悉CCS 集成开发环境,掌握工程的生成方法;2. 熟悉SEED-DEC5502实验环境;3. 掌握CCS 集成开发环境的调试方法。
DSP原理及应用实验手册目录实验1 Code Composer Studio入门 (1)实验2 定时器实验 (4)实验3、步进电机控制 (9)实验4 直流电机控制 (11)实验1 Code Composer Studio 入门一、实验目的1.掌握Code Composer Studio3.3的配置步骤过程。
2.了解Code Composer Studio 3.3软件的操作环境和基本功能,了解TMS320C24x 软件开发过程。
3.学习创建工程和管理工程的方法,了解基本的编译和调试功能,学习使用观察窗口,了解图形功能的使用。
二、实验设备PC 兼容机一台,操作系统为Windows XP ,安装Code Composer Studio 3.3软件,TMS320C24x 开发板。
三、实验原理Code Composer Studio 3.3主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP 上运行调试。
用户系统的软件部分可以由CCS 建立的工程文件进行管理,工程一般包含: -源程序文件:C 语言或汇编语言文件(*.C 或*.ASM ) -头文件(*.H )-命令文件(*.CMD ) -库文件(*.LIB, *.OBJ)四、实验步骤用仿真器把电脑和2407开发板进行连接。
实验步骤:设置CCS 仿真环境—启动CCS —新建工程—添加文件—编译工程—下载—调试—查看运行过程和结果。
1.设置Code Composer Studio 3.3仿真环境(硬件仿真)。
操作:双击桌面上图1-1所示图标,在出现的窗口中按图1-2所示的标号顺序删除原有的配置(若DSP 芯片和仿真器相同,可以直接点击 Save &Quit 后进入步骤3)。
接下来按图1-3所示的标号顺序进行设置。
(选择仿真器类型,选择DSP 芯片,添加.gel 文件)图1-1 CCS 设置图标① 鼠标右键单击此项② 鼠标左键单击删除此配置 图1-2 移除设置窗口中的原有设备3.启动Code Composer Studio 3.3操作:双击桌面上CCS 3.3图标启动CCS3.3(也可以在退出CCS 3.3设置环境时启动CCS 3.3)。
4.创建工程:⑴ 创建新的工程文件:操作:选择菜单“Project ”的“New…”项。
如图1-4弹出下图,建立XX.pjt 工程文件:(工程路径设置在F:\XX 。
XX 用自己的名字首字母代替,)图1-4 创建新的工程文件工程文件建立在F:\XX 文件夹下。
展开主窗口左侧工程管理窗口中“Projects ”下新建立的“XX.pjt ”,其中各项均为空。
⑵ 在工程文件中添加程序文件:(添加源程序,添加头文件,添加链接文件.CMD,添加库文件在。
) 备注:①实验1的程序用提供的例程②把D:\ICETEK\lf2407A\LF2407A\Lab0301-led 文件夹里面的库文件rts2407.lib ,源程序led.c ,链接命令文件led.cmd① 单击选择配置② 添加③ 保存退出图1-3 系统设置复制到F:\XX文件夹。
操作:选择菜单“Project”的“Add Files to Project…”项;在“Add Files to Project”对话框中选择文件目录为F:\XX,改变文件类型为“C Source Files(*.c;*.ccc)”,选择显示出来的文件“led.c”;重复上述各步骤,添加led.cmd文件到XX 工程中;添加rts2407.lib 文件到工程中。
备注:库文件也可以在.CMD中添加。
或者在菜单project>built options>linker 里面填写rts2407.lib,如图1-5)图1-5 添加库文件⑶编译链接工程:操作:选择菜单“Project”的“Rebuild All”项,或单击工具条中的按钮;注意编译过程中CCS主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。
5、仿真下载操作:点击菜单File>Load Program,选择下载文件XX.out。
然后点击菜单Debug>run 运行工程,观看开发板上的4个LED是否闪烁。
点击菜单Debug-> Halt暂停运行。
6.调试:⑴设置软件调试断点:在项目浏览窗口中,双击led.c激活这个文件,移动光标到if (anj & 0x8)行上,单击鼠标右键选择Toggle Breakpoint或按F9设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。
⑵利用断点调试程序:选择Debug→Run或按F5运行程序,程序会自动停在if (anj & 0x8)行上。
⑶单步调试。
执行下列操作,了解含义。
提示:在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用Debug→Go main命令。
7.使用观察窗口:备注:①Watch Locals:自动显示位于当前执行函数的变量的名称Name,数值Value和类Type。
②Watch 1:显示用户要求的局部、全局变量和表达式的名称Name,数值Value,进制Radix和类型操作:⑴执行View→Watch Window打开观察窗口。
⑵在led.c中,用鼠标双击一个变量(比如ii),再单击鼠标右键,选择“Quick Watch”,或者在led.c中,选中变量ii,单击鼠标右键,选择“Add to Watch Window”,CCS将把变量添加到观察窗口并显示选中的变量值。
⑶把uLED变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。
⑷用单步调试运行程序,观察变量的变化情况。
8.调试程序还可以使用文件输入/输出、图形功能,查看内存,寄存器信息等。
可以参考课件《CCS集成开发环境及其使用》。
实验2 定时器实验一. 实验目的1. 通过实验熟悉LF2407A的定时器;2. 掌握LF2407A定时器的控制方法;3. 掌握LF2407A的中断结构和对中断的处理流程;4. 学会运用中断程序控制程序流程。
5 .学会I/O的使用二. 实验设备计算机,ICETEK-LF2407-EDU实验箱(或ICETEK仿真器+ICETEK-LF2407-A系统板+相关连线及电源)。
三. 实验原理1、选择LF2407A一个定时器并对相应的控制寄存器设置。
2. 熟悉TMS320LF240x中断结构,合理设置IFR,IMR中断寄存器。
利用CPU支持的6个可屏蔽中断,采用集中化的中断扩展设计来满足大量的外设中断需求。
LF240x内核提供一个不可屏蔽的中断NMI和6个按优先级获得服务的可屏蔽中断INT1至INT6。
而这6个中断级的每一个都可被很多外设中断请求共享。
通过中断请求系统中的一个两级中断来扩展系统可响应的中断个数。
为了让CPU能区分引起中断的事件,在每个外设中断请求有效时都会产生一个唯一的外设中断向量,保存于外设中断向量寄存器(PIVR)中。
实际上有两个中断向量表,CPU的向量表用于得到一级通用中断服务子程序(GISR);外设向量表指定外设中断子程序(SISR)。
GISR程序根据PIVR中的外设中断向量取值决定执行哪个SISR。
3. 中断响应过程外设事件要引起CPU中断,必须保证:外设事件的中断使能为被使能,CPU内核级的6个可屏蔽中断中,相应中断也被使能。
在外设事件发生时,首先将其在外设中断控制器中的标志位置1,从而引起CPU内核的INT1—INT6中的一个产生中断。
中断服务过程中,其他可屏蔽中断将会自动被屏蔽,直到中断返回。
在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器1会引起INT2中断),在相应GISR子程序中,取出PIVR的值,根据其值再转向相应的SISR;SISR程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。
4. 中断程序设计用C语言设计中断服务程序需要用intterupt关键字修饰定义的中断服务函数,例如:void interrupt gptime1(void);中断服务函数应尽量短小,在中断服务函数中要注意对中断标志寄存器、中断屏蔽寄存器的设置,避免中断嵌套或中断丢失现象的发生。
四. 实验程序采用中断方式以实现指示灯的定时闪烁。
由于DSP工作在40MHz主频,对于定时器的周期寄存器为计数40000次产生1个中断,,正好是1ms中断一次,所以在中断服务程序中计算中断500次时改变指示灯状态,实现指示灯亮0.5秒,再灭0.5秒,即每秒闪烁1次。
实验程序的工程中包含了两种源代码,主程序采用C语言编制利于控制,中断向量表在vector.asm汇编语言文件中,利于直观地控制存储区分配。
在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。
实验程序的C语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制DSP状态的方法,同样的方法也能提高C语言部分程序的计算效率。
实验程序代码:1、DSP初始化#include "regs240x.h"void InitSysCtrl( ){asm (" setc INTM ");//关中断asm (" setc SXM ");//符号扩展asm (" CLRC OVM ");//正常溢出asm (" CLRC CNF ");//DARAM处于数据存储器SCSR1=0xe04;//EVA时钟使能,0.5倍PLLWDCR=0x0ef;//关闭看门狗IMR=0x0002;//INT2中断使能IFR=0xFFFF;//cpu中断标识复位WSGR=0X00;//访问外设备等待时间MCRA=0X0000;//IOPB I/O管脚PBDATDIR=0xff00;//IOPB输出信号由IOPB0-IOPB3输出。
}2、定时器1初始化#include "regs240x.h"int timerlint(){EVAIMRA=EVAIMRA|0x0081;//开定时器1周期中断EVAIFRA= EVAIFRA&0x0081;//定时器1周期中断复位GPTCONA=0x0001;//比较器输出禁止T1CON=0x1746;//128分之一定标,连续增计数模式T1PR=0x9899;//1S的值T1CNT =0X00;//计数器清零}3、中断函数#include "regs240x.h"interrupt void gptimer1()//INT2中断入口首地址{ int k,h;k=PIVR;//外设中断向量值h=EVAIFRA&0x0080;//if (h&0x0080)//定时器1周期中断检测{switch (k){//定时器1周期中断向量case 0x0027 : if(PBDATDIR>=0xff0f) PBDATDIR=0xff00;//else PBDATDIR=PBDATDIR+0x1;//LED循环显示1到15 break;}//EVAIFRA= EVAIFRA&0x0080;//定时器1周期中断标识复位asm (" CLRC INTM ");//开总中断return;//返回中断}else{ asm (" CLRC INTM ");return;}}4、主函数# define b (unsigned int *) 0x709A#include "regs240x.h"void InitSysCtrl(); //初始化int timerlint(); //定时器main(){InitSysCtrl();timerlint();asm (" CLRC INTM ");while (1){}}5、中断向量表(以vectors.asm保存。