4
我无法将多个队列发送到FreeRTOS中的任务。在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文件之间的队列。即。创建它和一个文件,但能够在另一个文件中的任务中使用它?
我在那里犯了一些愚蠢的错误。谢谢!根据队列的全局变量情况,多个.c/.h文件仍然可以(在头文件中使用extern)? – routeburn
如果不应共享那些队列,则为每个任务分配一个队列,如果要共享这些队列,则可能需要一些同步。希望你不会很快写出飞机固件:) – iabdalkader
用extern将队列声明放在头文件中是一个很好的方法。 –