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.

[参考译文] TM4C1294NCPDT:在 Tiva C 中测量时间

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1586627/tm4c1294ncpdt-measure-time-in-tiva-c

器件型号: TM4C1294NCPDT

您好:

我必须测量以 usec 为单位的时间:

您好:

在下面的代码中、我应该如何将时钟转换为 usec?

时钟似乎未运行。 after=before。  

谢谢您、

Zvi Vered

int Diff;

ui32SysClock = SysCtlClockFreqSet (SYSCTL_XTAL_25MHZ | 
                                                          SYSCTL_OSC_MAIN | 
                                                          SYSCTL_PLL | 
                                                          SYSCTL_CFG_VCO_480), 120000000);
//ui32SysClock  = 120000000;

Before = SysCtlClockGet ();
SysCtlDelay (40);
After = SysCtlClockGet ();

Diff = After - Before;

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

     SysCtlClockGet () 返回系统时钟速率(以 Hz 为单位),因此连续调用不会改变。 [此外、Driverlib 用户指南 (SPMU298E) 第 26.2.2.3 节声明不能在 TM4C1294 上使用。]

    您需要一个按系统时钟速率计时的计数器。 SysTick 可能是一个不错的选择。 [参考 UG 第 28 节]。 这是一个 24 位向下计数器。

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

    您好 Bruce、

    感谢您的答复。

    您的意思是: ROM_SysTickValueGet ?

    一个节拍的时间是多少?

    ROM_SysTickPeriodGet 返回 1200000

    我最多要计数 15【秒】。  

    此致、

    ZVI  

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

    系统时钟速率下的 SysTick 计数(本例中为 120MHz)。 因为它只有 24 位、所以在它缠绕之前就会提供大约 140ms、这对于原始示例来说很好、但不能持续 15 秒。 [可以 (CLK_SRC=0) 在 PIOSC/4=Driverlib 下运行它、但 4MHz 似乎不提供该选项、那仍然只有 4 秒。]

    您可能需要在 32 位模式下使用其中一个通用计时器。 [参考数据表 (SPMS433B) 第 13 节和  Driverlib 用户指南 (SPMU298E) 第 29 节。] 将 Load 值设置为 0xFFFFFFFF 可提供多少自由运行的计数器。 即使没有预缩放、这也会给您大约 35 秒的时间跨度。

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

    您好 Bruce、

    非常感谢!