实验二:定时器实验

实验二:定时器实验

ID:42801770

大小:319.63 KB

页数:4页

时间:2019-09-23

实验二:定时器实验_第1页
实验二:定时器实验_第2页
实验二:定时器实验_第3页
实验二:定时器实验_第4页
资源描述:

《实验二:定时器实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验二定时器实验一、实验目的1、熟悉C54X定时器的基本结构;2、学握定时器的控制方法;3、学握使用定时器中断方式控制程序的流程。二、实验设备计算机、CCS2.0版软件,DSP仿真器、实验箱。三、实验系统相关资源1、通过对I/O口800111发送数据来控制LED灯(LED6-LED13)2、系统时钟频率设定为20MHzoSTM#0xF7FF,CLKMD;setC5402DSPclockto20MHz3、定时器中断周期二'IS*(TDDR+l)*(PRD+1)其屮'IH是时钟周期,在木系统屮,TclE/20MHz二50ns,TDDR和PRD分别表示定时器初始化时TCR相应位(0

2、-3)和PDR的值。4、定时器的初始化(1)将TCR中的TSS位置1,停止定时器。(2)加载PRD。(3)重新加载TCR以初始化TDDRo(4)重新启动定时器。TSS位为0,TRB位为1,以重载定时器周期值,使能定时器。5、定时器中断的设置(1)初始化PMST中的中断向量指针,在本实验中设IPTR=001111111B,即中断向量表为3F80H起始的128个存储单元。(2)intt中断号为19,在中断向量表中对应的位置设置一条跳转指令,转向定时器中断服务程序。6、中断服务程序的设计包括保护现场、执行小断服务程序和恢复现场三个步骤,在本实验中,使用C函数编写定吋器中断犷程序,保

3、护现场和恢复现场有C函数白动实现。四、实验步骤1、用仿真机将计算机与数字信号处理实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。2、打开工程文件Exp2.pjt,编译、链接生成町执行代码,装载到目标板,运行程序并记录实验结果。IjjEL-DSP-EXPI数字■输入■出单元S/9g§aM【号扩展单元一一.一三一0一一一«三三亠V3、查看工程源程序,分析C语言各函数以及汇编语言子程序之间的调用关系。4、査看initial,asm的源代码,求出定时器初始化时PDR和TDDR的取值,计算定时器屮断周期。.mmregs.def_initialinitial:NOPL

4、D#0,DP;resetdatapointerSTM#0,CLKMD;softwaresettingofDSPclockSTM#0,CLKMD;(todividermodebeforesetting)TstStatul:LDMCLKMD,AAND#01b,ApollSTATUSbitBCTstStatul,ANEQSTM#0xF7FF,CLKMDsetC5402DSPclockto20MHzSTM0x3FA0,PMSTvectorsat3F80hssbx1,11setSTLINTM=1,stopal1interrruptstmOffffh,ifrclearal1interru

5、ptindicatestmOOh,imrsetimr=0,stopal1interrruptstm410h,terstoptimerstm4elfh,prdsetprd=4elfhstm420h,terstarttimerstm08h,imrallowtimerinterruptrsbx1,11setSTI.INTM=0,startallinterrruptRet答:由stm410h,ter;stoptimer和stm420h,ter;starttimer这两行代码可知PDR的取值:TDDR=0由代码stm4elfh,prd:setprd=4elfh知:PDR=19999所以

6、,定时器中断周期为:^TdK+di丿「二何IX、二w5、查看exP2.c的源代码,分析timer子程序,求出LED灯状态改变的理论时间间隔,并与实验执行结果相比较。答:理论时间间隔:2ms*1000=2s实际时间间隔:约2s6、修改initial,asm的initial子程序,使得LED灯状态改变的时间间隔为原来的2倍。(要求:不改变PRD的值)答:把stm420h,ter;starttimer改为:stm421h,ter;starttimer五、思考题1、分析该工程各函数和子程序之间的调用关系。提示:main、timerinexp2.c;initialininitial.a

7、sm;porta,portbinport,asm分析timer在何吋被调用。答:(1)程序开始,进入main,接着调用initial;(2)进入initia1・asm;(3)返回main函数,进Awhile死循环等待中断发出;(4)计数溢出引发中断,程序转到main中的interruptvoidtimer(),当累加中断次数满1000时,判断flag是否为0,若是,则执行porta;若flag不为0,则执行portbo当执行initail中的ssbx1,11;setSTI.INTM=1,stopalli

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。