📄 msp430x54x_lpm3_1.c
字号:
//******************************************************************************
// MSP430x54x Demo - Software Toggle P1.0 from LPM3 (ACLK = REFO)
//
// Description: Toggle P1.0 by xor'ing P1.0 with WDT LPM3 wake.
// ACLK = REFO = 32kHz, MCLK = SMCLK = default DCO
//
// MSP430x5438
// -----------------
// /|\| |
// | | |
// --|RST |
// | |
// | P1.0|-->LED
//
// Z Albus
// Texas Instruments Inc.
// May 2008
// Built with CCEv3.2 CCE Version: 3.2.0
//******************************************************************************
#include "msp430x54x.h"
void main(void)
{
volatile unsigned int i;
WDTCTL = WDT_ADLY_1000; // WDT 250ms, ACLK, interval timer
SFRIE1 |= WDTIE; // Enable WDT interrupt
P1DIR |= BIT0; // P1.0 output
P1DIR = 0xFF;P2DIR = 0xFF;P3DIR = 0xFF;P4DIR = 0xFF;P5DIR = 0xFF;P6DIR = 0xFF;
P7DIR = 0xFF;P8DIR = 0xFF;P9DIR = 0xFF;P10DIR = 0xFF;P11DIR = 0xFF;
P1OUT = 0x00;P2OUT = 0x00;P3OUT = 0x00;P4OUT = 0x00;P5OUT = 0x00;P6OUT = 0x00;
P7OUT = 0x00;P8OUT = 0x00;P9OUT = 0x00;P10OUT = 0x00;P11OUT = 0x00;
PJDIR = 0xFF; //
PJOUT = 0x00; //
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -