likyo请进(定时器请教) - likyo的专栏- DSP交流网DSP学习{dy}论坛DSP ...
likyo 你好,书上关于DSP2812定时器CPUTIMO,我感觉说的很模糊,你能详细点给我说明下啊,尤其是CpuTimer0Regs.PRD.,CpuTimer0Regs.TPR.all ,CpuTimer0Regs.TPR.all 这几个寄存器能详细说明点吗,针对以下指令你能告诉我定时器的定时时间与CpuTimer0Regs.PRD.all = 0x249;CpuTimer0Regs.TPR.all = 0xFFFF;CpuTimer0Regs.TPR.all  = 0;有说明关系吗?他们之间应该怎么换算

指令:
CpuTimer0Regs.PRD.all = 0x249;//周期寄存器

        CpuTimer0Regs.TPR.all = 0xFFFF;//预定标寄存器
        CpuTimer0Regs.TPR.all  = 0;
楼主的问题解说起来确实不容易,呵呵,首先,我想楼主的程序是不是有问题的。
CpuTimer0Regs.TPR.all = 0xFFFF;//预定标寄存器
CpuTimer0Regs.TPR.all  = 0;
这两句话其实是给一样的寄存器来赋值的,因为CPU定时器0的预定标计数器的寄存器是由两个构成的,一个是TPRH,一个是TPR,所以上述的两个语句中是否有一个是TPRH。好,抛开这个问题不谈,我们来简单谈一下CPU定时器0各个寄存器之间的关系。

CPU定时器有寄存器:计数器寄存器TIMH:TIM,周期寄存器PRDH:PRD,控制寄存器TCR,预定标计数器TPRH:TPR。这里,AH:A的形式表示是一个32位的寄存器是由两个16位的寄存器构成的,AH是高16位,A是低16位。

CPU定时器计数方式是复位时,计数器寄存器TIMH:TIM内装载周期寄存器PRDH:PRD的值,经历一个计数器时钟时,TIMH:TIM内的值就减1,一直减到0,这时产生定时器周期中断事件,并重新装载PRDH:PRD的值,开始计数。这里就讲到了,计数器寄存器在一个计数器时钟时减1,那么计数器时钟是多少呢?或者说是每隔多少时间,定时器的计数器才会减1呢?这个就由预定标寄存器TPRH:TPR来决定了。

先来了解一下预定标寄存器的结构了,TPRH和TPR这两个寄存器都由两部分构成,高8位为定时器预定标计数器PSC,低8位是定时器分频TDDR。也就是说,TPRH是由PSCH和TDDRH构成,而TPR是由PSC和TDDR构成的。这个工作的原理其实和前面的定时器计数类似的,复位时,PSCH:PSC重新装载TDDRH:TDDR的值,然后经历一个CPU时钟时,PSCH:PSC就减1,PSCH:PSC的值减为0时,重新装载TDDRH:TDDR的值,并且产生一个计数器时钟,TIMH:TIM的值减1。

上面的解释不知楼主能明白没?
郑重声明:资讯 【likyo请进(定时器请教) - likyo的专栏- DSP交流网DSP学习{dy}论坛DSP ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——