FreeRTOS里的任务之间通讯可以通过队列、二进制信号量、计数信号量、互斥等几种手段,其中队列是最为常用的手段。
使用方法如下:
static QueueHandle_t xQueueADC = NULL; //声明一个消息队列xQueueADC = xQueueCreate( QUEUE_LENGTH sizeof( unsigned long ) );//创建消息队列,用于任务间通讯xQueueSendFromISR(xQueueADC &ulValueToSendADC &xHigherPriorityTaskWoken); //中断一次后发行消息队列xResult = xQueueReceive(xQueueADC /* 消息队列句柄 */ (void *)&lpit0_ch0_flag_counter /* 存储接收到的数据到变量ucQueueMsgValue中 */ (TickType_t)xMaxBlockTime); /* 设置阻塞时间 */
消息队列和邮箱
去官网看内核例程就可以,说明的很详细
freertos跟大多数操作系统一样,任务之间通信的主要方式就是消息队列,一般是一个线程将消息放入队列,别的线程去取
此外,任务之间还可以进行同步互斥,方式包括信号量,互斥量