FreeRTOS 源码注释(vTaskDelay)

void vTaskDelay( portTickType xTicksToDelay )
{
    portTickType xTimeToWake;
    signed portBASE_TYPE xAlreadyYielded = pdFALSE;

    /* A delay time of zero just forces a reschedule. */
    if( xTicksToDelay > ( portTickType ) 0 )
    {
        vTaskSuspendAll();
        {
            traceTASK_DELAY();

            /* 计算下次唤醒的时刻. */
            xTimeToWake = xTickCount + xTicksToDelay;

            /* 从 Ready 链表中删除,加入 DelayedList */
            vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );
            prvAddCurrentTaskToDelayedList( xTimeToWake );
        }
       xAlreadyYielded = xTaskResumeAll();/* 不知道作用,找时间仔细看看 */
    }

    /* Force a reschedule if xTaskResumeAll has not already done so, we may
    have put ourselves to sleep. */
    if( !xAlreadyYielded )
    {
        portYIELD_WITHIN_API();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值