我所买的ARM开发板中附带了一段测试程序,其中有一段一直没弄明白,按注解的意思应该是一段延时校准程序,但我不明白其中的原理,哪位高人帮我一下,谢谢。代码如下: void Delay(int time) // time=0: adjust the Delay function by WatchDog timer. // time>0: the number of loop time 100us resolution. { int i,adjust=0; if(time==0) { time=200; adjust=1; delayLoopCount=400; rWTCON=((MCLK/1000000-1)<<8)|(2<<3); // 1M/64,Watch-dog,nRESET,interrupt disable rWTDAT=0xffff; rWTCNT=0xffff; rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); // 1M/64,Watch-dog enable,nRESET,interrupt disable } for(;time>0;time--) for(i=0;i<delayLoopCount;i++);
//这下面的部分尤其不明白是干什么用的??? if(adjust==1) { rWTCON=((MCLK/1000000-1)<<8)|(2<<3); i=0xffff-rWTCNT; // 1count/16us????????? delayLoopCount=8000000/(i*64); //400*100/(i*64/200) } } 这个程序主要是最后一部分我不知道是什么意思,为什么要这样做?如何实现校准的?谢谢 |