freertos的系统,多任务时,任务内必须响应系统延时吗?
最近同事写了一个8任务的freertos程序。其中一个任务里面没有响应系统延时,这个任务会阻塞其他任务吗? 没听懂啥意思,时间到了会切换至其它线程的,或者主动通过OS的延时调用 或其它信号量来切换任务。 看你这个没有延时的任务是不是最高优先级及配置的是不是抢占式任务调度。 我的理解是,任务间是通过以下系统的延时来切分时间片的,响应这个延时的同时,让CPU可以去处理其他任务。
如果一个任务里面的类似死循环一样,没有调用这个系统延时,是不是CPU就被这个任务占用了?
还是靠中断来分割任务时间。
vTaskDelay(nms/fac_ms); //FreeRTOS延时 lyping1987 发表于 2023-8-2 13:19
我的理解是,任务间是通过以下系统的延时来切分时间片的,响应这个延时的同时,让CPU可以去处理其他任务。
...
(引用自4楼)
看任务优先级,如果它不主动让出时间来,低于它优先级的任务,就无法执行了。 freertos是优先级与时间片双重调度的,优先级高的优先运行,优先级相同时间片轮流运行。如果一个任务一直没有挂起,那么只有优先级大于等于它的其它任务有机会运行。 跑个题。
之前项目都是使用调度器,最近一个项目使用cubemx+freertos。实际体验了把rtos带来的便利性。真香。
页:
[1]