FreeRTOS 任务管理之任务转移

本文详细介绍了FreeRTOS中任务的四种状态:阻塞、挂起、就绪和运行态,并讨论了任务如何在这些状态间转换。通过示例解释了任务如何进入阻塞态,如延迟和等待事件,以及挂起和就绪状态的管理。此外,还提供了一张任务状态转移图,直观展示了状态间的转换关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务转移

任务状态

讲到任务调度,就要先讲讲任务的几种状态:大类分为:非运行态和运行态,非运行态又可分为三种状态,如下:

  • 阻塞状态:非运行态的子状态,表示任务正处于等待某个事件的状态;
    任务可以进入阻塞态以等待以下两种不同类型的事件:

    定时(时间相关)事件——这类事件可以是延迟到期或是绝对时间到点。比如说某个任务可以进入阻塞态以延迟 10ms;

    这个有两个API函数可以调用来进行延时,第一个函数
    void vTaskDelay( const TickType_t xTicksToDelay )
    xTicksToDelay:表示延时多少个心跳周期,调用该延迟函数的任务将进入阻塞态,经延迟指定的心跳周期数后,再转移到就绪态;经常使用portTICK_PERIOD_MS将延时周期转换为Ms为单位,如延时100Ms:
    VTaskDelay(100/portTICK_PERIOD_MS);
    第二个函数
    void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement )
    该函数于实现某个任务以固定频率周期性执行,
    pxPreviousWakeTime: 保存了上次被唤醒的时刻值,
    xTimeIncrement :则指定任务固定频率的周期;举个例子:

static void vLEDTask( 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值