Bird
Raised Fist0
FreeRTOSprogramming~10 mins

uxTaskPriorityGet() for reading priority in FreeRTOS - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to get the priority of a FreeRTOS task.

FreeRTOS
UBaseType_t priority = uxTaskPriorityGet([1]);
Drag options to blanks, or click blank then click option'
AxTask
BxTaskHandle
CtaskHandle
Dhandle
Attempts:
3 left
💡 Hint
Common Mistakes
Using a variable name that is not the task handle.
Passing the task name as a string instead of the handle.
2fill in blank
medium

Complete the code to print the priority of a task using printf.

FreeRTOS
printf("Priority: %u\n", [1]);
Drag options to blanks, or click blank then click option'
AuxTaskPriorityGet(taskHandle)
BtaskPriority
Cpriority
DgetPriority(taskHandle)
Attempts:
3 left
💡 Hint
Common Mistakes
Using a variable that is not initialized with the priority.
Calling a non-existent function like getPriority().
3fill in blank
hard

Fix the error in the code to correctly get and store the task priority.

FreeRTOS
UBaseType_t [1] = uxTaskPriorityGet(taskHandle);
Drag options to blanks, or click blank then click option'
Apriority
Bprio
CtaskPriority
DpriorityLevel
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable names that are not descriptive or confusing.
Not declaring the variable with the correct type UBaseType_t.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps task names to their priorities for tasks with priority greater than 2.

FreeRTOS
{ [1]: uxTaskPriorityGet([2]) for [3] in tasks if uxTaskPriorityGet([3]) > 2 }
Drag options to blanks, or click blank then click option'
Atask.name
Btask
Ct
DtaskHandle
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong variable name in the loop.
Not calling uxTaskPriorityGet() with the correct argument.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps uppercase task names to their priorities for tasks with priority greater than 3.

FreeRTOS
{ [1]: [2] for [3] in task_list if uxTaskPriorityGet([3]) > 3 }
Drag options to blanks, or click blank then click option'
Atask.name.upper()
BuxTaskPriorityGet(task)
Ctask
DtaskHandle
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong variable for the loop.
Not converting the task name to uppercase.

Practice

(1/5)
1.

What does the FreeRTOS function uxTaskPriorityGet() do?

easy
A. It returns the priority of a specified task.
B. It sets the priority of a specified task.
C. It deletes a specified task.
D. It creates a new task.

Solution

  1. Step 1: Understand the function purpose

    uxTaskPriorityGet() is designed to read the priority of a task, not to modify or manage tasks.
  2. Step 2: Match function behavior to options

    Only "It returns the priority of a specified task." correctly states it returns the priority of a specified task.
  3. Final Answer:

    It returns the priority of a specified task. -> Option A
  4. Quick Check:

    uxTaskPriorityGet() reads priority = It returns the priority of a specified task. [OK]
Hint: Remember: 'Get' means read, not change [OK]
Common Mistakes:
  • Confusing 'get' with 'set' functions
  • Thinking it creates or deletes tasks
  • Assuming it returns task handle
2.

Which of the following is the correct way to get the priority of the current task using uxTaskPriorityGet()?

TaskHandle_t xTaskHandle;
UBaseType_t uxPriority = ?;
easy
A. uxPriority = uxTaskPriorityGet(xTaskHandle);
B. uxPriority = uxTaskPriorityGet(NULL);
C. uxPriority = uxTaskPriorityGet(&xTaskHandle);
D. uxPriority = uxTaskPriorityGet(*xTaskHandle);

Solution

  1. Step 1: Recall how to get current task priority

    Passing NULL to uxTaskPriorityGet() returns the priority of the current task.
  2. Step 2: Check each option

    uxPriority = uxTaskPriorityGet(xTaskHandle); uses uninitialized xTaskHandle (undefined behavior). uxPriority = uxTaskPriorityGet(&xTaskHandle); passes address (wrong type). uxPriority = uxTaskPriorityGet(*xTaskHandle); dereferences uninitialized handle (crash). Only uxPriority = uxTaskPriorityGet(NULL); is correct.
  3. Final Answer:

    uxPriority = uxTaskPriorityGet(NULL); -> Option B
  4. Quick Check:

    Use NULL for current task priority [OK]
