当前位置: 首页 > news >正文

iTop-4412 裸机程序(二十二)- RTC时钟

目录

  • 0.源码
  • 1. RTC
  • 2. iTop4412 中的 RTC使用的相关寄存器
  • 3. BCD编码
  • 4. 关键源码


0.源码

GitHub:https://github.com/Kilento/4412NoOS

1. RTC

RTC是实时时钟(Real Time Clock)的缩写,是一种用于计算机系统的硬件设备,用于记录和维护当前的日期和时间。RTC通常包括一个电池供电的计时器和一个晶体振荡器,以确保即使在停电情况下也能继续运行,并且能够提供准确的时间信息。

2. iTop4412 中的 RTC使用的相关寄存器

在这里插入图片描述
我们使用 RTCCON寄存器控制时钟的读写。BCDSEC、BCDMIN、BCDHOUR、BCDDAYWEEK BCDDAY BCDMON 、BCDYEAR 等寄存器控制年月日时分秒。

3. BCD编码

BCD(Binary-Coded Decimal)编码是一种用二进制数表示十进制数字的编码方式。在BCD编码中,每个十进制数字用4位二进制数表示,即一个十进制数的每个数字都被编码为4位的二进制数。例如,十进制数57用BCD编码表示为 0b01010111,对应十六进制为0x57。

4. 关键源码

static unsigned int dec_2_bcd(unsigned int dec)
{return ((dec / 10) << 4 | (dec % 10));
}static unsigned int bcd_2_dec(unsigned int bcd)
{return (((bcd & 0xf0) >> 4) * 10 + (bcd & 0x0f));
}
void rtc_set_time(const struct rtc_time* time)
{// 打开RTC读写开关RTCCON |= (1 << 0);/// 写 RTC时间寄存器BCDYEAR = dec_2_bcd(time->year) - 2000;BCDMON = dec_2_bcd(time->month);BCDDAY = dec_2_bcd(time->day);BCDDAYWEEK = dec_2_bcd(time->dayweek);BCDHOUR = dec_2_bcd(time->hour);BCDMIN = dec_2_bcd(time->minute);BCDSEC = dec_2_bcd(time->second);RTCCON &= ~(1 << 0);return;
}void rtc_get_time(struct rtc_time* time)
{// 打开RTC读写开关RTCCON |= (1 << 0);/// 写 RTC时间寄存器time->year = bcd_2_dec(BCDYEAR) + 2000;time->month = bcd_2_dec(BCDMON);time->day = bcd_2_dec(BCDDAY);time->dayweek = bcd_2_dec(BCDDAYWEEK);time->hour = bcd_2_dec(BCDHOUR);time->minute = bcd_2_dec(BCDMIN);time->second = bcd_2_dec(BCDSEC);RTCCON &= ~(1 << 0);
}

2024年02月14日

Kilento

http://www.lryc.cn/news/300232.html

相关文章:

  • Kafka 之 AdminClient API
  • Flutter run 一直 Running Gradle task ‘assembleDebug’…
  • kali无线渗透之用wps加密模式破解出wpa模式的密码12
  • 【Python】高级数据类型
  • 挑战杯 python区块链实现 - proof of work工作量证明共识算法
  • 如何给最小化安装的CentOS主机装个远程桌面?
  • 知识图谱:py2neo将csv文件导入neo4j
  • 备战蓝桥杯---图论之最短路Bellman-Ford算法及优化
  • C++ //练习 5.19 编写一段程序,使用do while循环重复地执行下述任务:首先提示用户输入两个string对象,然后挑出较短的那个并输出它。
  • 算法刷题:有效三角形个数
  • python---变量
  • 数据库第二次实验
  • 容器高级知识:Kubernetes Pod 适配器模式详解
  • 云原生容器化-5 Docker常见操作命令
  • 几道简单的题目练一下手感
  • 2023年哪个前端框架用的最多?
  • 基于BitVM的乐观 BTC bridge
  • 谷歌浏览器安装扩展程序axure-chrome-extension
  • C++学习:大小写转换
  • 【王道数据结构】【chapter5树与二叉树】【P159t16】
  • 代码随想录算法训练营第51天 | 139.单词拆分 多重背包理论基础
  • weilai8游戏爬虫
  • 【Java程序设计】【C00261】基于Springboot的休闲娱乐代理售票系统(有论文)
  • 【Linux】学习-基础IO拓展篇
  • 算法详解(力扣141——环形链表系列)
  • 浅谈路由器交换结构
  • Linux第51步_移植ST公司的linux内核第3步_添加修改设备树
  • 【PyTorch】PyTorch中张量(Tensor)统计操作
  • 安卓游戏开发框架应用场景以及优劣分析
  • 单片机学习笔记---LCD1602