Firefly开源社区

打印 上一主题 下一主题

fireble深度睡眠与唤醒

28

积分

0

威望

0

贡献

游客

积分
28

fireble深度睡眠与唤醒

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


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


回复

使用道具 举报

400

积分

0

威望

0

贡献

注册会员

Rank: 8Rank: 8

积分
400
QQ
发表于 2016-8-10 10:03:40        只看该作者  沙发
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唤醒(开机)。
没个性,不签名!
回复

使用道具 举报

28

积分

0

威望

0

贡献

游客

积分
28
发表于 2016-8-10 10:30:10        只看该作者  板凳
哦 好 非常感谢~完美
回复

使用道具 举报

27

积分

0

威望

0

贡献

游客

积分
27
发表于 2016-8-11 14:39:41        只看该作者  地板
:handshake
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表