设备无法从长时间睡眠中唤醒

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
4个职位/0个新职位
最后一篇文章
维希利卡
离线
最后一次见到:11个月21小时前
已加入:2015-03-17 08:16
设备无法从长时间睡眠中唤醒

你好,

我正在进行一个项目,其中设备的默认睡眠模式是扩展睡眠模式。我正在尝试使用同步和异步机制唤醒设备。
我们面临的问题是,设备确实会从计时器回调中唤醒,但不会从外部中断中唤醒。
以下是用于使用外部中断进行唤醒配置的代码段:
void set\u pad\u functions(){
GPIO\ U配置引脚(GPIO\ U ACC\ U INT2\端口、GPIO\ U ACC\ U INT2\引脚、INPUT\下拉、PID\ U GPIO、false);
}

void user\u app\u disconnect(结构gapc\u disconnect\u ind const*参数)
{
启动\u adv();
}

无效开始\u adv()
{
arch_ble_ext_wakeup_on();
应用程序按钮启用();
}

静态无效应用程序按钮启用(无效)
{
app\u easy\u wakeup\u set(app\u wakeup\u cb);
wkupct注册回调(app按钮按下cb);
wkupct\u enable\u irq(wkupct\u PIN\u SELECT(GPIO\u ACC\u INT2\u PORT,GPIO\u ACC\u INT2\u PIN),//SELECT PIN(GPIO\u BUTTON\u PORT,GPIO\u BUTTON\u PIN)
WKUPCT\ U引脚\ U极性(GPIO\ U ACC\ U INT2\端口、GPIO\ U ACC\ U INT2\引脚、WKUPCT\ U引脚\ U极性\高)、//极性低
1,//1事件
40); // 去抖动时间=0
}

静态无效应用程序\u唤醒\u cb(无效)
{

}

静态无效应用按钮按下cb(无效)
{
if(GetBits16(SYS\u STAT\u REG,PER\u IS \u DOWN))
{
periph_init();
}

if(arch\u ble\u ext\u wakeup\u get())
{
arch\设置\睡眠\模式(应用\默认\睡眠\模式);
拱力唤醒();
arch_ble_ext_wakeup_off();
app_easy_wakeup();
}
}

我面临的问题是,在接收到触发器时,程序控制到达函数app\u button\u press\u cb(),而不是函数app\u wakeup\u cb()。请说明可能的原因。

谢谢

设备:
MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
你好,wisilica,

你好,wisilica,

当中断发生时,如果设备到达app\u按钮,按下cb(),则表示设备得到中断;如果设备从未到达app\u wakeup,则表示执行从未到达app\u easy\u wakeup(),并且表示arch\u ext\u wakeup\u get()为false。由于arch\u ble\u ext\u wakeup\u get()为false,因此我假设在调用arch\u ble\u ext\u wakeup\u off()时,不调用arch\u ble\u ext\u wakeup\u on()以将sleep\u ext\u force标志设置回true。

谢谢你的对话

维希利卡
离线
最后一次见到:11个月21小时前
已加入:2015-03-17 08:16
你好,

你好,
实际上,arch\u ble\u ext\u wakeup\u get()是true(通过发出断点进行检查)。控件最多可到达应用程序\u easy\u wakeup()中的ke\u msg\u send\u basic(wakeup\u id,TASK\u APP,0)部分。但是控件没有到达app\u wakeup\u cb()。我也使用基于计时器的唤醒。同时使用两种唤醒机制有什么问题吗?基于定时器的唤醒工作得很完美。

谢谢

MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
你好,wisilica,

你好,wisilica,

如果app\u wakeup\u cb()未触发,但消息已设置并发送(正在调用app\u easy\u wakeup\u set()和app\u easy\u wakeup()),请检查user\u modules\u config.h文件,确保已定义EXCLUDE\u DLG\u MSG并将其设置为0,可能是您错误地排除了模块。不,我不认为计时器有问题。

谢谢你的对话