Difference between revisions of "Task Switching"
Line 21: | Line 21: | ||
{| class="table table-striped table-hover table-condensed table-bordered" | {| class="table table-striped table-hover table-condensed table-bordered" | ||
|-class="info" | |-class="info" | ||
+ | |xTaskCreate() | ||
+ | |- | ||
|Defination ||portBASE_TYPE xTaskCreate ( | |Defination ||portBASE_TYPE xTaskCreate ( | ||
:pdTASK_CODE pvTaskCode, | :pdTASK_CODE pvTaskCode, |
Revision as of 16:29, 27 June 2016
In this tutorial we will be looking all the possible freeRtos configuration.
Task States
In the FreeRTOS a task can be in either of four different states viz., Running, Ready, Blocked and Suspended as shown in below image.
1.Running: The task which is executing currently is said to be in running state. It owns the CPU.
2.Ready: The task which is neither suspended nor blocked but still not executing will be in ready state. It's not in running state because either a high priority or equal priority task is executing.
3.Blocked: A task will go in blocked state whenever it is waiting for an event to happen. The event can be completing a delay period or availability of a resource. The blocked tasks are not available for scheduling.
4.Suspended: When vTaskSuspend() is called, the task goes in suspended state. It can be resumed by calling xTaskResume(). The suspended tasks are also not available for scheduling.
API Details
Here we will discuss some of the mostly frequently used APIs related to task.
xTaskCreate() | |
Defination | portBASE_TYPE xTaskCreate (
|
Input Arguments |
|
Return Value | Returns TRUE on successful creation of task and adding it to ready list FALSE otherwise. |
Description | It creates a task and adds it to ready list. |
Usage | xTaskHandle TaskHandle_1;
static void MyTask1(void* pvParameters); xTaskCreate( MyTask1, ( signed char * )"Task1", configMINIMAL_STACK_SIZE, NULL, 1, &TaskHandle_1 ); |