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

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
wt呃呃
Posts: 125

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

jinyuan
Posts: 78

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

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

wt呃呃
Posts: 125

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

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

wt呃呃
Posts: 125

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

有没有参考的例程

jinyuan
Posts: 78

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

wt呃呃 2023年 Mar 15日 15:09

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

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

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

Post Reply