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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430F5529 (二)看門狗的設(shè)置

          MSP430F5529 (二)看門狗的設(shè)置

          作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
          看門狗定時(shí)器(Watchdog Timer(WDT_A))實(shí)際上是一個(gè)特殊的定時(shí)器,即可以用來(lái)作為看門狗使用,也可以用作定時(shí)器。
          所謂的看門狗功能,是指可以監(jiān)控程序是否由于某些干擾或者錯(cuò)誤而跑飛。其原理就是發(fā)生故障的時(shí)間滿足規(guī)定的定時(shí)時(shí)間后,產(chǎn)生一個(gè)非屏蔽中斷,使系統(tǒng)復(fù)位。這樣當(dāng)在調(diào)試程序或預(yù)計(jì)程序在某個(gè)地方可能瞬時(shí)發(fā)生錯(cuò)誤時(shí)(如外部電路干擾),選用設(shè)置看門狗定時(shí)中斷可以避免程序跑飛。
          當(dāng)然,它也可以用作一般的定時(shí)功能。
          不過實(shí)際上,由于看門狗定時(shí)器(作看門狗使用時(shí))需要很嚴(yán)密的設(shè)置(否則程序容易經(jīng)常重啟),所以很多人都不會(huì)使用這項(xiàng)功能。所以,程序一開始就加上一句話:WDTCTL=WDTPW+WDTHOLD來(lái)關(guān)閉看門狗。

          2.1 WDT_A的簡(jiǎn)介
          特點(diǎn):
          ①有8種可選定時(shí)時(shí)間;
          ②看門狗模式;
          ③定時(shí)器模式;
          ④看門狗控制寄存器存在密碼保護(hù);
          ⑤時(shí)鐘源可選,且具有時(shí)鐘源意外保護(hù);
          ⑥可以被終止來(lái)節(jié)省能源;
          ⑦無(wú)論是用作看門狗還是定時(shí)器,其間隔時(shí)間都無(wú)法隨意設(shè)定,只能從8種設(shè)定中選擇,當(dāng)然可以通過更改時(shí)鐘頻率來(lái)間接更改時(shí)間;
          注意默認(rèn)設(shè)置:程序啟動(dòng),看門狗即啟動(dòng);監(jiān)控周期為32ms/32.768KHZ(也就是說當(dāng)看門狗的時(shí)鐘頻率為32.768KHZ時(shí),每過32ms,如果不軟件清空,程序就會(huì)重啟);所用的時(shí)鐘源為SMCLK(實(shí)際頻率不是32.768KHZ,后面會(huì)提到)。
          2.2 WDT_A的寄存器及操作
          注意:所有的寄存器都存字操作和字節(jié)操作模式。例如對(duì)WDTCTL寄存器直接賦值是字操作,你也可以通過WDTCTL_L(低字節(jié)寄存器)、WDTCTL_H來(lái)進(jìn)行字節(jié)操作賦值。
          該類寄存器只能賦值不要進(jìn)行“|=、&=”等邏輯操作。
          2.2.1看門狗控制寄存器WDTCTL(Watchdog Timer Control)

          該寄存器是一個(gè)16位帶有密碼保護(hù)的讀寫寄存器。所謂的密碼保護(hù),是為了防止該寄存器被不小心篡改。那么是如何實(shí)現(xiàn)密碼保護(hù)呢?事實(shí)上,該寄存器的高字節(jié)用來(lái)存放口令,低字節(jié)才是控制數(shù)據(jù)。寫口令為05Ah,讀口令為069h,任何和口令不一樣的高字節(jié)操作都會(huì)導(dǎo)致系統(tǒng)復(fù)位。
          該寄存器的位功能定義如下:(支持位操作)

          WDTPW:Bits15-8,WDT Password,寫為05Ah,讀為069h。

          WDTHOLD:Bit7,WDT HOLD,
          0:打開看門狗計(jì)時(shí)器;
          1:關(guān)閉

          WDTSSEL:Bits6-5,WDT Clock Source Select時(shí)鐘源選擇

          WDTTMSEL:Bit4,工作模式選擇
          0:看門狗模式;
          1:定時(shí)器模式;
          WDTCNTCL:Bit3,計(jì)時(shí)器清零
          0:無(wú)效;
          1:清空計(jì)數(shù)器,即WDTCNT=0x0000h
          WDTIS: Bits2-0,WDT Interval Select,間隔時(shí)間選擇。用來(lái)選擇計(jì)數(shù)的周期,共有8種時(shí)間可以選擇。

          備注:括號(hào)前數(shù)字為計(jì)數(shù)器的值


          2.2.2 看門狗計(jì)數(shù)值寄存器WDTCNT(Watchdog Timer Counter)
          這是一個(gè)32Bit的加計(jì)數(shù)器,但是不能通過軟件來(lái)直接對(duì)其進(jìn)行賦值等操作,只能通過WDTCTL中的WDTIS來(lái)選擇時(shí)間?;蛘吣憧梢酝ㄟ^WDTSSEL選擇不同的時(shí)鐘源,來(lái)間接改變時(shí)間。
          2.2.3 看門狗中斷 位控制
          WDT利用SFRS總寄存器中的兩位來(lái)控制中斷。
          WDT中斷標(biāo)志位:WDTIFG,位于SFRIFG1.0
          WDT 中斷使能位:WDTIE,位于SFRIE1.0

          看門狗模式:如果不及時(shí)對(duì)WDTCNT清零或者對(duì)WDT初始化,WDTIFG就會(huì)置位,然后程序就會(huì)重啟。
          計(jì)時(shí)器模式:必須開總中斷GIE和看門狗中斷WDTIE。此外,當(dāng)執(zhí)行完中斷服務(wù)程序后,標(biāo)志位WDTIFG會(huì)自動(dòng)清零。




          2.3常用操作
          /*關(guān)閉看門狗*/
          WDTCTL=WDTPW+WDTHOLD;

          /*喂狗,即對(duì)有效狀態(tài)的看門狗進(jìn)行清零操作*/
          /*時(shí)間計(jì)滿還不喂狗就會(huì)導(dǎo)致程序重啟*/
          /*WDTIS2即WDTIS=100,此時(shí)時(shí)間間隔設(shè)為1S,假定頻率為32.768KHZ*/
          WDTCTL = WDTPW + WDTCNTCL+WDTSSEL0+WDTIS2;

          /*將看門狗設(shè)置為計(jì)數(shù)器模式,計(jì)數(shù)8192約250ms,假定頻率為32.768KHZ*/
          /* WDTIS2+WDTIS0即101*/
          WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS2+WDTIS0

          總結(jié)例程:
          /*首先將WDT設(shè)為定時(shí)器功能。而中斷服務(wù)子程序則是把WDT改為看門狗功能。這樣就通過中斷控制的周期性的重啟程序,實(shí)現(xiàn)了LED閃爍*/
          /*注意,這里默認(rèn)的時(shí)鐘源不是32KHZ,而是內(nèi)部的DCO-SMCLK(之后會(huì)講到)1.045MHZ。所以前面WDTIS定義的時(shí)間大約都要縮小1045/32=32倍*/

          #include <msp430.h>
          void main(void)
          {
          /*清零-設(shè)定為計(jì)數(shù)器-時(shí)間設(shè)定為010模式,即256S/32=8S*/
          WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1;
          __enable_interrupt(); //開總中斷
          SFRIE1|=WDTIE; //開看門狗定時(shí)器中斷
          P1DIR=0xff;
          int i,j;
          P1OUT=0xff;
          for(i=0;i<30000;i++)
          for(j=0;j<50;j++); //延時(shí)約8S
          P1OUT=0x00;
          while(1);
          }

          /*中斷服務(wù)程序*/
          #pragma vector=WDT_VECTOR
          __interrupt void WatchTimer(void)
          {
          WDTCTL=WDTPW+WDTCNTCL+WDTIS1; //看門狗模式,時(shí)間設(shè)定約為8S
          }


          關(guān)鍵詞: MSP430F5529看門

          評(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); })();