time(RTC)

基本的RTC时间以及系统时间戳,以及网络时间同步等

例程:demo/time

1. 时间相关类型

1.1. time_t

用整数来表示时间

typedef int32_t         time_t;

1.2. clock_t

用整数来表示时间

typedef long         clock_t;

2. 宏定义

2.1. CLOCKS_PER_SEC

系统clock转秒

#define CLOCKS_PER_SEC   (16384.0)

2.2. CLOCKS_PER_MSEC

系统clock转ms

#define CLOCKS_PER_MSEC  (16.384)

3. 结构体类型

3.1. tm

时间表示,包括年月日时分秒

typedef struct tm{
    int tm_sec;         /* 秒,范围从 0 到 59        */
    int tm_min;         /* 分,范围从 0 到 59        */
    int tm_hour;        /* 小时,范围从 0 到 23        */
    int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
    int tm_mon;         /* 月,范围从 0 到 11        */
    int tm_year;        /* 自 1900 年起的年数        */
    int tm_wday;        /* 一周中的第几天,范围从 0 到 6    */
    int tm_yday;        /* 一年中的第几天,范围从 0 到 365    */
    int tm_isdst;       /* 夏令时                */
 }tm;

3.2. timeval_t

时间,秒和微秒表示

typedef struct timeval {
    time_t    tv_sec;        // seconds
    long         tv_usec;       //microsecond
}timeval_t;

3.3. timezone_t

时区类型

typedef struct timezone {
    int tz_minuteswest;
    int tz_dsttime;
}timezone_t;

3.4. RTC_Time_t

RTC时间

typedef struct{
    uint16_t year;
    uint8_t  month;
    uint8_t  day;
    uint8_t  hour;
    uint8_t  minute;
    uint8_t  second;
    int8_t   timeZone;        // 时区小时数
    int8_t   timeZoneMinutes; // 时区不足小时的分钟数
                              // 所以 `时区 = timeZone+timeZoneMinutes/60`
}RTC_Time_t;

4. 功能函数

4.1. gettimeofday

int gettimeofday(timeval_t *tv, timezone_t *tz);
功能

获取系统时间,秒和微秒

参数
  • tv:时间信息,秒和微妙(实际上系统无法到微妙级,值是毫秒*1000得到)
  • tz:未实现,始终为NULL
返回值
  • 获取成功返回0,否则非0

4.2. TIME_SetIsAutoUpdateRtcTime

void TIME_SetIsAutoUpdateRtcTime(bool isAutoUpdate);
功能

附着到GPRS网络时,会获取到网络时间,如果设置为true,则将这个网络时间同步到RTC本地时间, 设置为false则不会同步

参数
  • isAutoUpdate:是否同步网络时间
返回值


4.3. TIME_IsAutoUpdateRtcTime

bool TIME_IsAutoUpdateRtcTime();
功能

查询当前配置,是否会自动从网路同步时间到本地时间

参数

返回值
  • 是否自动同步网络时间到本地,true:同步; false:不同步

4.4. TIME_SetRtcTime

bool TIME_SetRtcTime(RTC_Time_t* time);
功能

设置本地RTC时间

参数
  • time:时间
返回值
  • 是否设备成功

4.5. TIME_GetRtcTIme

bool TIME_GetRtcTIme(RTC_Time_t* time);
功能

获取本地RTC时间

参数
  • time:时间
返回值
  • 是否成功获取到时间

4.6. clock

clock_t clock(void);
功能

获取系统时钟,注意不是时间,需要转换,比如转换成秒需要除以16384,运算时注意是整数运算还是浮点运算

参数

返回值
  • 系统时钟

results matching ""

    No results matching ""