|
编程实例分享:msp430 Low Power Module
[复制链接]
#include #include "BoardConfig.h"
// P1 中断服务子程序
#pragma vector = PORT1_VECTOR
__interrupt void P1_IRQ(void)
{
P1IFG = 0; // 清除中断标志
__low_power_mode_off_on_exit(); // 退出低功耗模式
P3OUT ^= 0x10;
}
void DelayMs(unsigned int ms)
{
unsigned char i;
while(--ms)
{
for(i=110;i>0;--i);
}
}
void main(void)
{
P1DIR &=0;
P1DIR |= 0xF0;
P1OUT|= 0x0F;
P3DIR |= 0x30;
P3OUT |= 0xff;
BoardConfig(0xbF);
WDTCTL = WDTPW + WDTHOLD;
P1DIR &= ~BIT0; // P1.0输入
P1IE |= BIT0; // P1.0开中断
P1IES |= BIT0; // P1.0下降沿中断
_EINT();
while(1)
{
P3OUT &= ~0x20;
DelayMs(5000);
_NOP(); // 空语句
P3OUT |= 0x20;
__low_power_mode_4(); // 进入LPM0模式,LPM4
//P3OUT |= 0x20;
// 当程序执行到上述语句后, 程序会停止到该语句, 并进入低功耗状态
// 当P1.0出现下降沿的时候, 在P1的中断服务子程序退出低功耗模式
// 则会再次运行_NOP();语句, 然后在进入底功耗
}
}
|
|