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.

请问在main中进入LPM4,在外部中断唤醒后在中断进入LPM3,这时程序是回到main中了,还是在中断中?

首先在main吧,我运行了“_BIS_SR(LPM4_bits + GIE);         // Enter LPM4”

先外部IO口中断函数中我又运行了“_BIS_SR(LPM3_bits + GIE);”,请问在此之后,程序是继续执行完中断函数后面的内容再进入LPM3,还是从此处直接进入LPM3了?如果是从此处直接进入LPM3了,在下次中断之后会不会再继续执行第一次中断函数后面的语句?

  • 中断函数中先运行的是进入LPM3,所以直接进入LPM3,不会继续执行完中断函数后面的内容。

  • 你好!

    在中断中写这两句就行了,在出ISR后,MCU退出LPM4,然后进入LPM3。

    _bic_SR_register_on_exit(LPM4_bits);

    _bis_SR_register(LPM3_bits)

    GIE不用打开了,MSP430的ISR在编译时会自动加上进中断时的关中断和出中断时的开中断操作。

    Regards,

    Hardy

  • 不建议在中断函数中设置低功耗模式,这样刚进了中断函数又进入了低功耗模式中去了,而中断压栈的中断入口还没恢复,容易造成系统混乱。

    建议所有的低功耗模式都在MAIN函数的死循环中。如果确实要切换不同的低功耗模式,可以用一些标志来进行判断,这样逻辑才比较清楚。在系统维护和升级中才不容易出问题.

  • 不要抄例程,例程只是为了给你演示功能,不代表最优和最合理的设计。