在开发过程,我们知道,在蓝牙配置完后,蓝牙可以一直处于广播状态(即使是在睡眠模式下);在睡眠模式下,程序启用sleep timer做为计数器来计数后产生定时中断,从而进行广播,并且在该中断中还可以执行其它工作,如AD采集等(这点已经证实)。
但是问题来了,在睡眠模式下,当AD测采集频率比广播频率要快时,如何让广播可控制;
比如,要求在睡眠模式下,AD采集为500ms采集一次,蓝牙广播要求1s广播一次,此时找不到解决方法,只能是AD采集和蓝牙广播的频率要一致,
要么500ms广播和采集AD值一次,这样会导致芯片在睡眠模式下功耗过高(PS:蓝牙在500ms/次的广播平均电流50uA左右,一个通道广播),
要么1s广播和采集AD值一次(PS:蓝牙在s/次的广播平均电流30uA左右,一个通道广播);
所以,如何让蓝牙在睡眠模式下,当sleep timer中断触发后,能不广播蓝牙,在下次(或下下次,次数可控制)sleep timer中断时再广播。
我在程序中试了很多次,在睡眠模式下,当sleep timer中断触发后,在中断中如果我将蓝牙广播关掉,sleep timer也会停止中断,课件蓝牙广播和该定时器中断在底层有某种联系,还请高人指点。
cedar_xuesong:
AD采集为500ms采集一次,蓝牙广播要求1s广播一次
这个要求是吧
单独为AD增加一个500ms定时器任务,就解决了