ESP32学习FREERTOS中队列Queue相关函数

1 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );

创建任务,具体参数有任务函数入口指针即函数名,任务名字,分配栈大小,任务函数参数,任务优先级,任务句柄等参数。

1    void vTaskCode( void * pvParameters )
2    {
3     for( ;; )
4     {
5         // Task code goes here.
6     }
7    }

上面的格式是具体任务函数的写法。

1 vTaskDelete( xHandle );

也可以用vTaskDelete删除任务,释放掉任务所占资源。

1 static xQueueHandle xQueueHandle1=NULL;
2 xQueueHandle1=xQueueCreate(1,10);

创建一个队列总长为1,项长为10,这样可以存储10个字节。

1 xQueueSend(xQueueHandle1,(void *)&data,10/portTICK_PERIOD_MS);

这是向队列发送,参数有队列句柄,发送数据指针,延时设置

1 if(xQueueReceive(xQueueHandle1,&datarecv,portMAX_DELAY))
2         {
3             printf("datarec=%s\n",datarecv);
4             fflush(stdout);
5         }

队列数据接收时,用接收函数,判断是否收到数据,如果收到数据可以通过指针对数据进行处理。

1 xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken )
2 xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken )

当不是在任务中发送和接收队列时而是在中断中,需要用到的是以上两个函数

上一篇:《虚拟化安全解决方案》一导读


下一篇:《VMware vSphere 6.0虚拟化架构实战指南》——2.4 全新安装后的必要配置