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:MSP432 RTC C 唤醒-策略

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585948/rtos-msp432-rtc-c-wake-up---policy

主题中讨论的其他器件:MSPWARE

工具/软件:TI-RTOS

您好!

我的目标是让我的 msp432进入睡眠状态、并在 x 小时后或通过外部中断将其唤醒(我需要切换此策略)。

我已启用睡眠策略。

CONST PowerMSP432_Config PowerMSP432_CONFIG ={
policyInitFxn =&PowerMSP432_initPolicy、
policyFxn =&PowerMSP432_sleepPolicy、
.initialPerfLevel = 2、
.enablePolicy = true、
.enablePerf = true
}; 


因此,当我调用 Task_sleep()时,处理器应该进入睡眠状态。

但我看到处理器不会进入睡眠状态。

此外、我不知道如何使 RTC_C 稍后唤醒。

我找到的示例仅适用于 MspWare。

您能不能帮助我如何使用 TI RTOS 将 msp432置于睡眠模式并在发生中断或 RTC 警报时将其唤醒。

谢谢你

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

    您安装了哪个版本的 TI-RTOS 或 SimpleLink SDK?

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

    您好 Derrick。

    我的 TI RTOS 版本为:
    2.16.00.08

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

    您好!

    如果可以升级到更高版本,新 的 SimpleLinkTmMSP432TmSDK 包括电源睡眠、电源深度睡眠和电源关闭示例。

    否则、如果您导入空示例并启用电源、您是否能够看到器件进入低功耗模式?

    在您的应用程序中,尝试使用 Power_getConstraintMask() API 来检查是否有任何因素阻止器件进入睡眠状态。 您可以在 产品的 C:/ti/tirtos_msp43x_2_16_00_08/products/tidrivers_msp43x_2_16_00_08/docs 中阅读有关功率驱动器的更多信息。

    Derrick

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

    你好 Derrick!

    我已经升级了 RTOS。 正如我看到的、睡眠示例有效。 bigtime 示例崩溃:/.

    时钟还可以按照以下代码进行接缝处理:

    uint32 t;
    time_t t1;
    struct tm *ltm;
    char *curTime;
    /*自1970年1月1日起以秒为单位设置为今天的日期*/
    Seconds_set (1412800000);// 2014年10月8日星期三20:26:40 GMT */
    t = seconds_get();
    /*
    *使用覆盖时间()函数获取当前时间。
    *使用标准 C RTS 库函数和从 time 返回的函数()。
    *假定 seconds_set()已按上述方式调用
    *
    T1 =时间(空);
    LTM = localtime (&T1);
    curTime =上升时间(LTM);
    System_printf ("time (GMT):%s\n"、curTime); 

    这是使用 SimpleLink 设置 RTC 时间的正确方法吗?  

    如何设置 RTC 唤醒警报? (直接设置 RTCCTL1寄存器)还是有更好的方法?

    感谢你的帮助!

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

    您好!

    从 powersleep 示例开始、您可以使用 driverlib 添加 RTC 功能。 您将注意到 powersleep.c 包含以下内容:

    #include 

    这包括您可能需要的所有头文件。 在以下步骤中、我们将创建一个使用内核和 driverlib 为 RTC 提供服务的硬件中断函数。

    1.在 main()之前在应用程序中应用以下内容:

    #include 
    
    void RTCHwiFxn (uintptr_t arg);
    
    const RTC_C_Calendar myCalendarTime ={
    0.seconds = 0、
    0.minutes = 30、
    .Hours = 10、
    .dayOfWeek = 3、
    每日 = 4、
    月 = 4、
    年份 = 2017、
    }; 

    2.将以下内容添加到* mainThread 的开头。 这使用 Hwi 模块来设置 RTC 和中断服务例程:

    Hwi_handle myHwi;
    Hwi_Params HwiParams;
    
    /*设置 RTC */
    RTC_C_initCalendar (&myCalendarTime、RTC_C_format_binary);
    
    /*设置 Hwi */
    Hwi_Params_init (hwiParams);
    myHwi = Hwi_create (INT_RTC_C、RTCHwiFxn、&hwiParams、NULL);
    
    if (myHwi = NULL){
    /*失败*/
    while (1);
    }
    
    /*(可选)可以设置特定时间的报警条件
    RTC_C_setCalendarAlarm (myCalendarTime.Minutes + 2、
    myCalendarTime.Hours、
    myCalendarTime.dayOfWeek、
    myCalendarTime.dayofmonth);
    RTC_C_enableInterrupt (RTC_C_CLOCK_ALARM_INTERRUPT);
    *
    
    /*每分钟中断更改一次*/
    RTC_C_setCalendarEvent (RTC_C_CALENDAREVENT_INTOTECHANGE);
    RTC_C_enableInterrupt (RTC_C_TIME_EVENT_INTERRUPT);
    
    /*开始时钟*/
    RTC_C_startClock(); 

    3. 将以下函数添加到代码中。 这将用作 RTC 的中断服务例程。

    void RTCHwiFxn (uintptr_t arg)
    {
    RTC_C_clearInterruptFlag (RTC_C_TIME_EVENT_INTERRUPT);
    GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_ON);
    } 

    4. 将此行添加到现有 notifyFxn()中。

    GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF); 

    Derrick

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

    我唯一能说的就是非常感谢!!!

    它的工作非常完美!

    SimpleLink 代码非常清晰易懂。

    此致

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

    你好 Derrick!

    在深入测试之后、我发现 RTC 在一个小时内不准确、与实际时间相比有10s 的漂移。

    因为我看到32KHz 晶振不工作。 我不知道这是否与低功耗模式连接。

    您能不能帮助我如何使 RTC 时间稳定?

    谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此后续问题类似于 e2e.ti.com/.../2168287的 DUP。 我将结束这个线程、因为 MSP 论坛是回答 RTC 漂移问题的最佳场所(看起来有正在进行的通信)。