⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc_test.c

📁 RTC开发
💻 C
字号:
#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <linux/rtc.h>#include <sys/ioctl.h>///////////////////////////////////////////////////////////////////////////int	 main( void ){	int	 		fd, ret ;	struct    rtc_time	current_time,  alarm_time, alarm;	long			arg;	int			data;	int			i;	fd = open( "/dev/rtc", O_RDWR );	if( fd < 0) 	{		printf(" Can't open file /dev/rtc. \n");		return (-1);	}	/*  set  the  freq as 4HZ */	if( ioctl(fd, RTC_IRQP_SET, 4) < 0)	{		fprintf( stderr, "octl(RTC_IRQP_SET )" );		close ( fd );		exit(1);	}	/* Enable periodic interrupts */	if( ioctl(fd, RTC_PIE_ON, 0) < 0)	{		fprintf( stderr, "octl(RTC_PIE_ON )" );		close ( fd );		exit(1);	}	for( i=0; i<10; i++ )	{		if( read(fd, &data, sizeof(unsigned long)) < 0 )		{			fprintf(stderr, " read failure! \n");			close( fd );				exit( 1 );		}		printf("timer:------------ %d. \n", i);	}	/* Disable periodic interrupts */	ioctl( fd, RTC_PIE_OFF, 0 );	//	close ( fd );#if 1	//get current time	ret = ioctl( fd, RTC_RD_TIME, (struct rtc_time *)&current_time);	if( ret < 0 )		printf(" ioctl error! \n");		printf(" current time: %d-%d-%d %d:%d:%d \n", current_time.tm_year + 1900,		current_time.tm_mon+1, current_time.tm_mday, current_time.tm_hour,		current_time.tm_min, current_time.tm_sec );/*	printf(" Set new time (format xxxx-xx-xx 00:00:00):  \n ");//	scanf("%d-%d-%d %d:%d:%d \n", &current_time.tm_year, &current_time.tm_mon,//			 &current_time.tm_mday, &current_time.tm_hour,//			 &current_time.tm_min, &current_time.tm_sec );//	current_time.tm_year -= 1900;		current_time.tm_year = 2008 - 1900;	ret = ioctl( fd, RTC_SET_TIME, &current_time );*/	alarm_time.tm_year = 0;	alarm_time.tm_mon = 0 ;	alarm_time.tm_mday =  22;	alarm_time.tm_min = 22;	alarm_time.tm_hour = 14;	alarm_time.tm_sec = 10;	ret = ioctl( fd, RTC_ALM_SET, &alarm_time );	if( ret == -1 )	{		fprintf(stderr, "ioctl RTC_ALM_SET error!");		exit( 1 );	}	ret = ioctl( fd, RTC_ALM_READ, &alarm);	if( ret == -1 )	{		fprintf(stderr, "ioctl RTC_ALM_READ  error!");		exit( 1 );	}		printf(" alarm  time: %d-%d-%d %d:%d:%d \n", alarm.tm_year, alarm.tm_mon, alarm.tm_mday,					alarm.tm_hour, alarm.tm_min,alarm.tm_sec );			/* start the alarm on */	ret = ioctl( fd, RTC_AIE_ON,  0 );	if( ret == -1 )	{		fprintf(stderr, "ioctl RTC_ALM_SET error!");		exit( 1 );	}	ret = read( fd, &data, sizeof(unsigned long) );	if( ret == -1 )	{		fprintf(stderr, "read error ! \n");		exit ( 1 );	}		printf(" Okay! Alarm rang.! -----------\n");		close( fd );#endif	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -