实时时钟参考程序_第1页
实时时钟参考程序_第2页
实时时钟参考程序_第3页
实时时钟参考程序_第4页
实时时钟参考程序_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.6实时时钟实验实1验目的了解实时时钟在嵌入式系统中的作用;掌握实时时钟的使用。实2验内容编程实现实时时钟功能,每秒显示实时时钟;编程实现实时时钟告警功能。预3备知识.了解ADT集成开发环境的基本功能;.学习S3c24X0的实时时钟模块的使用。实4验设备.硬件:JXARM9-2440教学实验箱、PC机;.软件:PC机操作系统Windows98(2000、XP)口ADTIDE开发环境。基5础知识实时时钟在嵌入式系统中的作用在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、月、日;即使在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的晶振。S3c24X0的实时时钟单元下图为S3c24X0的实时时钟框图。它具有以下特点:

4)具有独立的电源输入;5)提供毫秒级时钟中断,该中断可以用于作为嵌入式操作系统的内核时钟。S3c24X0的实时时钟寄存器控制寄存器表5-16控制寄存器寄存器地址读/写状态描述复位值RTCCON0x57000040R/W实时时钟控制寄存器0x0RTCCON位描述复位值CLKRST[3]实时时钟计数器复位0时复位皿复位0CNTSEL[2]BCD计数选择,将计数器设置为BCD模式0时择BCD模式1D000CLKSEL[1]BCD时钟选择0时输入时钟进行1/215分频1口保留0RTCEN[0]RTC读写使能0时止田使能0告警控制寄存器

