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.

[参考译文] MSP432P401R:在移除调试器并在睡眠期间、代码行的工作方式是否可能不同?

Guru**** 2563970 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/602920/msp432p401r-could-lines-of-code-not-work-the-same-when-debugger-is-removed-and-during-sleep

器件型号:MSP432P401R

我有一个项目一直运行良好、现在进入 LPM3、当它在 UART Rx 端口上接收到字符时唤醒。 当我关闭调试器、重新打开电源并再次运行以从调试器中测试它时、它不响应命令。

当我将其定向到无法进入睡眠状态的情况时、它可以按预期正常通信。 除了 I/O 更改代码以设置最低功耗之外、我还有这些代码行进入睡眠模式、从而停止处理器并进入 LPM3:

//从 ISR 退出时唤醒
SCB->SCR |= SCB_SCR_SLEEPONEXIT_MSK;

//关闭 PSS 高侧和低侧监控器
PSS->key = PSS_KEY_VAL;
PSS->CTL0 |= PSS_CTL0_SVSMHOFF;
PSS->KEY = 0;

//进入低功耗模式3.
PCM_enableRudeMode();
PCM_setPowerState (PCM_LPM3); //此语句进入 LPM3 

调试器关闭时、这里是否有任何行可能不起作用? 是否还有任何项目属性/调试器设置对于没有调试器的情况下运行代码时(例如仅使用 VCC/GND)、可能会更改系统工作方式的用户而言非常突出?

谢谢、

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

    您能否尝试将其发送到 LPM0并查看您的程序是如何响应的?

    您能否为我提供 UART 的波特率/设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    波特率- 921、600波特(~1MHz)。
    数据位- 8.
    奇偶校验-无
    停止位- 1.
    流控-无

    当我尝试 LPM0时、我会返回给您。

    感谢您的帮助、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    令人惊讶的是、将其放入 LPM0中会使其正常工作。 您认为这意味着什么?

    我仍然希望最终将其驻留在 LPM3中、因此虽然这确实很好、但我仍想努力使其在 LPM3中工作。

    非常感谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我注意到 LPM0和 LPM3/4之间的一个差异是数据表显示 LPM3/4外设被禁用。 我猜这意味着、如果我想驻留在 LPM3中并且仍然以异步方式接收 UART 字符、我需要将 UART Rx 引脚设置为 I/O、输入、 中断使能、这将允许我查看尝试与处理器通信的时间。 一旦我在端口引脚上获得一个边沿、唤醒、将这些 UART 引脚切换到其特殊功能配置、丢弃第一个字节、因为 UART 寄存器无法识别它、并接收整个消息。

    如果是这种情况、我很奇怪为什么在调试器上、我可以转到 LPM3、仍然通过它的专用 ISR 接收 UART 数据。 你怎么看?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Lunatic、

    很抱歉耽误你的回答。 出于某种原因、当有人回复我时、我没有收到电子邮件通知。

    首先、当您连接到调试器并进行调试、并且器件进入"LPM3"时、CCS/调试 器仿真 LPM3以建立有效的调试连接、因此您的 UART 为何仍在调试会话中工作。

    对于您的场景、您必须选择使用 LPM0保持1Mbaud UART、或使用上述帖子中提到的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这一切都是有道理的。 感谢您提供信息。

    我确实使用了上面提到的方法、它的工作非常出色、无论是否使用调试器-我认为这是在调试器处于睡眠状态时接收 UART 消息的正确方式。

    感谢您的帮助、