TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430如何进入低功耗模式LPMx.5

使用的单片机型号是MSP430FR5739,进入低功耗模式LPM4可以使用TI提供的函数__bis_SR_register(LPM4_bits)设置寄存器,那么进入LPM3.5或者LPM4.5应该如何写程序,另外进入LPMx.5之后仿真器将无法使用,如何验证结果,求大神赐教~

Susan Yang:

可以参考文档 http://www.ti.com.cn/cn/lit/ug/zhcu026ac/zhcu026ac.pdf 第16页

user4132520:

回复 Susan Yang:

不好意思,我用的调试软件是CCS,不知道有没有对应的资料

; Enter LPMx.5 ExampleMOV.B #PMMPW_H, &PMMCTL0_H ; Open PMM registers for writeBIS.B #PMMREGOFF, &PMMCTL0_L ;BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR ; Enter LPMx.5 when PMMREGOFF is set.

我使用芯片手册上提供的以上方法进入低功耗模式,但是上电后发现它无限复位,不知道是什么情况…

Butterfly:

回复 user4132520:

用CCS, 参考下面文档67页

http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=slau157&fileType=pdf&keyMatch=CCS LPMX.5&tisearch=Search-EN

user4132520:

回复 Butterfly:

你好,可能我现在更关注的是进入LPMx.5的方式是否正确,以下是我的代码

#include "Msp430fr5739.h"

void main(void){      WDTCTL = WDTPW + WDTHOLD;       clock_Init();      gpio_Init_LPM();      __bis_SR_register(GIE);

      __delay_cycles(5000000);      PJOUT |= BIT1;       // output is high(PJ.1) for test      __delay_cycles(5000000);

      PMMCTL0_H |= PMMPW_H;      PMMCTL0_L |= PMMREGOFF;      __bis_SR_register(LPM3_bits);      while(1);}

#pragma vector = PORT1_VECTOR__interrupt void Port_1(void){ switch(__even_in_range(P1IV,P1IV_P1IFG5)) {       case P1IV_P1IFG5:                PJOUT &= ~BIT1;               // output is low(PJ.1) for test                break;

      default:                break; }      P1IFG = 0; // P1 IFG cleared}

其中gpio_Init_LPM()将所有的管脚设置成IO模式,输出低电平,P1.5配置成下降沿中断用来唤醒430

      PMMCTL0_H |= PMMPW_H;      PMMCTL0_L |= PMMREGOFF;

用来进入LPMx.5模式,现在的现象是脱离仿真器上电以后灯在闪烁,也就是程序一直在无限重新加载,百思不得其解

我理解的是应该是P1.5触发中断唤醒之后才会重新加载程序,不知道哪里理解的有问题,还请赐教

Butterfly:

回复 user4132520:

LPMX.5 把片内降压的LDO关掉了,RAM里面的数据都会丢失,为什么不进LPM3?

赞(0)
未经允许不得转载:TI中文支持网 » MSP430如何进入低功耗模式LPMx.5
分享到: 更多 (0)