fet140_wdt03.c

来自「msp430f14x 系列片内外设的实例代码」· C语言 代码 · 共 55 行

C
55
字号
//******************************************************************************
//  MSP-FET430P140 Demo - WDT Toggle P1.0, Interval Overflow ISR, HF XTAL ACLK 
//
//  Description; Toggle P1.0 using software timed by the WDT ISR. In this 
//  example the WDT is clocked with ACLK which is the same as the XTAL and 
//  divided by the WDT by 512 triggering and ISR that will toggle P1.0.
//  ACLK= MCLK= LFXT1= HF XTAL
//  //** HF XTAL REQUIRED AND NOT INSTALLED ON FET **//
//
//		  MSP430F149
//             -----------------
//         /|\|              XIN|-  
//          | |                 | HF XTAL (455k - 8Mhz) 
//          --|RST          XOUT|-
//            |                 |
//            |             P1.0|-->LED
//
//  M.Buccini
//  Texas Instruments, Inc
//  August 2003
//  Built with IAR Embedded Workbench Version: 1.26B
//  December 2003
//  Updated for IAR Embedded Workbench Version: 2.21B
//******************************************************************************

#include <msp430x14x.h>

void main(void)
{ 
  unsigned int i;
  WDTCTL = WDT_ADLY_16;                 // ACLK / 512, interval timer
  BCSCTL1 |= XTS;                       // ACLK = LFXT1 = HF XTAL

  do 
  {
  IFG1 &= ~OFIFG;                       // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);           // Time for flag to set
  }
  while ((IFG1 & OFIFG));               // OSCFault flag still set?                

  BCSCTL2 |= SELM_3;                    // MCLK = LFXT1 (safe)
  IE1 |= WDTIE;                         // Enable WDT interrupt
  P1DIR |= 0x01;                        // Set P1.0 to output direction
  
  _BIS_SR(LPM0_bits + GIE);             // Enter LPM0 w/ interrupt
}

// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
  P1OUT ^= 0x01;                        // Toggle P1.0 using exclusive-OR
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?