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.

[参考译文] TM4C123GH6PM:RTC 模式中的定时器

Guru**** 2478765 points
Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/688494/tm4c123gh6pm-timer-in-rtc-mode

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

大家好、

我正在使用 EK-tm4c123gxl。 我想在 RTC 模式下使用计时器。 但是、当我阅读 TIvaware 外设驱动程序库的用户指南时、我发现 RTC 模式应该由32.768kHz 的外部时钟驱动。

因此、如果我将一个外部晶振连接到定时器输入的其中一个 CCP 管脚、或者有任何替代方法。  

提前感谢您。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您可以向 XOSC0引脚提供32kHz 振荡器晶体输入或外部时钟。 有关详细信息、请参阅 TM4C123GH6PM 数据表中的图7-2和图7-3。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿、Charles、

    我想在 RTC 模式下使用计时器。 在 TM4C123GH6PM 的休眠模块中 RTC 不可用。 顺便说一下、EK-TM4C123GXL 已经在 XOSC0引脚上提供了一个32.768kHz (Y1)的外部晶体振荡器。 我不认为该晶体会帮助我在 RTC 模式下配置计时器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Asif:

     很抱歉、我误解了您。

     在这种情况下、您将为 CCP0提供32kHz 时钟输入。

    11.3.2.2实时时钟模式
    在实时时钟(RTC)模式下、Timer A 和 Timer B 寄存器的连接版本
    配置为递增计数器。 当复位后第一次选择 RTC 模式时
    计数器加载的值为0x1。 所有后续加载的值都必须写入 GPTM
    定时器 n 间隔装载寄存器(GPTMTnILR)(见756页)。 如果 GPTMTnILR 寄存器被加载
    使用新值时、计数器开始在该值处计数、并在的固定值处回滚
    0xFFFFFFFF。 第711页的列出了在时装入定时器寄存器的值
    定时器被使能。
    表11-7. RTC 模式中启用定时器时的计数器值
    寄存器递减计数模式递增计数模式
    GPTMTnR 不可用0x1
    GPTMTnV 不可用0x1
    GPTMTnPS 不可用
    GPTMTnPV 不可用
    在 RTC 模式中、CCP0输入的输入时钟要求为32.768KHz。 时钟信号是
    然后分频为1Hz、并传递到计数器的输入端。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能澄清一下时钟与晶体吗? 我不认为可以按照最初的要求"将一个外部晶振连接到一个 CCP 管脚"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它需要是时钟输入(方波)、而不是晶体。  

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

    " 有没有其他选择。 "

    使用其他定时器之一生成32768Khz 信号并将其应用于 RTC 引脚。

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

    这真的是一个很好的选择。 我尝试了同样的操作、但未能在 RTC 模式下观察到预期的定时器行为。 以下是我的代码。 计时器不会触发中断、因为在调试模式下观察时、的值不会随着时间的推移而变化。


    uint8_t a=0;
    int main (void){
    SysCtlClockSet (SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN|SYSCTL_USE_PLL|SYSCTL_SYSDIV_5);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1);
    SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
    GPIOPinTypeTimer (GPIO_PORTF_BASE、GPIO_PIN_1);
    GPIOPinConfigure (GPIO_PF1_T0CCP1);
    TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAGE|TIMER_CFG_B_PWM);
    TimerLoadSet (TIMER0_BASE、TIMER_B、1220);
    TimerMatchSet (TIMER0_BASE、TIMER_B、610);
    TimerEnable (TIMER0_BASE、TIMER_B);

    SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);
    GPIOPinTypeTimer (GPIO_PORTF_BASE、GPIO_PIN_2);
    GPIOPinConfigure (GPIO_PF2_T1CCP0);
    TimerConfigure (Timer1_base、timer_CFG_RTC);
    TimerRTCEnable (Timer1_base);
    TimerLoadSet (Timer1_base、timer_A、5);
    TimerMatchSet (Timer1_base、timer_A、3);
    IntEnable (INT_TIMER1A);
    IntMasterEnable();
    TimerIntEnable (Timer1_base、timer_RTC_match);
    TimerEnable (Timer1_base、timer_A);

    while (1);


    空 Timer1_ISR (空)

    A++;
    TimerIntClear (Timer1_base、timer_RTC_match);

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


    您能在这方面帮助我吗? 正在等待您的回复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Asif:

     您的问题是否已解决?

     不完全确定您在 RTC 模式下尝试对计时器执行什么操作。 根据您的代码、您未正确配置 RTC 模式。 另请参阅 RTC 模式下计时器运行的数据表。 基本上、RTC 模式下的定时器在启用 RTC 模式后将以1的值开始。 当您将值5载入定时器间隔装载寄存 器时、您将把计数器预置为5、并且它将从5开始继续计数、直到它在0xFFFFFFFF 上回滚。 由于您将匹配值设置为3、因此它将永远不会匹配、直到计时器第二次滚动到3、这将需要很长时间。  

    请参阅以下数据表中有关 RTC 模式运行的摘录。

    11.3.2.2实时时钟模式

    实时时钟计时器模式

    在实时时钟(RTC)模式下、Timer A 和 Timer B 寄存器的连接版本

    配置为递增计数器。 当复位后第一次选择 RTC 模式时

    计数器加载的值为0x1。 所有后续加载的值都必须写入 GPTM

    定时器 n 间隔装载寄存器(GPTMTnILR)(见756页)。 如果 GPTMTnILR 寄存器被加载

    使用新值时、计数器开始在该值处计数、并在的固定值处回滚

    0xFFFFFFFF。 第711页的列出了在时装入定时器寄存器的值

    定时器被使能。

    在 RTC 模式中、CCP0输入的输入时钟要求为32.768KHz。 时钟信号是

    然后分频为1Hz、并传递到计数器的输入端。

    当软件写 GPTMCTL 寄存器的 TAEN 位时、计数器从开始递增计数

    其预加载值0x1。 当前计数值与中预加载的值匹配时

    GPTMTnMATCHR 寄存器中的值、GPTM 使 GPTMRIS 中的 RTCRIS 位有效并继续计数

    直到一个硬件复位、或者它被软件禁用(清零 TAEN 位)。 时间

    值达到终端计数、定时器翻转并从0x0继续递增计数。 如果

    RTC 中断在 GPTMIMR 寄存器中使能、GPTM 还将 GPTMMIS 和中的 RTCMIS 位置位

    生成控制器中断。 通过写 GPTMICR 的 RTCCINT 位可清除状态标志。