PIC32 RTCC实时时钟和日历

发布者:bemaii最新更新时间:2015-01-08 来源: 51hei关键字: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模块设置
 
初始化RTCC
 
RtccInit();           //禁止中断,清除中断标志,关闭闹钟Alarm,锁写,开启RTCC ON
 
等待稳定开启RTCC
 
While(RtccGetClkStat()!=RTCC_CLK_ON);
 
写入RTCC初始值
 
RtccOpen(tm.l,da.l,Cal);              //写入初始时间,设置校准偏移cal
 
校准值CAL
 
CAL=( 理想频率(32,758)– 实际频率) * 60 = 每分钟误差时钟数
 
RtccSetCalibration(10);//每分钟加10时钟数
 
 
 
二.闹钟模块设置
 
闹钟时间设置
 
RtccSetAlarmTimeDate(atm.l,adt.l);
 
闹铃匹配周期        注意1
 
RtccSetAlarmRpt(RTCC_RPT_TEN_SEC);   //10s一次匹配
 
闹铃重复次数
 
RtccSetAlarmRptCount(5);           //每发生一次闹钟时间递减1即重复5+1次
 
是否需要无限重复闹铃
 
RtccChimeEnable();           //CHIME为1时rptcount能从0回到ff无限重复,反之
 
闹钟使能
 
RtccAlarmEnable();
 
 
 
三.中断模块设置
 
设置中断优先级,使能事件中断,系统中断使能(详见中断)
 
注  1:重复周期RPT即计时器与闹钟寄存器相匹配的周期。
 
   若在匹配周期内有闹钟时间,则中断信号在此发出。随后以此闹钟时间为基准延后一个匹配周期后
 
发出中断信号。
 
若在匹配周期内无闹钟时间,中断都将在匹配周期结束时发出,重复上面的情况。
 
         例如  现在时间2014年7月19日星期六,0:05: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 定时器与闹钟寄存器匹配时发生的闹钟事件。模块会根据AMASK位设置,与时间/ 日期寄存器的无掩码部分进行匹配。每个闹钟事件发生时,都能产生中断.
 
3:ARPT<7:0>:闹钟重复计数器值位每当发生闹钟事件时计数器就递减1。要提供无限重复闹钟,可以使用CHIME(RTCALRM<14>)位使能响铃功能。当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 second
 
RTCC_RPT_SEC,                      // repeat alarm every second
 
RTCC_RPT_TEN_SEC,            // repeat alarm every ten seconds
 
RTCC_RPT_MIN,                    // repeat alarm every minute
 
RTCC_RPT_TEN_MIN,     // repeat alarm every ten minutes
 
RTCC_RPT_HOUR,                 // repeat alarm every hour
 
RTCC_RPT_DAY,                // repeat alarm every day
 
RTCC_RPT_WEEK,                 // repeat alarm every week
 
RTCC_RPT_MON,                  // repeat alarm every month
 
RTCC_RPT_YEAR         // repeat alarm every year (except when configured for Feb 29th.)
 
 
 
例如
 
RTCC闹钟中断点亮led
 
#include
 
#pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
 
#pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled (SWDTEN Bit Controls))
 
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;
 
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.year=0x14;
 
dt.mon=0x07;
 
dt.mday=0x17;
 
dt.wday=0x04;
 
RtccOpen(tm.l,dt.l,0);//初时间22:40:30,14年7月17日星期4,校准偏移0
 
