FreeRTOS学习——FreeRTOS队列(下)之队列创建

本篇文章记录我学习FreeRTOS队列创建的知识。主要分享队列创建需要使用的初始化函数、队列复位函数。

需要进一步了解FreeRTOS队列的相关知识,读者可以参考以下文章:

FreeRTOS学习——FreeRTOS队列(上)_freertos 单元素队列-CSDN博客

FreeRTOS学习——FreeR TOS队列——队列创建(中)-CSDN博客

一、队列初始化函数

队列初始化函数prvInitialiseNewQueue()用于队列的初始化,此函数在文件queue.c中有定义,函数代码如下:

(1)、队列结构体中的成员变量pcHead指向队列存储区中首地址。
(2)、初始化队列结构体中的成员变量
uxQueueLength和uxItemSize,这两个成员变量保存队列的最大队列项目和每个队列项大小。
(3)、调用函数xQueueGenericReset()复位队列。PS:发一句牢骚,绕来绕去的,函数调了一个又一个的。

二、队列复位函数

队列初始化函数 prvInitialiseNewQueue()中调用了函数xQueueGenericReset()来复位队列,函数xQueueGenericReset()代码如下:

(1)、初始化队列中的相关成员变量。
(2)、根据参数xNewQueue确定要复位的队列是否是新创建的队列,如果不是的话还需要做其他的处理
(3)、初始化队列中的列表xTasksWaitingToSend和 xTasksWaitingToReceive。

至此,队列创建成功,比如我们创建一个有4个队列项,每个队列项长度为32个字节的队列TestQueue,创建成功的队列如下:

相关推荐

  1. freeRTOS学习

    2024-05-25 18:32:55       117 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-25 18:32:55       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-25 18:32:55       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-25 18:32:55       87 阅读
  4. Python语言-面向对象

    2024-05-25 18:32:55       96 阅读

热门阅读

  1. 如何开展自动化测试工作,减少线上bug

    2024-05-25 18:32:55       33 阅读
  2. 【6】PostgreSQL 循环

    2024-05-25 18:32:55       28 阅读
  3. ubuntu 安装 kvm 启动虚拟机

    2024-05-25 18:32:55       31 阅读
  4. leetcode397周赛场

    2024-05-25 18:32:55       33 阅读
  5. mongoDB初体验

    2024-05-25 18:32:55       27 阅读
  6. 一个月速刷leetcodeHOT100 day08 两道DP题 一道子串

    2024-05-25 18:32:55       35 阅读
  7. uniapp Vue2钉钉h5开发pdf无法预览的问题

    2024-05-25 18:32:55       30 阅读
  8. leetcode725-Split Linked List in Parts

    2024-05-25 18:32:55       33 阅读