FreeRTOS任务四种状态

1.  运行态
        如果一个任务得到 CPU 的使用权,即任务被实际执行时,那么这个任务处于运行态。如果
运行 RTOS 的 MCU 只有一个处理器核心,那么在任务时刻,都只能有一个任务处理运行态。

2.  就绪态
        如果一个任务已经能够被执行(不处于阻塞态后挂起态),但当前还未被执行(具有相同优
先级或更高优先级的任务正持有 CPU 使用权),那么这个任务就处于就绪态。

3.  阻塞态
        如果一个任务因延时一段时间或等待外部事件发生,那么这个任务就处理阻塞态。例如任
调用了函数 vTaskDelay(),vTaskDelayUntil(),进行一段时间的延时,那么在延时超时之前,这个任务就处理阻塞态。任务也可以处于阻塞态以等待队列、信号量、事件组、通知或信号量等外部事件。通常情况下,处于阻塞态的任务都有一个阻塞的超时时间,在任务阻塞达到或超过这个超时时间后,即使任务等待的外部事件还没有发生,任务的阻塞态也会被解除。要注意的是,处于阻塞态的任务是无法被运行的。

4.  挂起态
        任务一般通过函数 vTaskSuspend()和函数 vTaskResums()进入和退出挂起态与阻塞态一样,
处于挂起态的任务也无法被运行。

5. 四种任务状态之间的转换图如下图所示

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeRTOS任务的四种状态是:运行态、就绪态、阻塞态和挂起态。 运行态(running)是指任务正在执行,占用CPU的使用权。 就绪态(ready)是指任务已经具备了运行条件,但是由于其他任务正在运行或者有更高优先级的任务在等待执行,所以需要等待的状态。 阻塞态(blocked)是指任务在等待某些事件发生时被阻塞,例如等待信号量、消息队列、事件标志组或系统延时。 挂起态(suspended)是指任务被暂时停止,通过调用挂起函数(vTaskSuspend())可以将指定任务挂起,任务挂起后暂时不会运行,只有调用恢复函数(xTaskResume())才可以退出挂起状态。 这些状态可以帮助任务管理器根据任务的优先级和事件的发生情况来进行任务调度和切换。\[1\]\[2\] #### 引用[.reference_title] - *1* *3* [【FreeRTOS(三)】任务状态](https://blog.csdn.net/K3169/article/details/128071866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【01】FreeRTOS基础知识](https://blog.csdn.net/m0_52162042/article/details/128211463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值