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

2022/2/20 6:26:43

本文主要是介绍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 )

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



这篇关于ESP32学习FREERTOS中队列Queue相关函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程