<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM7S3C44b0看門狗作延時(shí)函數(shù)

          ARM7S3C44b0看門狗作延時(shí)函數(shù)

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          static int delayLoopCount=400;

          void Delay(int time)
          {
          int i,adjust=0;

          本文引用地址:http://www.ex-cimer.com/article/201611/322312.htm

          if(time==0)//校準(zhǔn)
          {
          time=200;
          adjust=1;
          delayLoopCount=400;
          rWTCON=((MCLK/1000000-1)<<8)|(2<<3);//MCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
          rWTDAT=0xffff;//for first update
          rWTCNT=0xffff;//resolution=64us@any MCLK
          rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
          }

          for(;time>0;time--)

          for(i=0;i

          if(adjust==1)
          {
          rWTCON=((MCLK/1000000-1)<<8)|(2<<3);//Watch-dog timer stop
          i=0xffff-rWTCNT;//1count->64us, 200*400 cycle runtime = 64*i us
          delayLoopCount=8000000/(i*64);//200*400:64*i=1*x:100 -> x=80000*100/(64*i)
          }
          }

          初看這個(gè)函數(shù)時(shí)有問(wèn)題的,花了很長(zhǎng)時(shí)間才搞懂,很經(jīng)典的一段程序。

          (1)這個(gè)函數(shù)在使用前必須先運(yùn)行一下Delay(0),這個(gè)是關(guān)鍵。它主要完成的是delayLoopCount變量的計(jì)算,即100uS的校準(zhǔn)。

          (2)假設(shè)MCLK=66M,

          rWTCON=((MCLK/1000000-1)<<8)|(2<<3);經(jīng)過(guò)預(yù)分頻,輸出頻率1M,即1us計(jì)時(shí);時(shí)鐘除數(shù)因子=1/64,即看門狗定時(shí)器對(duì)1M的64分頻計(jì)數(shù), 計(jì)數(shù)一次是64us,每64usWTCON減1。

          (3)for(i=0;i

          (4)用此函數(shù)前,先用Delay(0)校準(zhǔn),一個(gè)是兩個(gè)for循環(huán)延時(shí)。for循環(huán)延時(shí)同時(shí),定時(shí)器計(jì)數(shù)。

          200*400個(gè)循環(huán)對(duì)應(yīng)------看門狗計(jì)數(shù)次數(shù)i(i=0xffff-rWTCNT,計(jì)數(shù)一次是64us),延時(shí)64*i個(gè)us;(200*400)/64i是每個(gè)us循環(huán)的個(gè)數(shù), 100us對(duì)應(yīng)的循環(huán)個(gè)數(shù),(200*400)*100/64i;

          delayLoopCount=8000000/(i*64);就是100us的for循環(huán)個(gè)數(shù)



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();