消息队列
实例
实例一
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);
}
}