mini 2440 test 的Delay函数分析
void Delay(int time)
{
}
1)
预分频值和分割值分别由TCFG0,TCFG1来确定。
rTCFG0 &= ~(0xff<<8);
rTCFG0 |= 3<<8;
rTCFG1 &= ~(0xf<<12);
rTCFG1 |= 0<<12;
预分频为3,分割值为2,又已知PCLK=50Mhz
因此可以计算出计数器输入时钟频率6.25Mhz。
2)初始值的设定了是由TCMPB3和TCNTB3来完成了
TCMPB3一定要小于TCNTB3。
TCMPB3在定时的过程中不变,然后TCNTB3开始减计数,直到与TCMPB3相等时触发中断,通过设定就可以重新转载TCNTB3。
我们可以比较一下rTCNTB3与计数器的输入时钟,可以发现rTCNTB3的频率是输入时钟的1000分之一,(因为包括0)。因此我们可以这样等价的认为rTCNTB3 = 1000CCLK,
然后我们看上面的定时的时序,rTCNTB3开始减计数,直到减到500与rTCMPB3相等,触发中断,然后rTCNTB3再减一以后继续装载。
2)
rTCON[16,17,18,19]控制Timer3
rTCON &= ~(0xf<<16);
3)