打印

请教:看门狗与延时程序的问题(附程序)

[复制链接]
1754|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lgl8510|  楼主 | 2008-9-25 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是我在UART试验里粘过来的一段延时子程序,不理解,特别是第二个个if语句里东西,那两个算式不明白从何而来,而且延时为什么要用看门狗定时器有关呢?
请高手指点一下!
static int delayLoopCount=400;

void Delay(int time)
{
    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中
      rWTCNT=0xffff;  //第一次rWTCON中的值不能重载到此处,所以第一次要赋初值,默认值为0x8000     
      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)   
    }
}

相关帖子

沙发
hotyong| | 2008-9-25 19:29 | 只看该作者

re

这个看门狗是用来调整delayLoopCount的值的,
delayLoopCount不同for(i=0;i<delayLoopCount;i++);也就不同,
当系统时钟较高时,delayLoopCount就会被调整得比较大,相反,系统时钟较低时,delayLoopCount就较小,经过调整可以使得在不同的系统时钟下的一个Delay(n)的时间是相同的.
你要注意在用Delay的时候都是两个一起用的,先Delay(0);后面再接一个Delay(...),


你用的应该是三星的ARM吧

使用特权

评论回复
板凳
wangben85| | 2008-9-26 22:02 | 只看该作者

应该是44b0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