我如何验证我的系统正在进入睡眠模式?是否有特定的回调,在将要睡觉/醒来时被调用?
我的代码目前正在调用以下函数:
/* *在一个唤醒周期,等待XTAL32M晶体安定。* BLE, USB和UART块需要XTAL32M启动和*运行工作正常。* / pm_set_wakeup_mode(真正的);/*设置所需的睡眠模式。* / pm_sleep_mode_set (pm_mode_extended_sleep);/*设置所需的唤醒模式。* / pm_set_sys_wakeup_mode (pm_sys_wakeup_mode_fast);
我只需要设置这些就可以确保我们在广告间隙睡觉了吗?
如果我是中心,我在扫描,我能期待什么样的睡眠时间表?
我在另一篇文章中读到SmartSnippets工具箱不能正确地读取uA中的睡眠周期值。如果我们想确认我们的设备在长睡眠周期内的当前使用情况,您建议我们如何处理?
谢谢你!
约翰
设备:
嗨,约翰,
非常感谢你的问题。我们将直接通过您的注册电子邮件地址联系您。
谢谢,PM_Dialog
你好
这是DA1468x的答案
如果您想确保系统处于睡眠模式,可以使用JTAG探针并在WFI指令上使用断点。JTAG探测将帮助确定所有条件都满足进入睡眠的精确时刻(os、ble、外设适配器中没有等待的任务,等等)。此时,睡眠关闭的所有资源都不可用(例如I2C寄存器库或关闭电源域中的任何寄存器库)。WFI的代码行位于ARM提供的CMSIS文件(sdk/bsp/include/cmsis_gcc.h)中。这个中断应该允许您检查外设的电源供应和GPIO状态,以确保没有丢失任何东西来维持最小的服务。
在唤醒后,所有这些注册银行都将通过唤醒程序恢复,因此您可以看到它们在关闭期间降为零,并在唤醒后恢复到之前的状态。
系统使用Timer1来管理它的睡眠时间,所以你也可以从Timer1中断处理器发送信号,例如一个GPIO和一个范围或一个LED。
鲍勃
嗨,鲍勃,
非常感谢您的指示和回答。
问候,PM_Dialog