📄 rtc_test.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 *)¤t_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", ¤t_time.tm_year, ¤t_time.tm_mon,// ¤t_time.tm_mday, ¤t_time.tm_hour,// ¤t_time.tm_min, ¤t_time.tm_sec );// current_time.tm_year -= 1900; current_time.tm_year = 2008 - 1900; ret = ioctl( fd, RTC_SET_TIME, ¤t_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 + -