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