xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_hal_pm(电源管理)

XTINY HAL 电源管理模块接口 更多...

宏定义

#define XT_HAL_PM_INVALID_ID   (0xFF)

类型定义

typedef void(* xt_hal_pm_cb_t) (uint8_t id, uint32_t event_id)
 PM 回调函数类型定义

枚举

enum  xt_hal_pm_event_id { XT_HAL_PM_EVENT_WAKEUP = 0x00 , XT_HAL_PM_EVENT_TIMER = 0x01 }
 PM 事件ID枚举 更多...
enum  xt_hal_pm_mode { XT_HAL_PM_MODE_WORK = 0 , XT_HAL_PM_MODE_SLEEP , XT_HAL_PM_MODE_PSM , XT_HAL_PM_MODE_MAX }
 工作模式枚举 更多...
enum  xt_hal_pm_wake_reason { XT_HAL_PM_WAKE_REASON_RESET = 0 , XT_HAL_PM_WAKE_REASON_RTC , XT_HAL_PM_WAKE_REASON_WAKEUP , XT_HAL_PM_WAKE_REASON_KEY_WAKEUP }
 唤醒原因枚举 更多...
enum  xt_hal_pm_last_state { XT_HAL_PM_LAST_STATE_RESET = 0 , XT_HAL_PM_LAST_STATE_DEEP_SLEEP = 3 , XT_HAL_PM_LAST_STATE_STANDBY = 4 }
 上次状态枚举 更多...
enum  xt_hal_pm_wake_reason_detail { XT_HAL_PM_WAKE_REASON_DETAIL_RESET = 0 , XT_HAL_PM_WAKE_REASON_DETAIL_RTC = 1 , XT_HAL_PM_WAKE_REASON_DETAIL_WAKEUP = 2 , XT_HAL_PM_WAKE_REASON_DETAIL_WAKEUP_RTC = 3 }
 唤醒原因详细枚举 更多...
enum  xt_hal_pm_power_on_reason {
  XT_HAL_PM_POWER_ON_NORMAL = 0 , XT_HAL_PM_POWER_ON_CHARGING , XT_HAL_PM_POWER_ON_ALRAM , XT_HAL_PM_POWER_ON_EXCEPTRESET ,
  XT_HAL_PM_POWER_ON_FOTA , XT_HAL_PM_POWER_ON_RTC , XT_HAL_PM_POWER_ON_RESET , XT_HAL_PM_POWER_ON_WDT ,
  XT_HAL_PM_POWER_ON_STANDBY , XT_HAL_PM_POWER_ON_SW_RESET , XT_HAL_PM_POWER_ON_UNKNOWN , XT_HAL_PM_POWER_ON_INVALID
}

函数

xt_err_t xt_hal_pm_request (uint8_t mode)
 请求进入指定功耗模式
xt_err_t xt_hal_pm_force (uint8_t mode)
 强制进入指定功耗模式
int32_t xt_hal_pm_check (uint8_t mode)
 检查是否可以进入指定低功耗模式
xt_err_t xt_hal_pm_timer_setup (uint8_t timer_id, uint32_t timeout_ms, xt_hal_pm_cb_t cb)
 设置定时唤醒
xt_err_t xt_hal_pm_timer_close (uint8_t timer_id)
 关闭定时唤醒
bool xt_hal_pm_timer_is_running (uint8_t timer_id)
 检查定时器是否运行
xt_err_t xt_hal_pm_timer_get_remaining (uint8_t timer_id, xt_hal_rtc_timestamp_t *remaining_time_ms)
 获取定时器剩余时间
xt_err_t xt_hal_pm_get_last_state (uint8_t *last_state, uint8_t *wake_reason)
 唤醒原因,用于判断是从开机是否是由休眠状态下开机/唤醒
int32_t xt_hal_pm_get_wake_reason (void)
 获取开机原因
int32_t xt_hal_pm_get_reset_reason (void)
 获取重启原因,等同于获取开机原因
xt_err_t xt_hal_pm_poweroff (void)
 系统关机
xt_err_t xt_hal_pm_reset (void)
 系统复位
xt_err_t xt_hal_pm_set_power (uint8_t power_id, uint8_t val)
 控制内部电源域开关

详细描述

XTINY HAL 电源管理模块接口

宏定义说明

◆ XT_HAL_PM_INVALID_ID

