Q群:
电话:
邮箱:
地址:
访问RTC设备的API接口如下表所示:
接口 | 说明 |
---|---|
set_date() | 设置日期,年、月、日 |
set_time() | 设置时间,时、分、秒 |
该函数用于设置日期的年、月、日信息,函数原型如下:
os_err_t set_date(os_uint32_t year, os_uint32_t month, os_uint32_t day)
参数 | 说明 |
---|---|
year | 待设置生效的年份 |
month | 待设置生效的月份 |
day | 待设置生效的日 |
返回 | 说明 |
OS_EOK | 设置成功 |
OS_ERROR | 设置失败(未发现 RTC 设备、输入参数区间错误等) |
其他错误码 | 失败 |
该函数用于设置时、分、秒信息,函数原型如下:
os_err_t set_time(os_uint32_t hour, os_uint32_t minute, os_uint32_t second)
参数 | 说明 |
---|---|
hour | 待设置生效的时 |
minute | 待设置生效的分 |
second | 待设置生效的秒 |
返回 | 说明 |
OS_EOK | 设置成功 |
OS_ERROR | 设置失败(未发现 RTC 设备、输入参数区间错误等) |
其他错误码 | 失败 |
示例代码实现两个函数,其中static int rtc_sample(int argc, char argv[])实现对时间的设置,static void get_rtc(int argc, char argv[])函数实现读取当前的时间值。如下所示:
#include <os_task.h>
#include <os_device.h>
#include <os_errno.h>
#include <sys/time.h>
#include <rtc/rtc.h>
#include <drv_log.h>
#ifdef OS_USING_SHELL
#include <shell.h>
#endif
#ifdef OS_USING_RTC
static int rtc_sample(int argc, char *argv[])
{
os_err_t ret = OS_EOK;
time_t now;
/* set date */
ret = set_date(2020, 6, 1);
if (ret != OS_EOK)
{
LOG_EXT_E("set RTC date failed %d", (int)ret);
return ret;
}
/* set time */
ret = set_time(9, 30, 0);
if (ret != OS_EOK)
{
LOG_EXT_E("set RTC time failed %d", (int)ret);
return ret;
}
return ret;
}
SH_CMD_EXPORT(rtc_sample, rtc_sample,"set rtc time");
static void get_rtc(int argc, char *argv[])
{
time_t now;
/* get time */
now = time(OS_NULL);
os_kprintf("%s\n", ctime(&now));
}
SH_CMD_EXPORT(get_rtc, get_rtc,"get rtc time");
#endif /*OS_USING_RTC*/
运行结果如下:
sh>rtc_sample
sh>get_rtc
Mon Jun 1 09:30:09 2020
sh>get_rtc
Mon Jun 1 09:30:10 2020