RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件;
与一般元器件使用的时钟源不同,RTC一般采用精度较高的晶振作为时钟源,因为它对精度要求较高;
一般RTC为了在主电源掉电时还可以工作,需要额外加电池供电。
有以下关键信息:
有以下寄存器:
需要关注的寄存器:
BCDXXX:
以BCDYEAR为例,它使用BCD码表示实际时间的年,只用了低12位;
比如 0000 0010 0010,即022,可以用来表示2022年;其它的BCDXXX寄存器同理。
RTCCON:
RTCCON寄存器只使用了低10位,1-9位都使用默认设置;
只需要关注第0位CTLEN:打开RTC时钟。
#include "exynos_4412.h" void RTC_Init() { RTCCON |= 1; /* 打开RTC设置 */ /* 校准时间 */ RTC.BCDYEAR = 0x22; /* 设为022,BCD码: 0000 0010 0010 */ RTC.BCDMON = 0x04; RTC.BCDDAY = 0x04; /* week,它的日和星期弄反了 */ RTC.BCDWEEK = 0x28; /* day */ RTC.BCDHOUR = 0x02; RTC.BCDMIN = 0x07; RTC.BCDSEC = 0x50; RTCCON &= (~1); /* 禁止RTC设置 */ } int main() { RTC_Init(); while(1) { printf("20%x-%x-%x %x:%x:%x", RTC.BCDYEAR, RTC.BCDMON, RTC.BCDWEEK, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC); } return 0; }