ZHCUAU3J January 2018 – March 2024
编译器 RTS 库在 time.h
中支持两个低级别时间相关标准 C 函数:
clock_t clock(void);
clock() 函数会返回自程序开始执行以来经过的时钟周期数;它与挂钟时间完全无关。
time_t time(time_t *timer);
time() 函数会返回挂钟时间。
编译器安装程序的 /lib/src
目录中提供了时间相关和时钟相关的 RTS 库源文件。
这些函数的默认实现要求程序在 CCS 或支持 CIO 系统调用协议的类似工具下运行。如果 CIO 不可用,而您需要使用这些函数中的其中一个,则您必须提供针对相应函数的自有定义。
clock() 函数会返回自程序开始执行以来经过的时钟周期数。这类信息可能存在于某些器件上的寄存器中,但位置会因平台而异。编译器的 RTS 库提供了采用 CIO 系统调用协议来与 CCS 进行通信的实现方案,这将确定如何为此器件计算正确的值。
如果 CCS 不可用,您必须提供一种有关 clock() 函数的实现方案来从器件中的相应位置收集时钟周期信息。
time() 函数会返回从 epoch 到现在的真实时间(以秒为单位)。
很多嵌入式系统中没有内部现实时钟,因此程序需要通过外部来源发现时间。编译器的 RTS 库提供了一种实现方案,利用 CIO 系统调用协议来与 CCS 进行通信,从而提供真实时间。
如果 CCS 不可用,您必须提供一种有关 time() 函数的实现方案来从一些其他来源查找时间。如果程序在操作系统中运行,该操作系统应该提供一种有关 time() 的实现方案。
time() 函数会返回从 epoch 到现在的秒数。在 C7000 系统中,epoch 定义为自 1970 年 1 月 1 日 UTC 午夜零点到现在的秒数。
TI RTS 库不提供时区查询表。本地时区由类型为结构体 tz 的全局变量 _tz
指定,该变量在 RTS 库源代码的 tmzone.c
中定义。此结构体由 mktime()和 strftime() 函数使用。要更改本地时区,请为此结构体中的以下字段分配新值:
_tz.daylight
字段设置为 mktime() 函数的精确值,以分配给结构体 tm
成员 tm_isdst
。_tz.timezone
字段设置为有符号整数,表示 UTC 以西秒数。例如,中部标准时间 (UTC+6) 在 UTC 以西 21600 秒。为 UTC 以东的时区使用负值。_tz.tzname
字段设置为本地时区的缩写名称。此字符串由 strftime() 函数逐字用于 %Z 转换。例如,如果本地时区是中部标准时间,请为此字段使用“CST”。_tz.dstname
字段当前未被 RTS 库使用。