Operating system FreeTos任务永远不会被交换

Operating system FreeTos任务永远不会被交换,operating-system,scheduled-tasks,scheduler,multitasking,freertos,Operating System,Scheduled Tasks,Scheduler,Multitasking,Freertos,根据FreeRTOS任务调度文档,即使任务当前正在执行且未调用任何阻塞函数,内核也可以交换任务。因此,一旦内核得到时钟信号中断并正在执行其ISR,它就可以安排另一个任务在此之后执行 在我使用FreeRTOS的系统上,我启动了5个任务,每个任务都被编程为在某个点上延迟自己,因此我可以看到所有任务都在交换,每个任务都在某个点上执行。但是如果我在一个任务中进入一个无限循环,这个任务就永远不会被交换出去 这怎么可能呢?首先,您需要确保设置了configUSE\u TIME\u切片。这将启用循环调度程序,

根据FreeRTOS任务调度文档,即使任务当前正在执行且未调用任何阻塞函数,内核也可以交换任务。因此,一旦内核得到时钟信号中断并正在执行其ISR,它就可以安排另一个任务在此之后执行

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


这怎么可能呢?

首先,您需要确保设置了configUSE\u TIME\u切片。这将启用循环调度程序,它允许调度程序执行您期望的操作


此外,只有优先级相同或更高的任务才会切换到其他任务。

首先,您需要确保设置了configUSE\u TIME\u切片。这将启用循环调度程序,它允许调度程序执行您期望的操作


此外,只有优先级相同或更高的任务才会切换到另一个任务。

我可以在哪里配置
configUSE\u TIME\u SLICING
?如果您自己没有定义它,我想它会自动在FreeRTOS.h中设置。如果您自己定义了它,它需要为1。尝试搜索来源!我在哪里可以配置
configUSE\u TIME\u SLICING
?如果您自己没有定义它,我想它会自动在FreeRTOS.h中设置。如果您自己定义了它,它需要为1。尝试搜索来源!