Я начинаю новый проект на плате 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, поэтому не можете представить, что это настоящая проблема?