包含头#include "freertos/queue.h"
TaskHandle_t xHandle = NULL;
TaskHandle_t xHandle1 = NULL;
void vTaskCode(void *pvParam)
{
QueueHandle_t QHandle;
QHandle = (QueueHandle_t)pvParam;
BaseType_t xStates;
int i = 0;
while (1)
{
xStates = xQueueSend(QHandle, &i, 0);//在队列中发布项目
if (xStates != pdPASS)
{
printf("sendno\n");
}
else
{
printf("sendok\n");
}
i++;
if (i > 7)
{
i = 0;
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void vTaskCode1(void *pvParam)
{
QueueHandle_t QHandle;
QHandle = (QueueHandle_t)pvParam;
BaseType_t xStates;
int k = 0;
while (1)
{
xStates = xQueueReceive(QHandle, &k, 0);//通过复制接收
if (xStates != pdPASS)
{
printf("receiveno\n");
}
else
{
printf("receiveok %d\n", k);
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void app_main(void)
{
QueueHandle_t QHandle;
QHandle = xQueueCreate(5, sizeof(int));//创建队列,返回队列的句柄
if (QHandle != 0)
{
printf("TEST_QHandle_ok\n");
xTaskCreate(
vTaskCode, // 任务函数
"Ttask", // 名字
4096, // 分配内存
(void *)QHandle, // 传参数
1, // 任务优先级
&xHandle); // 句柄
xTaskCreate(
vTaskCode1, // 任务函数
"Rtask1", // 名字
4096, // 分配内存
(void *)QHandle, // 传参数
2, // 任务优先级
&xHandle1); // 句柄
}
else
{
printf("TEST_QHandle_no\n");
}
}