MSP430除了正常运行时的active模式外,还支持五种低功耗模式(Low-power mode),分别为LPM0、LPM1、LPM2、LPM3、LPM4,由状态寄存器中的CPUOFF、OSCOFF、SCG0、SCG1比特位设置。

六种模式对应的时钟状态为:

其中,LPM3、LPM4比较常用,对低功耗的贡献也最大。LPM3模式关闭了DCO、CPU,从而MCLK、SMCLK无法工作,ACLK(来源为LFXT1或VLO)可以正常工作并用于系统的定时唤醒。LPM4模式下所有内部时钟信号都关闭,系统只能由外部中断唤醒。几种模式的功耗情况大致如下图所示:

io430g2553.h头文件中已经宏定义好了几种模式的实现语句:

#define LPM0      __bis_SR_register(LPM0_bits)     /* Enter Low Power Mode 0 */
#define LPM0_EXIT __bic_SR_register_on_exit(LPM0_bits) /* Exit Low Power Mode 0 */
#define LPM1 __bis_SR_register(LPM1_bits) /* Enter Low Power Mode 1 */
#define LPM1_EXIT __bic_SR_register_on_exit(LPM1_bits) /* Exit Low Power Mode 1 */
#define LPM2 __bis_SR_register(LPM2_bits) /* Enter Low Power Mode 2 */
#define LPM2_EXIT __bic_SR_register_on_exit(LPM2_bits) /* Exit Low Power Mode 2 */
#define LPM3 __bis_SR_register(LPM3_bits) /* Enter Low Power Mode 3 */
#define LPM3_EXIT __bic_SR_register_on_exit(LPM3_bits) /* Exit Low Power Mode 3 */
#define LPM4 __bis_SR_register(LPM4_bits) /* Enter Low Power Mode 4 */
#define LPM4_EXIT __bic_SR_register_on_exit(LPM4_bits) /* Exit Low Power Mode 4 */

示例

利用MSP430G2553 Timer0_A,产生频率为1Hz的方波,驱动LED进行显示。系统除了中断处理外,其余时间都处于LPM3模式。LPM3下时钟源只能使用ACLK,而ACLK的来源为LFXT1或VLO。G2 Launchpad随板提供了一个32.768k的晶体,若使用LFXT1,则需要将该晶体焊接到板子上。此例子中VLO作为ACLK的时钟源。

VLO的主要问题是不够精准。从MSP430G2553手册可以看出,VLO频率范围为4kHz~20kHz,且受温度、供电电压影响较大。

虽然手册给出的VLO典型值为12kHz,以下程序实测方波频率为约0.84~0.85kHz,即实际VLO的频率为约10kHz

 #include "io430.h"

 #define LED1 BIT0 //red
#define LED2 BIT6 //green void main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; P1OUT = LED1;
P1DIR |= LED1+LED2; BCSCTL1 = CALBC1_1MHZ; //Running at 1MHz
DCOCTL = CALDCO_1MHZ; BCSCTL3 |= LFXT1S_2; //ACLK source: VLO; VLO typical freq = 12kHz
BCSCTL1 |= DIVA_2; //ACLK = VLO divided by 4: typical 3kHz TA0CCR0 = - ;//overflow freq = 3000/(TACCR0+1) = 2Hz (500ms)
TA0CCTL0 = CCIE; //enable interrupt
TA0CTL = TASSEL_1 + MC_1 +TACLR; //ACLK, no divide, up mode ,clear timer
//the actual overflow period measured: 585~595ms -> VLO freq is ~10k
//so the VLO is not very accurate. __enable_interrupt();
LPM3; //enter the low-power mode 3 } //ISR
#pragma vector = TIMER0_A0_VECTOR
__interrupt void CCR0_ISR(void)
{
//TA0CCR0 flag clearing is automatic
P1OUT ^= LED1 + LED2;
}

