- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于ARM的嵌入式系统接口技术 报警中断 很多时候会用到时间报警功能(闹钟),到规定时间完成规定的动作等。可以在RTC中设定在某个时间产生中断,该功能可通过报警中断来实现。 RTC中用于报警中断的寄存器有报警控制寄存器和报警数据寄存器组。当未屏蔽的报警时间寄存器和对应的时间计数器计数值都相匹配时,就产生报警中断,且输出一个约为1.8V的报警输出信号。 通过设置报警控制寄存器即可设定报警中断的产生时刻。 基于ARM的嵌入式系统接口技术 报警控制寄存器(RTCALM) 符号 位 描述 初始状态 保留 [7] 保留 0 ALMEN [6] 时钟告警总使能/禁止 0:禁止 1:使能 0 YEAREN [5] 年时钟告警使能/禁止 0:禁止 1:使能 0 MONREN [4] 月时钟告警使能/禁止 0:禁止 1:使能 0 DAYEN [3] 日时钟告警使能/禁止 0:禁止 1:使能 0 HOUREN [2] 时时钟告警使能/禁止 0:禁止 1:使能 0 MINEN [1] 分时钟告警使能/禁止 0:禁止 1:使能 0 SECEN [0] 秒时钟告警使能/禁止 0:禁止 1:使能 0 基于ARM的嵌入式系统接口技术 报警控制寄存器(RTCALM) 报警控制寄存器(RTCALM)用来确定报警功能是否使能以及各报警时间寄存器是否使能(被屏蔽)。RTCALM寄存器是可读/写的 如设置秒时钟告警,则需要使能总告警位和秒时钟告警位。 要设置报警时间为每天的9时35分05秒,即相应的时分秒各位都要匹配时报警,应该如下设置。 //先设置报警时间,即设置相应的报警数据寄存器的值 rRTCALM = 0x41;//0x41表示告警总使能bit[6]和使能秒时钟告警bit[0] //先设置报警时间,即设置相应的报警数据寄存器的值 rRTCALM = 0x47;//0x47表示告警总使能bit[6]=1并使能bit[2:0]=111 基于ARM的嵌入式系统接口技术 报警时间数据寄存器 基于ARM的嵌入式系统接口技术 报警秒数据寄存器(ALMSEC)(其余略) 符号 位 描述 初始状态 reserved [7] 保留 0 SECDATA [6:4] 报警定时器秒数据的十位数BCD码值,范围为0~5 000 [3:0] 报警定时器秒数据的个位BCD码值,范围为0~9 0000 如设置报警时间为每天的9时35分05秒,其中秒报警时间为05秒,则可以如下设置。 rALMSEC = 0x05; 基于ARM的嵌入式系统接口技术 例题2 设置报警时间为每天的9时35分05秒,可以如下设置。 rRTCCON = 0x01; //读写使能 //以下六行设置各个报警数据寄存器的值 rALMSEC = 0x05; rALMMIN = 0x35; rALMHOUR = 0x09; rALMDAY = 0x01; rALMMON = 0x09; rALMYEAR = 0x2015; rRTCALM = 0x47; //报警总使能、时、分、秒报警使能 rRTCCON = 0x00; //禁止读写使能 基于ARM的嵌入式系统接口技术 例题 设置在每分钟的第5秒时报时,报时时间到时四只发光二极管闪烁三次。 报警功能也是中断,因此需要进行中断处理。在主函数外部,定义中断处理函数,报警中断的中断号命名为VIC0的第28号中断源(芯片手册562页)。 /* 定义中断处理函数 */ void irqhandler(void); 首先包含寄存器地址定义的头文件。 在此头文件中有对RTC中用到的寄存器的定义,例如 #define rRTCCON (*(volatile unsigned char *)0xE2800040) //RTC control #define rTICNT (*(volatile unsigned char *)0xE2800044) //Tick time count #define rRTCALM (*(volatile unsigned char *)0xE2800050) //RTC alarm control #define rALMSEC (*(volatile unsigned char *)0xE2800054) //Alarm second …… */ 在程序中,要设置的时间,用数组(年只存储后面两位)或结构体(可以表示不同的数据类型)来定义此参数更加方便。 ① 定义一个结构体类型rtc_date。 typedef struct ST_DATE //定义结构体类型,该类型命名为rtc_date { short year; // 年,定义为short类型,可以存储4
文档评论(0)