rtc
RTC (Real-Time Clock) 提供基于硬件 RTC 定时器的软件定时功能,支持毫秒和 cycle 两种粒度的定时启动,以及中断计数、当前时间查询和低功耗挂起恢复等能力。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| 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
头文件清单
功能说明
- 初始化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
头文件清单
功能说明
- 适配指定底层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
头文件清单
功能说明
- 去初始化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
头文件清单
功能说明
- 在指定底层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
头文件清单
功能说明
- 删除已创建的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)
头文件清单
功能说明
- 以毫秒为单位启动指定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 | 执行失败 |
参考案例
src/application/3322/input_wear/peripheral/button/button.c#uapi_rtc_startsrc/middleware/chips/3322/pm/pm_sleep/acore/pm_sleep_porting.c#uapi_rtc_start
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)
头文件清单
功能说明
- 以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
头文件清单
功能说明
- 停止指定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
头文件清单
功能说明
- 获取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
头文件清单
功能说明
- 获取指定底层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
头文件清单
功能说明
- 获取指定底层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
头文件清单
功能说明
- 获取指定底层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
头文件清单
功能说明
- 启动指定底层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
头文件清单
功能说明
- 停止指定底层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
头文件清单
功能说明
- 获取所有已适配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
头文件清单
功能说明
- 挂起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
头文件清单
功能说明
- 恢复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
使用说明
RTC定时器句柄类型,由 uapi_rtc_create() 创建并返回,用于 uapi_rtc_start()、uapi_rtc_stop()、uapi_rtc_delete() 等接口的入参。不透明类型,实现细节不公开,仅通过对外接口操作。
rtc_callback_t
使用说明
RTC定时器回调函数类型。调用时机:RTC定时器超时触发中断时,由中断处理函数调用。参数 data:由 uapi_rtc_start() 或 uapi_rtc_cycle_start() 注册时传入的 uintptr_t 参数,原样透传至用户回调。返回值:回调返回类型为 void,无需处理。
errcode_t
使用说明
SDK公共错误码类型,本模块多个接口的返回值类型 [SDK公共基础类型]
Enumerations
rtc_index_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| RTC_0 | 0 | RTC0索引 |
| RTC_MAX_NUM | 1 | RTC最大索引数量 |