进入休眠后无法唤醒
-
回复: 进入休眠后无法唤醒
-
@lys Sleep模式:
sleep模式,芯片随时可以起来工作,唤醒不会复位
一般情况下此模式是考虑功耗的情况下,使用最多的一种模式。开启sleep模式不会影响广播,连接等BLE的工作。
用户可以在应用层决定是否打开此模式,但是打开sleep后芯片并不会立刻进入休眠状态,而是在任务处理完后才会自动进入休眠状态。也就是说进入或者不进入休眠实际上是协议栈底层自动决定的,当有任务(比如广播,软件定时器,rtc)需要执行就起来工作,没有任务执行就进入睡眠状态。
如果想要芯片较长时间在休眠状态,只需要把自己的应用层的任务都关闭,比如关闭广播,软件定时器等。
代码上调用system_sleep_enable打开此模式。
芯片在睡眠前会先进入user_entry_before_sleep_imp函数(不同系列芯片接口名称略有差异,此处以FR801x举例),然后睡眠
芯片在唤醒后会先进入user_entry_after_sleep_imp函数(不同系列芯片接口名称略有差异,此处以FR801x举例)。如果我们唤醒后需要操作cpu控制的外设(比如iic),需要在使用前初始化,就可以在此接口进行外设初始化
代码上调用system_sleep_disable关闭此模式
休眠状态CPU掉电,PMU不掉电,所以唤醒后需要重新初始化CPU的外设,休眠状态因为CPU掉电,所以也无法进行jlink烧录调试