简介
Real Time Clock (RTC) 模块用于日期时间的保存和更新,在无网络下为系统提供一份有效的日期和时间。通过备用电池供电,在断电场景下也可以一直计数和保存时间,同时还有闹钟唤醒的功能。在本章节我们将详细的对匠芯创D133CBS 的RTC时钟进行测试。
提前准备工作
在使用RTC之前请确保J9也就是下图标红的地方插入了纽扣电池并且正常供电
1- 在 Luban-Lite 根目录下执行 scons --menuconfig
进入 menuconfig 的功能配置界面,按如下选择:
2- 在menuconfig 开启rtc的测试驱动
此时位于bsp/examples/test-rtc 将会被配置并且添加到编译的上下文中。
上述代码主要用于设置RTC的时钟以及打印设置后的时间,并且通过Finsh进行执行。
3- 创建时间打印任务(避免重复设置日期时间)
我们自己创建一个输出当前时间的任务,用于每一秒向控制台输出时间
#include <rtthread.h>
#include <rtdevice.h>
#include <ulog.h>
#include <finsh.h>
#include <drivers/rtc.h>
#include <drivers/alarm.h>
#include "aic_core.h"
void rtc_printf(void *agrs)
{
struct tm *local_time;
time_t now;
while (1)
{
now = time(RT_NULL);
local_time = localtime(&now);
rt_kprintf("date: %04d-%02d-%02d\n", local_time->tm_year + 1900, local_time->tm_mon + 1, local_time->tm_mday);
rt_kprintf("time: %02d:%02d:%02d\n", local_time->tm_hour, local_time->tm_min, local_time->tm_sec);
rt_thread_delay(1000);
}
}
MSH_CMD_EXPORT(rtc_printf, rtc_printf);
int main(void)
{
rt_thread_t tid = RT_NULL;
tid = rt_thread_create("RTC_read", rtc_printf, RT_NULL, 1024, 20, 5);
rt_thread_startup(tid);
return 0;
}
4- 将代码烧录到开发板中
5- 打开控制台输入test_rtc 设置日期时间
6-控制台每隔一秒输出当前的时间
那么目前开发板中设置的时间大概为 2024-11-08 01:01:33. 现在我将记录下当前的时间并且将开发板断电,等到明天早上在评论区更新一下明天的开发板内的时间
历史测评链接
[工业级智能控制MCU 匠芯创D133CBS] 1 - 开箱及其环境搭建 https://bbs.eeworld.com.cn/thread-1290588-1-1.html
[工业级智能控制MCU 匠芯创D133CBS] 2 - 创建项目及其注意事项 https://bbs.eeworld.com.cn/thread-1290861-1-1.html
[工业级智能控制MCU 匠芯创D133CBS] 3 - GPIO-IO中断 https://bbs.eeworld.com.cn/thread-1290902-1-1.html
[工业级智能控制MCU 匠芯创D133CBS] 4- BUG 反馈 (SDK lunch11 包更新错误) https://bbs.eeworld.com.cn/thread-1290904-1-1.html
[工业级智能控制MCU 匠芯创D133CBS] 5- 使用RTT-软件包结合IIC读取BH1750 https://bbs.eeworld.com.cn/thread-1291002-1-1.html
[工业级智能控制MCU 匠芯创D133CBS] 6 - PWM 输出 https://bbs.eeworld.com.cn/thread-1291463-1-1.html