2021-11-17 15:59阅读: 34评论: 0推荐: 0

嵌入式开发作业——4412rtc开发

RTC(Real-Time Clock) 实时时钟。RTC是集成电路,通常称为时钟芯片。在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能正常工作(通常采用后备电池供电)。它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768kHz 晶体和电阻电容等。

一、RTC 控制器

    实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC可以通过STRB/LDRB 指令将8位BCD码数据送至CPU。这些BCD数据包括秒、分、时、日期、星期、月和年。RTC单元通过一个外部的32.768kHz 晶振提供时钟。RTC具有定时报警的功能。

    其功能说明如下:

1 – 时钟数据采用BCD编码。

2 – 能够对闰年的年月日进行自动处理,实现初始时间21年11月17号15点24分50秒,以及实时读取数据。

二、代码

#include "exynos_4412.h"
#define		RTCINTP			__REG(0X10070030)
#define		RTCCON			__REG(0X10070040)
#define		TICCNT			__REG(0X10070044)
#define		CURTICCNT		__REG(0X10070090)

typedef	struct {
 
				unsigned int BCDSEC;
				unsigned int BCDMIN;
				unsigned int BCDHOUR;
				unsigned int BCDWEEK;
				unsigned int BCDDAY;
				unsigned int BCDMON;
				unsigned int BCDYEAR;
}rtcbcd;
#define 	RTC (* (volatile rtcbcd *)0X10070070)
 
void mydelay_ms(int time)
{
	int i, j;
	while(time--)
	{
		for (i = 0; i < 5; i++)
			for (j = 0; j < 514; j++);
	}
}

void rtc_init(void)
{//初始年月日
	RTCCON = 1;
	RTC.BCDYEAR = 0x21;
	RTC.BCDMON = 0x11;
	RTC.BCDDAY = 0x17;
	RTC.BCDHOUR = 0x15;
	RTC.BCDMIN = 0x24;
	RTC.BCDSEC = 0x50;
	RTCCON = 0;
}
void rtc_tic(void)
{
	RTCCON = RTCCON & (~(0xf << 4)) | (1 << 8);
	TICCNT = 32768;

}

int main (void)
{
	rtc_init();
	rtc_tic();
	while(1)
	{
		printf("%x年%x月%x日%x时%x分%x秒\n",RTC.BCDYEAR,
		RTC.BCDMON,
		RTC.BCDDAY,
		RTC.BCDHOUR,
		RTC.BCDMIN,RTC.BCDSEC);
		mydelay_ms(1000); 
	}
   return 0;
}
 

本文作者:TTMoon

本文链接:https://www.cnblogs.com/shen75/p/18140201

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   TTMoon  阅读(34)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