RTOS时间片调度
时间片调度
同等优先级任务轮流地享有相同的 CPU 时间(可设置), 叫 时间片 ,在FreeRTOS中,一个时间片就等于SysTick 中断周期

运行条件:
-
创建三个任务:Task1、Task2、Task3
-
Task1、Task2、Task3的优先级均为1;即3个任务同等优先级
运行过程如下:
-
首先Task1运行完一个时间片后,切换至Task2运行
-
Task2运行完一个时间片后,切换至Task3运行
-
Task3运行过程中(还不到一个时间片),Task3阻塞了(系统延时或等待信号量等),此时直接切换到下一个任务Task1
-
Task1运行完一个时间片后,切换至Task2运行
注意:
- 同等优先级任务,轮流执行,时间片流转。
- 一个时间片大小,取决为滴答定时器中断频率。
- 注意没有完成的时间片不会再使用,下次任务Task3得到执行还是按照一个时间片的时钟节拍执行。

注意:使用时间片调度需把宏 configUSE_TIME_SLICING 和 configUSE_PREEMPTION 置1
一个时间片就等于SysTick 中断周期
修改时间片长度就是修改系统节拍
freertos_config.h
中
#define configTICK_RATE_HZ 1000 /* 定义系统时钟节拍频率, 单位: Hz, 无默认需定义 */
默认1000hz 即为1ms
改为20hz 即为500ms