ZHCU876Z July 2001 – October 2023 SM320F28335-EP
编译器 RTS 库在 time.h
中支持两个低级别时间相关标准 C 函数:
clock_t clock(void);
time_t time(time_t *timer);
time() 函数会返回挂钟时间。clock() 函数会返回自程序开始执行以来经过的时钟周期数;它与挂钟时间完全无关。
这些函数的默认实现要求程序在 CCS 或支持 CIO 系统调用协议的类似工具下运行。如果 CIO 不可用,而您需要使用这些函数中的其中一个,则您必须提供针对相应函数的自有定义。
clock() 函数会返回自程序开始执行以来经过的时钟周期数。这类信息可能存在于器件内的寄存器中,但位置会因平台而异。编译器的 RTS 库提供了采用 CIO 系统调用协议来与 CCS 进行通信的实现方案,这将确定如何为此器件计算正确的值。
如果 CCS 不可用,您必须提供一种有关 clock() 函数的实现方案来从器件中的相应位置收集时钟周期信息。
time() 函数会返回从 epoch 到现在的真实时间(以秒为单位)。
很多嵌入式系统中没有内部现实时钟,因此程序需要通过外部来源发现时间。编译器的 RTS 库提供了一种实现方案,利用 CIO 系统调用协议来与 CCS 进行通信,从而提供真实时间。
如果 CCS 不可用,您必须提供一种有关 time() 函数的实现方案来从一些其他来源查找时间。如果程序在操作系统中运行,该操作系统应该提供一种有关 time() 的实现方案。
time() 函数会返回从 epoch 到现在的秒数。在 POSIX 系统中,epoch 定义为自 1970 年 1 月 1 日 UTC 午夜零点到现在的秒数。不过,C 标准不需要任何特定的 epoch,并且 time() 的默认 TI 版本使用不同的 epoch:1900 年 1 月 1 日 UTC-6 (CST) 午夜零点。例外,默认的 TI time_t 类型为 32 位类型,而 POSIX 系统通常使用 64 位 time_t 类型。
RTS 库提供了一种有关 time() 函数的非默认实现方案,在该实现中,epoch 为 1970 年 1 月 1 日 UTC 午夜零点,time_t 类型为 64 位,也就是 __type64_t 的 typedef。
如果您的代码采用原始时间值,则您可以通过以下方式之一来处理 epoch 问题:
__time32_t | __time64_t | |
---|---|---|
Epoch (start) | 1900 年 1 月 1 日 CST-0600 | 1970 年 1 月 1 日 UTC-0000 |
结束日期 | 2036 年 2 月 7 日 06:28:14 | 292277026596 年 |
符号 | 无符号,因此不能表示 epoch 之前的日期。 | 带符号,因此可以表示 epoch 之前的日期。 |