跳转至

rtc

RTC (Real-Time Clock) 提供基于硬件 RTC 定时器的软件定时功能,支持毫秒和 cycle 两种粒度的定时启动,以及中断计数、当前时间查询和低功耗挂起恢复等能力。

头文件清单

#include "include/driver/rtc.h"

接口清单

接口名称 功能简述
uapi_rtc_init 初始化RTC定时器模块
uapi_rtc_adapter 适配指定底层RTC定时器,注册中断
uapi_rtc_deinit 去初始化RTC定时器模块
uapi_rtc_create 创建RTC定时器,获取句柄
uapi_rtc_delete 删除已创建的RTC定时器
uapi_rtc_start 以毫秒为单位启动RTC定时器
uapi_rtc_cycle_start 以cycle数为单位启动RTC定时器
uapi_rtc_stop 停止RTC定时器,不再调用回调
uapi_rtc_get_max_ms 获取RTC最大可设置延时时间(毫秒)
uapi_rtc_int_cnt_record_get 获取RTC中断发生次数
uapi_rtc_get_current_time_count 获取底层RTC当前计数值
uapi_rtc_get_current_time_us 获取底层RTC当前时间(微秒)
uapi_rtc_start_hw_rtc 启动底层RTC用于硬件计时,不处理中断
uapi_rtc_stop_hw_rtc 停止底层RTC硬件计时
uapi_rtc_get_latest_timeout 获取所有RTC最近的超时时间(毫秒)
uapi_rtc_suspend 挂起RTC定时器
uapi_rtc_resume 恢复RTC定时器

Functions

uapi_rtc_init

errcode_t uapi_rtc_init(void)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 初始化RTC定时器模块,清零所有软定时器管理结构
  • 为每个底层RTC索引分配软定时器列表存储空间
  • 支持重复调用,已初始化时直接返回成功

前置条件

  • 调用时序约束:当前接口应在模块首次使用前调用
  • 依赖关系:当前接口依赖底层 RTC 硬件资源可用

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_MAX_NUM 编译参与宏 控制 RTC 底层定时器数量配置参与编译 5
CONFIG_RTC_MAX_RTCS_NUM 编译参与宏 控制 RTC 最大软定时器数量配置参与编译 16

uapi_rtc_adapter

errcode_t uapi_rtc_adapter(rtc_index_t index, uint32_t int_id, uint16_t int_priority)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 适配指定底层RTC定时器,初始化底层硬件并注册中断回调
  • 配置中断ID与中断优先级
  • 支持重复适配同一索引,已适配时直接返回成功

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 成功返回后调用
  • 依赖关系:当前接口依赖中断注册机制可用

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)
int_id uint32_t 底层RTC定时器中断ID 有效中断ID
int_priority uint16_t RTC定时器中断优先级 有效中断优先级

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 适配成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_USING_OLD_VERSION 特性宏 支持 RTC 旧版本 IP 兼容特性 n

uapi_rtc_deinit

errcode_t uapi_rtc_deinit(void)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 去初始化RTC定时器模块,停止所有已适配的底层RTC定时器
  • 注销所有已注册的中断,清零管理结构
  • 支持在未初始化状态调用,直接返回成功

前置条件

  • 调用时序约束:当前接口应在不再使用 RTC 定时器时调用
  • 依赖关系:当前接口依赖模块已通过 uapi_rtc_init() 初始化

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 去初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_MAX_NUM 编译参与宏 控制 RTC 底层定时器数量配置参与编译 5

uapi_rtc_create

errcode_t uapi_rtc_create(rtc_index_t index, rtc_handle_t *rtc)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 在指定底层RTC索引上创建软定时器,返回定时器句柄
  • 从软定时器列表中查找空闲槽位并分配
  • 创建后定时器处于使能但未运行状态

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 成功返回后调用
  • 依赖关系:当前接口依赖指定底层 RTC 索引已通过 uapi_rtc_adapter() 适配

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)

出参

名称 数据类型 输出说明
rtc rtc_handle_t * 创建成功时返回RTC定时器句柄,失败时返回NULL

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 创建成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_delete

errcode_t uapi_rtc_delete(rtc_handle_t rtc)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 删除已创建的RTC定时器,释放软定时器槽位
  • 置位定时器为未使能状态

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_create() 成功返回后调用
  • 依赖关系:入参 rtc 为 uapi_rtc_create() 返回的有效句柄

入参

名称 参数类型 详细说明 约束取值范围
rtc rtc_handle_t RTC定时器句柄 由 uapi_rtc_create() 创建的非NULL句柄

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 删除成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_start

errcode_t uapi_rtc_start(rtc_handle_t rtc, uint32_t rtc_ms, rtc_callback_t callback, uintptr_t data)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 以毫秒为单位启动指定RTC定时器,超时后触发回调函数
  • 超时时间由 rtc_ms 指定,最大值由 uapi_rtc_get_max_ms() 获取
  • 启动后定时器进入运行状态,超时时自动调用回调并停止

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 和 uapi_rtc_adapter() 成功后调用
  • 依赖关系:入参 rtc 为 uapi_rtc_create() 返回的有效句柄

