FreeRTOS Quick Reference Guide
FreeRTOS Quick Reference Guide
This contains examples of the most common functions, designed to jog your memory when writing FreeRTOS code.
| Function | Comments | 
|---|---|
| GENERAL TASK MANIPULATION | |
vTaskDelay(200/portTICK_RATE_MS); | 
      Will block current task for 200ms. | 
vTaskSuspendAll(); | 
      Stops scheduler, but not interrupts. Do not call non-interrupt FreeRTOS API from within a suspend section. | 
xTimerCreate(); | 
      Used to create a software timer, based of the system ticks. #configUSE_TIMERS has to be set to 1 and #configTIMER_TASK_PRIORITY set before this function is available (in FreeRTOSConfig.h). | 
    
| TASK MAINTENANCE/DEBUG | |
vTaskList(debugBuff); | 
      Writes a task list to a debug buffer. Recommended to have about 40 bytes of space in the buffer per task. | 
uxTaskGetSystemState(taskStatusArray, 5, &totalRunTime); | 
      Returns system debug information for 5 tasks (function added in v7.5.0). Stores total run time into 3rd argument. | 
| QUEUES | |
xQueueHandle myQueue = xQueueCreate(50, 2); | 
      Creates a queue of length 50 (elements) and width 2 (bytes). | 
portBASE_TYPE xQueueReceive(xQueueHandle xQueue, void* pvBuffer, portTickType, xTicksToWait); | 
      |
xQueueSendToBack(xQueueHandle xQueue, const void* pvItemToQueue, portTickType xTicksToWait); | 
      Puts item onto the end of the queue. Standard way of putting data onto queue. | 
| SEMAPHORES | |
xSemaphoreHandle xSemaphoreCreateMutex(void); | 
      Use for mutual exclusion (to prevent contention problems). | 
xSemaphoreHandle mySemaphore = xSemaphoreCreateRecursiveMutex(); | 
      Creates a mutex. | 
SemaphoreCreateBinary(mySemaphoreHandle); | 
      Creates a binary semaphore. Use for interrupt-to-task synchronisation | 
xSemaphoreHandle mySem = xSemaphoreCreateCounting(10, 0); | 
      Creates a counting semaphore which counts to 10, and starts counting from 0 (so 10 free at creation). | 
xSemaphoreGive(mySem); | 
      Gives a semaphore. | 
xSemaphoreGiveFromISR(mySem, NULL); | 
      Interrupt safe version of xSemaphoreGive(). | 
tskIDLE_PRIORITY - Priority of the idle task. Usually used as a way of setting the priority of other tasks relative to the idle task (e.g. tskIDLE_PRIORITY + 1).
portTICK_RATE_MS -  Period of the ticks (in milli-seconds). Used when calling timing/delay functions so that you can specify a delay in ms rather than ticks