MSP430看門狗定時(shí)器
2.WDT interrupt:
看門狗有兩種工作模式,watchdog mode, interval mode。
WDTIFG 置位的兩種情況:在看門狗模式下發(fā)生看門狗溢出。在間隔定時(shí)模式下發(fā)生定時(shí)溢出,且全局中斷使能GIE和WDTIE均開啟。
WDTIFG在中斷服務(wù)程序后會(huì)自動(dòng)清除該標(biāo)記。
3.WDTCTL
WDTPW:必須寫0x5A.WDTHOLD:停止看門狗就設(shè)為1.WDTNMIES: NMI下降沿為1,上升沿為0.WDTNMI: NMI為1.WDTTMSEL:間隔定時(shí)器模式設(shè)為1.WDTCNTCL:通過該位來清除WDT計(jì)數(shù)器的值 通常設(shè)為1表示清除到0.WDTSSEL:設(shè)置時(shí)鐘源 ACLK(輔助系統(tǒng)時(shí)鐘)為1,SMCLK(子系統(tǒng)時(shí)鐘)為0.WDTISx:設(shè)置時(shí)間間隔。0-3對(duì)應(yīng)不同的分頻。
4.WDT程序:
默認(rèn)在中斷中SR清零,也就是GIE是0,所以默認(rèn)不會(huì)發(fā)生中斷嵌套。只有在中斷服務(wù)程序中打開GIE才能發(fā)生中斷嵌套。
#include <msp430x14x.h>unsigned int i=0;void main(void){WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30msIE1 |= WDTIE; // Enable WDT interruptP2DIR =0xFF; // Set P1.0 to output directionP2OUT = 0xFF;_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt}// Watchdog Timer interrupt service routine#pragma vector=WDT_VECTOR__interrupt void watchdog_timer(void){P2OUT = ~(0x80>>(i++)); // Toggle P1.0 using exclusive-ORif(8==i) i=0;}
評(píng)論