设备未从延长休眠唤醒

学到更多常见问题解答教程

4帖/ 0新
最后发表
wisilica
离线
最后一次露面:5个月4天前
加入时间:2015年3月17日08:16
设备未从延长休眠唤醒

嗨,

我工作的项目,其中设备的默认睡眠模式被延长睡眠模式。我试图唤醒器件采用同步和异步机制。
我们面临的问题是该设备不唤醒从计时器回调,但不从外部中断唤醒。
以下是用于唤醒使用外部中断配置代码片段:
空隙set_pad_functions(){
GPIO_ConfigurePin(GPIO_ACC_INT2_PORT,GPIO_ACC_INT2_PIN,INPUT_PULLDOWN,PID_GPIO,FALSE);
}

无效user_app_disconnect(结构gapc_disconnect_ind常量* PARAM)
{
start_adv();
}

无效start_adv()
{
arch_ble_ext_wakeup_on();
app_button_enable();
}

静态无效app_button_enable(无效)
{
app_easy_wakeup_set(app_wakeup_cb);
wkupct_register_callback(app_button_press_cb);
wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_ACC_INT2_PORT,GPIO_ACC_INT2_PIN),//选择引脚(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN)
WKUPCT_PIN_POLARITY(GPIO_ACC_INT2_PORT,GPIO_ACC_INT2_PIN,WKUPCT_PIN_POLARITY_HIGH),//极性低
1,// 1个事件
40);//去抖动时间= 0
}

静态无效app_wakeup_cb(无效)
{

}

静态无效app_button_press_cb(无效)
{
如果(GetBits16(SYS_STAT_REG,PER_IS_DOWN))
{
periph_init();
}

如果(arch_ble_ext_wakeup_get())
{
arch_set_sleep_mode(app_default_sleep_mode);
arch_ble_force_wakeup();
arch_ble_ext_wakeup_off();
app_easy_wakeup();
}
}

我现在面临的问题是,在触发的接收,程序控制达到功能app_button_press_cb(),但不是功能app_wakeup_cb()。请建议为同一的可能原因。

谢谢

设备:
MT_dialog
离线
最后一次露面:1周1次天前
员工
加入时间:2015-06-08 11:34
嗨wisilica,

嗨wisilica,

韦尔如果当中断发生时的设备到达app_button_press_cb(),其是指该装置获取的中断,如果它永远不会到达app_wakeup_cb这意味着执行从不到达app_easy_wakeup(),这意味着,该arch_ble_ext_wakeup_get()为假。由于arch_ble_ext_wakeup_get()是假的,我会假设你调用arch_ble_ext_wakeup_off(),然后你为了设置sleep_ext_force标志回真不调用arch_ble_ext_wakeup_on()。

由于MT_dialog

wisilica
离线
最后一次露面:5个月4天前
加入时间:2015年3月17日08:16
嗨,

嗨,
事实上,arch_ble_ext_wakeup_get()是真的,(通过发行断点检查)。控制达到高达ke_msg_send_basic(wakeup_id,TASK_APP,0)在app_easy_wakeup部分()。但控制却没有达到app_wakeup_cb()。我也使用基于定时器的唤醒。有没有在做这两种唤醒机制,同时任何问题?基于定时器唤醒完美的作品。

谢谢

MT_dialog
离线
最后一次露面:1周1次天前
员工
加入时间:2015-06-08 11:34
嗨wisilica,

嗨wisilica,

如果app_wakeup_cb()不会触发,但该消息被设置并发送(app_easy_wakeup_set()和app_easy_wakeup()是被调用)检查user_modules_config.h文件,并确保该EXCLUDE_DLG_MSG被定义并设置为0,或许你有排除错误的模块。不,我不认为计时器应该是一个问题。

由于MT_dialog