你好,下午对话框,
我正在开发一个基于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
嗨对话框点,
我的意思是,设备应该进入扩展睡眠模式,并停止执行程序,直到外部中断唤醒。但我发现设备还在运行主循环。
嗨,亚伦,
请检查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
你好,下午对话框,
让我简单地回答我的问题。
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(空白)
嗨,亚伦,
是的,这是对的,系统正在等待一个中断,如果允许的话就进入睡眠状态。请打开user_config文件夹下的user_config.h头文件。然后,您应该设置app_default_sleep_mode变量,使用您的设备操作的模式。
谢谢,PM_Dialog