一、软件定时器长运问题
在Tuyaos BLE SDK For TLSR8250在3.10.0即其之前版本存在如下问题:
软件定时器start后并且为TAL_TIMER_CYCLE 模式,长运25天后会停止工作。
解决办法:接口tkl_system_get_millisecond进行修复,修复代码如下所示
Code: Select all
SYS_TIME_T tkl_system_get_millisecond(VOID_T)
{
SYS_TIME_T now_tick = 0;
SYS_TIME_T last_tick = 0;
SYS_TIME_T pass_tick = 0;
last_tick = tkl_system_tick_last;
now_tick = clock_time();
pass_tick = ((now_tick >= last_tick) ? (now_tick - last_tick) : (0xFFFFFFFF - last_tick + now_tick)) / CLOCK_16M_SYS_TIMER_CLK_1MS;
if (pass_tick > 0) {
tkl_system_millisecond = (tkl_system_millisecond + pass_tick);
tkl_system_tick_last = tkl_system_tick_last + (pass_tick * CLOCK_16M_SYS_TIMER_CLK_1MS);
}
return tkl_system_millisecond;
}
二、低功耗唤醒后GPIO中断失效
在Tuyaos BLE SDK For TLSR8250 3.9.0 到 3.10.0这两个版本中存在GPIO IRQ在深度休眠唤醒后无法触发的问题,原因是芯片进入深度休眠后GPIO IRQ 外设断电,唤醒后需要重新初始化。但是由于相关接口设计问题导致唤醒后的初始化被直接返回,实际上没有执行初始化,因此开发者需要直接调用对应接口的原厂代码进行初始化,即调用如下接口(按需修改)
Code: Select all
gpio_set_interrupt_init(gpio_tlsr, pull_type, pol_edge, FLD_IRQ_GPIO_EN);
或者参考3.11.0版本的实现。
三、看不到日志打印
Tuyaos BLE SDK For TLSR8250 的日志口为PA0而非Uart, 波特率为1000000(1M)