Hint: Pass NULL to get current task priority [OK]
Common Mistakes:
  • Passing address of handle instead of handle
  • Dereferencing handle incorrectly
  • Using uninitialized task handle
3.

Given the following code snippet, what will be printed?

TaskHandle_t xHandle = xTaskGetHandle("Task1");
UBaseType_t uxPriority = uxTaskPriorityGet(xHandle);
printf("Priority: %u\n", uxPriority);

Assume "Task1" exists and has priority 3.

medium
A. Priority: 0
B. Compilation error
C. Priority: 3
D. Priority: 1

Solution

  1. Step 1: Understand task handle retrieval

    xTaskGetHandle("Task1") returns the handle of the task named "Task1" which exists with priority 3.
  2. Step 2: Use uxTaskPriorityGet() to read priority

    Calling uxTaskPriorityGet(xHandle) returns the priority of that task, which is 3.
  3. Final Answer:

    Priority: 3 -> Option C
  4. Quick Check:

    uxTaskPriorityGet returns task priority = 3 [OK]
Hint: Get handle then get priority returns actual task priority [OK]
Common Mistakes:
  • Assuming default priority 0
  • Confusing handle with task name
  • Expecting syntax error
4.

Identify the error in this code snippet:

TaskHandle_t xHandle;
UBaseType_t uxPriority = uxTaskPriorityGet(xHandle);
printf("Priority: %u\n", uxPriority);
medium
A. xHandle is uninitialized before use.
B. uxTaskPriorityGet() cannot be called with a TaskHandle_t.
C. printf format specifier is incorrect.
D. uxPriority should be a pointer.

Solution

  1. Step 1: Check variable initialization

    xHandle is declared but not assigned any value before use.
  2. Step 2: Understand consequences of uninitialized handle

    Passing an uninitialized handle to uxTaskPriorityGet() leads to undefined behavior or incorrect priority reading.
  3. Final Answer:

    xHandle is uninitialized before use. -> Option A
  4. Quick Check:

    Always initialize task handles before use [OK]
Hint: Initialize task handle before getting priority [OK]
Common Mistakes:
  • Ignoring uninitialized variables
  • Misunderstanding function parameter types
  • Assuming pointer needed for uxPriority
5.

You want to check if the current task has higher priority than another task named "WorkerTask". Which code snippet correctly compares their priorities?

TaskHandle_t xWorkerHandle = xTaskGetHandle("WorkerTask");
UBaseType_t uxCurrentPriority = uxTaskPriorityGet(NULL);
UBaseType_t uxWorkerPriority = uxTaskPriorityGet(xWorkerHandle);
// What next?
hard
A. if (uxCurrentPriority != uxWorkerPriority) { /* current task higher */ }
B. if (uxCurrentPriority < uxWorkerPriority) { /* current task higher */ }
C. if (uxCurrentPriority == uxWorkerPriority) { /* current task higher */ }
D. if (uxCurrentPriority > uxWorkerPriority) { /* current task higher */ }

Solution

  1. Step 1: Understand priority comparison logic

    Higher numeric value means higher priority in FreeRTOS.
  2. Step 2: Compare current and worker task priorities

    Use > operator to check if current task priority is higher than worker's.
  3. Final Answer:

    if (uxCurrentPriority > uxWorkerPriority) { /* current task higher */ } -> Option D
  4. Quick Check:

    Higher number = higher priority [OK]
Hint: Use '>' to check if current task priority is higher [OK]
Common Mistakes:
  • Using '<' instead of '>' for priority comparison
  • Confusing equality with higher priority
  • Not retrieving correct task handles
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