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

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

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

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

yffy:

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

Hardy Hu:

你好!

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

_bic_SR_register_on_exit(LPM4_bits);

_bis_SR_register(LPM3_bits)

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

Regards,

Hardy

Triton Zhang:

回复 Hardy Hu:

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

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

Triton Zhang:

回复 Triton Zhang:

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

赞(0)
未经允许不得转载:TI中文支持网 » 请问在main中进入LPM4,在外部中断唤醒后在中断进入LPM3,这时程序是回到main中了,还是在中断中?
分享到: 更多 (0)