跳到主要内容

消息队列

实例

实例一

task1向task2发送由内存池分配的结构体

task2接收来自task1发送结构体

!!! note "备注" 传入得数据指针必须要加取地址符号

task1代码

lcd_data_t *data2 = NULL;
void task1(void *argument) {
while (1) {
// 申请内存
data1 = osMemoryPoolAlloc(lcdData_MemPool, 0);
// 赋值
data1->flag_bit = 10;
// 通过队列发送
osMessageQueuePut(lcdDataQueueHandle, &data1, 0, 0);
osDelay(1000);
}
}

task2代码

lcd_data_t *data2 = NULL;
void task2(void *argument) {
while (1) {
// 接受队列消息
osMessageQueueGet(QueueHandle, &data2, NULL, osWaitForever);
printf("flag_bit = "%d\r\n", data2->flag_bit);
// 释放内存
osMemoryPoolFree(lcdData_MemPool, data2);
}
}