表5-17告警控制寄存器寄存器地址读/写状态描述复位值RTCALM0x57000050R/W告警控制寄存器0x00RTCALM位描述复位值Reserved[7]保留0ALMEN[6]时钟告警总使能/禁止0口禁止1口使能0YEAREN[5]年时钟告警使能/禁止0口禁止1口使能0MONREN[4]月时钟告警使能/禁止0口禁止1口使能0DAYEN[3]日时钟告警使能/禁止0口禁止1口使能0HOUREN[2]时时钟告警使能/禁止0口禁止1口使能0MINEN[1]分时钟告警使能/禁止0口禁止1口使能0SECEN[0]秒时钟告警使能/禁止0口禁止1口使能0实时时钟计数器表5-18实时时钟计数器寄存器地址读写描述复位值TICNT0x57000044R/W实时时钟计数器0x00000000TICNT位描述复位值TICKINTENABLE[7]中断使能/禁止0口禁止1口使能0TICKTIMECOUNT[6:0]实时时钟计数器0000000告警时间寄存器包括年、月、日、时、分、秒。它们都以BCD包括年、月、日、时、分、秒。它们都以BCD的格式表示,地址见下表:表5-19告警时间寄存器寄存器地址读/写状态描述复位值ALMSEC0x57000054R/W秒时钟告警值0x00ALMMIN0x57000058R/W分时钟告警值0x00ALMHOUR0x5700005cR/W时时钟告警值0x00ALMDAY0x57000060R/W日时钟告警值0x00ALMMON0x57000064R/W月时钟告警值0x00ALMYEAR0x57000068R/W年时钟告警值0x00实时时钟寄存器包括年、月、日、时、分、秒。它们都以BCD包括年、月、日、时、分、秒。它们都以BCD的格式表示,地址见下表:表表5-20实时时钟寄存器寄存器地址读/写状态描述复位值BCDSEC0x57000070R/W秒时钟当前值不定BCDMIN0x57000074R/W分时钟当前值不定BCDHOUR0x57000078R/W时时钟当前值不定BCDDAY0x5700007cR/W日时钟当前值不定BCDDATE0x57000080R/W星期值当前值不定BCDMON0x57000084R/W月时钟当前值不定BCDYEAR0x57000088R/W年时钟当前值不定注意事项:.以上各寄存器都只能以字节模式进行读写操作;.当系统使用BIG-ENDIAN模式时,各寄存器对应的地址为会有所改变,具体值请参考S3c44B0X的数据手册。4.实验参考代码及说明:/*包含文件*/#include"2410addr.h"#include"2410lib.h"#include"2410RTC.h"#include"interrupt.h"TOC\o"1-5"\h\z/*表示日期、时间的数据结构*/typedefstructST_DATE{shortyear;//年charmon;//月charday;//日charweek_day;//星期charhour;//时charmin;//分charsec;//秒}st_date;/*全局变量*/intled_index=0;intext0_count=0;/*functions*/voidrtc_tick_isr(void);voidrtc_int_isr(void);//Functionname:rtc_set_date//Description:修改实时时钟当前时间、日期//Returntype:void//Argument:p_date,待设置的日期voidrtc_set_date(st_date*p_date){rRTCCON=0x01;rBCDYEAR=p_date->year;rBCDMON=p_date->mon;rBCDDAY=p_date->day;rBCDDATE=p_date->week_day;rBCDHOUR=p_date->hour;rBCDMIN=p_date->min;rBCDSEC=p_date->sec;rRTCCON=0x00;}//Functionname//Description//Functionname//Description//Returntype//Argument:rtc_get_date:获取实时时钟当前时间、日期:void:p_date,返回日期的指针voidrtc_get_date(st_date*p_date){rRTCCON=0x01;p_date->year=rBCDYEAR;p_date->mon=rBCDMONp_date->day=rBCDDAYp_date->week_day=rBCDDATE;p_date->hour=rBCDHOUR;p_date->min=rBCDMIN;p_date->min=rBCDMIN;p_date->sec=rBCDSEC;rRTccON=0x00;//Functionname://Functionname:rtctickinit//Description:初始化S3c2410的//Description:初始化S3c2410的TICKODO//Returntype:void//Argument:tick,设置的TICKDO(时钟滴答的周期为(1+tick)/128秒)voidrtc_tick_init(chartick)Irq_Request(IRQ_TICK,rtc_tick_isr);rRTCCON=rRTCCON=0x0;XTAL[1],RTCControldisable[0]XTAL[1],RTCControldisable[0]rTICNT=(tick&0x7f)|0x80;/*TICK中断使能,周期为(1+tick)/128rTICNT=(tick&0x7f)|0x80;Irq_Enable(IRQ_TICK);//Functionname:rtcalarmset//Functionname:rtcalarmset//Description:设置S3c2410的告警时间以及方式//Returntype//Description:设置S3c2410的告警时间以及方式//Returntype:void//Argument:p_date,告警的时间//mode,告警模式//voidrtc_alarm_set(st_date*p_date,unsignedcharmode)Irq_Request(IRQ_RTC,rtc_int_isr);rRTCCON=0x01;rALMYEAR=p_date->year;/*/*中断初始化*/rALMMON=p_date->mon;rALMDATE=p_date->day;rALMHOUR=p_date->hour;rALMMIN=p_date->min;rALMSEC=p_date->sec;rRTCALM=mode;rRTCCON=0x00;Irq_Enable(IRQ_RTC);}///Functionname:Main//Description:JXARM9-2440实时时钟实验主程序//完成功能://时钟滴答:每秒钟刷新数码管显示//设置当前日期、时间//动态刷新当前日期、时间,通过串口打印出来//时间告警功能:每分钟的第5秒告警,并进行跑马灯显示//Returntype:void//Argument:voidvoidMain(void){intold_index;st_datem_date;/*配置系统时钟*/ChangeClockDivider(2,1);U32mpll_val=0;mpll_val=(92<<12)|(1<<4)|(1);ChangeMPllValue((mpll_val>>12)&0xff,(mpll_val>>4)&0x3f,mpll_val&3);/*/*每隔一秒更新一次数据*/Isr_Init();/*初始化串口*/Uart_Init(0,115200);Uart_Select(0);/*打印提示信息*/Uart_Printf("\n---实时时钟测试程序---\n");(115200,8,N,1)\n");Uart_Printf("\n请将UART0与PC串口进行连接,然后启动超级终端程序(115200,8,N,1)\n");Uart_Printf("\n实时时钟测试开始\n");/*采用BCD编码,如2004年需要设置的值为m_date.year=0x2000+0x04;m_date.mon=0x03;m_date.day=0x02;m_date.week_day=0x02;m_date.hour=0x15;m_date.min=0x40;m_date.sec=0x00;0x2004*/1/*修改当前日期和时间*/rtc_set_date(&m_date);m_date.sec=0x05;/*设置告警的时间及方式,0x41表示使能rtc_alarm_set(&m_date,0x41);RTC告警,以及使能秒时钟告警*/rtc_tick_init(127);old_index=led_index;Uart_Printf("\r\n\r\n");while(1){if(old_index!=led_index){rtc_get_date(&m_date);old_index=led_index;Uart_Printf(/*时钟数据为BCDDOO,以16进制显示*/"\b\b\b\b\b\b\b\b%02x:%02x:%02x",m_date.hour,m_date.min,m_date.sec);}};}//Functionname:rtc_tick_isr//Description//Returntype//Description//Returntype//Argument:int:voidvoidrtc_tick_isr(void){Irq_Clear(IRQ_TICK);/*清除TICK中断*/led_index++;}//Functionname:r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论