MSP430低功耗模式

MSP430的电压已经降到了3.3v,虽然不是最低的(arm的部分芯片内核工作电压降到了1.8v),但是这已经是比较低的了;MSP430比较出彩的地方一个是把一颗芯片分成了N个不同的模块部分,不用的部分功能模块可以关闭掉,电流近似为零;另一个出彩的地方是,可以有三个时钟源,并产生更多的内部可用工作频率,让内部各个模块工作在不同的频率,不用的时钟还可以关掉(具体参看上一节MSP430之系统时钟篇)。后两种方法主要是通过软件的方式进行设置的,具体来讲,MSP430可以有6种不同的工作模式:

设置其工作模式主要是设置寄存器SR的SCG0、SCG1、OscOff、CPUOff位。SCG0=1且DCOCLK没有用于MCLK和SMCLK时,直流发生器禁止;SCG1=1时,SMCLK禁止; CPUOff=1时,MCLK被禁止;只有CPUOff=1时,OscOff才可以=1,此时晶振被禁止。

1、活动模式-----AM

正常的工作模式,这时CPU消耗的电能最大.

2、低功耗模式0-----LPM0

CPUOff置位,CPU停止活动,但外围模块继续工作,ACLK和MCLK信号保持活动,MCLK的锁频坏控制正常工作.有关控制位设置为:SCG0=0,SCG1=0,OscOff=0,CPUOff=1。

3、低功耗模式1-----LPM1

CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制停止工作,ACLK与MCLK保持活动,有关控制位设置为:SCG0=0,SCG1=1,OscOff=0,CPUOff=1。

4、低功耗模式2-----LPM2

CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制停止,ACLK活动,MCLK停止,有关控制位设置为:SCG0=0,SCG1=1,OscOff=0,CPUOff=1。

5、低功耗模式3-----LPM3

CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制和MCLK停止工作,DCO的DC发生器关闭,但ACLK信号仍保持活动,有关控制位设置为:SCG0=1,SCG1=1,OscOff=0,CPUOff=1。

6、低功耗模式4-----LPM4

CPUOff置位,CPU停止活动,但外围模块继续工作,MCLK的锁频环控制和MCLK停止工作,晶振停止,有关控制位设置为:SCG0=x,SCG1=x,OscOff=1,CPUOff=1。

处理器进入低功耗模式以后,一般由中断来唤醒。可以是外部中断,也可以是内部的定时器等中断。

范例:

#include

void main(void)
{
WDTCTL = WDT_ADLY_250; // 看门狗定时250mS
IE1 |= WDTIE; // 使能看门狗中断
FLL_CTL0 |= XCAP14PF; // 装载匹配电容
P2DIR |= 0x02; // 设置P2.1输出方向

_BIS_SR(LPM3_bits + GIE); //进入低功耗3,允许可屏蔽中断响应

}

// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
P2OUT ^= 0x02; // 定时翻转P2.1
}

在上面的程序中,main函数执行完毕之后即进入了低功耗模式,只是在中断中,才能执行功能操作。其次,可以看出:1、从中断返回后,依然是中断状态;2、main函数永远不会返回,因为_BIS_SR(LPM3_bits + GIE)之后的语句永远不可能执行。

你可能感兴趣的:(MSP430低功耗模式)