RTC闹钟的中断处理方法以及程序设计
来源:互联网 发布:空间网络音乐链接 编辑:程序博客网 时间:2024/06/05 16:09
rtc时钟系统里还有闹钟发生器,通过程序员自己设置,每隔一段时间就产生中断程序一次。
本章使用的寄存器地址在上一章已经说明过(基地址加偏移量)
RTC时钟的闹钟需要借助中断的方法来完成,中断的使用方面以及相应的函数设置我们在以前的文章中已经详细地说过,这里不再赘述。
//alarm使能函数,使能alarm
void rtc_set_alarm(void)
{
(*((volatile unsigned long *)(RTC_BASE + 0x54))) = num_to_bcd(14);
//RTCALM有很多使能位,可以使能年月日时分秒等情况
//bit6是全局使能位 bit1是“分”使能位
//设置RTCALM的各个位。
(*((volatile unsigned long *)(RTC_BASE + 0x50))) |= 1<<0;
(*((volatile unsigned long *)(RTC_BASE + 0x50))) |= 1<<6;
}
void isr_rtc_alarm(void)
{
static int a = 0;
printf("rtc alarm, a = %d...", a++);
(*((volatile unsigned long *)(RTC_BASE + 0x30))) |= (1<<1);
//清除中断处理函数的地址
VIC0ADDR = 0;
VIC1ADDR = 0;
VIC2ADDR = 0;
VIC3ADDR = 0;
}
int main(void)
{
uart_init();
system_init_exception();
rtc_set_alarm();
intc_setvectaddr(NUM_RTC_ALARM, isr_rtc_alarm);
intc_enable(NUM_RTC_ALARM);
struct rtc_time aa;
while (1)
{
rtc_get_time(&aa);
printf("The time is: %d.",aa.second);
volatile int i, j;
for (i=0; i<10000; i++)
for (j=0; j<1000; j++);
printf("-------");
}
}
这个时间设定的意义是,在每分钟的第14秒产生一次闹钟中断,只借助硬件的话,只能设置一个闹钟,如果想设置多个闹钟,也可以通过软件的方式来设置。
本章使用的寄存器地址在上一章已经说明过(基地址加偏移量)
RTC时钟的闹钟需要借助中断的方法来完成,中断的使用方面以及相应的函数设置我们在以前的文章中已经详细地说过,这里不再赘述。
//alarm使能函数,使能alarm
void rtc_set_alarm(void)
{
(*((volatile unsigned long *)(RTC_BASE + 0x54))) = num_to_bcd(14);
//RTCALM有很多使能位,可以使能年月日时分秒等情况
//bit6是全局使能位 bit1是“分”使能位
//设置RTCALM的各个位。
(*((volatile unsigned long *)(RTC_BASE + 0x50))) |= 1<<0;
(*((volatile unsigned long *)(RTC_BASE + 0x50))) |= 1<<6;
}
void isr_rtc_alarm(void)
{
static int a = 0;
printf("rtc alarm, a = %d...", a++);
(*((volatile unsigned long *)(RTC_BASE + 0x30))) |= (1<<1);
//清除中断处理函数的地址
VIC0ADDR = 0;
VIC1ADDR = 0;
VIC2ADDR = 0;
VIC3ADDR = 0;
}
int main(void)
{
uart_init();
system_init_exception();
rtc_set_alarm();
intc_setvectaddr(NUM_RTC_ALARM, isr_rtc_alarm);
intc_enable(NUM_RTC_ALARM);
struct rtc_time aa;
while (1)
{
rtc_get_time(&aa);
printf("The time is: %d.",aa.second);
volatile int i, j;
for (i=0; i<10000; i++)
for (j=0; j<1000; j++);
printf("-------");
}
}
这个时间设定的意义是,在每分钟的第14秒产生一次闹钟中断,只借助硬件的话,只能设置一个闹钟,如果想设置多个闹钟,也可以通过软件的方式来设置。
0 0
- RTC闹钟的中断处理方法以及程序设计
- stm32的RTC闹钟
- 中断处理之RTC
- mini2440裸机试炼之—RTC闹钟中断,节拍中断
- RTC闹钟和ELAPSED_REALTIME最大的差别
- RX8025 RTC闹钟唤醒Alarm_D的初始化
- ARM的SWI异常中断处理程序设计
- 中断分析以及程序设计
- Linux中断处理程序设计
- stm32的低功耗模式和RTC闹钟唤醒
- 设定闹钟的方法
- RTC中断碰到的一个小问题
- 中断处理之RTC——陈莉君老师(经典)
- android 取消RTC闹钟程序
- ARM Linux对中断的处理--中断注册方法
- arm7 LPC2103 中断的处理方法
- 串口中断接收的常见处理方法
- CC2530中断处理方法
- 线程间通信-方法join的使用
- 图片传输(APP端将图片传至服务器端存储)
- mysql安装与配置(转)
- HDU-5038 Grade (2014亚洲区北京站网络赛)
- Linux下访问MySQL的数据库权限不够的问题
- RTC闹钟的中断处理方法以及程序设计
- Canny边缘检测算子原理
- 思维的陷阱
- Eclipse
- 操作系统内存管理
- pyqt4文档阅读(10):QValidator
- POJ 1961 Period (KMP)
- R语言从基础入门到提高(一)Intro to basics(基础介绍)
- Android布局_View属性