ARM接口编程—RTC(exynos 4412平台)

RTC简介

RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电。

ARM接口编程—RTC(exynos 4412平台)_第1张图片

RTC内部原理

ARM接口编程—RTC(exynos 4412平台)_第2张图片

RTC寄存器

ARM接口编程—RTC(exynos 4412平台)_第3张图片

RTC控制寄存器

用于使能RTC控制和闹铃相关控制

ARM接口编程—RTC(exynos 4412平台)_第4张图片

RTC时间寄存器

用于存储BCD格式秒

ARM接口编程—RTC(exynos 4412平台)_第5张图片
用于存储BCD格式分钟

ARM接口编程—RTC(exynos 4412平台)_第6张图片
用于存储BCD格式小时

ARM接口编程—RTC(exynos 4412平台)_第7张图片
用于存储BCD格式星期

ARM接口编程—RTC(exynos 4412平台)_第8张图片
用于存储BCD格式天

ARM接口编程—RTC(exynos 4412平台)_第9张图片
用于存储BCD格式月

ARM接口编程—RTC(exynos 4412平台)_第10张图片
用于存储BCD格式年

ARM接口编程—RTC(exynos 4412平台)_第11张图片
存储当前的计数值

ARM接口编程—RTC(exynos 4412平台)_第12张图片
代码实现:

#include "exynos_4412.h"

int main()
{
	unsigned int OldSec = 0, NewSec = 0;

	/*使能RTC控制*/
	RTCCON = RTCCON | 1;
	/*校准时间信息*/
	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)
	{
		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;
}

你可能感兴趣的:(arm开发,嵌入式硬件)