System API of DA1458x Software Platform(二)

系统软件为应用程序提供了睡眠API,以修改操作模式(活动,扩展睡眠,深度睡眠)。 该API在arch_sleep.h头文件中定义,并提供以下功能:

void arch_disable_sleep(void)

禁用所有睡眠模式。 系统处于空闲或活动状态。

void arch_set_extended_sleep(void)

激活扩展睡眠模式。

void arch_set_deep_sleep(void)

激活深度睡眠模式。

uint8_t arch_get_sleep_mode(void)

返回当前操作模式。
0:禁用睡眠
1:扩展睡眠模式
2:深度睡眠模式

void arch_force_active_mode(void)

如果睡眠模式开启,则将其禁用。 存储当前的睡眠模式(在将其设置为“活动”之前),以便能够在需要时将其还原。

void arch_restore_sleep_mode(void)

恢复通过调用app_force_active_mode()更改的先前的睡眠模式(如果有)。 同时,该应用程序一定不能修改睡眠模式。

void arch_ble_ext_wakeup_on(void)

将BLE置于永久睡眠中,等待强制唤醒。从外部事件唤醒后,如果系统必须唤醒BLE,则必须通过调用app_ble_ext_wakeup_off()来恢复默认操作模式,否则BLE将无法唤醒 以便提供BLE事件!

void arch_ble_ext_wakeup_off(void)

将BLE内核的操作恢复为默认模式。 在这种模式下,即使没有安排BLE事件,BLE内核也会每10秒唤醒一次。 如果先前已经有事件安排,则BLE内核将更快地唤醒以提供服务。

bool arch_ble_ext_wakeup_get(void)

返回BLE内核的当前操作模式:
false:默认模式
true:永久睡眠,需要外部唤醒。

bool arch_ble_force_wakeup(void)

如果BLE内核处于睡眠状态(永久或非永久),则此功能将其唤醒。 如果永久睡眠,则应调用arch_ble_ext_wakeup_off()

uint8_t arch_last_rwble_evt_get(void)

返回一个值,该值通知有关最近发生的BLE或无线电中断。 该函数返回的值在arch_sleep.h的last_ble_evt枚举中定义。 它可以用于将异步任务(在先前描绘的钩子函数中执行的)与BLE或radio事件同步。

最后注意,arch_sleep.c模块监视对arch_force_active_mode()(计数器递增)和arch_restore_sleep_mode()(计数器递减)的调用次数。 为了使arch_restore_sleep_mode()实际启用睡眠模式,计数器必须为零! 这意味着应用程序必须确保至少调用arch_restore_sleep_mode()的次数与arch_force_active_mode()一样。 如果将应用程序分为不同的模块,则此规则分别适用于每个模块。
最后,请注意,Debugger调试器不能在任何睡眠模式下使用,因为必须关闭它才能允许关闭系统电源域。

发布了19 篇原创文章 · 获赞 4 · 访问量 1713

猜你喜欢

转载自blog.csdn.net/ydgd118/article/details/104457399