Bird
Raised Fist0
FreeRTOSprogramming~10 mins

Task function signature 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 declare a FreeRTOS task function with the correct return type.

FreeRTOS
[1] vTaskCode(void *pvParameters) {
    // Task code here
}
Drag options to blanks, or click blank then click option'
AvTaskCode
BTaskFunction_t
CTaskHandle_t
Dvoid
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-void return type for the task function.
2fill in blank
medium

Complete the code to declare a FreeRTOS task function with the correct parameter type.

FreeRTOS
void vTaskCode([1] pvParameters) {
    // Task code here
}
Drag options to blanks, or click blank then click option'
Aint
BTaskHandle_t
Cvoid *
Dchar *
Attempts:
3 left
💡 Hint
Common Mistakes
Using a specific pointer type instead of void *.
3fill in blank
hard

Fix the error in the task function signature to match FreeRTOS requirements.

FreeRTOS
[1] vTaskCode(void *pvParameters) {
    // Task code here
}
Drag options to blanks, or click blank then click option'
Avoid
BTaskFunction_t
CTaskHandle_t
DvTaskCode
Attempts:
3 left
💡 Hint
Common Mistakes
Using int as return type and returning a value.
4fill in blank
hard

Fill both blanks to complete the FreeRTOS task function signature correctly.

FreeRTOS
[1] [2](void *pvParameters) {
    // Task code here
}
Drag options to blanks, or click blank then click option'
Avoid
BvTaskCode
CTaskFunction_t
DTaskHandle_t
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect return type or function name.
5fill in blank
hard

Fill all three blanks to complete the FreeRTOS task function signature and parameter correctly.

FreeRTOS
[1] [2]([3] pvParameters) {
    // Task code here
}
Drag options to blanks, or click blank then click option'
Avoid
BvTaskCode
Cvoid *
DTaskFunction_t
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong return type, function name, or parameter type.

Practice

(1/5)
1.

What is the correct signature for a FreeRTOS task function?

easy
A. int TaskName(int param)
B. void TaskName(void *pvParameters)
C. void TaskName()
D. void TaskName(int *param)

Solution

  1. Step 1: Recall FreeRTOS task function signature

    FreeRTOS tasks must have the signature with return type void and a single void pointer parameter.
  2. Step 2: Match the signature with options

    Only void TaskName(void *pvParameters) matches void TaskName(void *pvParameters) exactly.
  3. Final Answer:

    void TaskName(void *pvParameters) -> Option B
  4. Quick Check:

    Task signature = void TaskName(void *pvParameters) [OK]
Hint: Task functions always return void and take void* parameter [OK]
Common Mistakes:
  • Using int return type instead of void
  • Omitting the void* parameter
  • Using incorrect parameter types
2.

Which of the following is a syntactically correct FreeRTOS task function declaration?

void MyTask(_____)
easy
A. void *pvParameters
B. int param
C. char *name
D. void

Solution

  1. Step 1: Understand parameter type for FreeRTOS tasks

    Task functions must accept a single parameter of type void *.
  2. Step 2: Check each option

    Only void *pvParameters uses void *pvParameters, which is correct syntax.
  3. Final Answer:

    void *pvParameters -> Option A
  4. Quick Check:

    Parameter type = void *pvParameters [OK]
Hint: Task parameter must be void pointer (void*) [OK]
Common Mistakes:
  • Using int or char pointer instead of void pointer
  • Using void without pointer
  • Missing parameter entirely
3.

What will happen if you run this FreeRTOS task function?

void ExampleTask(void *pvParameters) {
    for(;;) {
        // Task code here
    }
}
medium
A. The task will return a value causing runtime error.
B. The task will run once and then exit.
C. The task will cause a compile error.
D. The task will run repeatedly in an infinite loop.

Solution

  1. Step 1: Analyze the task function loop

    The task contains a for(;;) infinite loop, so it runs repeatedly.
  2. Step 2: Understand FreeRTOS task behavior

    Tasks should not return; they run inside infinite loops to keep running.
  3. Final Answer:

    The task will run repeatedly in an infinite loop. -> Option D
  4. Quick Check:

    Infinite loop in task = runs repeatedly [OK]
Hint: FreeRTOS tasks run inside infinite loops [OK]
Common Mistakes:
  • Thinking task runs once and exits
  • Expecting return value from task
  • Confusing infinite loop with error
4.

Identify the error in this FreeRTOS task function:

void FaultyTask(void *pvParameters) {
    int count = 0;
    while(count < 5) {
        count++;
    }
    return;
}
medium
A. The function should not return; it must loop forever.
B. The parameter type is incorrect.
C. The variable count should be a pointer.
D. The while loop condition is invalid syntax.

Solution

  1. Step 1: Check task function return behavior

    FreeRTOS tasks must not return; they should run inside infinite loops.
  2. Step 2: Analyze the code flow

    This task loops 5 times then returns, which is incorrect for FreeRTOS tasks.
  3. Final Answer:

    The function should not return; it must loop forever. -> Option A
  4. Quick Check:

    Tasks must not return, use infinite loop [OK]
Hint: Tasks must never return; use infinite loops [OK]
Common Mistakes:
  • Allowing task to return
  • Changing parameter type incorrectly
  • Misunderstanding loop conditions
5.

You want to pass an integer value to a FreeRTOS task. Which is the correct way to define and use the task function?

void NumberTask(_____)
{
    int received = *(int *)pvParameters;
    for(;;) {
        // Use received value
    }
}
hard
A. void pvParameters
B. int pvParameters
C. void *pvParameters
D. int *pvParameters

Solution

  1. Step 1: Recall task function parameter type

    Task functions must accept a void * parameter to allow any data type.
  2. Step 2: Understand data passing

    The integer is passed via pointer cast from void *, so parameter must be void *pvParameters.
  3. Final Answer:

    void *pvParameters -> Option C
  4. Quick Check:

    Use void* parameter to pass any data type [OK]
Hint: Always use void* parameter to pass data to tasks [OK]
Common Mistakes:
  • Using int instead of void* parameter
  • Using void without pointer
  • Not casting void* to correct type inside task
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