简介:
在芯片工作期间,如果程序不是所有时刻都有任务在运行,因此在系统空闲期间,这些工作电流其实是浪费掉的,可以人为的控制在无任务进行时使芯片进入低功耗,等到有任务准备执行前再唤醒起来执行。
在BLE蓝牙库中,就有这么一项低功耗处理措施。tmos时钟源来自于低速时钟,在休眠期间低速时钟会保持运转,并且由于我们每次配置tmos任务的运行时间时,都会传入一个时间参数,因此任意时刻,蓝牙库内部都是知道这些任务应该在什么时刻执行,并且哪些时间点是没有任务需要执行的,于是在我们初始化蓝牙库阶段,可以注册一个回调任务:
如果cfg.idleCB没有传入函数指针,则代表无休眠处理措施,如果传入了函数指针,则蓝牙库底层会以一定的间隔查询该函数的返回值:
只有返回值为0,才会代表芯片成功进入休眠,其他任意值都不进行休眠处理
下图可直观地看到任务的执行与无任务执行期间,芯片电流的变化趋势:
优缺点:
优点:1、工作期间可以节省大量电流消耗;2、管理很便捷,只需掌握tmos任务的编写以及如何调用,对于任务量较小的程序比较适用;
缺点:这种处理高度依赖tmos系统的管理,一旦脱离了tmos任务的管理,比如说while主循环中有一些自定义的任务在执行,但是这些任务tmos是不知道的,一旦进入休眠,这些主循环的处理都是会停止的,最终会出现外设工作不正常的现象。
应用拓展:
可以自定义一个休眠标志,在休眠时间到达后,关停所有任务,并将休眠标志置1,允许底层管理进入休眠:
标签:CH57x,tmos,芯片,蓝牙,CH59x,休眠,任务,CH58x,执行 From: https://www.cnblogs.com/azou/p/18664042