-1

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

我最初的项目结构:

主程序

#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){}
}

项目.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_ */

项目.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 中完成的工作项目,所以无法想象这是真正的问题吗?

4

1 回答 1

0

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

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

于 2020-01-16T18:15:27.657 回答