入参

名称 参数类型 详细说明 约束取值范围
rtc rtc_handle_t RTC定时器句柄 由 uapi_rtc_create() 创建的非NULL句柄
rtc_ms uint32_t RTC定时器超时时间(毫秒) (0, RTC_MAX_MS]
callback rtc_callback_t RTC定时器回调函数 非NULL
data uintptr_t 传递给回调函数的参数 任意值

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 启动成功
Other 其他错误码,参考errcode_t 执行失败

参考案例

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_USING_OLD_VERSION 特性宏 支持 RTC 旧版本 IP 兼容特性 n

uapi_rtc_cycle_start

errcode_t uapi_rtc_cycle_start(rtc_handle_t rtc, uint64_t cycle, rtc_callback_t callback, uintptr_t data)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 以cycle数为单位启动指定RTC定时器,超时后触发回调函数
  • 超时时间由 cycle 指定,以RTC时钟周期为粒度
  • 启动后定时器进入运行状态,超时时自动调用回调并停止

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 和 uapi_rtc_adapter() 成功后调用
  • 依赖关系:入参 rtc 为 uapi_rtc_create() 返回的有效句柄

入参

名称 参数类型 详细说明 约束取值范围
rtc rtc_handle_t RTC定时器句柄 由 uapi_rtc_create() 创建的非NULL句柄
cycle uint64_t RTC定时器超时cycle数 大于0
callback rtc_callback_t RTC定时器回调函数 非NULL
data uintptr_t 传递给回调函数的参数 任意值

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 启动成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_USING_OLD_VERSION 特性宏 支持 RTC 旧版本 IP 兼容特性 n

uapi_rtc_stop

errcode_t uapi_rtc_stop(rtc_handle_t rtc)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 停止指定RTC定时器,定时器不再运行,用户传入的回调不会被调用
  • 若当前无其他运行中的软定时器,则同时停止底层硬件计时
  • 定时器已处于停止状态时直接返回成功

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_create() 成功返回后调用
  • 依赖关系:入参 rtc 为 uapi_rtc_create() 返回的有效句柄

入参

名称 参数类型 详细说明 约束取值范围
rtc rtc_handle_t RTC定时器句柄 由 uapi_rtc_create() 创建的非NULL句柄

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 停止成功
Other 其他错误码,参考errcode_t 执行失败

参考案例

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_get_max_ms

uint32_t uapi_rtc_get_max_ms(void)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 获取RTC定时器最大可设置的延时时间(毫秒)
  • 返回值由 RTC_MAX_MS 宏计算得出,与RTC时钟频率相关
  • 可用于 uapi_rtc_start() 入参 rtc_ms 的上限参考

返回值

  • 返回类型:uint32_t
返回值 文字含义 触发场景
uint32_t 最大可设置延时时间(毫秒) 始终返回 RTC_MAX_MS

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_int_cnt_record_get

uint32_t uapi_rtc_int_cnt_record_get(rtc_index_t index)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 获取指定底层RTC索引的中断发生次数
  • 返回值为历史累计中断计数

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 和 uapi_rtc_adapter() 成功后调用
  • 依赖关系:指定底层 RTC 索引已适配且中断已注册

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)

返回值

  • 返回类型:uint32_t
返回值 文字含义 触发场景
uint32_t 中断发生次数 index 有效时返回中断计数
0 索引无效 index 超出有效范围

参考案例

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_get_current_time_count

errcode_t uapi_rtc_get_current_time_count(rtc_index_t index, uint64_t *current_time_count)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 获取指定底层RTC定时器的当前计数值(cycle)
  • 读取硬件计数器的当前剩余值

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 和 uapi_rtc_adapter() 成功后调用
  • 依赖关系:指定底层 RTC 索引已适配

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)

出参

名称 数据类型 输出说明
current_time_count uint64_t * 底层RTC定时器当前计数值(cycle),由调用方分配内存、函数填充

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 获取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_get_current_time_us

errcode_t uapi_rtc_get_current_time_us(rtc_index_t index, uint32_t *current_time_us)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 获取指定底层RTC定时器的当前时间(微秒)
  • 读取硬件计数器当前值并转换为微秒

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 和 uapi_rtc_adapter() 成功后调用
  • 依赖关系:指定底层 RTC 索引已适配

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)

出参

名称 数据类型 输出说明
current_time_us uint32_t * 底层RTC定时器当前时间(微秒),由调用方分配内存、函数填充

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 获取成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_start_hw_rtc

errcode_t uapi_rtc_start_hw_rtc(rtc_index_t index, uint64_t rtc_ms)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 启动指定底层RTC定时器用于硬件计时,不处理中断回调
  • 直接操作底层硬件计数器,不经过软定时器管理
  • 超时时间由 rtc_ms 指定,最大值由 RTC_HW_MAX_MS 确定

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 成功后调用
  • 依赖关系:该 index 未被其他软定时器使用

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)
rtc_ms uint64_t RTC定时器超时时间(毫秒) (0, RTC_HW_MAX_MS]

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 启动成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_USING_OLD_VERSION 特性宏 支持 RTC 旧版本 IP 兼容特性 n

