CpuTimer0Regs.PRD.all = 0x00005B8D这句话代表什么?
CpuTimer0Regs.PRD.all= 0x00005B8D,这个是设置了定时时间吗,那有定时了多久呢? 定时器中有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)
看看计算方法与你的时钟周期等有关系 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?? 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了吗? 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]