您的位置:首页 > 其它

RTC实时时钟

2017-12-08 15:33 260 查看
系统在断电后 需要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
4000
/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不能用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: