DSP实验报告定时器2.docVIP

  • 418
  • 0
  • 约5千字
  • 约 6页
  • 2018-02-06 发布于河南
  • 举报
DSP实验报告定时器2

实验二DSP系统定时器的使用 一、实验目的: 1、掌握5402 DSP片上定时器的初始化设置及应用; 2、掌握DSP系统中实现定时的原理及方法; 3、了解5402 DSP中断寄存器IMR、IFR的结构和使用; 4、掌握5402 DSP系统中断的初始化设置过程和方法; 5、掌握在C语言中嵌入汇编语句实现数字I/O的方法。 二、实验原理: 1、定时器及其初始化 在5402内部包括两个完全相同的定时器:定时器0和定时器1。每个定时器分别包括3个寄存器:定时器周期寄存器PRD、定时器寄存器TIM、定时器控制寄存器TCR,其中TCR寄存器中包括定时器分频系数TDDR、定时器预分频计数器PSC两个功能寄存器。通过PRD和TDDR可以设置定时器的初始值,TIM(16bits)和PSC(4bits)是用于定时的减法计数器。CLKOUT是定时器的输入时钟,最大频率为100Mhz。定时器相当于20bit的减法计数器。定时器的结构如图1所示。 图1 定时器的组成框图 定时器的定时周期为: CLKOUT×(TDDR+1)×(PRD+1) 其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。PSC在CLKOUT作用下,作减1计数。当PSC减到0时,产生一个借位信号,令TIM作减l计数。TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT。 例如:欲设置定时器0的定时周期为1ms,当DSP工作频率为100Mhz时,通过上式计算可得出:TDDR=15,PRD=6520。 2、定时器的使用 下面是一段定时器应用程序,每检测到一次中断,ms+1,利用查询方式每计500个数就令XF引脚的电平翻转一次,在XF引脚输出一矩形波信号,因定时器1ms中断一次,故500ms就使LED翻转一次,这样LED指示灯就不停地闪烁。 定时器中断服务程序的编程方法 interrupt void timer0()中断函数 { ms++; } while(1)循环函数 { while(ms500); // 长时间定时500ms ms=0; asm( RSBX XF ); //使用内嵌的汇编指令asm( ) 将XF引脚清零 while(ms500); // 长时间定时500ms ms=0; asm( SSBX XF ); //使用内嵌的汇编指令asm( ) 将XF引脚置位 } 三、实验内容: 1、验证程序观察LED闪烁状态; 2、编写定时程序,从5分钟倒计时,计到0又从5分钟开始循环,用交通灯LED模拟数码管显示计数效果。 1s程序代码如下: #include cpu_reg.h int j; int ms; ioport unsigned portf000; int motor; void main() { asm( STM #0000h,CLKMD ); while(*CLKMD 0x01 ); asm( STM #97FFh,CLKMD ); //设置CPU运行频率=100M /* 40C7h:5*clkin =100M 30c7h:4*clkin =80M 20c7h:3*clkin =60M 10C7h:2*clkin =40M */ asm( stm #4240h, SWWSR ); //2 wait except for on-chip program 1 asm( stm #00a0h, PMST ); //MP/MC = 0, IPTR = 001,ovly=0 asm( stm #0802h, BSCR ); asm( STM #0h,IMR );//中断屏蔽寄存器IMR asm( STM #0010h,TCR ); //关定时器,定时控制寄存器TCR(地址0026H)。 asm( STM #0186ah,PRD );//1ms,定时周期寄存器PRD(地址0025H)。 asm( STM #0C2fh,TCR ); //TCR=最后四位 asm( STM #0008h,IFR ); asm( ORM #0008h,*(IMR) )

文档评论(0)

1亿VIP精品文档

相关文档