#define XT_HAL_PM_INVALID_ID   (0xFF)

在文件 xt_hal_pm.h 第 34 行定义.

类型定义说明

◆ xt_hal_pm_cb_t

typedef void(* xt_hal_pm_cb_t) (uint8_t id, uint32_t event_id)

PM 回调函数类型定义

参数
id事件ID(唤醒中断 ID wakeup_id)
event_id事件类型,见 xt_hal_pm_event_id

在文件 xt_hal_pm.h 第 52 行定义.

枚举类型说明

◆ xt_hal_pm_event_id

PM 事件ID枚举

枚举值
XT_HAL_PM_EVENT_WAKEUP 

PM 唤醒事件

XT_HAL_PM_EVENT_TIMER 

PM 定时器事件

在文件 xt_hal_pm.h 第 41 行定义.

◆ xt_hal_pm_last_state

上次状态枚举

枚举值
XT_HAL_PM_LAST_STATE_RESET 

普通开机(上电/复位)

XT_HAL_PM_LAST_STATE_DEEP_SLEEP 

深睡眠开机

XT_HAL_PM_LAST_STATE_STANDBY 

休眠开机

在文件 xt_hal_pm.h 第 77 行定义.

◆ xt_hal_pm_mode

工作模式枚举

枚举值
XT_HAL_PM_MODE_WORK 

正常工作模式

XT_HAL_PM_MODE_SLEEP 

睡眠模式

XT_HAL_PM_MODE_PSM 

PSM 模式

XT_HAL_PM_MODE_MAX 

模式数量

在文件 xt_hal_pm.h 第 57 行定义.

◆ xt_hal_pm_power_on_reason

枚举值
XT_HAL_PM_POWER_ON_NORMAL 

正常开机

XT_HAL_PM_POWER_ON_CHARGING 

充电开机

XT_HAL_PM_POWER_ON_ALRAM 

闹钟开机

XT_HAL_PM_POWER_ON_EXCEPTRESET 

异常重启

XT_HAL_PM_POWER_ON_FOTA 
XT_HAL_PM_POWER_ON_RTC 
  • FOTA 开机 RTC 开机
XT_HAL_PM_POWER_ON_RESET 

硬件复位开机

XT_HAL_PM_POWER_ON_WDT 

WDT 开机

XT_HAL_PM_POWER_ON_STANDBY 

STANDBY 开机

XT_HAL_PM_POWER_ON_SW_RESET 

软件复位开机

XT_HAL_PM_POWER_ON_UNKNOWN 

未知开机原因

XT_HAL_PM_POWER_ON_INVALID 

在文件 xt_hal_pm.h 第 93 行定义.

◆ xt_hal_pm_wake_reason

唤醒原因枚举

枚举值
XT_HAL_PM_WAKE_REASON_RESET 

上电/复位开机

XT_HAL_PM_WAKE_REASON_RTC 

RTC 唤醒

XT_HAL_PM_WAKE_REASON_WAKEUP 

外部中断唤醒

XT_HAL_PM_WAKE_REASON_KEY_WAKEUP 

按键唤醒

在文件 xt_hal_pm.h 第 67 行定义.

◆ xt_hal_pm_wake_reason_detail

唤醒原因详细枚举

枚举值
XT_HAL_PM_WAKE_REASON_DETAIL_RESET 

上电/复位开机

XT_HAL_PM_WAKE_REASON_DETAIL_RTC 

RTC开机

XT_HAL_PM_WAKE_REASON_DETAIL_WAKEUP 

WakeupIn/Pad/IO开机

XT_HAL_PM_WAKE_REASON_DETAIL_WAKEUP_RTC 

Wakeup/RTC开机

在文件 xt_hal_pm.h 第 86 行定义.

函数说明

◆ xt_hal_pm_check()

int32_t xt_hal_pm_check ( uint8_t mode)

检查是否可以进入指定低功耗模式

参数
mode低功耗模式,见 xt_hal_pm_mode
返回
int32_t 可以进入的最低功耗模式,见 xt_hal_pm_wake_mode

◆ xt_hal_pm_force()

xt_err_t xt_hal_pm_force ( uint8_t mode)

强制进入指定功耗模式

参数
mode功耗模式,见 xt_hal_pm_mode
返回
xt_err_t 错误码
  • XT_EOK: 成功
  • XT_EINVAL: 参数无效
  • XT_ERROR: 进入指定功耗模式失败

