0

根据FreeRTOS任务调度文档,内核可以交换任务,即使任务当前正在执行并且没有调用任何阻塞函数。所以一旦内核得到时钟滴答中断并执行其ISR,它就可以安排另一个任务在此之后执行。FreeSTOS任务永远不会交换

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

这怎么可能?

回答

2

首先,您需要确保已设置configUSE_TIME_SLICING。这使循环调度程序,它允许调度程序执行您所期望的。

此外,它只会切换到其他任务,如果它是相同或更高的优先级。

+0

我在哪里可以配置'configUSE_TIME_SLICING'? – user2162550

+0

如果你还没有定义它,我想它会自动在FreeRTOS.h中设置。如果你自己定义它,它需要是1.尝试搜索源! –