#如果(外部睡眠启用) app_set_extended_sleep(); #elif(启用深度睡眠) app_set_deep_sleep(); #其他 app_disable_sleep(); #结束 SetBits32(GP\ U CONTROL\ U REG,BLE\ U WAKEUP\ U REQ,1); app_ble_ext_wakeup_off(); ke\ u msg\ u send\ u basic(APP\ u WAKEUP\ u msg,TASK\ u APP,NULL); } 应用程序按钮启用();
问:1如果函数app\u ble\u ext\u wakeup\u get()返回false,这意味着什么? 这是叫醒我的地方吗?SetBits32(GP\ U CONTROL\ U REG,BLE\ U WAKEUP\ U REQ,1); 3为什么需要调用此函数?app_ble_ext_wakeup_off();
当然会很好的。有很多帖子都在讨论外部中断,也许你应该先看看这些。
你好,李阳,
请大家除了从论坛的帖子中请大家看一下文件UM-B-004外设驱动程序和UM-B-006睡眠模式配置。
谢谢你的对话
嗨,对话:
嗯,我已经阅读了文档UM-B-004外设驱动程序和UM-B-006睡眠模式配置。我总是有一些问题。
我可以在GPIO2\u Handler()中发送消息吗(我的测试证明它可以工作)?如果可以的话,什么时候可以发送信息?UM-B-006
所说的外部中断是一个异步事件,它不能使BLE核心活动。等待同步事件发生?
谢谢李阳
你好,李阳,
您可以使用ke\u msg\u send\u basic()函数将消息从ISR发送到内核,然后发送到任务应用程序(请检查SmartTag参考设计,通过中断处理程序发送消息)。该文档解释说,如果存在外部中断,BLE内核很可能正在休眠,这就是为什么称为异步中断。如果有一个异步中断,你可以唤醒BLE内核。
谢谢你的对话
嗨,对话:
如果存在异步中断,如何唤醒BLE内核?
谢谢李阳
你好,李阳,
请在app\u button\u press\u cb()函数中检查SmartTag代码,软件收到外部按钮中断唤醒BLE并发送消息。
谢谢你的对话
嗨,Dialog,
这样地?
如果(app\u ble\u ext\u wakeup\u get())
{
//在这里醒来
#如果(外部睡眠启用)
app_set_extended_sleep();
#elif(启用深度睡眠)
app_set_deep_sleep();
#其他
app_disable_sleep();
#结束
SetBits32(GP\ U CONTROL\ U REG,BLE\ U WAKEUP\ U REQ,1);
app_ble_ext_wakeup_off();
ke\ u msg\ u send\ u basic(APP\ u WAKEUP\ u msg,TASK\ u APP,NULL);
}
应用程序按钮启用();
问:1如果函数app\u ble\u ext\u wakeup\u get()返回false,这意味着什么?
这是叫醒我的地方吗?SetBits32(GP\ U CONTROL\ U REG,BLE\ U WAKEUP\ U REQ,1);
3为什么需要调用此函数?app_ble_ext_wakeup_off();
谢谢李阳。
你好,李阳,
app\u ble\u ext\u wakeup\u get()检查ble core是否处于永久睡眠状态。。。。。您可以在数据表中找到BLE\ U WAKEUP\ U REQ的功能。您还可以在文档UM-B-006中找到为什么需要调用app\u ble\u ext\u wakeup\u off()。
谢谢你的对话
嗨,对话:
在函数app\u ble\u ext\u wakeup\u off()中,只分配了一个标志——sleep\u ext\u force。而功能的简单之处是将BLE核心置于永久睡眠状态。
它能工作吗?为什么?
谢谢李阳
你好,李阳,
函数app\u ble\u ext\u wakeup\u off()的作用是禁用da只从外部中断中唤醒的功能。文档UM-B-006指示,如果您仅从外部中断中被唤醒(您已将app\u ble\u ext\u wakeup\u设置为on()),并且您希望唤醒ble,则必须通过调用app\u ble\u ext\u wakeup\u off()恢复默认操作模式,否则ble将无法唤醒以服务ble事件。
谢谢你的对话