队列概述
一块可读写的特殊缓冲区,读取空会导致任务挂起,以此来优化MCU的使用率
API函数
创建
g_xQueuePlatform = xQueueCreate(
10, //队列长度
sizeof(struct input_data)//队列中每一个块的大小
);
写入
xQueueSend(g_xQueuePlatform, &idata, 0);
读取
xQueueReceive(g_xQueuePlatform, &Rdata, portMAX_DELAY);
主函数
int main(void)
{
Rtos_delay_init(72);
uart_init(115200);
KEY_Init();
xTaskCreate((TaskFunction_t )start_task1, /* 任务函数 */
(const char* )"start_task", /* 任务名称 */
(uint16_t )START_STK_SIZE, /* 任务堆栈大小 */
(void* )NULL, /* 传入给任务函数的参数 */
(UBaseType_t )START_TASK1_PRIO, /* 任务优先级 */
(TaskHandle_t* )&StartTask1_Handler); /* 任务句柄 */
xTaskCreate((TaskFunction_t )start_task2, /* 任务函数 */
(const char* )"start_task", /* 任务名称 */
(uint16_t )START_STK_SIZE, /* 任务堆栈大小 */
(void* )NULL, /* 传入给任务函数的参数 */
(UBaseType_t )START_TASK2_PRIO, /* 任务优先级 */
(TaskHandle_t* )&StartTask2_Handler); /* 任务句柄 */
g_xQueuePlatform = xQueueCreate(
10, //队列长度
sizeof(struct input_data)//队列中每一个块的大小
);
if(g_xQueuePlatform)
printf("Queue Creat OK !!");
//开启任务调度
vTaskStartScheduler();
}