关闭

RTC闹钟的中断处理方法以及程序设计

标签: ARM cortex a
1449人阅读 评论(0) 收藏 举报
分类:
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秒产生一次闹钟中断,只借助硬件的话,只能设置一个闹钟,如果想设置多个闹钟,也可以通过软件的方式来设置。

0
0
查看评论

STM32_RTC闹钟

今天讲解“STM32F103  RTC闹钟”,说起“闹钟”大家肯定不会陌生,基本上我们每天都在接触。今天说的“RTC闹钟”就是我们现实生活中的闹钟,只是今天站在技术知识的角度来看待“闹钟”。由于这一阶段定位的是基础的知识,所以今天提供的软件例程也是相对简单一点的,但明白今天的知识,相信自己...
  • ybhuangfugui
  • ybhuangfugui
  • 2016-05-14 00:02
  • 5252

android系统中alarm驱动框架分析

专题一alarm 第一课、 1、 功能:一般用作闹钟 2、 工作流程: App->获取系统服务(alarm service)->返回特定类型的对象(Alarm Manager)-> 启动闹钟->定时时间到后通过广播通知app(也可以通过activity或...
  • gxlovelxx
  • gxlovelxx
  • 2016-12-22 15:24
  • 1300

关于STM32使用RTC唤醒停止模式的设置

工程中用到低功耗的控制,本来想使用待机模式,后来发现待机后所有IO口为高阻态,这样对于一些IO口控制的外设有些不妥,想过外部上拉一个电阻可是功耗不好控制放弃该方案选用停止模式。停止模式后IO口保持停止前的状态,但是不像待机模式那样可以轻松通过闹钟唤醒,只能通过中断线实现唤醒。为了实现RTC闹钟唤醒搜...
  • louyangyang91
  • louyangyang91
  • 2016-03-07 19:06
  • 9407

STM32_RTC_秒中断闹钟中断演示程序

  • 2011-09-30 11:40
  • 1.37MB
  • 下载

中断处理之RTC

Linux对中断的支持 在Linux中,中断处理程序看起来就是普普通通的C函数。只不过这些函数必须按照特定的类型声明,以便内核能够以标准的方式传递处理程序的信息,在其他方面,它们与一般的函数看起来别无二致。中断处理程序与其它内核函数的真正区别在于,中断处理程序是被内核调用来响应中断的,而它们运...
  • wdzxl198
  • wdzxl198
  • 2013-05-02 10:35
  • 3116

RTC实时时钟讲解及编程

RTC是实时时钟系统,也就是具体到年月日时分秒的时间。 RTC系统有自己独立的时钟源——一个32.768khz的晶振,内部有专门用来记录时间的寄存器。 时间寄存器有七个以及闹钟发生器。时间在寄存器里面存储是通过BCD码的形式,也就是说,如果要显示十进制的11时,必须写入0x11到寄存器。 所以...
  • tiao_god
  • tiao_god
  • 2016-08-28 14:07
  • 3071

STM32F3实时时钟RTC-闹钟和唤醒中…

STM32RTC使用步骤: 打开PWR时钟和Backup区数据访问 若使用外部低速时钟(LSE),打开LSE并等待起振 选择和打开RTC时钟,等待时钟同步 配置时间格式,分频系数等 根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块 根据需要配置和打开中断,其中 ...
  • Wind4study
  • Wind4study
  • 2016-11-27 19:53
  • 2489

mini2440裸机试炼之—RTC闹钟中断,节拍中断

RTC实现功能 RTC开节拍中断、闹钟中断。 节拍中断——串口输出时间 XXXX年XX月XX日XX时XX分XX秒 和 LED闪亮 闹钟中断——beep声 和 LED亮 5秒
  • muyang_ren
  • muyang_ren
  • 2014-07-02 01:11
  • 1958

Android RTC 自下往上浅析

1.首先搞清楚RTC在kernel内的作用: linux系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。 另一个时间是 “System clock”也叫内核...
  • crycheng
  • crycheng
  • 2012-07-30 16:23
  • 17203

Linux时间系统之RTC时间

Linux时间有两个,系统时间(Wall Time),RTC时间。 系统时间(WT):由Linux系统软件维持的时间,比如command date,获取到的就是系统时间。 RTC时间:这个时间来自我们设备上的RTC芯片,通过command hwclock 可以读取。
  • u013686019
  • u013686019
  • 2017-02-25 21:32
  • 2078
    个人资料
    • 访问:15559次
    • 积分:460
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档