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.

[参考译文] MSP432E401Y:通过 RTC 匹配从休眠中唤醒

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1342196/msp432e401y-wake-up-from-hibernation-with-rtc-match

器件型号:MSP432E401Y

您好!  

我正在尝试通过 RTC 匹配和唤醒引脚从休眠中唤醒。 MSP432可以通过引脚唤醒、但不能通过 RTC 唤醒。  这里是配置休眠和进入休眠的部分代码。 我想我忘了一些配置线路、但我不知道是哪条配置线路。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
__attribute__((optnone)) Public void CtrlHibernateInit(void)
{
/* Enable the the Hibernate module and wait for it to be ready */
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
/* If first start up, enable hibernate
* and RTC.
*/
if (HibernateIsActive() == FALSE) {
HibernateEnableExpClk((uint32)CPU_FREQUENCY);
HibernateWakeSet(HIBERNATE_WAKE_PIN | HIBERNATE_WAKE_RTC);
HibernateRTCEnable();
HibernateCounterMode(HIBERNATE_COUNTER_RTC);
HibernateRTCSet(0);
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好!

     我没有看到您调用 MAP_HIBernateWakeSet (HIBERIN_WAKE_RTC)来启用 RTC 唤醒中断。  我建议您查看 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\msp_EXP432E401Y\driverlib\HIBERIN_vdd3on_rtcwake 的示例。 本示例使用 RTC 从休眠状态唤醒。  

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

    您好!  

    第12行

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

    您好、第12行。 我将使用此示例并进行了修改

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

    好的。  

    我刚刚按 原样尝试 HIBERIN_vdd3on_rtcwake 示例、它对我很有效。 在我按下 SW1开关以将器件置于休眠模式后、休眠模块将在5秒后唤醒。 为什么不首先在 LaunchPad 上未经修改就尝试示例、然后在您的定制板上尝试? 您能否让这个示例正常工作? 如果您可以使该示例正常工作、那么您可以将其与您修改过的代码进行比较。 您也可以在 LaunchPad 上尝试自己的代码。 它在 LaunchPad 上是否工作? 检查是否向器件发送了有效的32.769kHz XOSC 信号。  

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

    您好!  

    我已在 launchpad 上进行了测试、工作正常。 但我需要修改代码以便在没有 IRQ 的情况下使用、仅由 RTC 唤醒并转至 main。 有可能吗?

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

    您好!

    ,但我需要修改代码,以便在没有 IRQ 的情况下使用,

     这是不可能的。 当器件处于休眠模式时、除 RTC 外的所有时钟均停止。 这意味着 CPU 处于空闲状态。 您必须生成中断才能唤醒时钟和 CPU。 RTC 匹配生成一个到处理器的 IRQ 来唤醒器件。  

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

    我已修改了代码、可以在没有 IRQ 的情况下运行。 但我试图移动它到我们的系统,它不起作用... 我必须调查更多发生了什么……

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* DriverLib Includes */
    #include <ti/devices/msp432e4/driverlib/driverlib.h>
    /* Standard Includes */
    #include <stdint.h>
    #include <stdbool.h>
    void delay(uint32_t delay_ms) // assumes 1 ms tick.
    {
    uint32_t start = 0;
    while (start < delay_ms) {
    start++;// nop
    }
    }
    int main(void)
    {
    uint32_t systemClock;
    uint32_t hibIntStatusRaw = 0u;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX