RT-Thread论坛
直播中

孔朱磊

7年用户 944经验值
私信 关注

RTT5.0开启了软件定时器,运行大概4个多小时就会出现定时器回调任务不再执行的问题怎么解决?

我使用的是RTT5.0,开启了软件定时器,运行大概4个多小时就会出现定时器回调任务不再执行,仿真打断点看,timer.c文件中的定时器线程_timer_thread_entry不再运行了。这可能是哪方面的问题呢

static void _timer_thread_entry(void *parameter)
{
    rt_tick_t next_timeout;
    while (1)
    {
        /* get the next timeout tick */
        if (_timer_list_next_timeout(_soft_timer_list, &next_timeout) != RT_EOK)
        {
            /* no software timer exist, suspend self. */
            rt_thread_suspend(rt_thread_self());
            rt_schedule();
        }
        else
        {
            rt_tick_t current_tick;
            /* get current tick */
            current_tick = rt_tick_get();
            if ((next_timeout - current_tick) < RT_TICK_MAX / 2)
            {
                /* get the delta timeout tick */
                next_timeout = next_timeout - current_tick;
                rt_thread_delay(next_timeout);
            }
        }
        /* check software timer */
        rt_soft_timer_check();
    }
}

回帖(1)

张荣

2024-3-26 18:15:01
我也出现类似的问题,当定时器数量多了之后,有些定时器的回调函数不执行,等其他定时器执行完了之后,有问题的定时器才执行
举报

更多回帖

发帖
×
20
完善资料,
赚取积分