FreeRtos学习笔记----------列表和列表项

列表

列表是把列表项全部穿起来,与链表相似,是用来跟踪freertos中的任务,与列表相关的函数都在

list.c
和
list.h

列表的结构体

typedef struct xLIST
{
	listFIRST_LIST_INTEGRITY_CHECK_VALUE		 //检查列表完整性		
	configLIST_VOLATILE UBaseType_t uxNumberOfItems; //表示列表项的数量
	ListItem_t * configLIST_VOLATILE pxIndex;	     //记录列表项索引号
	MiniListItem_t xListEnd;						//迷你列表项
	listSECOND_LIST_INTEGRITY_CHECK_VALUE		//检查列表完整性		
} List_t;


列表项

struct xLIST_ITEM
{
	listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE	        //检查列表完整性		
	configLIST_VOLATILE TickType_t xItemValue;		    //列表项值
	struct xLIST_ITEM * configLIST_VOLATILE pxNext;  	//指向下一个列表项
	struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; //指向前一个列表项
	void * pvOwner;								        //归谁所有,通常是任务控制块		
	void * configLIST_VOLATILE pvContainer;		        //决定列表项归哪个列表	
	listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE			//检查列表完整性		
};

mini列表项

struct xMINI_LIST_ITEM
{
	listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE			
	configLIST_VOLATILE TickType_t xItemValue;
	struct xLIST_ITEM * configLIST_VOLATILE pxNext;
	struct xLIST_ITEM * configLIST_VOLATILE pxPrevious;
};

与列表相关的API函数

列表初始化

void vListInitialise( List_t * const pxList )
{
	pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd );	
	pxList->xListEnd.xItemValue = portMAX_DELAY;
	pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd );	
	pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );
	pxList->uxNumberOfItems = ( UBaseType_t ) 0U;
	listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList );
	listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList );
}

实验

   vListInitialise(&Testlist);   //初始化列表
   
    vListInitialiseItem(&listitem1); //初始化列表项
   vListInitialiseItem(&listitem2);
   vListInitialiseItem(&listitem3);
   
   listitem1.xItemValue = 40; //列表项值 列表根据列表项值排序
   listitem2.xItemValue = 60;
   listitem3.xItemValue = 50;
   
    vListInsert(&Testlist,&listitem1);//插入列表
     uxListRemove(&listitem2);        //删除列表项
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值