列表及列表项概念及其应用
列表和列表项
任务调度列表介绍
其他组件列表介绍
双向链表结构
1:插入与删除效率高,只要操作一次就能完成。
2:对数据的管理更加灵活与便捷,有利于编写逻辑清晰的程序。
列表与列表项
freeRTOS列表操作API
vListInitialise()
vListInitialiseItem()
vListInsert()
vListInsertEnd()
uxListRemove()
列表及列表项函数应用
功能需求
功能业务划分
void Delay_Task(void const * argument)
{
/* USER CODE BEGIN Delay_Task */
EventBits_t KeyEventBits;
uint8_t index;
static uint8_t record = 0;
ListItem_t* pListItem;
/*
1、列表及列表项初始化
*/
vListInitialise(&ListTest);
for(index=0;index<ITEM_NUMBER;index++){
vListInitialiseItem(&ListItemTest[index]);
ListItemTest[index].xItemValue = index;
}
/* Infinite loop */
for(;;)
{
/*
1、修改事件标志组等待状态为 触发后清除标志
2、检测按键,处理相关功能
*/
KeyEventBits = xEventGroupWaitBits(KeyEventGroup,
KEY3_EVENT_BIT|KEY4_EVENT_BIT|KEY5_EVENT_BIT|KEY6_EVENT_BIT,
pdTRUE,
pdFALSE,
portMAX_DELAY);
printf("Key is Down Key Event Bit is %x\r\n",KeyEventBits);
switch(KeyEventBits){
case KEY3_EVENT_BIT:
/*
当列表项在范围内,允许插入
插入完毕后,记录值record加一
*/
if(record < ITEM_NUMBER){
vListInsert(