Настройка проекта FreeRTOS с ошибкой: ожидается ')' перед строковой константой - PullRequest
0 голосов
/ 16 января 2020

Я начинаю новый проект на плате 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 на свой основной. c и оставлю задачу в своем проекте. c (в этом случае также нужно удалить stati c), мой проект успешно скомпилируется.

Что проблема здесь? Я уже видел рабочие проекты, где xTaskCreate не выполняется в main. c, поэтому не можете представить, что это настоящая проблема?

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Кроме того, вам нужно использовать группу приоритетов NVI C 4, а не три, если NVIC_PriorityGroup_4 не определено как 3?

0 голосов
/ 16 января 2020

Вы не можете вызвать функцию вне другой функции, и это именно то, что вы пытаетесь сделать.

Вы можете вызывать функции только из других функций. Первая выполненная функция: main

...