FreeRTOS中的xDelayedTaskList1 和 xDelayedTaskList2

在FreeRTOS中,xDelayedTaskList1xDelayedTaskList2 是用于管理延时任务的两个链表。它们的区别和用途如下:

  1. 基本概念:

    • xDelayedTaskList1xDelayedTaskList2 是FreeRTOS内核用来存储延时任务的两个链表。
    • 延时任务是指那些由于调用了vTaskDelayvTaskDelayUntil等函数而被阻塞,等待某个时间点才会重新进入就绪状态的任务。
  2. 主要区别:

    • xDelayedTaskList1: 当前延时任务链表。它存储了所有当前在延时状态下的任务。当这些任务的延时时间到期时,它们会从这个链表中移除并被添加到就绪任务列表中。
    • xDelayedTaskList2: 备用延时任务链表。这个链表用于存储那些需要在未来某个时间点(通常是下一次系统节拍周期)检查是否应该进入就绪状态的任务。
  3. 用途和切换:

    • FreeRTOS使用这两个链表来优化延时任务的管理。在每一个系统节拍中,内核只需要检查xDelayedTaskList1中的任务。
    • 当系统节拍(tick)计数器溢出(即从最大值回到0)时,两个链表会交换角色:xDelayedTaskList2变为xDelayedTaskList1,而原来的xDelayedTaskList1变为新的xDelayedTaskList2。这样做是为了确保在系统节拍溢出后延时任务的时间计算仍然正确。
  4. 切换时机:

    • 在每次系统节拍(tick)中断处理函数(通常是xTaskIncrementTick)执行时,内核会检查当前系统时间是否达到下一个溢出点。如果是,就会交换这两个链表。

总结来说,xDelayedTaskList1xDelayedTaskList2是FreeRTOS用于管理延时任务的两个链表,通过交替使用来有效管理和调度这些任务,确保系统能够正确处理不同的延时需求。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值