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.

[参考译文] RTOS/MSP430F5528:退出 LPM4的正确方法

Guru**** 2536740 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/723142/rtos-msp430f5528-a-correct-method-for-exiting-lpm4

器件型号:MSP430F5528

工具/软件:TI-RTOS

e2e.ti.com/.../2783.main.ce2e.ti.com/.../6038.HwiFuncs.ce2e.ti.com/.../0118.empty_5F00_min.cfg

大家好、   当我的 CPU 处于 LPM4中时、一个硬件开关被激活、这将把我带到我的 ISR。 请见 main.c 第175行。  无法从此处调用指令__BIC_SR_REGISTER_ON_EXIT (),只能从中断存根调用指令。  因此、为了解决这个问题、我创建了一个标志、exiting LPM4、并将其设为 true。  

当 switches_isr ()返回到中断存根(请参阅 HwiFuncs.c  第445行)时    ,它将执行__BIC_SR_register_on_exit (0xF0)。

此代码正常工作、RTOS 正确退出 LPM4。   但是、由于 HwiFuncs.c 中的代码是 由 XGCONF/.cfg 生成的、因此我对.cfg 所做的任何更改都将擦除我的代码。  

 当从 LPM4唤醒时,是否有更好的方法来执行__BIC_SR_REGISTER_ON_EXIT() ?  

谢谢你

罗伊

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

    Roy、您好!

    我不确定 TI-RTOS、但要从 LPM0/1/2/3/4退出运行模式、您需要更改存储在堆栈上的 SR 位、这些位在退出 ISR 时从 RETI 指令退出。 在 ISR 中、您只需要以下任一代码行。 它们是等效的。

    LPM4_EXIT;
    
    //或
    
    __BIC_SR_REGISTER_ON_EXIT (LPM4_BITS); 

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

    对于驻留在 RTOS 之外的中断、您所说的内容是正确的。 但是、对于在 RTOS 内部实现的中断、它会生成调用应用特定函数的实际 ISR 代码。

    我将通过在 RTOS 之外执行我的开关中断来解决这个问题。

    此致

    罗伊