PIC32RTCC实时时钟和日历_第1页
PIC32RTCC实时时钟和日历_第2页
PIC32RTCC实时时钟和日历_第3页
PIC32RTCC实时时钟和日历_第4页
PIC32RTCC实时时钟和日历_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、PIC32 RTCC实时时钟和日历RTCC 实时时间和日历结构体定义:rtccDate dt;/ 日期结构体 dt.year 年 ,dt.mon月,dt.mday日,dt.wday星期几,dt.l整体rtccTime tm;时间结构体 tm.hour 时,tm.min分,tm.sec 秒,tm.l整体rtccDate adt;/ 闹钟时间结构体定义rtccTime atm;一.RTCC模块设置初始化 RTCCRtccInit(); / 禁止中断,清除中断标志,关闭闹钟Alarm ,锁写 , 开启 RTCC ON等待稳定开启 RTCC While(RtccGetClkStat()!=RTCC_C

2、LK_ON);写入RTCC初始值RtccOpen(tm.l,da.l,Cal); /写入初始时间,设置校准偏移 cal校准值 CALCAL=( 理想频率( 32,758 )– 实际频率 ) * 60 = 每 分钟误差时钟数每分钟加 10 时钟数RtccSetCalibration(10);/二 . 闹钟模块设置 闹钟时间设置RtccSetAlarmTimeDate(atm.l,adt.l); 闹铃匹配周期 注意 1 RtccSetAlarmRpt(RTCC_RPT_TEN_SEC); /10s 一次匹 配闹铃重复次数RtccSetAlarmRptCount(5); / 每发

3、生一次闹钟时间 递减 1 即重复 5+1 次 是否需要无限重复闹铃RtccChimeEnable(); /CHIME 为 1 时 rptcount 能从 0 回到 ff 无限重复,反之闹钟使能RtccAlarmEnable();三. 中断模块设置 设置中断优先级,使能事件中断,系统中断使能 (详见中 断)注1 :重复周期RPT即计时器与闹钟寄存器相匹配的周 期。若在匹配周期内有闹钟时间,则中断信号在此发出。随 后以此闹钟时间为基准延后一个匹配周期后发出中断信号。 若在匹配周期内无闹钟时间,中断都将在匹配周期结束 时发出,重复上面的情况。例如 现在时间 2014年 7月19日星期六, 0:05:

4、30设置闹钟时间 2014 年 7 月 19 日, 0:05: 59 设置半秒:则每半秒都会产生中断 设置 10 秒:前两 个中断在 40s , 50s,然后59s, 9s.设置 1 分:中断发生在 05:59, 06:59.设置 10分:中断在 05:59, 15: 59…2: RTCC器件可以产生一些中断,反映在RTCC定时器与闹钟寄存器匹配时发生的闹钟事件。模块会根据AMASI位设置,与时间/日期寄存器的无掩码部分进行 匹配。每个闹钟事件发生时,都能产生中断 .3: ARPT;:闹钟重复计数器值位每当发生闹钟事件时计 数器就递减 1。要提供无限重复闹钟,可以使用 C

5、HIME (RTCALRM); 位使能响铃功能。当CHIME = 1 时,在执行最后一次重复之后,ARPT将从0x00计满返回至0xFF,并继续无限计数,而不是禁止闹钟。CHIME = 1,计数器能从00返回到FF,即可连续响铃。CHIME = 0,计数器不能从 00返回到FF,响铃ARPT+1次RtccSetAlarmRpt(rtccRepeat rpt);/设定闹钟重复周RTCC_RPT_HALF_SEC, / repeat alarm every half secondRTCC_RPT_SEC, / repeat alarm every second RTCC_RPT_TEN_SEC,

6、/ repeat alarm every ten secondsRTCC_RPT_MIN, / repeat alarm every minute RTCC_RPT_TEN_MIN, / repeat alarm every ten minutesRTCC_RPT_HOUR, / repeat alarm every hourRTCC_RPT_DAY, / repeat alarm every dayRTCC_RPT_WEEK, / repeat alarm every week RTCC_RPT_MON, / repeat alarm every month RTCC_RPT_YEAR /

7、repeat alarm every year (except when configured for Feb 29th.) 例如RTCC闹钟中断点亮led#include#pragma config JTAGEN= OFF /JTAG Enable (JTAGDisabled)#pragma config FWDTEN = OFF / Watchdog TimerEnable (WDT Disabled (SWDTEN Bit Controls) rtccDate dt;/ 日期结构体 dt.year 年 ,dt.mon 月,dt.mday日,dt.wday星期几,dt.l整体 rtccTi

8、me tm; 时间结构体 tm.hour 时,tm.min分,tm.sec 秒,tm.l整体 rtccDate adt;/ 闹钟时间结构体定义 rtccTime atm;int Alarmflag=0;int main()PORTSetPinsDigitalOut(IOPORT_B,BIT_9); PORTSetBits(IOPORT_B,BIT_9);RtccInit();/ 实时时间日历初始化, RTCC ON while(RtccGetClkStat()!=RTCC_CLK_ON);/ 等待振荡器 稳定tm.hour=0x22;tm.min=0x40;tm.sec=0x30;dt.yea

9、r=0x14;dt.mon=0x07;dt.mday=0x17;dt.wday=0x04;RtccOpen(tm.l,dt.l,0);/初时间 22:40:30 ,14年 7月17 日星期 4,校准偏移 0RtccGetTimeDate(&tm,&dt);/ 获得实时时间和日期 atm.l=tm.l;adt.l=dt.l;atm.sec=tm.sec+0x20;/ 延后 20 秒RtccChimeEnable();/ 无限重复闹铃允许RtccSetAlarmRptCount(0);/ 闹铃重复次数 0+1,最高 256, CHIME=1时次数无限RtccSetAlarmRpt(RTCC_RPT_MIN);/ 闹钟匹配周期 1min、/. I、,G > :a注意: 1RtccSetAlarmTimeDate(atm.l,adt.l);/设置闹钟时间RtccAlarmEnable();/ 闹钟使能 mRTCCSetIntPriority(2);mRTCCClearIntFlag();mRTCCIntEnable(1);INTEnableSystemMultiVectoredInt();while(1)if(Alarmflag=1)RtccSetAlar

温馨提示

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

评论

0/150

提交评论