定时器实验完整版.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深 圳 大 学 实 验 报 告 课程名称: DSP系统设计 实验项目名称: 定时器实验 学院: 信息工程 专业: 通信 指导教师: 严新民 报告人:丁诗伦 学号:2010130164 班级: 10通2 教务处制 实验目的 了解定时器原理; 学习定时器的使用以及通过定时器引发中断的方法 实验内容 使用系统提供的硬件定时器来控制LED灯的闪烁频率。 预备知识 VisualDSP++集成开发环境的使用,程序的编写和调试; ADSP-BF533中断实现的原理。 ADSP-BF533定时器的使用 实验设备及工具 硬件:EBF-LAB533实验平台、仿真器、PC机。 软件:操作系统Win2000或Win XP、VisualDSP++集成开发环境。 实验原理 实验框图 图 定时器实验示意图 ADSP-BF533定时器介绍 ADSP-BF533有5个可编程定时器,包括3个通用定时器、1个内核定时器和1个看门狗定时器。定时器能够向处理器中断管理单元发出中断,为同步、处理器时钟、或外部信号的计数值提供周期性事件。除3个通用可编程定时器外,还提供了内核定时器和看门狗定时器。内核定时器由内部处理器时钟(CCLK)驱动,一般用作系统标记时钟,用以产生操作系统的周期性中断。看门狗定时器用来实现软件看门狗功能。 3个通用可编程定时器。每个通用定时器连有外部引脚,可以用作脉冲宽度调制器(PWM)或定时器输出,也可以用作定时器的输入锁定定时器或测量外部事件的脉冲宽度。定时器单元可以与UART联合使用,进行串行通道数据流的脉冲宽度的测量,提供自动的波特率检测功能。 通用定时器包括5个寄存器,而且可以设置为以下任何一种工作模式: 脉宽调制模式; 脉宽计数以及捕获模式; 外部时间计数器模式 3个通用定时器分别有一个专用的双向管脚:TMRx。该管脚在PWM_OUT模式下作为输出管脚,而在WDTH_CAP和EXT_CLK模式下为输入管脚。当使用内部时钟时,时钟源是BLACKFIN的系统时钟SCLK。 每个通用定时器都使用以下寄存器:定时状态寄存器、定时器设置寄存器、定时器计数寄存器、定时器周期寄存器以及定时器宽度寄存器。 定时器相关的寄存器见下图。 图 定时器使能寄存器定义 在使用通用定时器时,要通过对TIMER_ENABLE寄存器的设置来选择使用哪个定时器。 状态寄存器表明定时器是否发生了溢出,是否定时到期。 图 定时状态寄存器定义 图 定时配置寄存器定义 配置寄存器设定了定时器的工作模式,是否产生中断等。 计数寄存器描述了定时器的当期值,可通过轮巡次寄存器的方式进行精确定时。 图 定时器计数寄存器定义 图 定时器周期寄存器定义 图 定时器宽度寄存器定义 周期寄存器和宽度寄存器设置了定时器的周期和占空比,下图表示的周期为4个系统时钟周期,宽度为1个系统时钟周期的定时器的输出。 图 周期寄存器和宽度寄存器使用 实验设计 流程分析 为了实现控制LED的闪烁的频率,可以通过控制定时器的周期,来调整定时器中断的频率,从而达到改变LED闪烁频率的目的。参考程序的流程如下: 图 定时器实验流程图 关键代码分析 定时器初始化 void Init_Timer0(void) void Init_Timer0(void) { unsigned int nPeriod; *pTIMER0_CONFIG=0x0019; //配置Timer0成PWM模式,不对外输出,每个周期完成产生一次中断 nPeriod=CaculatePeriod(0.3); *pTIMER0_PERIOD = nPeriod; *pTIMER0_WIDTH = nPeriod1; } 定时器中断处理 EX_INTERRUPT_HANDLER(Timer0_ISR) EX_INTERRUPT_HANDLER(Timer0_ISR) { *pTIMER_STATUS = (10);//清定时器中断 led=1; //调整LED状态 if(led=(18)) { led = (10); } SetLED(led); } 实验步骤 搭建实验环境。 将仿真器的一端与PC相连,另一端与EBF-LAB533实验平台的JTAG口连接,然后按先后顺序分别给实验平台和仿真器上电。 打开VisualDSP++集成开发环境,导入工程。 打开File菜单,选择Open-Project ...,导入Timer目录下的“Timer.dpj”工程。 编译(F7)并加载工程; 打开Project菜单,选择Build Project。 运行程序(F5); 观察LED灯的状态,可以看见LED6、LED7、LED8、LED9、LED5、LED4、L

文档评论(0)

134****4355 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档