找回密码
 立即注册

微信扫码登录

查看: 475|回复: 4

zigbee sdk 的软件定时器的bug

[复制链接]

10

主题

18

回帖

134

积分

注册会员

积分
134
发表于 2024-9-19 11:04:32 | 显示全部楼层 |阅读模式
大家好,

     最近使用zigbee sdk 中的软件定时器时遇到一个问题,我定义一个test1定时器 ,一个test2定时器,在test1的回调用启动test2定时器,这样会遇到test 虽然添加成功了,它不会执行回调,希望得到你们的帮助,谢谢,
测试程序如下:



ev_timer_event_t *test1_Evt = NULL;
ev_timer_event_t *test2_Evt = NULL;


s32 test1_timer(void *arg)
{
        int tick_time =0;
        printf("test1_timer tigger\n");
        stop_time1();
        start_time2();//启动timer2
        tick_time=-1;
        return tick_time;

}


s32 test2_timer(void *arg)
{

        printf("test2_timer tigger\n");
        stop_time2();
        return -1;
}


void stop_time1()
{
        if(test1_Evt)
        {
                TL_ZB_TIMER_CANCEL(&test1_Evt);
                printf("stop timer 1\n");

        }
       
}


void stop_time2()
{
        if(test2_Evt)
        {
                TL_ZB_TIMER_CANCEL(&test2_Evt);
                printf("stop timer 2\n");

        }
       
}


void start_time1()
{
        test1_Evt = TL_ZB_TIMER_SCHEDULE(test1_timer,NULL,100);
        if(test1_Evt )
       {
            printf("test_timer1 successful\n");
        }
        printf("start timer 1\n");
}
void start_time2()
{
        test2_Evt = TL_ZB_TIMER_SCHEDULE(test2_timer,NULL,3);

        if(test2_Evt )
       {
            printf("test_timer2 successful\n");
        }

        printf("start timer 2\n");
}


27

主题

121

回帖

447

积分

版主

积分
447
发表于 2024-9-20 14:06:31 | 显示全部楼层
你好,

关于软件timer可以参考一下文档中提到的注意事项。
文档链接:https://wiki.telink-semi.cn/doc/ ... eloper%20Manual.pdf

10

主题

18

回帖

134

积分

注册会员

积分
134
 楼主| 发表于 2024-9-21 11:37:46 | 显示全部楼层
TL_YB 发表于 2024-9-20 14:06
你好,

关于软件timer可以参考一下文档中提到的注意事项。

你好,感谢你的回答,在你发的链接文档中我已经参考过了,文档用法跟我的用法并没有冲突,我的问题是定时A的停止影响定时器B的添加或者触发,调用 TL_ZB_TIMER_CANCEL(&test1_Evt);也会将test1_Evt指向NULL

27

主题

121

回帖

447

积分

版主

积分
447
发表于 2024-9-23 14:36:43 | 显示全部楼层
haiou 发表于 2024-9-21 11:37
你好,感谢你的回答,在你发的链接文档中我已经参考过了,文档用法跟我的用法并没有冲突,我的问题是定时 ...

你好,
定时器回调函数中是不能用TL_ZB_TIMER_CANCEL来取消自己的,只能通过最后的返回值“return -1”来取消。
最近的SDK已经对这种操作做了限制和保护。

10

主题

18

回帖

134

积分

注册会员

积分
134
 楼主| 发表于 2024-9-29 09:28:36 | 显示全部楼层
TL_YB 发表于 2024-9-23 14:36
你好,
定时器回调函数中是不能用TL_ZB_TIMER_CANCEL来取消自己的,只能通过最后的返回值“return -1”来 ...

好的, 这个应该要说明或者限制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2024-11-24 11:32 , Processed in 0.083072 second(s), 18 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表