|
xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
|
版本:0.1 | 日期:2026-07-03 | 路径: platforms/components/xtiny/xt_hal/
xt_hal_rtc 是 XTINY HAL 层的 RTC 驱动模块,提供实时时钟的时间设置/获取、时间戳转换、闹钟管理(绝对时间/相对延迟)和时区配置。所有平台都必须实现此模块。
| 依赖 | 用途 |
|---|---|
| xt_hal_internal.h | HAL 内部类型与工具宏 |
| 形式 | 类型 | 说明 |
|---|---|---|
| xt_hal_rtc_tm 结构体 | struct xt_hal_rtc_tm | 年/月/日/时/分/秒/毫秒,与 POSIX tm 类似 |
| UNIX 时间戳 | xt_hal_rtc_timestamp_t | 自 1970-01-01 00:00:00 起的秒数,默认 uint32_t |
通过定义 XT_HAL_RTC_TIME_64BITS 可将时间戳类型切换为 uint64_t ,避免 2038 年溢出。
| 字段 | 范围 | 说明 |
|---|---|---|
| tm_year | — | 年份(从 1900 年开始计数) |
| tm_mon | 0–11 | 月份(0=1月) |
| tm_mday | 1–31 | 日期 |
| tm_hour | 0–23 | 小时 |
| tm_min | 0–59 | 分钟 |
| tm_sec | 0–60 | 秒(含闰秒) |
| tm_wday | 0–6 | 星期(0=周日) |
| tm_msec | 0–999 | 毫秒(非标准,不一定全平台支持) |
两个闹钟接口分别对应不同场景:
| 接口 | 参数 | 适用场景 |
|---|---|---|
| xt_hal_rtc_setup_alarm | 绝对时间 tm | 定时任务(每天 8:00 触发) |
| xt_hal_rtc_setup_alarm_relative | 相对毫秒 timeout_ms | 超时/延迟任务(5 分钟后触发) |
相对闹钟的毫秒参数可能受平台精度限制,实际只精确到秒级。闹钟触发后自动关闭,回调中无需手动 close_alarm 。同一闹钟 ID 不可重复注册(返回 XT_EBUSY )。
时区值以 15 分钟为单位。例如东八区 = 8 × 4 = 32(个 15 分钟)。正数表示东区(UTC+),负数表示西区(UTC-)。
以下为函数签名大纲,完整的参数说明、返回值、注意事项请查看 xt_hal_rtc(RTC 驱动) 。
| 函数签名 | 说明 |
|---|---|
| xt_err_t xt_hal_rtc_set_time(struct xt_hal_rtc_tm *tm) | 设置 RTC 时间(首次调用触发硬件初始化) |
| xt_err_t xt_hal_rtc_get_time(struct xt_hal_rtc_tm *tm) | 获取 RTC 当前时间 |
| xt_hal_rtc_timestamp_t xt_hal_rtc_get_timestamp(void) | 获取 UNIX 时间戳 |
| 函数签名 | 说明 |
|---|---|
| xt_err_t xt_hal_rtc_set_timezone(int8_t zone) | 设置时区(单位:15 分钟) |
| xt_err_t xt_hal_rtc_get_timezone(int8_t *zone) | 获取当前时区 |
| 类型签名 | 说明 |
|---|---|
| struct xt_hal_rtc_tm | 时间结构体(年/月/日/时/分/秒/毫秒/星期) |
| xt_hal_rtc_timestamp_t | 时间戳类型,默认 uint32_t |
| xt_hal_rtc_cb_t | 回调函数类型: void (*)(uint8_t id, uint32_t event_id) |
| enum xt_hal_rtc_event_id | 事件 ID 枚举( XT_HAL_RTC_ALARM ) |
| 行为 | 说明 |
|---|---|
| 懒初始化 | 首次调用时间/闹钟相关函数时才初始化 RTC 硬件 |
| 闹钟触发后自动关闭 | 回调中无需调 close_alarm |
| 同一 ID 不可重复注册 | 重复 setup_alarm 返回 XT_EBUSY |
| 相对闹钟精度可能为秒级 | timeout_ms 为毫秒参数,但实际精度由平台决定 |
| 时间戳默认 uint32_t | 2038 年溢出,可定义 XT_HAL_RTC_TIME_64BITS 切换 |
| tm_msec 非跨平台 | 毫秒字段不一定所有平台支持 |