文章目录
前言
一、任务调度
二、任务优先级
三、任务状态
前言
用51单片机或者stm32进行裸机开发时,一般都是在main 函 数里面用 while(1)做一个大循环来完成所有的处理。而Freertos是一个抢占式的实时多任务操作系统,可以并发处理各个任务。
一、任务调度
Freertos支持三种任务调度方式:
1.抢占式调度:
主要是针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。
2.时间片调度:
主要针对优先级相同的任务,当多个任务的优先级相同时, 任务调度器会在每一次系统时钟节拍到的时候切换任务。
3.协程式调度:
当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务
FreeRTOS现在虽然还支持,但是官方已经表示不再更新协程式调度
注:抢占式调度和时间片轮转可以同时存在,当有高优先级任务就绪时,运行高优先级任务;当最高优先级的任务有好几个时,这几个任务可以以时间片轮转方式调度
使能抢占式调度和时间片轮转调度通过FreeRTOSConfih.h文件下的宏定义设置来实现:
时间片轮询调度的时间片固定为1个时钟节拍,可以在FreeRTOSConfih.h文件下的宏定义configTICK_RATE_HZ这个宏设置,时间片的时间一到,就切换下一个同优先级的任务执行
二、任务优先级
注:优先级数字值越低表示任务的优先级越低,0为最低优先级,此处应
三、任务状态
1.运行态:
正在执行的任务,该任务就处于运行态,如果使用的是单核处理器的话那么不管在任何时刻永远都只有一个任务处于运行态
2.就绪态:
处于就绪态的任务是那些已经准备就绪(这些任务没有被阻塞或者挂起),可以运行的任务,但是处于就绪态的任务还没有运行,因为有一个同优先级或者更高优先级的任务正在运行!
3.阻塞态:
如果一个任务因延时(调用了函数 vTaskDelay())或等待外部事件发生,那么这个任务就处于阻塞态。任务进入阻塞态会有一个超时时间,当超过这个超时时间 任务就会退出阻塞态。文章来源:https://www.toymoban.com/news/detail-607144.html
4.挂起态:文章来源地址https://www.toymoban.com/news/detail-607144.html
到了这里,关于Freertos 任务调度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!