这个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)) | |
|