我在向 FreeRTOS 中的任务发送多个队列时遇到问题。
我尝试创建一个结构来保存它们,如下所示:
typedef struct
{
xQueueHandle buttonQueue;
xQueueHandle OLEDQueue;
} xQueues;
然后将其发送到这样的任务:
void vStartADCtasks( xQueueHandle xButtonQueuex, QueueHandle xOLEDQueue )
{
xQueues xADCQueues = { xOLEDQueue, xButtonQueue };
xTaskCreate( vGetAltitude, "Get Altitude", 240, (void *) &xADCQueues, 2, NULL );
}
并在任务中像这样访问它:
static void vGetAltitude(void *pvParameters) {
xQueues *xADCQueues = ( xQueues * ) pvParameters;
xQueueHandle xOLEDQueue = xADCQueues->OLEDQueue;
xQueueHandle xButtonQueue = xADCQueues->buttonQueue;
但这不起作用。有小费吗?我想我更一般的问题是如何在多个 .c 文件之间传递队列。IE。创建它和一个文件,但能够在另一个文件的任务中使用它?