RTC简介
4412下的RTC控制器
BCD码
:用四位二进制数表示一位十进制数。
alarm
:闹铃功能。当设置的闹铃预期时间与实际时间相等,激发闹铃功能。
原理简述:晶振通过分频器分频后降到1Hz,即1秒输入信号1次,信号给秒寄存器做累加,当累加到60给分寄存器发信号让其累加,当分寄存器累加到60给小时寄存器发信号,其会累加,以此类推实现实时时钟。
RTC寄存器详解
用BCD数表示则000000100011表示023,四位二进制表示1位十进制数。没有千位,因为千位默认是2,有生之年不会改变没必要做一个寄存器浪费资源。023表示2023年。
RTC编程
#include "exynos_4412.h"
int main()
{
unsigned int OldSec = 0, NewSec = 0;
/*使能RTC控制*/
RTCCON = RTCCON | 1;
/*校准时间信息,十六进制正好也是对应4个二进制数,因此可以直接用十六进制表示bcd码*/
RTC.BCDYEAR = 0x023;
RTC.BCDMON = 0x12;
RTC.BCDDAY = 0x7;
RTC.BCDWEEK = 0x31;
RTC.BCDHOUR = 0x23;
RTC.BCDMIN = 0x59;
RTC.BCDSEC = 0x50;
/*禁止RTC控制*/
RTCCON = RTCCON & (~(1));
while(1)
{
//实现1秒打印1次
NewSec = RTC.BCDSEC;
if(OldSec != NewSec)
{
printf("20%x-%x-%x %x %x:%x:%x\n",RTC.BCDYEAR, RTC.BCDMON, RTC.BCDWEEK, RTC.BCDDAY, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC);
OldSec = NewSec;
}
}
return 0;
}