这个mbed的RTC,需要有一个问题注意,就是mbed已经定义了tm结构。也就是说用户不用再定义什么时间的结构体了。
下面这个程序是每一秒打印一下时间,以秒为单位递增。
程序如下:
include "mbed.h"
Serial pc(USBTX,USBRX);
int main() {
tm t;
t.tm_sec = 00; // 0-59
t.tm_min = 9; // 0-59
t.tm_hour = 12; // 0-23
t.tm_mday = 21; // 1-31
t.tm_mon = 3; // 0-11
t.tm_year = 114; // year since 1900
// Set RTC time today
set_time(mktime(&t));
while(1) {
time_t seconds = time(NULL);
char day[16];
strftime(day, 16, "strftime:%Y/%m/%d %a ", localtime(&seconds));
pc.printf("%s ", day);
char time[16];
strftime(time, 16, "%H:%M:%S\n", localtime(&seconds));
pc.printf("%s ", time);
pc.printf("ctime:%s \n ", ctime(&seconds));
wait(1.0);
}
}
运行结果如下:
相关的函数即方法如下:
类名 | | | | time_t time(time_t *timer) | 返回当前的计数时间,返回值与timer相同,可以传入NULL,表示只需要返回值 | | | time_t mktime((struct tm *_timeptr)) | | struct tm* localtime((const time_t *_timer)) | | char *ctime((const time_t *_time)) | | size_t strftime((char *_s, size_t _maxsize, const char *_fmt, const struct tm *_t)) | |
|