CPU定时器工作原理分析

可以由图看出有几个寄存器:

  • 32位的定时器周期寄存器 PRDH:PRD
  • 32位的计数器寄存器TIMH:TIM
  • 16位的定时器分频器寄存器TDDRH:TDDR
  • 16位预定标计数器PSCH:PSC

解释:

  1. XH:X形式表示寄存器的方式
  2. 因为X281x DSP的寄存器都是16位的,而CPU定时器是32位的,所以需要将2个16位的寄存器XH和X来表示32位的寄存器(XH表示高16位,X表示低16位)
  3. 通过图我们可以类比的看出它其实有点想两层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)