Page 1 of 1

【已解决】BT3L(tlsr8253)进入低功耗,轮询工作怎么处理?

Posted: 2023年 Mar 15日 14:43
by wt呃呃

最近在开发智能说法,遇到进入低功耗,定时器平凡启动,会影响功耗,但要处理一些轮询的业务逻辑,要在那个位置做轮询业务的处理?


Re: BT3L(tlsr8253)进入低功耗,轮询工作怎么处理?

Posted: 2023年 Mar 15日 15:03
by jinyuan

这里介绍一个简单的低功耗轮询处理办法:
当准备进入低功耗时,执行ty_system_enter_suspend 这个函数,设备允许进入休眠状态,设备在完成所有事件后会主动进入休眠
在唤醒后 执行 ty_system_exit_suspend 来禁止设备休眠。
其中芯片在唤醒的时会执行 user_init_deepRetn 这个函数, 唤醒后的操作都可以放在这个函数的最下方。


Re: BT3L(tlsr8253)进入低功耗,轮询工作怎么处理?

Posted: 2023年 Mar 15日 15:09
by wt呃呃

就是计入睡眠之前关闭定时器,唤醒后启动定时器对吗?


Re: BT3L(tlsr8253)进入低功耗,轮询工作怎么处理?

Posted: 2023年 Mar 15日 16:41
by wt呃呃

有没有参考的例程


Re: BT3L(tlsr8253)进入低功耗,轮询工作怎么处理?

Posted: 2023年 May 18日 17:40
by jinyuan
wt呃呃 2023年 Mar 15日 15:09

就是计入睡眠之前关闭定时器,唤醒后启动定时器对吗?

不要关闭定时器, SDK中对于休眠的逻辑是自动处理的,只要没有任务需要执行,芯片就默认进入休眠模式,休眠的时长为最近一个要执行的任务决定(可以是蓝牙射频的任务,也可以是用户的定时器任务)。
但是我们在SDK中设置了一个标志位,这个标志位会让系统一直判定有任务执行, 所以不会进入休眠。想要关闭这个标志位就要执行 ty_system_enter_sleep。打开标志位就执行ty_system_exit_sleep。

注意:函数 ty_system_enter_sleep 中的 cpu_sleep_wakeup 要注释掉,否则定时器休眠无法实现。