详解FreeRTOS:FreeRTOS的系统时钟节拍(拓展篇—2)

2024-01-02 22:10:00

不管是什么系统,运行都需要有个系统时钟节拍,xTickCount是FreeRTOS 的系统时钟节拍计数器。每个滴答定时器中断中 xTickCount 就会加1,xTickCount 的具体操作过程是在函数 xTaskIncrementTick()中进行的,此函数在文件 tasks.c 中有定义,如下:

程序说明如下:

(1)、判断任务调度器是否被挂起。

(2)、将时钟节拍计数器 xTickCount 加1,并将结果保存在 xConstTickCount 中,下一行程序会将 xConstTickCount 赋值给 xTickCount,相当于给 xTickCount 加1。

(3)、xConstTickCount 为 0,说明发生了溢出。

(4)、如果发生了溢出的话使用函数 taskSWITCH_DELAYED_LISTS 将延时列表指针pxDelayedTaskList 和溢出列表指针 pxOverflowDelayedTaskList 所指向的列表进行交换,函数taskSWITCH_DELAYED_LISTS()本质上是个宏,在文件 tasks.c 中有定义,将这两个指针所指向的列表交换以后还需要更新 xNextTaskUnblockTime 的值。

(5)、变量 xNextTaskUnblockTime 保存着下一个要解除阻塞的任务的时间点值,如果xConstTickCount 大于 xNextTaskUnblockTime 的话就说明有任务需要解除阻塞了。

(6)、判断延时列表是否为空。

(7)、如果延时列表为空的话就将 xNextTaskUnblo

文章来源:https://blog.csdn.net/m0_38106923/article/details/131595382
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。