嗨对话框
在演示项目接近 - > reporter_fh.i中找到了唤醒计时器中断回调功能,我有一些问题需要咨询。
void app_button_press_cb(void)
{
...
if(getBits16(sys_stat_reg,per_is_down))
periph_init();//为什么在这里进行外围初始化?如果我删除功能会发生什么?
if(app_ble_ext_wakeup_get())
{
#if(ext_sleep_enabled)
app_set_extended_sleep();
#elif(deep_sleep_enabled)
app_set_deep_sleep();
#别的
app_disable_sleep();
#万一
setBits32(gp_control_reg,ble_wakeup_req,1);
app_ble_ext_wakeup_off();
ke_msg_send_basic(app_wakeup_msg,task_app,null);
}
app_button_enable();//以及为什么我需要再次启用按钮,即使我在其他地方也这样做。
}
嗨,SK,
在睡眠模式下,外围块被关闭。在唤醒时,需要再次进行外围设备(例如,需要还原SPI或UART功能)。
在设备连接时睡眠模式下,在呼叫的例程中再次启用唤醒按钮也可以使异步唤醒。
br
对话框蓝牙智能团队
嗨,ak_dialog
我明白了,这对我来说很厉害。
非常感谢。
@ak_dialog,嗨,就我而言,我有一个问题,每当BLE醒来时,Periph_init()被称为周期性。那么,什么时候应该在app_button_press_cb中调用periph_init()?是因为事实是,当设备连接时,广告被停止,因此periph_init()不称为周期性?
HI Summer20100514,
periph_init()被调用,以便每次DA必须做某事时,无论是连接间隔还是广告间隔(当没有外部中断时,periph_init都会从ble_wakeup_handler调用periph_init)。如果发生外部唤醒事件,则应首先调用回调函数,这就是为什么您必须在press_button函数中调用periph_init()。
谢谢mt_dialog
好的我明白了。因此,当系统被BLE计时器唤醒时,需要调用periph_init()做某事吗?
HI Summer20100514,
当BLE计时器唤醒系统时,称为wakeup_handler,在唤醒isr中,periph_init()函数也称为。您不必自己打电话给它是由ISR调用的。
谢谢mt_dialog
谢谢你。