Page 1 of 1

BP3L 的timer

Posted: 2023年 Mar 23日 09:38
by 13482367102

void Timer_Init(void)
{

Code: Select all

hal_timer_set(AP_TIMER_ID_5, 1000);
    hal_timer_set(AP_TIMER_ID_6, 1000);
tal_mysource_debug("AP_TIMER_ID_6\n");

//
}
这两个不能同时初始化吗?


Re: BP3L 的timer

Posted: 2023年 Mar 23日 09:46
by joey_nobug

建议使用 tkl_timer.h 中的接口进行初始化,里面已经对原厂的接口进行封装并测试


Re: BP3L 的timer

Posted: 2023年 Mar 23日 10:00
by joey_nobug

另外如果同时开启多个 timer,要保证两个timer不是同样的周期和同时 start,否则会导致中断冲突。PHY6222 平台没有中断嵌套和中断优先级,如果timer0中断在执行过程中,timer1中断可能无法触发。
根据你代码中实现,两个timer同时初始化,并且都是 1ms,这种情况中断冲突的概率是极大的。
建议你根据实际使用来确定timer的周期和初始化时机。


Re: BP3L 的timer

Posted: 2023年 Mar 23日 10:18
by joey_nobug

我们验证了你的问题,同时开启两个 1ms 的 timer 中断是有问题的。建议将 timer 中断周期增大。另外不建议程序中有很小周期的 timer 一直在跑,否则会影响蓝牙中断,使得蓝牙功能出现问题