文章目录

前言

一、任务调度

二、任务优先级

三、任务状态


前言

用51单片机或者stm32进行裸机开发时,一般都是在main 函 数里面用 while(1)做一个大循环来完成所有的处理。而Freertos是一个抢占式的实时多任务操作系统,可以并发处理各个任务。


一、任务调度

Freertos支持三种任务调度方式:

1.抢占式调度:

主要是针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。

2.时间片调度:

主要针对优先级相同的任务,当多个任务的优先级相同时, 任务调度器会在每一次系统时钟节拍到的时候切换任务。

3.协程式调度:

当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务
FreeRTOS现在虽然还支持,但是官方已经表示不再更新协程式调度

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

使能抢占式调度和时间片轮转调度通过FreeRTOSConfih.h文件下的宏定义设置来实现:

时间片轮询调度的时间片固定为1个时钟节拍,可以在FreeRTOSConfih.h文件下的宏定义configTICK_RATE_HZ这个宏设置,时间片的时间一到,就切换下一个同优先级的任务执行

二、任务优先级

每 个 任 务 都 可 以 分 配 一 个 从 0~(configMAX_PRIORITIES-1) 的 优 先
级 , configMAX_PRIORITIES 在文件 FreeRTOSConfig.h 中有定义,一般
不超过 32 。

注:优先级数字值越低表示任务的优先级越低,0为最低优先级,此处应

注意和中断的优先级区分,任务和中断不一样,中断一般是数字越小优先
级越大
当宏 configUSE_TIME_SLICING 定义为 1 的时候, 即使能了时间片轮询调度时 , 多个任务可以共用一个优 先级,数量不限。

三、任务状态

1.运行态:

正在执行的任务,该任务就处于运行态,如果使用的是单核处理器的话那么不管在任何时刻永远都只有一个任务处于运行态

2.就绪态:

处于就绪态的任务是那些已经准备就绪(这些任务没有被阻塞或者挂起),可以运行的任务,但是处于就绪态的任务还没有运行,因为有一个同优先级或者更高优先级的任务正在运行!

3.阻塞态:

如果一个任务因延时(调用了函数 vTaskDelay())或等待外部事件发生,那么这个任务就处于阻塞态。任务进入阻塞态会有一个超时时间,当超过这个超时时间 任务就会退出阻塞态。

4.挂起态:

任务进入挂起态以后也不能被调度器调用进入运行态,但是进入挂起态的任务 没有超时时间。任务进入和退出挂起态通过调用函数 vTaskSuspend() xTaskResume()

Freertos 任务调度相关推荐

  1. FreeRTOS任务调度与任务切换 | FreeRTOS八

    目录 说明: 一.任务调度器 1.1.开启任务调度器函数 1.2.任务调度器实现步骤 1.3.xPortStartScheduler()函数 二.启动一个任务 2.1.prvStartFirstTas ...

  2. FreeRTOS任务调度

    1. FreeRTOS 支持的调度方式 三种调度方式:抢占式,时间片.合作式 实际应用主要是抢占式调度和时间片调度,合作式调度用到的很少 抢占式调度(不同优先级):每个任务都有不同的优先级,任务会一直 ...

  3. RTOS任务调度流程——基于FreeRTOS在Cortex-m4上的实现

    一. FreeRTOS任务调度流程 RTOS调度流程中主要关注以下几个点:创建任务.开启任务调度.任务调度:下面将以FReeRTOS在Cortex-m4的实现为例,展示一下RTOS任务调度的大体流程. ...

  4. esp32 怎么分配freertos 堆栈大小_深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化...

    2.FREERTOS任务创建.内核链表初始化 硬件环境:cortex m4 FreeRTOS版本:v8.0.1 今天开始阅读freertos,阅读同时做下笔记,等哪天碰到移植问题再翻出来看看. 2.1 ...

  5. FreeRTOS源码分析与应用开发04:消息队列

    目录 1. 队列结构 2. 创建队列 2.1 动态创建队列 2.1.1 xQueueCreate函数 2.1.2 xQueueGenericCreate函数 2.1.3 xQueueGenericRe ...

  6. FreeRTOS 任务简介

    一.FreeRTOS用途 FreeRTOS一般被用于硬件设计上RAM大小存在一定限制(成本.资源.性能功耗比等)的平台之中,它是目前运用的比较多的实时操作系统之一.选用FreeRTOS作为项目应用一般 ...

  7. FreeRTOS记录(四、FreeRTOS任务堆栈溢出问题和临界区)

    本来计划是消息队列.信号量.任务通知.事件集.邮件的文章 但是因为自己调试的时候遇到了一个问题,还是把堆栈溢出问题放到前面来说 ..增加临界区的使用说明 2021/11/7 ..临界区的使用部分增加任 ...

  8. cortex-m3 freertos

    cortex-m3 & freertos 小狼@http://blog.csdn.net/xiaolangyangyang ARMv7-M架构 Thumb2指令集 操作模式/特权模式 内建的嵌 ...

  9. HAL库版FreeRTOS(上)

    目录 FreeRTOS 简介 初识FreeRTOS 什么是FreeRTOS? 为什么选择FreeRTOS? FreeRTOS 的特点 商业许可 磨刀不误砍柴工 查找资料 FreeRTOS 官方文档 C ...

最新文章

  1. Grunt安装中遇到的问题汇总
  2. vivo检测自启动权限_VIVO手机不如苹果?那是你不知道还有这几个功能,用了就离不开...
  3. python制作贪吃蛇游戏_用Python写贪吃蛇游戏的代码实例
  4. Zend Studio中文版
  5. android启用其他应用程序,杀死Android上的另一个应用程序?
  6. CentOS7下安装Redis伪集群(基于Redis官方Cluster集群模式版本redis-5.0.10)
  7. 数据结构——图-有向图和无向图的邻接表基础
  8. 如何选择适合你的企业数据管理类产品
  9. Linux环境下使用NLPIR(ICTCLAS)中文分词详解
  10. linux基础:7、基础命令介绍(2)
  11. c51转汇编语言窗口,在C51语言中如何嵌入汇编语言
  12. 改变Linux的DNS解析顺序(DNS到hosts)
  13. matlab分析分子动力学,分子动力学程序框架
  14. mysql数据库基础知识--入门必看
  15. xshell复制粘贴快捷键
  16. java eclipse导入工程文件_如何在Eclipse软件中导入Java工程文件
  17. Android异常与性能优化相关问题及解决办法
  18. 找工作经验——EE Master 找CS工作总结
  19. 解决Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING
  20. 数据通信与网络:CH10 Error Detection and Correction

热门文章

  1. 有创意的html主题,13个超富创意的HTML5前端动画
  2. 安卓手机开机动画制作原理教程
  3. JSP的9个内置对象(隐含对象)
  4. 华为eNSP vlan综合实验
  5. HCIP---VLAN实验
  6. 推荐一下较出名的国外程序员论坛
  7. FATE:工业级联邦学习开源生态建设经验分享
  8. Python字符串包含
  9. 《棒球殿堂》:棒球联盟LEAGUE·北海道火腿斗士
  10. SCN时间序列预测模型详解(Matlab代码实现)