外观
RTC 实时时钟示例
2025-10-29
概述
本示例演示如何通过 RT-Thread 的 RTC 设备接口设置日期和时间,并持续读取当前时间,并循环读取当前时间。通过设置日期为 2025 年 12 月 31 日 23:59:56,观察时间每秒递增并跨午夜自动翻转的过程。帮助用户掌握 RTC 时间设置与读取的使用方法。
RTC 的作用
在 RT-Thread 中,RTC(Real-Time Clock)是一种实时时钟设备,能够持续计时,提供年月日时分秒的日期时间信息。通过 RTC 设备接口,用户可以方便地设置和读取系统时间。
创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
RTC 示例相关 API
set_date:设置 RTC 日期,参数为年、月、日;set_time:设置 RTC 时间,参数为时、分、秒;time:获取当前时间戳(秒);ctime:将时间戳转换为可读的字符串格式;
applications/rtc_example.c
static rt_err_t rtc_example(void)
{
rt_err_t ret;
rt_uint8_t count = 10;
time_t now = { 0 };
ret = set_date(2025, 12, 31); // 设置日期
if (ret != RT_EOK)
{
LOG_E("set RTC date failed");
return ret;
}
ret = set_time(23, 59, 56); // 设置时间
if (ret != RT_EOK)
{
LOG_E("set RTC time failed");
return ret;
}
while (count--)
{
now = time(RT_NULL); // 获取当前时间戳
char *time_str = ctime(&now); // 时间戳转字符串
time_str[strcspn(time_str, "\n")] = '\0';
LOG_I("now time: %s", time_str);
rt_thread_mdelay(1000);
}
return RT_EOK;
}运行示例
操作步骤
- 将程序下载到开发板
- 打开串口终端连接开发板
- 输入
rtc_example命令
预期结果
- 日期设置为 2025 年 12 月 31 日
- 时间从 23:59:56 开始,每秒递增
- 跨午夜后自动翻转为 2026 年 1 月 1 日
- 共打印 10 次时间信息
rtt 终端
msh />rtc_example
[I/example.rtc] now time: Wed Dec 31 23:59:56 2025
[I/example.rtc] now time: Wed Dec 31 23:59:57 2025
[I/example.rtc] now time: Wed Dec 31 23:59:58 2025
[I/example.rtc] now time: Wed Dec 31 23:59:59 2025
[I/example.rtc] now time: Thu Jan 1 00:00:00 2026
[I/example.rtc] now time: Thu Jan 1 00:00:01 2026
[I/example.rtc] now time: Thu Jan 1 00:00:02 2026
[I/example.rtc] now time: Thu Jan 1 00:00:03 2026
[I/example.rtc] now time: Thu Jan 1 00:00:04 2026
[I/example.rtc] now time: Thu Jan 1 00:00:05 2026