sunsundsp 发表于 2013-7-26 09:23

CpuTimer0Regs.PRD.all = 0x00005B8D这句话代表什么?

CpuTimer0Regs.PRD.all= 0x00005B8D,这个是设置了定时时间吗,那有定时了多久呢?

zhangmangui 发表于 2013-7-26 10:03

定时器中有0、1、2,每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位),控制寄存器(TCR,16位),保留(16位),预定标寄存器(TPR:TPRH,32位)。

   TIMH:TIM,保存当前计数器的值;

   PRDH:PRD,保存32位周期值;

   TCR,控制功能,主要控制定时器的种种状态;

   TPRH:TPR,详细的说:

                   TPR   PSC(8位):TDDR(8位)

                   TPRH PSCH(8位):TDDRH(8位)

                   PSCH:PSC保存当前定时器预定标值,每个定时器源时钟周期PSCH:PSC递减1,递减到0时,即是一个定时器周期,

         将TDDRH:TDDR中的值重新装载,并且定时器计数器减1;

                   TDDRH:TDDR,CPU定时器分频寄存器,每隔(TDDRH:TDDR+1)个定时器源时钟周期,定时器计数器减1;

                  注:当TRB被软件置1时,PSCH:PSC也会重新装载;所以一个定时器计数周期完成,周期=定时器源时钟周期X(TDDRH:TDDR+1)X(PRDH:PRD+1)

看看计算方法与你的时钟周期等有关系

sunsundsp 发表于 2013-7-26 11:02

zhangmangui 发表于 2013-7-26 10:03 static/image/common/back.gif
定时器中有0、1、2,每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位) ...

问题一:时钟源周期是不是就是1/SYSCLKOUT?
问题二:TDDRH:TDDR的值又该在哪看呢??
问题三:注意上面(TDDRH:TDDR)=0x0080 的含义是:一个定时器时钟周期由129 个时钟源周期(1/SYSCLKOUT)组成。定时器TIM 间隔129 个时钟源周期即一个定时器时钟周期减1,减到0 时再装入周期值PRD。若设置(TDDRH:TDDR)=0x0000,即一个定时器时钟周期等于钟源周期(1/SYSCLKOUT),并且设置PRD=40×1(不可太小),示波器(量程:2 V,250 ns)一个正脉冲的周期为250 ns 左右,这与理论值相符(40×6.33=253 ns);再设置(TDDRH:TDDR)=0x0001,PRD 不变,示波器一个正脉冲的周期为500 ns 左右。
这是我在网上看到的资料,但我觉得那个理论值计算那里有点问题,1/150不是应该是6.67,怎么会有6.33??

sunsundsp 发表于 2013-7-26 11:13

zhangmangui 发表于 2013-7-26 10:03 static/image/common/back.gif
定时器中有0、1、2,每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位) ...

Timer->RegsAddr->TPR.all = 0;
    Timer->RegsAddr->TPRH.all = 0;
这两句语句的意思是将TPR:TPRH设为0了吗?

zhangmangui 发表于 2013-7-26 12:13

sunsundsp 发表于 2013-7-26 11:13 static/image/common/back.gif
Timer->RegsAddr->TPR.all = 0;
    Timer->RegsAddr->TPRH.all = 0;
这两句语句的意思是将TPR:TPRH设为0 ...

( ⊙ o ⊙ )是的这两句是将两个寄存器清零
关于计算定时长度   你应该在了解一下DSP里面的时钟
首先是倍频   然后是分频   每个模块都有自己的时钟频率   都可以进行配置
模块还有自己的时钟限制   具体计算还望你慢慢研究
页: [1]
查看完整版本: CpuTimer0Regs.PRD.all = 0x00005B8D这句话代表什么?