Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MSP430G2433时钟VLO低功耗LPM3时异常复位

$
0
0

 项目因为是电池供电,所以不可避免的要用到低功耗功能,选用的芯片是MSP430G2433。先声明一下,出于产品空间限制的原因,没有用到外接晶振。

因为要求定时检测电池电量,所以选用LPM3模式,这样就只有ACLK可以作为定时器的时钟源,而我用的ACLK时钟源来自VLO(貌似只有VLO可选)。

写了点简单的代码测试一下:

#include<msp430g2433.h>
#define LED_B BIT6 //BLUE LED (P2.6)
void main()
{
      WDTCTL = WDTPW + WDTHOLD;

      P2SEL &= ~BIT6;      //引脚复用
      P2DIR |= LED_B;
      P2OUT &= ~LED_B;

      BCSCTL3 |= LFXT1S_2;       //设置LFXT1Sx为10,VLO(12KHz)

      TACTL |= TASSEL_1 + MC_1 + ID_3;       //ACLK,UP Mode,1/8 devider(1500Hz)
      TA0CCTL0 |= CCIE;
      TA0CCR0 =1500/4;
      __bis_SR_register(LPM3_bits + GIE);
      while(1);
}
static unsigned int Timer0_A0_Counter =0;
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer0_A0()
{
      LPM3_EXIT;
      Timer0_A0_Counter ++;
      if(Timer0_A0_Counter ==2)
      {
            Timer0_A0_Counter =0;
            P2OUT ^=LED_B;
      }
      __bis_SR_register(LPM3_bits + GIE);
}

以上代码正常工作现象为:LED灯1S的周期闪烁。

可奇怪的是,闪大约32次后(不变的32次,如果改为4秒的周期,又变成闪16次复位),MCU就自动复位了。

然而如果我把代码改为不进入低功耗模式,就不会有这个问题。


Viewing all articles
Browse latest Browse all 3634

Trending Articles