FreeSTOS任务永远不会被交换

时间:2016-07-06 06:41:58

标签: operating-system scheduled-tasks scheduler multitasking freertos

根据FreeRTOS任务调度文档,内核可以交换任务,即使任务当前正在执行,也无法调用任何阻塞功能。因此,一旦内核获得时钟滴答中断并正在执行其ISR,它就可以安排另一个任务在此之后执行。

在我使用FreeRTOS的系统上,我启动了5个任务,每个任务都被编程为在某个时刻延迟自身,因此我可以看到所有任务被交换进出,每个任务都在某个时刻执行。但是如果我在任务中输入一个无限循环,那么任务就永远不会被换掉。

这怎么可能?

1 个答案:

答案 0 :(得分:2)

首先,您需要确保设置了configUSE_TIME_SLICING。这启用了循环调度程序,它允许调度程序执行您期望的操作。

如果它具有相同或更高的优先级,它也只会切换到另一个任务。