FreeRTOS-延迟分析vTaskDelay

    void vTaskDelay( const TickType_t xTicksToDelay )这个函数比较简单,主要分析prvAddCurrentTaskToDelayedList这个函数。

①:将该任务挂到延迟列表里面。

分析:

static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely )

①:把当前任务从就序列表中删除

①:获取下次任务的唤醒时间

②:将唤醒时间赋给任务列表的状态列表项中

③:如果下次唤醒时间小于当前时间,则表示时间溢出,把该任务添加到溢出延迟列表中

④:如果没有溢出,就把该任务添加到延迟列表中。

⑤:如果该任务唤醒的时间小于下次任务的阻塞时间,则把该任务的唤醒时间赋值给任务阻塞时间。

因此通过上述分析,

    任务函数通过调用vTaskDelay( const TickType_t xTicksToDelay ),任务的延时周期是函数运行的时间加Delay的时间。因为函数不是按照一定的周期运行的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值