0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

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

3天内不再提示

FreeRTOS中任务状态与任务优先级

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

任务状态

FreeRTOS 中的任务永远处于下面几个状态中的某一个:

● 运行态

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

● 就绪态

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

● 阻塞态

如果一个任务当前正在等待某个外部事件的话就说它处于阻塞态,比如说如果某个任务调用了函数
vTaskDelay()的话就会进入阻塞态,直到延时周期完成。任务在等待队列、信号量、事件组、通知或互斥信号量的时候也会进入阻塞态。任务进入阻塞态会有一个超时时间,当超过这个超时时间任务就会退出阻塞态,即使所等待的事件还没有来临!

● 挂起态

像阻塞态一样,任务进入挂起态以后也不能被调度器调用进入运行态,但是进入挂起态的任务没有超时时间。任务进入和退出挂起态通过调用函数vTaskSuspend()和 xTaskResume()。任务状态之间的转换如图所示:

图片

4、任务优先级

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

优先级数字越低表示任务的优先级越低,0 的优先级最低,configMAX_PRIORITIES-1 的优先级最高。空闲任务的优先级最低,为0。(注意和中断的优先级区分,任务和中断不一样,中断一般是数字越小优先级越大)

当宏 configUSE_TIME_SLICING 定义为 1 的时候多个任务可以共用一个优先级,数量不限。

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

    关注

    4982

    文章

    18285

    浏览量

    288479
  • 函数
    +关注

    关注

    3

    文章

    3881

    浏览量

    61310
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61348
  • 任务
    +关注

    关注

    1

    文章

    20

    浏览量

    8503
收藏 人收藏

    评论

    相关推荐

    转:第13章 FreeRTOS任务优先级修改及其分配方案

    优先级修改13.5 任务优先级获取13.6 实验例程说明13.7总结13.1任务优先级说明 下面对Fre
    发表于 08-29 11:07

    请问start的任务优先级是否比start2的任务优先级更高?

    如:start的任务优先级是否比start2的任务优先级更高?因为start的任务优先级#def
    发表于 07-04 04:35

    如何保证任务优先级的高低?

    原子哥得四轴 程序 是由freertos各个任务组成。任务优先级有高有低 我就想知道这个怎么保证的 高的优先级执行完了 就可以执行低得 然后
    发表于 07-22 04:35

    任务优先级问题

    优先级任务可以通过时间片轮转调度来实现任务切换。在不同优先级任务,如果高
    发表于 04-02 04:35

    ucosii两个任务等待信号量,由于任务优先级引起的死机怎么解决

    ,有数据就运行,没数据就休眠。但是有一个问题:BLE_REC_TASK_PRIO7蓝牙任务优先级RS485_REC_TASK_PRIO 8 RS485任务优先级在这个
    发表于 05-22 03:40

    freeRTOS任务优先级设置问题如何解决

    状态的刷新。3、串口通信任务------接收上位机的指令,并执行相应动作,返回相关数据。4、数据采样任务------对信号脉冲计数。比如一个完整的操作过程就是:按键控制进入检测界面——>按键控制启动检测——>上位机通过串口读取
    发表于 06-10 04:36

    FreeRTOS任务调度优先级,会直接在就绪列表调用低优先级任务么?

    由于刚开始使用FreeRTOS,所以有很多问题,也正在学习。请问各位,假如优先级高的任务时间片用完后,会直接在就绪列表调用低优先级任务么?
    发表于 06-14 09:01

    软件定时器的优先级任务优先级是同一个东西吗?

    任务A在运行,则软件定时器即使时间到也不能运行。硬件中断的优先级则是最高的,如果freeRTOS不屏蔽中断,则任何中断都可以中断都可以打断正在运行的任务
    发表于 06-19 04:06

    任务句柄和任务优先级区别是什么

    以前在学ucos时候,说优先级才是任务的唯一ID,用来区分任务的,现在又学了freeRTOS任务句柄才是区分
    发表于 07-18 08:00

    FREERTOS任务优先级的设置

    FREERTOS,各个任务优先级怎么设置比较好呢?或者是说有什么标准?疑惑。。。。。。
    发表于 07-19 08:03

    freeRTOS学习任务状态运行

    2021/3/31 freeRTOS学习任务任务状态运行:占用CPU就绪:有高优先级在运行所导致未运行的程序阻塞:一个
    发表于 01-17 07:51

    FreeRTOS中断优先级任务优先级架构的相关资料推荐

    FreeRTOS中断优先级任务优先级架构:Cortex-M3版本:FreeRTOS V9.0.0前言:最开始,我并没有搞清楚什么是中断
    发表于 02-08 06:36

    freertos怎么在任务修改任务优先级

    freertos怎么在任务修改任务优先级
    发表于 10-11 07:56

    2.FreeRTOS中断优先级任务优先级

    FreeRTOS中断优先级任务优先级架构:Cortex-M3版本:FreeRTOS V9.0.0前言:最开始,我并没有搞清楚什么是中断
    发表于 12-04 20:21 8次下载
    2.<b class='flag-5'>FreeRTOS</b>中断<b class='flag-5'>优先级</b>和<b class='flag-5'>任务</b><b class='flag-5'>优先级</b>

    FreeRTOS任务优先级示例

    任务优先级:0~24之间。数字越大,任务优先等级越高。高优先级任务
    的头像 发表于 09-15 11:13 2227次阅读