设置扩展睡眠模式后,程序仍然运行主循环

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
亚伦李
离线
最后看到:5个月4个星期前
加入:2016-09-12 20分
设置扩展睡眠模式后,程序仍然运行主循环

你好,下午对话框,
我正在开发一个基于SDK5.0.3和ble_app_profile项目的项目。程序执行以下功能后,芯片应停止运行,只有外部中断才能唤醒系统。

Int user_app_adv_timer_handler(ke_msg_id_t const msgid,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{

app_easy_gap_advertise_stop ();

ke_timer_clear (APP_ADV_TIMER TASK_APP);

arch_set_extended_sleep ();

//禁用BLe和timer事件的唤醒。只有外部(GPIO)唤醒事件才能唤醒处理器。
arch_ble_ext_wakeup_on ();

user_app_button_enable ();

返回(KE_MSG_CONSUMED);

但我发现程序仍然运行主循环。根据我的理解,芯片应该暂停并等待外部中断来执行以下功能。

//等待中断恢复操作
注射用水();
/ /恢复操作
arch_resume_from_sleep ();
你能给我一些建议或支持吗?非常感谢你的帮助!

最好的问候,
亚伦

设备:
PM_Dialog
在线
最后看到:13分4秒前
工作人员
加入:2018-02-08 11:03
嗨,亚伦,

嗨,亚伦,

你能解释一下“芯片应该停止”是什么意思吗?你的意思是设备应该进入扩展休眠模式,只有外部中断才能唤醒它吗?我理解对了吗?请试着描述一下你想要完成什么,以便为你提供正确的指导方针。

谢谢,PM_Dialog

亚伦李
离线
最后看到:5个月4个星期前
加入:2016-09-12 20分
嗨对话框点,

嗨对话框点,
我的意思是,设备应该进入扩展睡眠模式,并停止执行程序,直到外部中断唤醒。但我发现设备还在运行主循环。

PM_Dialog
在线
最后看到:13分4秒前
工作人员
加入:2018-02-08 11:03
嗨,亚伦,

嗨,亚伦,

请检查SDK的ble_app_sleepmode示例。这个例子演示了如何使用休眠模式API并在运行时更改休眠模式。要获得这个SDK示例的进一步信息,请阅读DA1458x软件开发人员指南9 (UM-B-050)用户手册的8.50 Pillar 5(睡眠模式)部分。这个示例演示了您想要开发的应用程序,所以请尝试在ble_app_profile项目中实现扩展的睡眠功能。另外,请注意ble_app_sleepmode示例包含ble_app_profile的实现。

谢谢,PM_Dialog

亚伦李
离线
最后看到:5个月4个星期前
加入:2016-09-12 20分
你好,下午对话框,

你好,下午对话框,
让我简单地回答我的问题。

1.如果程序执行arch_set_extended_sleep()函数,设备将进入扩展睡眠模式。程序不会运行主循环并在WFI()停止,直到外部中断调用,对吗?

2.对于arch_set_extended_sleep()函数,有以下注释。这意味着即使程序执行arch_set_extended_sleep()函数,系统也可以在空闲/活动/扩展睡眠模式下工作,对吗?如果是,如何决定系统工作在哪个模式?

/ * *
****************************************************************************************
* @brief激活扩展睡眠模式。系统以idle / active / extended休眠模式运行。
* @param无效
* @return无效
****************************************************************************************
*/
空白arch_set_extended_sleep(空白)

PM_Dialog
在线
最后看到:13分4秒前
工作人员
加入:2018-02-08 11:03
嗨,亚伦,

嗨,亚伦,

是的,这是对的,系统正在等待一个中断,如果允许的话就进入睡眠状态。请打开user_config文件夹下的user_config.h头文件。然后,您应该设置app_default_sleep_mode变量,使用您的设备操作的模式。

谢谢,PM_Dialog