uapi_rtc_stop_hw_rtc

errcode_t uapi_rtc_stop_hw_rtc(rtc_index_t index)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 停止指定底层RTC定时器的硬件计时
  • 直接操作底层硬件计数器停止

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_start_hw_rtc() 调用后使用
  • 依赖关系:指定底层 RTC 索引已启动硬件计时

入参

名称 参数类型 详细说明 约束取值范围
index rtc_index_t 底层RTC定时器索引 RTC_0(0) / RTC_MAX_NUM(1)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 停止成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n

uapi_rtc_get_latest_timeout

uint32_t uapi_rtc_get_latest_timeout(void)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 获取所有已适配RTC中最近的超时时间(毫秒)
  • 遍历所有已适配的底层RTC,获取当前硬件计数器剩余值中的最小值
  • 返回值为最近一次超时距当前的时间

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 和 uapi_rtc_adapter() 成功后调用
  • 依赖关系:至少一个底层RTC已适配

返回值

  • 返回类型:uint32_t
返回值 文字含义 触发场景
uint32_t 最近的超时时间(毫秒) 存在运行中的RTC定时器
uint32_t 最大值 无运行中的RTC定时器

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_SUPPORT_LPM 功能宏 支持 RTC 低功耗管理功能 n

uapi_rtc_suspend

errcode_t uapi_rtc_suspend(uintptr_t val)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 挂起RTC定时器,更新所有软定时器的剩余cycle值
  • 停止所有已适配底层RTC的硬件计时,重新设置下一次中断

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_init() 成功后调用
  • 依赖关系:当前接口依赖 RTC 定时器处于运行状态

入参

名称 参数类型 详细说明 约束取值范围
val uintptr_t 挂起参数 当前未使用

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 挂起成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_SUPPORT_LPM 功能宏 支持 RTC 低功耗管理功能 n

uapi_rtc_resume

errcode_t uapi_rtc_resume(uintptr_t val)

头文件清单

#include "include/driver/rtc.h"

功能说明

  • 恢复RTC定时器,根据补偿计数值重新启动所有已适配底层RTC
  • 入参 val 指向补偿计数值(uint64_t),用于恢复定时器精度

前置条件

  • 调用时序约束:当前接口必须在 uapi_rtc_suspend() 之后调用
  • 依赖关系:当前接口依赖模块已通过 uapi_rtc_init() 初始化

入参

名称 参数类型 详细说明 约束取值范围
val uintptr_t 恢复参数,指向 uint64_t 补偿计数值 非NULL,指向有效内存

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 恢复成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_RTC 功能宏 支持 RTC 接口功能 n
CONFIG_RTC_SUPPORT_LPM 功能宏 支持 RTC 低功耗管理功能 n

Type definitions

rtc_handle_t

typedef void *rtc_handle_t;

使用说明

RTC定时器句柄类型,由 uapi_rtc_create() 创建并返回,用于 uapi_rtc_start()、uapi_rtc_stop()、uapi_rtc_delete() 等接口的入参。不透明类型,实现细节不公开,仅通过对外接口操作。

rtc_callback_t

typedef void (*rtc_callback_t)(uintptr_t data);

使用说明

RTC定时器回调函数类型。调用时机:RTC定时器超时触发中断时,由中断处理函数调用。参数 data:由 uapi_rtc_start() 或 uapi_rtc_cycle_start() 注册时传入的 uintptr_t 参数,原样透传至用户回调。返回值:回调返回类型为 void,无需处理。

errcode_t

typedef uint32_t errcode_t;

使用说明

SDK公共错误码类型,本模块多个接口的返回值类型 [SDK公共基础类型]

Enumerations

rtc_index_t

typedef enum {
    RTC_0,                            /*!< RTC0 index. */
    RTC_MAX_NUM = RTC_CLOCK_MAX_NUM
} rtc_index_t;
枚举成员 取值 描述
RTC_0 0 RTC0索引
RTC_MAX_NUM 1 RTC最大索引数量

Macros

ERRCODE_SUCC [SDK公共共享宏]

#define ERRCODE_SUCC                                        0UL

ERRCODE_INVALID_PARAM [SDK公共共享宏]

#define ERRCODE_INVALID_PARAM                               0x80000001

ERRCODE_RTC_NOT_INITED

#define ERRCODE_RTC_NOT_INITED                              0x80001405

ERRCODE_RTC_NO_ENOUGH

#define ERRCODE_RTC_NO_ENOUGH                               0x80001407

ERRCODE_RTC_NOT_CREATED

#define ERRCODE_RTC_NOT_CREATED                             0x80001408

RTC_MAX_MS

#define RTC_MAX_MS (MAX_UINT32 / CLOCK_32K_CALI_FREQ * MS_PER_S - 1)

RTC_HW_MAX_MS

#define RTC_HW_MAX_MS (MAX_UINT32 / CLOCK_32K_CALI_FREQ * MS_PER_S - 1)