关于SDK5.0.4里面sleepmode例程中,BLE_WAKEUP_LP_Handler(void)的问题

在使用SDK5.0.4里面sleepmode例程过程中,我发现在蓝牙连接前的广播阶段,程序会不断的调用BLE_WAKEUP_LP_Handler(void),每次调用就会调用periph_init()函数。现请问:
1、BLE_WAKEUP_LP_Handler(void)在什么情况下会触发,调用它的时间间隔在哪设定。
2、我的程序设计了一个外部按键中断,初始化是在periph_init()里面,但是发现蓝牙没有连接的时候中断还起作用,连接后中断无法进入。不知道是在哪里把中断禁止了。
3、我想实现按键中断后能够主动进入休眠模式,是不是直接调用arch_goto_sleep()函数。
4、还有就是在使用GPIO中断时,初始化完就会直接进入中断,不知为何。

  • 你好,

    这个是睡眠唤醒时的Handler,在没有其他外部中断进入唤醒的情况下,只有BLE活动会自动唤醒睡下去的设备,例如广播,连接,发送数据等动作。你看到的现象是周期广播之前的唤醒动作,每次唤醒过程中也会初始化一下外设(睡眠过程中所有GPIO保持睡眠前状态),不然没有办法正常工作。至于时间间隔当然也是跟着广播动作的间隔走。

    至于中断的问题,如果是按键进入睡眠状态的话,有蓝牙活动时是不会进入睡眠状态的。

  • 您好,非常感谢您的回答。对于GPIO中断设置在连接后GPIO中断不起作用,不知道是在哪里吧GPIO中断屏蔽了,这个问题还不是很清楚。