FreeRTOS Project Setup with error: expected ')' before string constant

FreeRTOS Project Setup with error: expected ')' before string constant

我正在 STM32L476 Nucleo 板上开始一个新项目,并计划使用 FreeRTOS。

我的初始项目结构:

main.c

#include "project.h"

int main(void)
{
  /* Configure the system clock */
  Clock_Config();

  /* Configure IOs */
  GPIO_Config();

  /* FreeRTOS Stuff */

  NVIC_SetPriorityGrouping(3);

  vTaskStartScheduler();

  /* Should never get here! */
  while (1){}
}

project.h

#ifndef PROJECT_H_
#define PROJECT_H_

/* MPU Files */
#include "stm32l4xx.h"
/* Project Files */
#include "gpio.h"
#include "clock.h"
/* FreeRTOS */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"

#define TASKPRIO_STD            ( tskIDLE_PRIORITY + 1 )
#define TICK_TASK_PERIOD_MS     pdMS_TO_TICKS( 500 )

#endif /* PROJECT_H_ */

project.c

#include "project.h"

static void vSerialTask( void * pvParameters );

xTaskCreate( vSerialTask, "I2C", configMINIMAL_STACK_SIZE, NULL, TASKPRIO_STD, NULL);

static void vSerialTask( void *pvParameters ){

   for( ;; )
   {

   }
}

我在 xTaskCreate 行中收到此结构的语法错误:在字符串常量之前应为“)”

如果我将 xTaskCreate 移动到我的 main.c 并将任务本身留在我的 project.c 中(在这种情况下还必须删除静态),我的项目编译成功。

这里有什么问题?我已经看到 xTaskCreate 没有在 main.c 内完成的工作项目,所以无法想象这是真正的问题?

您不能在另一个函数之外调用该函数,而这正是您尝试做的。

您只能从另一个函数中调用函数。第一个执行的函数是main