RtccGetTimeDate(&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  注意:1
 
RtccSetAlarmTimeDate(atm.l,adt.l);//设置闹钟时间
 
RtccAlarmEnable();//闹钟使能
 
mRTCCSetIntPriority(2);
 
mRTCCClearIntFlag();
 
mRTCCIntEnable(1);
 
INTEnableSystemMultiVectoredInt();
 
while(1)
 
{
 
if(Alarmflag==1)
 
{
 
RtccSetAlarmRpt(RTCC_RPT_HALF_SEC);//若触发闹钟则每半秒产生一中断
 
break;//跳出while
 
}
 
}
 
void __ISR(_RTCC_VECTOR,ipl2) hander(void)
 
{
 
 PORTBINV=(1<<9);
 
 Alarmflag=1;
 
 mRTCCClearIntFlag();
 
}
关键字:PIC32  RTCC  实时时钟  日历 引用地址:PIC32 RTCC实时时钟和日历

上一篇:PIC32中断及振荡器配置
下一篇:关于PIC中断

推荐阅读最新更新时间:2024-03-16 13:50

STM32F0xx_RTC实时时钟配置详细过程
Ⅰ、概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下。 STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。 STM32F0的RTC模块和F1的RTC模块最大区别在于F0模块中有“DATE”和“TIME”寄存器,也就是可以直接读取寄存器里面的值,而F1是秒计数寄存器的值,需要通过相关算法下才能得到时间的值。 本文提供的软件工程里面还包含一个BKP模块,主要是用于掉电保持RTC数值(第一次上电初始化RTC,后面就不用初始化)。例程是在第一次初始化RTC值为:2016年6月5日 周七 12
[单片机]
STM32F0xx_RTC<font color='red'>实时时钟</font>配置详细过程
STM32F10x_ RTC日历
Ⅰ、概述 接着上一篇文章来讲述关于RTC的计数功能,我们以实例RTC日历(读写年、月、日、星期、时、分、秒)来讲述该章节。 STM32F1系列芯片的RTC功能和其他系列(F0、F2、F4等)相比来说,功能要弱一点,原因在于F1系列的RTC日历功能需要我们通过软件进行处理(换算RTC计数值)才能真正实现RTC日历的功能,而其他系列芯片不用这么麻烦,可直接读取日历值。 该文和上一篇文章的区别:1、RTC时钟源选择LSE(外部低速时钟); 2、分频值是32768; 3、读写了RTC_CNT(计数值),用于RTC日历。 本文章提供的实例工程“STM32F10x_RTC日历(LSE)”,其实验效果是: 主函数间隔0.5秒LE
[单片机]
STM32F10x_ RTC<font color='red'>日历</font>
MIPS架构下PIC32单片机的UART通信
1 PIC32系列单片机简介 PIC32系列单片机是Microchip Technology Inc.(美国微芯科技公司)推出的高性能32位单片机,它是以MIPS32架构为基础设计的。目前推出的PIC32MX3XX分支为通用型,PIC32MX4XX分支带有USB功能,PIC32MX5XX分支带有USB和CAN功能,PIC32MX6XX分支带有USB和Ethernet功能,PICMX7XX分支则带有USB、CAN和Ethernet功能。PIC32系列单片机采用哈佛结构,带有5级流水线,工作频率最高80 MHz;具有高效指令架构、高性能硬件乘法器/累加器及多至8组32个内核寄存器,可实现1.56一款DMIPS/MHz的运行速度。
[单片机]
PCF8563实时时钟/日历芯片介绍
概述 PCF8563是一款低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动增加。 特性 低工作电流:典型值为0.25μA(VDD=3.0V,Tamb=25 ℃时); 世纪标志; 大工作电压范围:1.0~5.5V; 低休眠电流;典型值为0.25μA (VDD=3.0V, Tamb=25 ℃); 400KHz 的I2C总线接口(VDD=1.8~5.5V 时); 可编程时钟输出频率为:32.768KHz,1024Hz,32Hz,1Hz; 报警和定时器; 掉电
[单片机]
PCF8563<font color='red'>实时时钟</font>/<font color='red'>日历</font>芯片介绍
实时时钟电路的原理及应用
1 引言   现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。 2 DS1302的结构及工作原理   DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的
[电源管理]
PIC单片机上实时时钟PCF8563测试程序
..............................PCF8563测试程序主函数............................ ............................................................................... ............................................................................... #include #include pcf8563.h #include IIC.h __CONFIG(FOSC_INTOSC&WDTE_OFF&MCLRE_OFF)
[单片机]
串行实时时钟芯片DSl302程序设计中的问题与对策
   摘 要: 指出了串行实时时钟芯片DSl302程序设计中几个易被疏忽而导致错误的问题,分析了问题的原因,并给出了解决问题的方法。     关键词: 串行时钟 程序设计 问题 原因 解决方法     美国Dallas公司推出的串行接口实时时钟芯片DSl302可对时钟芯片备份电池进行涓流充电。由于该芯片具有体积小、功耗低、接口容易、占用CPU I/O口线少等主要特点,故该芯片可作为实时时钟广泛应用于智能化仪器仪表中。     笔者在调试中发现在对DSl302编程中有几个问题易被疏忽而导致错误,现提供给读者参考。     1 读操作出现的错误     按照参考文献 的读操作程序框图和参考文献
[半导体设计/制造]
基于Proteus的51单片机实时时钟的仿真设计
  单片机技术应用于各行各业,是一种实用的智能型控制技术,单片机技术的发展极大地推动了电子、通信、计算机、机电一体化等行业的快速发展,成为当前教学和科研的热门技术。本文详细介绍一种新型的单片机仿真软件Proteus,利用它可以实现单片机教学中很多面向端口、外围设备扩展控制型实验的仿真,提高教学效果,进一步缩短教学与工程实际的距离。   1Proteus简介   ProteusISIS是英国Lacenterelec-tronics公司开发的电路分析与实物仿真软件,应用范围十分广泛,涉及PCB制版、Spice电路仿真、单片机仿真以及对ARM7/LPC2000的仿真。Proteus主要由ARESISIS两大模块构成,ARES主要用于
[单片机]
基于Proteus的51单片机<font color='red'>实时时钟</font>的仿真设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved