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

[复制链接]
2649|2
 楼主| lgl8510 发表于 2008-9-25 17:24 | 显示全部楼层 |阅读模式
下面是我在UART试验里粘过来的一段延时子程序,不理解,特别是第二个个if语句里东西,那两个算式不明白从何而来,而且延时为什么要用看门狗定时器有关呢?<br />请高手指点一下!<br />static&nbsp;int&nbsp;delayLoopCount=400;<br /><br />void&nbsp;Delay(int&nbsp;time)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,adjust=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(time==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time=200;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adjust=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delayLoopCount=400;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1M/64,Watch-dog&nbsp;nRESET&nbsp;interrupt&nbsp;disable<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTDAT=0xffff;&nbsp;&nbsp;//自动重载到rWTCNT中<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCNT=0xffff;&nbsp;&nbsp;//第一次rWTCON中的值不能重载到此处,所以第一次要赋初值,默认值为0x8000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3)|(1&lt&lt5);//&nbsp;1M/64,Watch-dog&nbsp;enable,nRESET&nbsp;interrupt&nbsp;disable<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;time&gt0;time--)<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltdelayLoopCount;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(adjust==1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0xffff-rWTCNT;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;1count/16us?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delayLoopCount=8000000/(i*64);&nbsp;&nbsp;&nbsp;&nbsp;//400*100/(i*64/200)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}
hotyong 发表于 2008-9-25 19:29 | 显示全部楼层

re

这个看门狗是用来调整delayLoopCount的值的,<br />delayLoopCount不同for(i=0;i&ltdelayLoopCount;i++);也就不同,<br />当系统时钟较高时,delayLoopCount就会被调整得比较大,相反,系统时钟较低时,delayLoopCount就较小,经过调整可以使得在不同的系统时钟下的一个Delay(n)的时间是相同的.<br />你要注意在用Delay的时候都是两个一起用的,先Delay(0);后面再接一个Delay(...),<br /><br /><br />你用的应该是三星的ARM吧
wangben85 发表于 2008-9-26 22:02 | 显示全部楼层

应该是44b0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部