TickType_t 是类型uint32_t或uint16_t,由portmacro.h中的configUSE_16_BIT_TICKS定义;参数xItemValue,用来做排序,一般降序;后面的lists.c文件中的函数void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem )会用到。 pxNext和pxPrevious为xLIST_ITEM指针变量,分别指向下一个xLIST_...
#define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext->xItemValue ) /* * Return the list item at the head of the list. * * \page listGET_HEAD_ENTRY listGET_HEAD_ENTRY * \ingroup LinkedList */ #define listGET_HEAD_ENTRY( pxList ) ( ( ( ...
即数据在队列末尾(tail)被写入,在队列前部(head)移出。相比而言,栈(Stack)也是一种数据结构,栈...
* Access macro to retrieve the value of the list item at the head of a given * list. * * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE * \ingroup LinkedList */ #define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext->xItemValue ) /*...
BaseType_txReturn;/* 获取解除阻塞任务的任务控制块 */pxUnblockedTCB=listGET_OWNER_OF_HEAD_ENTRY(...
一、FreeRTOS的列表和列表项简介 1.1、FreeRTOS的列表 列表是 FreeRTOS 中最基本的一种数据结构,其在物理存储单元上是非连续、非顺序的。FreeRTOS 中的列表是一个双向链表,在 list.h 文件中,有列表的相关定义,具体代码如下所示: typedef struct xL
ListItem_t * configLIST_VOLATILE pxIndex; /*链表节点索引指针,指向本链表中的一个节点,遍历节点时使用。*/ MiniListItem_t xListEnd; /*链表根节点,我们称之为生产者。该生产者的数据类型是一个精简的节点*/ } List_t; 根节点结构体 struct xMINI_LIST_ITEM ...
(void)uxListRemove( pxEventListItem );/* Remove the task from the delayed list and add it to the ready list. The scheduler is suspended so interrupts will not be accessing the ready lists. */(void)uxListRemove( &( pxUnblockedTCB->xStateListItem ) );prvAddTaskToReadyList( pxUnblockedTCB...
FreeRTOS的消息队列控制块由多个元素组成,当消息队列被创建时,系统会为控制块分配对应的内存空间,用于保存消息队列的一些信息如消息的存储位置,头指针pcHead、尾指针pcTail、消息大小uxItemSize以及队列长度uxLength等。 每个消息队列都与消息空间在同一段连续的内存空间中,在创建成功的时候,这些内存就被占用了,只有删除...
#include"led.h"#include"delay.h"#include"sys.h"#include"usart.h"// FreeRTOS head file, add here.#include"FreeRTOS.h"#include"task.h"#include"queue.h"#include"list.h"#include"portable.h"#include"FreeRTOSConfig.h"/* declare a queueHandle variable, using to save queue handler. */xQu...