设置延长睡眠模式后,程序仍会运行主循环

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
亚伦李
离线
最后一次露面:2个月3天前
加入:2016-09-12 14:20
设置延长睡眠模式后,程序仍会运行主循环

您好对话框PM,
我正在通过SDK5.0.3和BLE_APP_PROFILE项目开发一个项目。在函数突出的程序序列后,芯片应该停止,只能停止外部中断可以唤醒系统。

int user_app_adv_timer_handler(ke_msg_id_t const msgid,
void const * param,
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_EXTEDDE_SLEEP();

//禁用BLE和TIMER事件的唤醒。只有外部(GPIO)唤醒事件可以唤醒处理器。
ARCH_BLE_EXT_WAKEUP_ON();

user_app_button_enable();

return(ke_msg_consumed);
}

但我发现程序仍然运行主循环。正如我所理解的,芯片应该停止并等待外部中断以偏离功能。

//等待中断恢复操作
WFI();
//恢复操作
ARCH_RESUME_FROM_SLEEP();
你能给我一些建议还是支持?非常感谢你的帮助!

此致,
亚伦

设备:
PM_DIALOG.
离线
最后一次露面:1天21小时前
职员
加入:2018-02-08 11:03
嗨亚伦李,

嗨亚伦李,

你能解释一下你的意思是,“芯片应该停止”?您是否意味着设备应该进入扩展的睡眠模式,只有外部中断可以唤醒它?我明白了吗?请尝试描述您试图完成的内容,以便为您提供正确的指导方针。

谢谢,PM_DIALOG.

亚伦李
离线
最后一次露面:2个月3天前
加入:2016-09-12 14:20
嗨对话框PM,

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

PM_DIALOG.
离线
最后一次露面:1天21小时前
职员
加入:2018-02-08 11:03
嗨亚伦李,

嗨亚伦李,

请检查SDK的BLE_APP_SLEEPMODE示例。此示例演示如何使用睡眠模式API并在运行时更改睡眠模式。有关此SDK示例的更多信息,请阅读DA1458X软件开发人员指南9(UM-B-050)用户手册的8.50支柱5(睡眠模式)部分。此示例展示了您要开发的应用程序,因此请尝试在BLE_APP_PROFILE项目中实现扩展的休眠功能。此外,请注意BLE_APP_SLEEPMODE示例包括BLE_APP_PROFILE的实现。

谢谢,PM_DIALOG.

亚伦李
离线
最后一次露面:2个月3天前
加入:2016-09-12 14:20
您好对话框PM,

您好对话框PM,
让我只是我的问题。

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

2.对于ARCH_SET_EXTEDDED_SLEEP()函数,有以下评论。它意味着偶数程序执行arch_set_extendend_sleep()函数,系统也可以在空闲/活动/延长睡眠模式下工作,对吧?如果是,如何确定系统工作的模式?

/ **
****************************************************************************************
* @brief激活扩展睡眠模式。该系统以空闲/活动/扩展睡眠模式运行。
* @param void.
* @return void.
****************************************************************************************
* /
void arch_set_extended_sleep(void)

PM_DIALOG.
离线
最后一次露面:1天21小时前
职员
加入:2018-02-08 11:03
嗨亚伦李,

嗨亚伦李,

是的,这是对的,系统正在等待中断并允许睡眠。请打开user_config文件夹下的user_config.h标头文件。然后,您应该将App_default_sleep_mode变量设置为您的设备运行的模式。

谢谢,PM_DIALOG.