MSP430 G2553 低功耗模式LPMx的更多相关文章

  1. msp430f149的低功耗模式

    430的低功耗确实很强啊,虽然和VR单片机比起来速度慢了好多.在CPU进行工作时,如果没有什么事情干,就得进入低功耗模式啦,LMPX(0~4)这几种模式的具体事项就是如下的,得记住了. 一,运行模式M ...

  2. android wifi SWOL低功耗模式

    1 睡眠模式RX代码流程 ar_wal_rx_patch.c::patch_rx_process_recv_status//调用rx_ctxt->data_ind_handler -> d ...

  3. android蓝牙的调试(博通蓝牙工作 and 低功耗模式)

    首先结合项目从整体上去把握这部分: 蓝牙模块中一个比较核心的文件是bluetooth.c, 在我们上电的时候, 会调用这个文件中bt_enable()这个函数, 在这个函数里面先调用set_bluet ...

  4. 【Debug】串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!

    串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!

  5. STM32的低功耗模式

    一 待机模式standby和STOP模式的区别: 进入低功耗模式:都一样,都是先关闭相应时钟,关闭相应外设,配置相应所有IO口(浮动输入),然后配置相应的唤醒中断源,中断影响的O口,然后调用相应函数进 ...

  6. STM32低功耗模式与烟雾报警器触发信号电路设计

    1.STM32的3种低功耗模式 STM32有3种低功耗模式,分别是睡眠模式.停机模式和待机模式. 2.STM32在不同模式下的电流消耗 a.工作模式  消耗电流在27mA至36mA之间. b.睡眠模式 ...

  7. 【原创】STM32低功耗模式及中断唤醒(基于BMI160及RTC)的研究

    预研目标 六轴静止时,终端进入低功耗模式:六轴震动时,终端正常工作模式,从而极大减少非工作时的电流消耗. 解决方案 机器静止时,依据六轴算法,CPU进入休眠(停止)模式:机器工作时,触发六轴中断唤醒C ...

  8. FreeRTOS低功耗模式

    在系统或电源复位以后,微控制器处于运行状态.当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时,用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳 ...

  9. MSP430 G2553 基本时钟模块+ (Basic Clock Module+)

    一.时钟源 MSP430的Basic Clock Module+支持的时钟源有: DCOCLK:内部数字控制振荡器,Internal digitally contrlled oscillator.所有 ...

随机推荐

  1. Spring主从数据源动态切换

    参考文档: http://uule.iteye.com/blog/2126533 http://lanjingling.github.io/2016/02/15/spring-aop-dynamicd ...

  2. MySQL 存储配置

  3. Mongodb 集群加keyFile认证

    介绍 自从远古计绳结开始,数据库的存储就注定了今天的地位和多样性,Nosql的出现更是解决了现有的关系型数据库无法解决的一些难题,对高性能,灵活度,扩展性,海量数据的问题.随之而出现的高速内存索引数据 ...

  4. springboot 测试 有注入HttpSession的bean

    question: nested exception is java.lang.IllegalStateException: No thread-bound request found: Are yo ...

  5. C#中StreamWriter与BinaryWriter的区别兼谈编码。

    原文:http://www.cnblogs.com/ybwang/archive/2010/06/12/1757409.html 参考: 1. <C#高级编程>第六版 2.  文件流和数据 ...

  6. 行为型-命令模式(Command)

    装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或者排气扇.在购买开关时,我们并不知道它将来到底用于控制什么电器,也就是说,开关与电灯.排气扇并无直接关系,一 ...

  7. PM2 介绍

    [源引]https://github.com/Unitech/pm2 pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着 ...

  8. hue database is locked

    hue使用mysql作为元数据库 hue默认使用sqlite作为元数据库,不推荐在生产环境中使用.会经常出现database is lock的问题. 解决方法: 其实官网也有解决方法,不过过程似乎有点 ...

  9. 如何去掉UItableview headerview黏性

    有时候使用UITableView所实现的列表,会使用到header view,但是又不希望它粘在最顶上而是跟随滚动而消失或者出现,下面的代码片段就是实现此功能 sectionHeaderHeight ...

  10. DNS BIND之rndc介绍及使用

    rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭.重载.刷新缓存.增 ...