全部文档
OneOS简介 硬件支持 编译构造工具 API参考文档 高级语言 用户编程手册 应用笔记 FAQ

RTC设备

API 列表

访问RTC设备的API接口如下表所示:

接口 说明
set_date() 设置日期,年、月、日
set_time() 设置时间,时、分、秒

set_date

该函数用于设置日期的年、月、日信息,函数原型如下:

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 设备、输入参数区间错误等)
其他错误码 失败

set_time

该函数用于设置时、分、秒信息,函数原型如下:

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

results matching ""

    No results matching ""

    返回顶部