1 FreeRTOS中的空闲任务是什么-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS中的空闲任务是什么

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-30 10:55 次阅读

空闲任务是 FreeRTOS 必不可少的一个任务,其他 RTOS 类系统也有空闲任务,比如 uC/OS。看名字就知道,空闲任务是处理器空闲的时候去运行的一个任务,当系统中没有其他就绪任务的时候空闲任务就会开始运行,空闲任务最重要的作用就是让处理器在无事可做的时候找点事做,防止处理器无聊,因此,空闲任务的优先级肯定是最低的。当然了,实际上肯定不会这么浪费宝贵的处理器资源,FreeRTOS 空闲任务中也会执行一些其他的处理。

空闲任务详解

1、空闲任务简介

当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务,这样就可以确保至少有一任务可以运行。但是这个空闲任务使用最低优先级,如果应用中有其他高优先级任务处于就绪态的话这个空闲任务就不会跟高优先级的任务抢占 CPU 资源。空闲任务还有另外一个重要的职责,如果某个任务要调用函数 vTaskDelete()删除自身,那么这个任务的任务控制块 TCB 和任务堆栈等这些由 FreeRTOS 系统自动分配的内存需要在空闲任务中释放掉,如果删除的是别的任务那么相应的内存就会被直接释放掉,不需要在空闲任务中释放。因此,一定要给空闲任务执行的机会!除此以外空闲任务就没有什么特别重要的功能了,所以可以根据实际情况减少空闲任务使用 CPU 的时间(比如,当 CPU 运行空闲任务的时候使处理器进入低功耗模式)。

用户可以创建与空闲任务优先级相同的应用任务,当宏 configIDLE_SHOULD_YIELD 为 1的话应用任务就可以使用空闲任务的时间片,也就是说空闲任务会让出时间片给同优先级的应用任务。这种机制要求FreeRTOS 使用抢占式内核。

2、空闲任务的创建

当调用函数 vTaskStartScheduler()启动任务调度器的时候此函数就会自动创建空闲任务。

3、空闲任务函数

空闲任务的任务函数为 prvIdleTask(),但是实际上是找不到这个函数的,因为它是通过宏定义来实现的,在文件 portmacro.h 中有如下宏定义:

#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )

其中 portTASK_FUNCTION()在文件 tasks.c 中有定义,它就是空闲任务的任务函数。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304779
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119588
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62134
收藏 人收藏

    评论

    相关推荐

    FreeRTOS介绍与基础任务创建

    本篇介绍FreeRTOS与基础任务创建
    的头像 发表于 09-26 09:00 2396次阅读
    <b class='flag-5'>FreeRTOS</b>介绍与基础<b class='flag-5'>任务</b>创建

    FreeRTOS任务管理

    任务FreeRTOS 中最基本的调度单元,它是一段可执行的代码,可以独立运行。FreeRTOS 任务是基于优先级的抢占式调度,优先级
    的头像 发表于 11-27 17:03 998次阅读

    转:第10章 FreeRTOS任务管理

    10.8FreeRTOS任务删除10.9FreeRTOS任务挂起10.10FreeRTOS任务
    发表于 08-23 09:54

    Zynq中使用FreeRTOS空闲钩子函数时在SDK的设置

    本文介绍zynq中使用FreeRTOS空闲钩子函数时在SDK的设置和一些说明
    发表于 03-09 14:33 2574次阅读
    Zynq中使用<b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>空闲</b>钩子函数时在SDK<b class='flag-5'>中</b>的设置

    FreeRTOS任务如何创建和删除?

    FreeRTOS移植到Cortex-M3硬件平台的文章,我们已经见过任务创建API,但那篇文章的重点在于如何移植FreeRTOS,本文将重点放在
    的头像 发表于 03-11 18:08 2924次阅读

    (一)FreeRTOS学习之FreeRTOS任务基础知识

    FreeRTOS学习之FreeRTOS任务基础知识转行小白一枚,通过博客记录自我学习,望更多博友多多指点,感激不尽!RTOS系统的核心就是任务管理,学习RTOS系统主要是为了使用RTO
    发表于 12-23 19:57 3次下载
    (一)<b class='flag-5'>FreeRTOS</b>学习之<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b>基础知识

    FreeRTOS任务详解

    详细讲解freeRTOS任务
    发表于 12-23 20:01 11次下载
    <b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>任务</b>详解

    FreeRTOS高级篇11---空闲任务分析

    当RTOS调度器开始工作后,为了保证至少有一个任务在运行,空闲任务被自动创建,占用最低优先级(0优先级)。
    发表于 01-26 17:30 0次下载
    <b class='flag-5'>FreeRTOS</b>高级篇11---<b class='flag-5'>空闲</b><b class='flag-5'>任务</b>分析

    FreeRTOS高级篇2---FreeRTOS任务创建分析

    FreeRTOS基础系列《FreeRTOS系列第10篇---FreeRTOS任务创建和删除》中介绍了任务创建API函数xTaskCreat
    发表于 01-26 17:42 23次下载
    <b class='flag-5'>FreeRTOS</b>高级篇2---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b>创建分析

    FreeRTOS系列第10篇---FreeRTOS任务创建和删除

    FreeRTOS移植到Cortex-M3硬件平台的文章,我们已经见过任务创建API,但那篇文章的重点在于如何移植FreeRTOS,本文将重点放在
    发表于 01-26 17:56 13次下载
    <b class='flag-5'>FreeRTOS</b>系列第10篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b>创建和删除

    freeRTOS任务

    freeRTOS系统的任务切换的具体过程最终都是在pendSV中断服务函数里面完成的。
    的头像 发表于 02-10 11:02 1623次阅读
    <b class='flag-5'>freeRTOS</b>的<b class='flag-5'>任务</b>

    freeRTOS空闲任务的作用

    在嵌入式实时操作系统,都会有空闲任务的存在,这个任务是伴随着操作系统启动之后而存在的。正常情况来说,系统不挂掉,空闲
    的头像 发表于 07-04 15:16 1472次阅读
    <b class='flag-5'>freeRTOS</b>中<b class='flag-5'>空闲</b><b class='flag-5'>任务</b>的作用

    FreeRTOS空闲任务低功耗模式

    1、通用低功耗模式 如果使用通用低功耗模式的话每个滴答定时器中断都会将处理器从低功耗模式唤醒,以(1)为例,再 T2 时刻处理器从低功耗模式唤醒,但是接下来由于没有就绪的其他任务所以处理器又再
    的头像 发表于 07-30 11:03 1225次阅读

    FreeRTOS任务通知简介

    任务通知简介 任务通知在 FreeRTOS 是一个可选的功能,要使用任务通知的话就需要将宏configUSE_TASK_NOTIFICAT
    的头像 发表于 07-30 11:34 733次阅读

    freertos最多支持多少个任务

    FreeRTOS是一个轻量级的实时操作系统(RTOS),其设计初衷就是为了提供简单、可靠且高效的实时任务管理。关于FreeRTOS最多支持多少个任务的问题,实际上并没有一个固定的上限,
    的头像 发表于 09-02 14:21 844次阅读