◆ xt_hal_pm_get_last_state()

xt_err_t xt_hal_pm_get_last_state ( uint8_t * last_state,
uint8_t * wake_reason )

唤醒原因,用于判断是从开机是否是由休眠状态下开机/唤醒

参数
[out]last_state前一个状态,见 xt_hal_pm_last_state
[out]wake_reason唤醒原因,见 xt_hal_pm_wake_reason_detail
返回
xt_err_t 错误码

◆ xt_hal_pm_get_reset_reason()

int32_t xt_hal_pm_get_reset_reason ( void )

获取重启原因,等同于获取开机原因

返回
int32_t 开机原因,见 xt_hal_pm_power_on_reason

◆ xt_hal_pm_get_wake_reason()

int32_t xt_hal_pm_get_wake_reason ( void )

获取开机原因

返回
int32_t 开机原因,见 xt_hal_pm_power_on_reason

◆ xt_hal_pm_poweroff()

xt_err_t xt_hal_pm_poweroff ( void )

系统关机

返回
xt_err_t 错误码

◆ xt_hal_pm_request()

xt_err_t xt_hal_pm_request ( uint8_t mode)

请求进入指定功耗模式

参数
mode功耗模式,见 xt_hal_pm_mode
返回
xt_err_t 错误码
  • XT_EOK: 成功
  • XT_EINVAL: 参数无效
  • XT_ERROR: 进入指定功耗模式失败

◆ xt_hal_pm_reset()

xt_err_t xt_hal_pm_reset ( void )

系统复位

返回
xt_err_t 错误码

◆ xt_hal_pm_set_power()

xt_err_t xt_hal_pm_set_power ( uint8_t power_id,
uint8_t val )

控制内部电源域开关

参数
power_id电源域 ID,见 xt_hal_pm_power_id
val电源域开关状态,0 关闭,1 打开
返回
xt_err_t 错误码
  • XT_EOK: 成功
  • XT_EINVAL: 参数无效
  • XT_ERROR: 失败

◆ xt_hal_pm_timer_close()

xt_err_t xt_hal_pm_timer_close ( uint8_t timer_id)

关闭定时唤醒

参数
timer_id定时器 ID,见 xt_hal_pm_timer_id
返回
xt_err_t 错误码
  • XT_EOK: 成功
  • XT_EINVAL: 参数无效
  • XT_ERROR: 定时器未配置

◆ xt_hal_pm_timer_get_remaining()

xt_err_t xt_hal_pm_timer_get_remaining ( uint8_t timer_id,
xt_hal_rtc_timestamp_t * remaining_time_ms )

获取定时器剩余时间

获取指定定时器的剩余时间,单位为毫秒。注意,定时器单位由平台定义,可能只有秒级精度。 如果定时器未运行或已过期或剩余时间不到 1 s(秒级精度时),返回 0。

参数
timer_id定时器 ID,见 xt_hal_pm_timer_id
[out]remaining_time_ms剩余时间(单位:毫秒)
返回
xt_err_t 错误码
  • XT_EOK: 成功
  • XT_EINVAL: 参数无效
  • XT_ERROR: 定时器未运行或获取失败

◆ xt_hal_pm_timer_is_running()

bool xt_hal_pm_timer_is_running ( uint8_t timer_id)

检查定时器是否运行

参数
timer_id定时器 ID,见 xt_hal_pm_timer_id
返回
true 定时器正在运行,false 未运行或参数无效

◆ xt_hal_pm_timer_setup()

xt_err_t xt_hal_pm_timer_setup ( uint8_t timer_id,
uint32_t timeout_ms,
xt_hal_pm_cb_t cb )

设置定时唤醒

在睡眠模式和关机模式下都生效。配置定时器在指定时间后触发唤醒回调,只触发一次。 关机模式唤醒时不会触发回调,但会唤醒系统。

参数
timer_id定时器 ID,见 xt_hal_pm_timer_id
timeout_ms超时时间(单位毫秒,实际精度由平台定义,可能只有秒级精度)
cb定时器回调函数,超时时调用
返回
xt_err_t 错误码
  • XT_EOK: 成功
  • XT_EINVAL: 参数无效
  • XT_EBUSY: 定时器已存在
  • XT_EIO: RTC 闹钟设置失败