欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

FreeRTOS 入门教程(任务状态) - II.任务状态概念解释

最编程 2024-05-20 19:55:11
...

这里使用百问网的一张任务转换图片来讲解:

在FreeRTOS中,每个任务都有一个状态,表示当前任务的情况。FreeRTOS使用一些特定的宏定义来表示不同的任务状态,这些宏定义包括:

eRunning:表示任务正在运行。

eReady:表示任务处于就绪状态,等待调度器将其调度执行。

eBlocked:表示任务处于阻塞状态,即等待某些事件的发生,例如等待信号量、消息队列、定时器超时等。

eSuspended:表示任务处于暂停状态,即该任务已经被暂停,不参与调度,但它的状态和资源保留,能够在需要时恢复运行。

eDeleted:表示任务已被删除,对应的控制块和栈空间已被释放。

任务状态之间的转换是由FreeRTOS内核自动管理的。任务常常在下列几种情况下会发生状态变化:

创建任务时,任务状态由“未开始”变为“就绪”。

调度器根据任务优先级选取该任务并将其状态变为“运行中”。

任务等待某个事件(如信号量)时,任务状态变为“阻塞”。

任务等待其他任务释放资源时,任务状态可能会转变为“挂起”。

任务自己调用删除函数删除自己时,任务状态变为“已删除”。

推荐阅读