CPU定时器工作原理分析
可以由图看出有几个寄存器:
- 32位的定时器周期寄存器
PRDH:PRD
- 32位的计数器寄存器
TIMH:TIM
- 16位的定时器分频器寄存器
TDDRH:TDDR
- 16位预定标计数器
PSCH:PSC
解释:
XH:X
形式表示寄存器的方式- 因为X281x DSP的寄存器都是16位的,而CPU定时器是32位的,所以需要将2个16位的寄存器XH和X来表示32位的寄存器(XH表示高16位,X表示低16位)
- 通过图我们可以类比的看出它其实有点想两层
for
循环,即如下所示int i,j; for(i=0; i<100; i++) for(j=0; j<100; j++) {...}
下图或许更能看出这种关系,上面框框为外循环,下面框框为内循环
在上面那个框中,在CPU定时器工作前,先根据需要计算好CPU定时器周期寄存器的值,然后给PRDH:PRD
赋值,相当于for循环中的i=100
。开始工作时将PRDH:PRD
的值装载入TIMH:TIM
,然后没来一个脉冲,减一,然后判断是否为0,则一直递减,当为0时输出一个中断信号。所以一个CPU定时器周期所经历的时间为:(PRDH:PRD+1)*TIMCLK
而计数器存储器TIMH:TIM
多久减1是由下面框中PSCH:PSC
多久为0决定。同理可以得出TIMCLK = (TDDRH:TDDR+1)*SYSCLKOUT
综上,假设系统时钟SYSCLKOUT
的值为X
(单位为MHz),那么CPU定时器一个周期所计量的时间为T = (PRDH:PRD+1)*(TDDRH:TDDR+1)/ (X*10^6)
(单位为s)