FreeRTOS基础知识

一、任务调度方式
抢占式 (preemption schedule):任务优先级高的任务一旦就绪立即获得CPU的使用权(抢夺低优先级任务);抢占式调度,是最高优先级的任务一旦就绪,总能得到CPU的执行权;它抢占了低优先级的运行机会。在抢占式调度系统中,总是运行已就绪当前最高优先级的任务。

时间片:在FreeRTOS中,抢占式调度,与时间片轮转可以同时存在;当有高优先级任务就绪时,运行高优先级任务;当最高优先级的任务有好几个时,这几个任务可以以时间片轮转方式调度。

时间片调度: configUSE_TIME_SLICING

slice time schedule 时间片调度

一个时间片就等于systick定时器的中断周期;(当然用户可以系统滴答定时器可以设置任意的中断周期1us,1ms,10ms);

抢占式&时间片调度共同模式下不加阻塞延时vTaskDelay,

也会在最高并且同优先级任务间进行轮流执行的,但是低优先级任务不能被执行???

bash 复制代码
   Q问题:抢占式&时间片调度共同模式下不加阻塞延时vTaskDelay时,最高并且同优先级任务间是如何进行切换轮流执行???
   【答案】任务调度器会在每一次系统滴答定时器(系统时钟)节拍到时切换任务,轮流执行一个时间片的时间(一个滴答定时器中断周期);

合作式调度 (暂时性理解):

task yield 任务让步放弃(屈服)

1、使能合作式调度宏后,也就是一旦某个任务取得了CPU执行权,不调用taskYIELD()/vTaskDelay主动放弃CPU使用权它就一直占用,不会退出

2、是非抢占的,任务主动放弃CPU使用权才执行别的任务,而不是被别的任务主动打断的;

3、合作式调度器的思路就是用一个定时器中断(例如系统滴答定时器)去周期性的刷新任务,若任务运行时间到了,

就将任务运行标志置为运行态,没到则所有任务运行时间 -1,然后在 main() 函数主循环中依次遍历所有任务的运行标志(判断各任务运行标志是否置1为已就绪),

若为运行态,则运行该任务且将运行标志复位清0。

4、按各任务规定的时间周期顺序依次运行的,类似轮询方式;

【reference】合作式调度:https://www.bilibili.com/read/cv14583592/

合作(co-routines 协作)式:

https://www.eetopic.com/article/94070.html

https://codeleading.com/article/89704434720/

二、任务状态

运行态、就绪态、阻塞态、挂起态

运行态:当前正在执行的任务,同一时刻只能有一个任务在执行;

就绪态:任务处于就绪(但还未被执行),满足条件随时被执行;

阻塞态:被调用阻塞延时或等待外部信号量时不被执行,延时时间或者外部信号量到了才进入就绪态;

挂起态:主动调用挂起函数vTaskSuspend将任务挂起,需通过调用解挂起函数vTaskResume恢复到就绪态;

bash 复制代码
Q问题:任务优先级最高能设置到多大?为什么是0~31共32个优先级呢???
【答案】根据软件定义的32bit的变量共32bit,每个bit位表示任务就绪表的就绪状态值;32位MCU最大变量可被定义的数据类型就4byte;

三、任务调度

调度器总是在所有处于就绪态列表的任务中,选择具有最高优先级的任务来执行;

bash 复制代码
Q问题:任务优先级均相同的几个任务,就绪列表如何登记呢???
【答案】相同优先级的几个任务如果都处于就绪状态时,相同优先级的任务会连接在同一个就绪表上的;
例如task1,task2的任务优先级都为1,那么pxReadyTaskLists[1];
pxReadyTaskLists[x],x代表任务优先级数值;
相关推荐
happygrilclh19 小时前
嵌入式 GUI 框架大概说明
stm32
恶魔泡泡糖20 小时前
stm32F103C8T6标准库DWT基础应用1
stm32·单片机·嵌入式硬件
LCG元20 小时前
STM32L4 LPUART 实战:Stop2 模式下低功耗串口唤醒与不定长接收
stm32·单片机·嵌入式硬件
星河单片机20 小时前
STM32+VK2828U7G5模块GPS定位+NMEA解析
stm32·单片机·嵌入式硬件
新晨单片机设计21 小时前
S004A-基于STM32单片机密码锁【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
DevLoom_21 小时前
Mac 移动硬盘不显示?2026整理汇总完整解决方案
stm32·单片机·macos
佳児素花痴╮1 天前
STM32U575RIT6(SPI+数码管+LED)
stm32·单片机·嵌入式硬件
zcmodeltech1 天前
风力发电沙盘模型控制系统设计与灯光联动实现方案——基于STM32与Modbus RTU,服务范围覆盖全国的多场景风力发电沙盘模型定制
网络·数据库·stm32·单片机·嵌入式硬件·能源
智闲电子设计1 天前
STM32 硬件过流保护实战:比较器直连 BKIN,纳秒级关断不靠软件
stm32·单片机·嵌入式硬件
Brilliantwxx1 天前
【PCB】(入门篇) 电子入门系列|从电路分析到 PCB 设计
stm32·单片机·嵌入式硬件