This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

进入低功耗后是不是同时时GIE置位,其程序如下,发现P1.0闪烁。

#include  <msp430x24x.h>

void main(void)

{

 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

 P1DIR |= 0x01;                            // P1.0 output

 CCTL0 = CCIE;                      // CCR0 interrupt enabled

 CCR0 = 50000;

 TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

 //_EINT();

 //_BIS_SR(LPM0_bits );             // Enter LPM0w/interrupt   + GIE

 LPM0;

}

// Timer A0 interrupt service routine

#pragma vector=TIMERA0_VECTOR

__interrupt void Timer_A (void)

{

 P1OUT ^= 0x01;                            // Toggle P1.0

 CCR0 += 50000;                            // Add Offset to CCR0

}

  • 进入中断后GIE会清零,建议您在IDE中查看一下GIE位的值到底是多少。按照您的程序,不能进入中断

  • 利用软件调试时,没有进入中断。但仿真时灯会发生闪烁。屏蔽低功耗时,灯不发生闪烁。

  • 利用软件调试时,没有进入中断。但仿真时灯会发生闪烁。屏蔽低功耗时,灯不发生闪烁。

  • 利用软件调试时,没有进入中断。但仿真时灯会发生闪烁。屏蔽低功耗时,灯不发生闪烁。

  • 利用软件调试时,没有进入中断。但仿真时灯会发生闪烁。屏蔽低功耗时,灯不发生闪烁。

  • 在IDE中查看一下GIE位的值到底是多少。

    进入低功耗的语句到底用的哪句?

    谢谢!

  • 不开全局中断是不会进入中断。led不会闪烁

  •                                 加入_EINT();调试时GIE=1;灯闪烁;

                   屏蔽_EINT();执行LPM3;调试时GIE不为0,但仿真却会出现灯闪烁;

                   屏蔽_EINT();和LPM3;调试时GIE不为0,且灯不会闪烁;

                   当屏蔽_EINT()及中断中P1OUT ^= 0x01时;  执行LPM3; 灯不闪烁。

                   突然觉得是不是我仿真图的问题???

                   用的是proteus仿真

                                                     谢谢

  •                     恩..........怎么说咧,我知道不开GIE位,不可屏蔽中断理应不会执行,在调试界面GIE也没置1,但在仿真图中

    灯却闪烁了,可能是我仿真图有问题吧?!!!            目前是不知道哪里出了问题

                                                                    谢谢

  • _EINT();这句话就是GIE置位。

    通过Proteus仿真没做过,具体会有什么问题我还真不清楚。

  •                至少证明不是程序问题,谢谢

  • 和你的仿真有关系吧,把程序下载到MCU中,拔掉仿真器直接上电运行再看能不能闪烁,从程序上分析,没有_EINT();是不能进入中断的,而且拔掉仿真器运行的结果才是真实结果。