Firefly开源社区

标题: fireble深度睡眠与唤醒 [打印本页]

作者: lhwtt1111    时间: 2016-8-10 09:30
标题: fireble深度睡眠与唤醒
官方例子里的 qpps 历程,主函数代:
1.   ke_schedule();  //这个函数我知道是跟蓝牙有关的函数
2.  GLOBAL_INT_DISABLE_WITHOUT_TUNER(); //这个函数不知道有什么用
3.  usr_sleep_st = usr_sleep(); //这个函数打开之后 会影响到串口数据,不知道为什么
4.  enter_sleep()这个函数调用以后我的理解就是进入睡眠模式了,但是不知道为什么 所有的led灯都没有灭,必须要用程序关闭之后再进入睡眠状态?
5 . 芯片深度睡眠以后会处于什么状态? 如何去唤醒他,让他变成睡眠之前的状态?


坐等大神讲解~万分感谢!好人幸福一生~



作者: 安安    时间: 2016-8-10 10:03
main函数中,主要就是任务调度和睡眠判断。
1.ke_schedule(); 任务调度,每次都查询任务列表任务是否为空,非空的话就切换到最早进入列表的任务。
2.GLOBAL_INT_DISABLE_WITHOUT_TUNER();  有英文 注释,不懂的话就是不用心了啊,和GLOBAL_INT_RESTORE_WITHOUT_TUNER是成对的,大概就是保护中间代码不被中断给打断。
3. usr_sleep_st = usr_sleep();   usr_sleep_st和ble_sleep_st都是指示系统当前能够进入到多深的睡眠状态的,看数据手册都知道BLE有五个工作状态,就是靠这两个东西决定能够进入到多深的睡眠,关于这两个值的条件,要去数据手册查,关掉哪一部分能够进入到多深的睡眠。
4. enter_sleep()  这个确实是进入睡眠的,数据手册上有对睡眠唤醒的条件,其中只有最深度睡眠是非P0或P1组的GPIO唤醒不可的,其他睡眠状态可以软件唤醒。至于灯没有灭的原因是,睡眠周期太短了,只有几毫秒或者几十毫秒就又唤醒一次了,瞬间处理完工作后再次进入睡眠,所以人是不能明显感觉出它在睡眠的,会感觉蓝牙一直是连着的,根本没有断开过。另外不同睡眠模式关闭的单元不一样,去查一下数据手册,是不是在普通睡眠模式下gpio是继续工作的。

深度睡眠,就是常用的BLE产品所谓 的关机了,只能GPIO唤醒(开机)。
作者: lhwtt1111    时间: 2016-8-10 10:30
哦 好 非常感谢~完美
作者: Gabrielice    时间: 2016-8-11 14:39
:handshake




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1