rtc是linux系统中的一个时间设备,可以open打开,通过ioctl设置频率,然后就可以进行循环read操作,每次read的耗时是(1/频率 单位:秒)
先上代码
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/rtc.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>
#define FREQ 2048
#define USEC_PER_SECOND 1000000
typedef int MILLSEC;
int g_fd = 0;
int calc_cnt(MILLSEC millseconds )
{
return (int)(millseconds * 1000.0 / USEC_PER_SECOND * FREQ + 0.5); //add 0.5 to meet precision in common
}
void rtc_open()
{
g_fd = open ("/dev/rtc", O_RDONLY);
if(g_fd < 0)
{
perror("open");
exit(errno);
}
printf("opened.\n");
}
void set_freq()
{
/*Set the freq*/
if(ioctl(g_fd, RTC_IRQP_SET, FREQ ) &l