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.

[参考译文] MSP430F5342:如何在进入 LPM3之前避免 ISR 触发

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/812166/msp430f5342-how-to-avoid-the-isr-trigger-before-entering-lpm3

器件型号:MSP430F5342

尊敬的 TI 专家,

现在、我要测试 MSP430F5342。

 ISR 和 LPM3之间的同步有一些问题。

假设我们的程序中有一个 ISR、无法预测该 ISR 的触发时间。

现在、当我们想进入 LPM3时、如果这个 ISR 将在很短的时间内触发、那么这个时间太短了、以至于在进入 LPM3之前触发。

,我们错过了这个触发器、这个触发器是我们系统的唤醒源、这样我们的系统就进入了无限睡眠状态。

根据  ARM 内核 MCU,的经验、我已经考虑了这个问题的解决方案、如下所示,

//禁用 INT
__BIC_SR_register (GIE);
//输入 LPM3
LPM3;
//启用 INT
__bis_SR_register (GIE);

//然后执行我们要执行的操作... 
(笑声) 

但是、我怀疑 MSP430是否可以在重新启用 INT 之前使 IRQ 保持挂起、以及是否立即将系统从睡眠状态唤醒以 执行 INT_ENABLE。

如果挂起的 IRQ 无法在 INT_DISABLE 状态下唤醒系统。将永远不 会执行 INT_ENABLE 语句。系统 将进入无限睡眠状态。

总之,我有两个问题。

1)。。在进入 LPM3之前、如何避免 IRQ 触发?

2)  ?是否可以使用我在上面提到的解决方案?如果错误,是否有任何类似的解决方案要采用

提前感谢您的帮助。

此致

Andy

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

    不、Cortex 已禁用- WFI 技巧在 MSP430上不起作用。

    但是:如果您看一下"LPM4"的定义、它看起来非常像:"__bis_SR_register (LPM4_bits)"。 您可以将 GIE 添加到 SR 中设置的内容中:

    >_disable_interrupt ();// GIE=0

    >//在此处查看最近中断请求的工作。

    >_bis_SR_register (LPM4_bits | GIE);  //进入 LPM4、启用  

    [编辑:抱歉、您说的是 LPM3、但它是相同的想法。]