linux下利用rtc 实现精确定时器

本文介绍了如何在Linux系统下利用RTC(Real Time Clock)设备创建精确定时器。通过打开RTC设备,设置频率,并进行循环读取操作,每次read间隔时间与设置的频率成倒数关系。
摘要由CSDN通过智能技术生成

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值