【MSP430F149学习】15 低功耗模式解析
准备工具:电脑;TS8900--MSP430F149开发板;USB线一根
开发环境:IAR EW for MSP430 V5.30
MSP430低功耗概述
MSP430 可工作在一种活动模式(AM)和五种低功耗模式(LPM0~LPM4)下。通过软件设
置控制位SCG1、SCG0、OscOff 和 CPUOff,MSP430 可进入相应的低功耗模式。各种低功耗模
式又可通过中断方式返回活动模式。不同的工作模式耗电情况不同,具体如下表所示:
控制功耗的寄存器
状态寄存器 SR
SCG1: 当 SCG1 复位时,使能 SMCLK;
当 SCG1 置位时则禁止 SMCLK。
SCG0: 当 SCG0 复位时,直流发生器被激活;
只有当 SCG0 置位且 DCOCLK 信号未用于 MCLK 或 SMCLK,直流发生器才被禁止。
注意:当电流关闭时(SCG=0) ,DCO 的下次启动会有一些微秒级的延迟。
OscOff:当 OscOff 复位时,LFXT 晶体振荡器被激活;
当 OscOff 被置位且不用于 MCLK 或 SMCLK,LFXT 晶体振荡器才被禁止。
CPUOff:当 CPUOff 复位时,用于 CPU 的时钟信号 MCLK 被激活;
当 CPUOff 置为,MCLK 停止。
下图为在intrinsics.h文件中对低功耗宏定义
简单小实例
/*********************************************
while循环里程序先进入低功耗模式LPM3,用看门狗定时器定时每隔1s退出低功耗模式
再进入低功耗模式LPM3
*********************************************/
#include
#define uint unsigned int
void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF1OUT = 0XFF;
P2DIR = 0XFF2OUT = 0XFF;
P3DIR = 0XFF3OUT = 0XFF;
P4DIR = 0XFF4OUT = 0XFF;
P5DIR = 0XFF5OUT = 0XFF;
P6DIR = 0XFF6OUT = 0XFF;
WDTCTL = WDT_ADLY_1000; // 看门狗定时1s
IE1 |= WDTIE; // 开启看门狗定时器中断
_EINT(); // 开启总中断
P2DIR = 0XFF;
P2OUT = 0XFF; //熄灯
while(1)
{
uint i;
__low_power_mode_3(); // 进入低功耗模式LPM3
P2OUT &= ~0xFF; // 点亮LED1~8
for (i = 18000; i>0; i--); // 延时
P2OUT |= 0xFF; // 熄灭LED1~8
}
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer (void)
{
__low_power_mode_off_on_exit(); // 退出低功耗模式
}
原理图
下载运行效果
【MSP430F149学习】汇总贴
|