RTC实时时钟

来源:互联网 发布:大数据对学生的影响 编辑:程序博客网 时间:2024/06/11 21:08

系统在断电后 需要RTC电池计时间并在系统启动后 将这个时间给到系统时间。以此维护系统断电后与现实时间同步
一般RTC电池需要3V的电压 若经过扩展板连接 需要测量此电压是否给到主控芯片
然后date命令可以查看系统时间 date -s “2008-08-08 12:00:00”
可以通过这个命令修改系统时间与现实时间一致
如果设备上有hwclock这个命令 可以通过此命令修改和查看rtc时间
若没有这个命令 可以利用工具查看

#include <stdio.h>#include <stdlib.h>#include <linux/rtc.h>#include <sys/ioctl.h>#include <sys/time.h>#include <sys/types.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include <time.h>int main(int argc, char *argv[]){    int fd, retval;    struct rtc_time rtc_tm;    time_t timep;    struct tm *p;    fd = open(argv[1], O_RDONLY);    if (fd == -1) {        fprintf(stderr, "Usage:%s /dev/rtc..\n",argv[0]);        exit(errno);    }    /* Read the RTC time/date */    retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);    if (retval == -1) {        perror("ioctl");        exit(errno);    }    close(fd);    fprintf(stderr, "RTC date/time: %d/%d/%d %02d:%02d:%02d\n",            rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,            rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);    time(&timep);    p = gmtime(&timep);    fprintf(stderr, "OS date/time(UTC): %d/%d/%d %02d:%02d:%02d\n",            p->tm_mday, p->tm_mon + 1, p->tm_year + 1900,            p->tm_hour, p->tm_min, p->tm_sec);    p = localtime(&timep);    fprintf(stderr, "OS date/time(Local): %d/%d/%d %02d:%02d:%02d\n",            p->tm_mday, p->tm_mon + 1, p->tm_year + 1900,            p->tm_hour, p->tm_min, p->tm_sec);    return 0;}

这个是在网上找到的http://blog.csdn.net/u010703935/article/details/11728091
当然输入需要根据实际设备中rtc名称 其次这个其实我没用到 因为会提示ioctl不能用

原创粉丝点击