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.

[参考译文] CCS/MSP430FR2153:从 LPM4唤醒时出现问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/896859/ccs-msp430fr2153-problems-with-wakeup-from-lpm4

器件型号:MSP430FR2153

工具/软件:Code Composer Studio

您好!

我正在为 LPM4唤醒感到苦恼。 有两个源将唤醒处理器:按钮按压和 UART 数据。 按下按钮大多数时间都会唤醒我的 MSP -但并非总是唤醒。 UART 绝不会。 我不能理解为什么。 下面是一些代码片段(很抱歉、但代码荧光笔似乎对我不起作用):

在主循环内:

while (1)
{
静态 uint16_t 计数= MAIN_SLEEP_TIMEOUT_MS;
WAIT_milliseconds (1);
if (signal_anySignalsSet ()== false)
{
if (--count ==0)
{
计数= MAIN_SLEEP_TIMEOUT_MS;
bluetooth_sleepUART();
_bis_SR_register (LPM4_bits | GIE); //进入 LPM4、中断被启用
__no_operation();
}
}
if (semaphore_check (semaphore_uart_line)=true)
{
}
} 

在 UART 中断内:

if (rxByte == CR)
{
Semaphore_send (semaphore_uart_line);
BIC_SR_register_ON_EXIT (LPM4_BITS);
} 

在按钮中断内:

if (STOR_IFG & Button1_Falling)//按钮被按下

//去抖
WAIT_milliseconds (5);
if (((P1IN & Button1_Falling)=0)//必须保持为0

signal_send (signal_button_pressed);
DEBUG_PIN1_TGL ();
//_BIC_SR_REGISTER_ON_EXIT (LPM4_BITS);
__no_operation();

}//按钮下降

我按下按钮3次或更多次、突然按下或释放按钮不会执行唤醒!!!

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

    您好、Matthias、

    当按下/松开按钮时器件未唤醒时、是否需要对器件进行下电上电?

    您是否检查了代码是否未遇到与 LPM4相关的错误?

    您可以在 https://www.ti.com/lit/pdf/slaz723上找到器件勘误表。 当器件从激活模式转换时、与 LPM4相关的错误为 PMM32、CS13。   

    Srinivas

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

    尊敬的 Srinivas:

    我最终以2MHz 的频率进行测试。 但我会得到相同的误差。 由于可以在没有调试器的情况下运行该错误、因此我排除了 EEM 错误。

    只是一个想法:如果一个中断被嵌套、会发生什么情况? (我不太确定、如果它是嵌套的)如果我在内部中断中调用"__BIC_SR_register (LPM4_BITS | GIE";"、则外部中断的返回是否会覆盖其堆栈中的 SR? 最好向所有中断发出信号、以便在退出时执行唤醒吗? 如果我两次调用__BIC_SR,会发生什么情况?

    另一个想法:如果中断不是嵌套的、而是另一个中断正暂挂、那么使用_BIC_SR...退出中断时会发生什么情况?

    感谢您的支持、

    Matthias

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

    我测试了是否在 RETI 上唤醒、以设置全局标记、这似乎起作用了