Bird
Raised Fist0
FreeRTOSprogramming~5 mins

Task priority assignment in FreeRTOS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is task priority in FreeRTOS?
Task priority is a number that tells FreeRTOS which task is more important. Higher priority tasks run before lower priority ones.
Click to reveal answer
beginner
How do you assign a priority to a task when creating it in FreeRTOS?
You assign priority by passing a number as the 'uxPriority' parameter in the xTaskCreate() function.
Click to reveal answer
intermediate
What happens if two tasks have the same priority in FreeRTOS?
If two tasks have the same priority, FreeRTOS switches between them in a round-robin way, sharing CPU time fairly.
Click to reveal answer
intermediate
Can task priority be changed after a task is created? How?
Yes, you can change a task's priority anytime using the vTaskPrioritySet() function.
Click to reveal answer
advanced
Why should you avoid giving all tasks the same high priority?
Giving all tasks the same high priority can cause poor system performance because tasks will compete and may starve lower priority tasks.
Click to reveal answer
In FreeRTOS, which task will run first?
AThe task with the highest priority number
BThe task created first
CThe task with the lowest priority number
DThe task with the longest name
How do you set the priority of a task when creating it?
ABy passing the priority as a parameter to xTaskCreate()
BBy calling vTaskPrioritySet() before creating the task
CBy naming the task with a priority number
DBy setting a global variable
What does FreeRTOS do if two tasks have the same priority?
ARuns the task with the lower priority
BRuns them one after the other in round-robin fashion
CRuns the task with the longer name
DRuns only the first created task
Which function changes a task's priority after creation?
AxTaskCreate()
BvTaskDelete()
CvTaskPrioritySet()
DxTaskResume()
Why is it bad to give all tasks the same high priority?
AIt saves memory
BIt makes the system run faster
CIt disables task switching
DIt can cause tasks to compete and starve others
Explain how task priority affects task scheduling in FreeRTOS.
Think about which tasks get CPU time first and how tasks with same priority share time.
You got /3 concepts.
    Describe how to assign and change task priority in FreeRTOS.
    Consider both when creating a task and after it is running.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      In FreeRTOS, what does a higher task priority number mean?

      easy
      A. The task runs only when idle
      B. The task runs after lower priority tasks
      C. The task runs before lower priority tasks
      D. The task is deleted automatically

      Solution

      1. Step 1: Understand task priority meaning

        In FreeRTOS, tasks with higher priority numbers get CPU time before lower priority tasks.
      2. Step 2: Relate priority number to execution order

        A higher number means the task is more important and runs first.
      3. Final Answer:

        The task runs before lower priority tasks -> Option C
      4. Quick Check:

        Higher priority = runs first [OK]
      Hint: Higher number means higher priority, runs first [OK]
      Common Mistakes:
      • Thinking lower number means higher priority
      • Confusing priority with task state
      • Assuming priority controls memory usage
      2.

      Which of the following is the correct way to assign a priority of 3 to a task in FreeRTOS using xTaskCreate?

      void vTaskFunction(void *pvParameters) { /* Task code */ }
      
      xTaskCreate(vTaskFunction, "Task1", 1000, NULL, ?, NULL);
      easy
      A. taskPriority = 3
      B. "3"
      C. priority = 3
      D. 3

      Solution

      1. Step 1: Check xTaskCreate parameters

        The fifth parameter is the task priority and expects an integer value.
      2. Step 2: Identify correct priority assignment

        Passing 3 directly as an integer is correct; strings or assignments are invalid here.
      3. Final Answer:

        3 -> Option D
      4. Quick Check:

        Priority parameter = integer value [OK]
      Hint: Priority is an integer, no quotes or assignments [OK]
      Common Mistakes:
      • Using quotes around priority number
      • Writing assignment expressions inside parameters
      • Passing variable names without declaration
      3.

      Given the following FreeRTOS code snippet, which task will run first?

      void TaskA(void *pvParameters) { while(1) {} }
      void TaskB(void *pvParameters) { while(1) {} }
      
      xTaskCreate(TaskA, "A", 1000, NULL, 2, NULL);
      xTaskCreate(TaskB, "B", 1000, NULL, 4, NULL);
      medium
      A. TaskB
      B. TaskA
      C. Both run simultaneously
      D. Neither runs

      Solution

      1. Step 1: Identify task priorities

        TaskA has priority 2, TaskB has priority 4.
      2. Step 2: Determine which runs first

        TaskB has higher priority, so it runs before TaskA.
      3. Final Answer:

        TaskB -> Option A
      4. Quick Check:

        Higher priority task runs first [OK]
      Hint: Higher priority number runs first [OK]
      Common Mistakes:
      • Assuming tasks run in creation order
      • Thinking equal priority means simultaneous run
      • Ignoring priority values
      4.

      What is wrong with this FreeRTOS task creation code snippet?

      void vTask(void *pvParameters) { /* code */ }
      
      xTaskCreate(vTask, "Task", 1000, NULL, 5, NULL);
      xTaskCreate(vTask, "Task", 1000, NULL, -1, NULL);
      medium
      A. Priority cannot be negative
      B. Task name must be unique
      C. Stack size must be zero
      D. Task function must return int

      Solution

      1. Step 1: Check priority values

        FreeRTOS priorities must be zero or positive integers; negative values are invalid.
      2. Step 2: Validate other parameters

        Task name can be reused, stack size 1000 is valid, and task function returns void as required.
      3. Final Answer:

        Priority cannot be negative -> Option A
      4. Quick Check:

        Priority >= 0 required [OK]
      Hint: Priority must be zero or positive [OK]
      Common Mistakes:
      • Using negative priority values
      • Thinking task names must be unique
      • Expecting task function to return int
      5.

      You have three tasks with priorities 1, 3, and 3. How should you assign priorities to ensure the most important task runs first and the least important runs last?

      Choose the best priority assignment:

      • A: Task1=1, Task2=3, Task3=3
      • B: Task1=3, Task2=3, Task3=1
      • C: Task1=3, Task2=1, Task3=3
      • D: Task1=1, Task2=1, Task3=3
      hard
      A. Task1=1 (lowest), Task2=3, Task3=3 (highest)
      B. Task1=3 (highest), Task2=3, Task3=1 (lowest)
      C. Task1=3 (highest), Task2=1, Task3=3 (highest)
      D. Task1=1, Task2=1, Task3=3 (highest)

      Solution

      1. Step 1: Identify importance order

        The most important task should have highest priority (3), least important lowest (1).
      2. Step 2: Match priorities to tasks

        Task1=3 (highest), Task2=3, Task3=1 (lowest) assigns highest priority (3) to Task1 and Task2, and lowest (1) to Task3, ensuring important tasks run first.
      3. Final Answer:

        Task1=3 (highest), Task2=3, Task3=1 (lowest) -> Option B
      4. Quick Check:

        Highest priority = most important task [OK]
      Hint: Assign highest number to most important task [OK]
      Common Mistakes:
      • Assigning same priority to all tasks
      • Giving lowest priority to important tasks
      • Ignoring task importance order
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard