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.

[参考译文] TM4C129XNCZAD:我想在 tn4c129XNCZAD 中实现 RTC

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1504152/tm4c129xnczad-i-want-to-implement-rtc-in-tn4c129xnczad

器件型号:TM4C129XNCZAD
Thread 中讨论的其他器件:EK-TM4C1294XL

工具/软件:

您好:

我们使用 的是 TM4C129XNCZADI3R 器件型号。 我 需要 RTC 参数。 我有最新的软件包295但无法找到 rtc.h 文件.

它是否具有内置 RTC?

void Hibernate_RTC_Init (void)


//启用休眠模块
SysCtlPeripheralEnable (SYSCTL_PERIPH_HIBERNATE);
while (!SysCtlPeripheralReady (SYSCTL_PERIPH_HIBERNATE));

//启用对休眠模块的访问
HibernateEnableExpClk (SysCtlClockGet ());

//启用 RTC 和来自外部振荡器的时钟
HibernateClockConfig (HIBERNATE_OSC_LOWDRIVE);

//等待振荡器稳定
SysCtlDelay (SysCtlClockGet ()/ 3);//~1秒延迟

//启用 RTC 模式
HibernateRTCSEnable();

//如果你想重置计数器
HibernateRTCSet(0);

}

//********************************************************************************************************************

//将 RTC 设置为特定时间戳(例如 Unix 时间)
void SetRTCTime (uint32_t timestamp){
HibernateRTCSet (时间戳);
}

//读取当前时间
uint32_t GetRTCTime (void){
返回 HibernateRTCGet();
}

 

CURRENT_TIME= GetRTCTime();

它 始终为0。 是否需要执行任何其他操作?

晶体正确连接并在示波器上进行检查

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

    您好、

     我将在今天晚些时候回复您、因为我目前正在度假。 RTC 是休眠模块的一部分。 请参考有关如何设置 RTC 计数器的休眠示例。

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

    您好、

     您是否能够在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hiberate 或 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hiberate_calendar 中引用休眠示例。 这两个示例使用 RTC 从休眠模式唤醒。 以下是在五秒内设置 RTC 以进行唤醒的代码片段。  

    int
    main(void)
    {
        uint32_t ui32Status;
    
        //
        // Run from the PLL at 120 MHz.
        // Note: SYSCTL_CFG_VCO_240 is a new setting provided in TivaWare 2.2.x and
        // later to better reflect the actual VCO speed due to SYSCTL#22.
        //
        g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
                                                 SYSCTL_OSC_MAIN |
                                                 SYSCTL_USE_PLL |
                                                 SYSCTL_CFG_VCO_240), 120000000);
    
        //
        // Enable the hibernate module.
        //
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
    
        //
        // Read and clear any status bits that might have been set since
        // last clearing them.
        //
        if(MAP_HibernateIsActive())
        {
            //
            // Read the status bits to see what caused the wake.
            //
            ui32Status = MAP_HibernateIntStatus(0);
            MAP_HibernateIntClear(ui32Status);
        }
    
        //
        // Set up the serial console to use for displaying messages.
        //
        ConfigureUART();
        UARTprintf("Hibernation with RTC Wake Example.\n");
    
        //
        // Enable the GPIO peripheral for on-board LEDs.
        //
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
    
        //
        // Configure the GPIOs for LEDs D1 and D2.
        //
        MAP_GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_1 | GPIO_PIN_0);
    
        //
        // Enable the Hibernation module for operation.
        //
        MAP_HibernateEnableExpClk(0);
    
        //
        // Wait for 32.768kHz clock to stabilize.
        //
        while(!(HWREG(HIB_RIS) & HIB_RIS_WC));
    
        //
        // Configure the drive strength for the crystal.
        //
        MAP_HibernateClockConfig(HIBERNATE_OSC_LOWDRIVE);
    
        //
        // Enable the Hibernate module RTC mode.
        //
        MAP_HibernateRTCEnable();
    
        //
        // Load initial RTC value.
        //
        MAP_HibernateRTCSet(0);
    
        //
        // Set initial match value to trigger RTC after 5 seconds.
        //
        MAP_HibernateRTCMatchSet(0, 5);
    
        //
        // Enable RTC match interrupt.
        //
        MAP_HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0);
    
        //
        // Configure MCU interrupts.
        //
        MAP_IntEnable(INT_HIBERNATE_TM4C129);
    
        //
        // Enable MCU interrupts.
        //
        MAP_IntMasterEnable();
    
        //
        // Turn on LED D1.
        //
        MAP_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, GPIO_PIN_1);
    
        //
        // Enter Hibernation Mode.
        //
        UARTprintf("Entering Hiberation, waking in 5 seconds.\n");
        MAP_HibernateRequest();
    
        while(1)
        {
            //
            // Do nothing, Hibernate interrupt routine will handle the rest.
            //
        }
    }