DAY20. RTC实验
如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,可以参考我另外一篇文章GitHub的使用方法含网络问题解决
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客
相关作业和资料已上传,请在主页自行查看
1. RTC简介
RTC RTC(Real Time Clock)
实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电
2. 4412下的RTC控制器
3. RTC寄存器详解
核心寄存器前缀都是BCD开头,表示是以BCD码的格式来储存的,不管读写都是这个格式
以下储存寄存器不同位使用的空间是不一样的,根据实际设置的,比如月份十位最大是1,那么十位只需要一位空间就能表示,其他同理
BCDYEAR 寄存器
年
BCDMON 寄存器
月
BCDDAY 寄存器
天
需要注意天的地址和周的地址手册写反了
BCDDAYWEEK寄存器
周
BCDHOUR 寄存器
时
BCDMIN寄存器
分
BCDSEC 寄存器
秒
闹铃相关的同理自行查看芯片手册
RTCCON 寄存器
控制RTC
- 只需要注意第零位:1打开RTC,0关闭RTC
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)