D20. RTC实验-ARM体系结构与接口技术-嵌入式学习LV9

DAY20. RTC实验

如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,可以参考我另外一篇文章GitHub的使用方法含网络问题解决
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客


相关作业和资料已上传,请在主页自行查看

1. RTC简介

RTC RTC(Real Time Clock)

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

image-20230818202244415

2. 4412下的RTC控制器

3. RTC寄存器详解

image-20230818221926511

核心寄存器前缀都是BCD开头,表示是以BCD码的格式来储存的,不管读写都是这个格式

以下储存寄存器不同位使用的空间是不一样的,根据实际设置的,比如月份十位最大是1,那么十位只需要一位空间就能表示,其他同理

BCDYEAR 寄存器

image-20230818222323479

BCDMON 寄存器

image-20230818222443207

BCDDAY 寄存器

image-20230818222551454

需要注意天的地址和周的地址手册写反了

BCDDAYWEEK寄存器

image-20230818222844241

BCDHOUR 寄存器

image-20230818223057411

BCDMIN寄存器

image-20230818223043988

BCDSEC 寄存器

image-20230818223034815

闹铃相关的同理自行查看芯片手册

RTCCON 寄存器

控制RTC

  • 只需要注意第零位:1打开RTC,0关闭RTC

image-20230818223446110

4. RTC编程

#include "exynos_4412.h"

/*/如果直接用10进制表示,可读性比较差,所以第一种方法可以使用转换函数来代替
int int_to_bcd(int a)//10进制转BCD
{



	return a;
}

//第二种方法:BCD码和16进制转二进制类似,四位二进制对应一位16进制(偷懒的方法)
//BCD 023    0000 0010 0011
//16进制:0x023  0000 0010 0011 */
int main()
{
   
	unsigned int OldSec = 0, NewSec = 0;
	//手上的板子是没有纽扣电池的,所以时间是错乱的,要矫正
	RTCCON = RTCCON | 1;//打开开关
//	RTC.BCDYEAR = 35;//2023年 因为储存格式是BCD码,
				   //但是C语言是不支持这种格式的表示,所以要将BCD码转成10进制
	RTC.BCDYEAR = 0x023;
	RTC.BCDMON  = 0x12;
	RTC.BCDDAY  = 0x7;
	RTC.BCDWEEK = 0x31;
	RTC.BCDHOUR = 0x23;
	RTC.BCDMIN  = 0x59;
	RTC.BCDSEC  = 0x50;
	//2023-12-31 23:59:50
	/*禁止RTC控制*/
	RTCCON = RTCCON & (~(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肉丸子QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值