嗨对话框
在演示项目approxity->reporter\fh中,我找到了唤醒计时器中断回调函数,我有一些问题要咨询。
无效应用按钮按下cb(无效)
{
...
if(GetBits16(SYS\u STAT\u REG,PER\u IS \u DOWN))
periph_init();//为什么要在这里进行外设初始化?如果我删除这个函数会发生什么?
如果(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);
}
应用程序按钮启用();//为什么我需要再次启用按钮,即使我已经在其他地方这样做了。
}
你好,SK,
在睡眠模式下,外围模块断电。唤醒时,需要再次初始化外围设备(例如,需要恢复SPI或UART功能)。
在回叫例程中再次启用唤醒按钮还可以在设备连接时在睡眠模式下启用异步唤醒。
比尔
对话蓝牙智能团队
Hi-AK\u对话框
我明白了,这对我很重要。
非常感谢你。
@aku Dialog,嗨,我有一个问题,就我而言,periph\u init()在每次BLE唤醒时都被称为periodic。那么什么时候应该在app\u button\u press\u cb中调用periph\u init()?是因为当设备连接时,广告被停止,因此periph\u init()不被周期性调用吗?
你好,20100514,
无论是连接间隔还是播发间隔(当没有外部中断时,从BLE\u WAKEUP\u处理程序调用periph\u init),每次da必须执行某项操作时,都会调用periph\u init()来初始化外围设备。在发生外部唤醒事件时,应该首先调用回调函数,这就是为什么必须在press\u button函数中调用periph\u init()。
谢谢你的对话
好的,我明白了。所以当系统被BLE定时器唤醒时,需要调用periph\u init()来做些什么?
你好,20100514,
当系统被BLE计时器唤醒时,会调用WAKEUP\u处理程序,在wake up ISR中还会调用periph\u init()函数。你不必自己叫它,它是ISR叫的。
谢谢你的对话
非常感谢。