|
发表于 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唤醒(开机)。 |
|