s5pv210的RTC

RTC 就是实时时钟芯片, 用来在系统断电时, 利用备用的锂电池继续记录时间。 S5PV210 的RTC有下面的特点

1.支持BCD数字

2.支持alarm功能

3.支持tick功能

4.支持毫秒级tick time。

操作有一下相关内容:类似与DS1302,先设置值,然后就可以读。

1.使能RTC控制器,使能rtc 控制器

2.使能rtc tick timer,这里应该是中断允许。

3.向寄存器写时间相关的日期,操作的时候可以读取。

参考代码如下:

char *day[8] = {" ","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};


void rtc_realtime_display(void)
{
	int counter = 0;
	unsigned long usec = 0;
	
	// 使能rtc控制器
	rtc_enable(true);
	// 使能rtc tick timer
	rtc_ticktime_enable(true);

	// 打印5次时间
	while( counter < 5)
	{
		if(usec != BCDSEC)
		{
			usec  = BCDSEC;
			rtc_print();
			counter++;
		}
	}
	
	// 关闭rtc控制器
	rtc_ticktime_enable(false);
	// 关闭rtc tick timer
	rtc_enable(false);
	
}

// 使能/关闭rtc控制器
void rtc_enable(unsigned char bdata)
{
	unsigned long uread;

	uread = RTCCON;
	RTCCON = (uread&~(1<<0))|(bdata);
}

// 使能/关闭Tick timer
void rtc_ticktime_enable(unsigned char bdata)
{
	unsigned long uread;
	uread = RTCCON;
	RTCCON = ( (uread&~(1<<8)) | (bdata<<8) );
}

// 打印时间
void rtc_print(void)
{
	unsigned long uyear,umonth,udate,uday,uhour,umin,usec;

	uyear = BCDYEAR;
	uyear = 0x2000 + uyear;
	umonth= BCDMON;
	udate = BCDDATE;
	uhour = BCDHOUR;
	umin  = BCDMIN;
	usec  = BCDSEC;
	uday  = BCDDAY;

	printf("%2x : %2x : %2x  %10s,  %2x/%2x/%4x\r\n", uhour, umin, usec, day[uday], umonth, udate, uyear);
}

void rtc_settime(void)
{
	// 初始值为重置值
	unsigned long year = 12;
	unsigned long month = 5;
	unsigned long date = 1;
	unsigned long hour = 12;
	unsigned long min = 0;
	unsigned long sec = 0;
	unsigned long weekday= 3;

	//将时间转化为BCD码
	year = ( ((year/100)<<8) +(((year/10)%10)<<4) + (year%10)  );
	month  = ( ((month/10)<<4)+ (month%10) );
	date = ( ((date/10)<<4) + (date%10) );
	weekday = (weekday%10);							
	hour =( ((hour/10)<<4) + (hour%10) );
	min  =( ((min/10)<<4)  + (min%10) );
	sec  =( ((sec/10)<<4)  + (sec%10) );

	rtc_enable(true);
	// 保存BCD码
	BCDSEC  = sec;
	BCDMIN  = min;
	BCDHOUR = hour;
	BCDDATE = date;
	BCDDAY  = weekday;
	BCDMON  = month;
	BCDYEAR = year;
	rtc_enable(false);
	
	printf("reset success\r\n");
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值