work.c

Зададим подключение стандартных заголовочных файлов:

/* Standard includes. */
#include <stdlib.h>
#include <string.h>

Подключение заголовочных файлов ОСРВ:

/* includes */
#include "FreeRTOS.h"
#include "task.h"
#include "croutine.h"

Рабочая функция - в ней мы производим вызов старта планировщика задач:

/* work */
void work(void) {
    /* starting task cheduler */
    vTaskStartScheduler();
}

Хук-функция переполнения стека:

/* stack overflow hook function */
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
    /* This function will get called if a task overflows its stack.   If the
    parameters are corrupt then inspect pxCurrentTCB to find which was the
    offending task. */
    ( void ) pxTask;
    ( void ) pcTaskName;
    for( ;; );
}

А также пару функций-заглушек под нужды компилятора и сборщика:

/* compiler needed functions */
void assert_failed( unsigned char *pucFile, unsigned long ulLine )
{
    ( void ) pucFile;
    ( void ) ulLine;
    for( ;; );
}
unsigned int_sbrk_r( struct _reent *r,  int incr ) {
   
    (void)r;
    (void)incr;
   
    return(0);
}