唤醒——从外部销在延长睡眠模式

⚠️
大家好. .谢谢光临论坛。令人兴奋的消息!我们现在在移动的过程中,我们的新论坛平台,将提供更好的功能和包含在主对话框的网站。所有文章和帐户已经被迁移。我们现在只接受交通新论坛,请发布任何新的线程//www.xmece.com/support。我们将修复bug /优化搜索和标签在接下来的日子里。
4新职位/ 0
最后发表
jsayed
离线
最后看到:1年6个月前
加入:2014-12-11 23:46
唤醒——从外部销在延长睡眠模式

你好,我昨天发布了但我不认为我的帖子我上传一遍

你好,

我工作在一个项目上祝福设备(DA14580)是在延长睡眠模式。它醒来执行广告周期并再次回到延长睡眠模式。其在接入模式从而提供连接到中央设备。——漂亮的香草BLE操作。现在,然后我需要得到设备的关注。我执行这个开关产生外部中断(高到低)连接到GPIO_PORT_0 GPIO_PIN_1。这类似于SDK_5.0.4 BLE例子例子如prox_reporter。在这个论坛上或其他的例子

但我有问题。因此需要一些指导。

请看下面的代码:

答:app_default_sleep_mode = ARCH_SLEEP_OFF禁用睡眠模式。我在凯尔禁用了调试器,和一个终端程序来查看我的printf花丝。后app_button_enable configuered按钮()的意义。我按外部开关和我能够达到中断回调(空白app_button_press_cb()),我已经证实arch_ble_ext_wakeup_get()返回true。你看起来很好,除了app_wakeup_cb()是不会叫。这是发生在深度睡眠模式下因为我不是吗?

b当我设置app_default_sleep_mode = ARCH_EXT_SLEEP_ON,一切工作直到我按外部开关,然后该设备进入拉拉土地。它像它失去了它所有的I / O配置是正常的,当你从延伸睡眠中唤醒。但在这种情况下,唤醒控制器应该接管和中断回调例程。但事实并非如此。因此我的问题。

我将很感激任何帮助我通过这个,谢谢

/ / = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

我的代码,

静态孔隙app_wakeup_cb(空白){
suart_printStr (“\ r \ nwakeUpCb”);
/ /如果没有空闲状态,忽略该消息
如果(ke_state_get (TASK_APP) = = APP_CONNECTABLE) {
default_advertise_operation ();
}
}

/ / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

静态孔隙app_button_press_cb(空白){

suart_printStr (“\ r \ nbtnPressed”);

如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN)) {
periph_init ();
}

如果(arch_ble_ext_wakeup_get ()) {
suart_printStr (“\ r \ ngotExtWup”);
arch_set_sleep_mode (app_default_sleep_mode);
arch_ble_force_wakeup ();
arch_ble_ext_wakeup_off ();
app_easy_wakeup ();
}

}

/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
空白app_button_enable (void) {

app_easy_wakeup_set (app_wakeup_cb);
wkupct_register_callback (app_button_press_cb);

如果(GPIO_GetPinStatus (GPIO_PORT_0 GPIO_PIN_1)) {
wkupct_enable_irq (WKUPCT_PIN_SELECT (GPIO_PORT_0 GPIO_PIN_1),
WKUPCT_PIN_POLARITY (GPIO_PORT_0 GPIO_PIN_1 WKUPCT_PIN_POLARITY_LOW),
1,/ / 1事件
0);/ /消除抖动时间= 0
}

suart_printStr (“\ r \ nenb——”);
}

/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
空白app_advertise_complete (const uint8_t状态){

如果(状态= = GAP_ERR_CANCELED) {
arch_ble_ext_wakeup_on ();
}

app_button_enable ();
user_app_adv_start ();/ /如果isAdvertisingSetActive重启广告
}

谢谢你!

设备:
PM_Dialog
离线
最后看到:1小时37分钟前
工作人员
加入:2018-02-08 11:03
嗨jsayed,

嗨jsayed,

请看看ble_app_sleepmode SDK的例子。DA14580广告开始,如果没有连接,广告停止在一个预定义的时间(APP_ADV_DATA_UPDATE_TO)。所以,当广告之后,user_app_adv_undirect_complete()和唤醒按钮触发配置(app_button_enable)。.app_on_adv_undirect_complete user_app_adv_undirect_complete登记的项目在user_callback_config.h user_app_callbacks结构。如果我能理解正确,而不是user_app_adv_undirect_complete(),注册app_advertise_complete(),不是吗?你能请注明吗?

同样,如果您在调试模式下运行ble_app_sleemode示例中,和一个断点app_wakeup_cb()和一个在app_button_press_cb(),您将看到机器人的触发按钮被按下时,但app_button_press_cb()执行。

  1. 当设备配置没有睡眠模式,你停止广告吗?
  2. 你能移除GPIO_GetPinStatus if条件()?wkupct_enable_irq()用于检测唤醒中断,所以不需要得到的的状态。

谢谢,PM_Dialog

jsayed
离线
最后看到:1年6个月前
加入:2014-12-11 23:46
谢谢你的快

谢谢你的快速反应——执行你的建议但unfortuntly没有变化情况。

0。是的——> .app_on_adv_undirect_complete = app_advertise_complete user_app_callbacks结构中设置

1。不,我不停止广告,当设备配置了没有睡眠模式,代码都是一样的——除了我抛不睡眠模式扩展的睡眠模式。在user_config。我选择一个或其他,编译和运行。

/ /静态常量sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;
const静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;

2。删除GPIO_GetPinStatus() - - - >完成。

情况并没有改变。感谢你——谢谢…jsayed进一步一起商讨

PM_Dialog
离线
最后看到:1小时37分钟前
工作人员
加入:2018-02-08 11:03
嗨jsayed,

嗨jsayed,

如果你不停止广告app_advertise_complete永远不会。应用程序将发送GAPM_CANCEL_CMD向堆栈,以阻止广告。一旦完成,你会得到一个GAPM_ADV_UNDIRECT,这意味着广告过程完成后,app_on_adv_undirect_complete将被触发。请检查app_task。c文件。启用了唤醒按钮在你的代码吗?只有在app_advertise_complete () ?

谢谢,PM_Dialog