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.

[参考译文] msp430fw423:如何进入LPM3 (低功耗模式)并以原子方式启用中断?

Guru**** 2589280 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/631445/msp430fw423-how-to-enter-lpm3-low-power-mode-and-enable-interrupts-in-atomic-way

部件号:MSP430FW423

您好,

我需要用原子方法做两件事:
1.进入LPM3低功率模式,然后
2.启用中断。

我知道我可以通过正确设置SR寄存器来完成此操作。 我的问题是:我能一次性地做这些吗?它将是真正的原子?

方法A.直接SR寄存器设置:  

C:  __bis_sr_register( LPM3_bits | GIE );

被编译为SPU入侵:

     BIS #216,SR

方法B. RETI的间接SR设置  

     按#Label_1
     按216
     印度

标签_1:   

我需要确定,这种方法是正确的原子方法。
我感到困惑的是,可能会有一些硬件危险(即使我在一个指令中设置SR),从而导致:
a)未进入低功率模式,或
B)不启用中断,
C)(仅适用于方法B)在ISR之外使用RETI有一些副作用。

此致,
Piotr

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于CPU,“内部ISR”和“外部ISR”之间没有真正的区别;RETI将正常工作。

    但是,__bis_sr_register函数可以保证映射到单个原子指令。 (如果BIS不是原子的,则RETI也不是。)