Freertos 任务调度

这篇具有很好参考价值的文章主要介绍了Freertos 任务调度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

前言

一、任务调度

二、任务优先级

三、任务状态

 


前言

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

 


一、任务调度

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

1.抢占式调度:

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

2.时间片调度:

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

3.协程式调度:

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

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

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

freertos 任务调度,freertos,c语言,单片机

 

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

freertos 任务调度,freertos,c语言,单片机

二、任务优先级

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

freertos 任务调度,freertos,c语言,单片机

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

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

三、任务状态

1.运行态:

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

2.就绪态:

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

3.阻塞态:

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

4.挂起态文章来源地址https://www.toymoban.com/news/detail-607144.html

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

到了这里,关于Freertos 任务调度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FreeRTOS任务调度与任务切换 | FreeRTOS八

    目录 说明: 一、任务调度器 1.1、开启任务调度器函数 1.2、任务调度器实现步骤 1.3、xPortStartScheduler()函数 二、启动一个任务 2.1、prvStartFirstTask()函数 2.2、vPortSVCHandler()函数 三、任务切换 3.1、任务切换触发途径 3.2、PendSV中断触发任务切换步骤 关于内容: 1)以下内容多为概

    2023年04月15日
    浏览(34)
  • Freertos 任务调度

    文章目录 前言 一、任务调度 二、任务优先级 三、任务状态           用51单片机或者stm32进行裸机开发时, 一般都是在 main 函 数里面用 while(1) 做一个大循 环来完成所有的处理。而Freertos是一个抢占式的实时多任务操作系统,可以并发处理各个任务。   Freertos支持三种任

    2024年02月15日
    浏览(33)
  • 【学习日记】【FreeRTOS】任务调度时如何考虑任务优先级——任务的自动切换

    本文开始为 RTOS 加入考虑任务优先级的自动调度算法,代码大部分参考野火。 本文主要是一篇学习笔记,加入了笔者自己对野火代码的梳理和理解。 首先我们要知道,在 RTOS 中,优先级越高、越需要被先执行的的任务的优先级的数字越大。比如优先级数字为 5 的任务就要比

    2024年02月12日
    浏览(33)
  • 初识FreeRTOS入门,对FreeRTOS简介、任务调度、内存管理、通信机制以及IO操作,控制两个led不同频率闪烁

    当代嵌入式系统的开发越来越复杂,实时性要求也越来越高。为了满足这些需求,开发者需要使用实时操作系统(RTOS),其中一个流行的选择是FreeRTOS(Free Real-Time Operating System)。本篇博客将详细介绍FreeRTOS的特性、任务调度、内存管理、通信机制以及一些示例代码。 FreeR

    2024年02月14日
    浏览(37)
  • FreeRTOS如何解决访问冲突/线程不安全(临界段、互斥锁、挂起调度、看门人任务)

    在多任务(多线程)系统中,存在一个隐患,那就是多线程的访问(在FreeRTOS中就是任务)。当一个任务A开始访问一个资源(外设、一块内存等),但是A还没有完成访问,B任务运行了,也开始访问,这就会造成数据破坏、错误等问题。 例如: 两个任务试图写入一个液晶显示

    2024年02月07日
    浏览(135)
  • 【09】FreeRTOS的时间片调度

       同等优先级任务 轮流地享有相同的 CPU 时间( 可设置 ), 叫时间片, 在FreeRTOS中,一个时间片就等于SysTick 中断周期 。在源码中,SysTick中断服务函数1ms中断一次,一个时间片就是1ms,滴答定时器SysTick的中断周期可以自己设置。 时间片调度运行举例: 运行条件: 1、创建

    2024年02月09日
    浏览(28)
  • 【学习日记】【FreeRTOS】调度器函数实现详解

    本文主要是对于 FreeRTOS 中调度器函数实现的详细解释,代码大部分参考了野火 FreeRTOS 教程配套源码,作了一小部分修改。 Cortex-M有两种栈空间,主堆栈和进程堆栈。 MSP 用于系统级别和中断处理的堆栈 MSP 用于保存中断发生时的堆栈状态以及在特殊操作(例如任务切换)期间

    2024年02月13日
    浏览(27)
  • 【Freertos基础入门】freertos任务的优先级

    本系列基于 stm32 系列单片机来使用freerots 任务管理是实时操作系统(RTOS)的核心功能之一,它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTOS,它提供了强大的任务管理功能,让开发者能够轻松创建和控制任务。本文将介绍 FreeRTOS 的任务管理功能

    2024年02月13日
    浏览(31)
  • 创建OneNET新版MQTT设备:实现远程控制单片机 为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务)

    本项目教程总共分为四节 1.(当前文章)创建OneNET新版MQTT设备:为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务) 2.ESP8266-01s入门:烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务) 3.物联网实践教程:微信小程序结合

    2024年02月04日
    浏览(76)
  • FreeRTOS任务的挂起和恢复 | FreeRTOS四

    目录 说明: 一、任务挂起与恢复 1.1、什么是任务挂起 1.2、任务挂起函数 1.3、什么是任务恢复 1.4、任务恢复函数 1.5、什么是中断任务恢复函数 1.6、中断任务恢复函数 二、任务挂起与恢复实例代码(任务中) 2.1、主要代码 2.2、结果 三、任务挂起与恢复实例代码(中断中)

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包