亲爱的团队对话框,
我引用ble_app_sleepmode项目来实现ble_app_barebone项目中的按钮唤醒。我还使用app_timer_set()来定期为信标唤醒。
我用来睡觉的模式是扩展睡眠模式。开始睡觉的功能如下。
空白user_app_adv_undirect_complete (uint8_t状态)
{
…
app_timer_set (APP_BEACON_TIMER TASK_APP、延迟);
arch_set_extended_sleep ();
arch_ble_ext_wakeup_on ();
app_button_enable ();
…
}
现在,我可以通过BLE定时器正确地定期醒来。但是当我按下按钮,系统就会重置。
是否与OTP的使用以及深度睡眠模式有关?因为我在用Flash刻录代码。
最好的问候,
西蒙
P.S. app_button_press_cb()和app_wakeup_cb()稍微做了修改,所以我认为它们不会影响结果。
关键词:
设备:
嗨,西蒙•王
设备在何种模式下运行(延长或深度睡眠)?当问题发生时,请尝试连接调试器,以便查看设备到底在哪里停止。也让我知道,如果你有看门狗启用。
由于MT_dialog
嗨,对话框的团队,
我使用“arch_set_extended_sleep()”来设置睡眠模式,所以它必须是扩展的,对吗?
我的代码是这样写的,
静态孔隙app_wakeup_cb(空白)
{
user_app_adv_start ();
}
我没有改变app_button_press_cb(void)中的任何东西。
在上述情况下,我发现系统将重置,这可能是由于看门狗。
但是如果我将“user_app_adv_start();”移动到app_button_press_cb(void)函数,我将得到广告,系统就像我想的那样变得很好。
您能解释一下唤醒过程的顺序以及为什么app_wakeup_cb()没有执行吗?
最好的问候,
西蒙
嗨,西蒙•王
是的,因为你正在使用arch_set_extended_sleep(),睡眠应该被扩展,关于你的问题,你将必须检查系统做什么,并重置,以便我能够理解可能的原因可能是什么。你提到重置可能是由于看门狗,你能确保,在调试模式下运行代码与开发标志(DEVELOPMENT_DEBUG设置),并检查系统是否卡在NMI_Handler,此外,如果您可以附加功率分析器,并检查当问题发生时系统会做什么,这也将有助于调试。另外,请确保在计时器发出的广告启动和按钮按下之间没有冲突(据我所知,计时器和外部中断都触发了广告,所以请检查在那一点上是否没有奇怪的事情发生)。
由于MT_dialog