FreeRTOS Tutorial
Struktur sebuah task
State sebuah task
Membuat Task Baru xTaskCreate
Example 1 Implementasi Task 1
Example 1 Implementasi Task 2
Example 1 Starting Task
Example 1 Output
Example 1
Membuat Task2 dari dalam Task1
Example2 1 Fungsi dipakai 2 Task
Example 2 Main()
Task Priority Diset dengan parameter uxPriority Jumlah prioritas diset dengan configMAX_PRIORITIES di FreeRTOSConfig.c Beberapa task dapat memiliki prioritas yang sama Prioritas terendah = 0 Prioritas tertinggi (configMAX_PRIORITIES – 1).
configTICK_RATE_HZ menentukan frekuensi tick portTICK_RATE_MS dipakai mengubah jumlah tick menjadi milisekon
Timer Tick
Example 3 Task dengan prioritas berbeda
Example 3 Output
Example 3 Urutan pelaksanaan
Daftar State Task
Daftar State Task Blocked Suspended Running Ready Menunggu delay Sinkronisasi dengan task lain : queues, semaphore, mutex (mutual exclusion) Suspended Running Ready
Delay dengan fungsi API void vTaskDelay( portTickType xTicksToDelay ); xTicksToDelay : The number of tick interrupts that the calling task should remain in the Blocked state before being transitioned back into the Ready state.
Example 3 Delay dengan fungsi delay
Example 4 Output
Example 4 Urutan Eksekusi
Example 4 Perubahan state
vTaskDelayUntil() API Function void vTaskDelayUntil( portTickType * pxPreviousWakeTime, portTickType xTimeIncrement ); pxPreviousWakeTime: holds the time at which the task last left the Blocked state (was ‘woken’ up). Updated automatically. xTimeIncrement : xTimeIncrement is specified in ‘ticks’. The constant portTICK_RATE_MS can be used to convert milliseconds to ticks.
Example 5 Implementasi vTaskDelayUntil
Example 6 Blocking & Non blocking task Task 1 dan task 2 dengan prioritas 1, mencetak string secara teratur Task 3: prioritas 2, mencetak string secara teratur, menggunakan vTaskDelayUntil() untuk masuk ke blocking state.
Example 6 Continuous Task
Example 6 Blocking Periodic Task
Example 6 Output
Example 6 Urutan Eksekusi
Idle Task
Listing 19. The source code for the example task prints out the ulIdleCycleCount