Bird
Raised Fist0
FreeRTOSprogramming~10 mins

xQueueCreate() function 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 create a queue with 5 items, each of size sizeof(int).

FreeRTOS
QueueHandle_t queue = xQueueCreate([1], sizeof(int));
Drag options to blanks, or click blank then click option'
A-1
B10
C0
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 or negative numbers which are invalid queue lengths.
Confusing the item size with the queue length.
2fill in blank
medium

Complete the code to create a queue that holds 10 items, each of size sizeof(char).

FreeRTOS
QueueHandle_t queue = xQueueCreate([1], sizeof(char));
Drag options to blanks, or click blank then click option'
A10
B5
C20
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using the size of the item as the queue length.
Using a smaller or larger number than required.
3fill in blank
hard

Fix the error in the code to create a queue for 3 items of size sizeof(float).

FreeRTOS
QueueHandle_t queue = xQueueCreate([1], sizeof(float));
Drag options to blanks, or click blank then click option'
A3
Bsizeof(float)
C-3
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using zero or negative numbers for queue length.
Using the size of the item as the queue length.
4fill in blank
hard

Fill both blanks to create a queue that holds 7 items, each of size sizeof(uint32_t).

FreeRTOS
QueueHandle_t queue = xQueueCreate([1], [2]);
Drag options to blanks, or click blank then click option'
A7
Bsizeof(uint32_t)
Csizeof(int)
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up the order of parameters.
Using wrong sizes for the item.
5fill in blank
hard

Fill all three blanks to create a queue for 4 items, each of size sizeof(char), and check if the queue was created successfully.

FreeRTOS
QueueHandle_t queue = xQueueCreate([1], [2]);
if (queue == [3]) {
    // Handle error
}
Drag options to blanks, or click blank then click option'
A4
Bsizeof(char)
CNULL
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Not checking the queue handle against NULL.
Using 0 instead of NULL for the check.
Mixing up the order of parameters.

Practice

(1/5)
1. What does the xQueueCreate() function do in FreeRTOS?
easy
A. Sends data to a queue
B. Creates a new queue to hold data items between tasks
C. Deletes an existing queue
D. Receives data from a queue

Solution

  1. Step 1: Understand the purpose of xQueueCreate()

    The function is designed to create a new queue in FreeRTOS for inter-task communication.
  2. Step 2: Differentiate from other queue functions

    Functions like sending or receiving data operate on existing queues, not create them.
  3. Final Answer:

    Creates a new queue to hold data items between tasks -> Option B
  4. Quick Check:

    xQueueCreate() = create queue [OK]
Hint: xQueueCreate() always makes a new queue [OK]
Common Mistakes:
  • Confusing creation with sending or receiving data
  • Thinking it deletes a queue
  • Assuming it initializes queue data
2. Which of the following is the correct syntax to create a queue for 10 items, each of size sizeof(int)?
easy
A. xQueueCreate(10, sizeof(int));
B. xQueueCreate(sizeof(int), 10);
C. xQueueCreate(10);
D. xQueueCreate(sizeof(int));

Solution

  1. Step 1: Recall xQueueCreate() parameters

    The first parameter is the number of items, the second is the size of each item.
  2. Step 2: Match parameters to options

    xQueueCreate(10, sizeof(int)); correctly uses 10 items and sizeof(int) as size per item.
  3. Final Answer:

    xQueueCreate(10, sizeof(int)); -> Option A
  4. Quick Check:

    Parameters = (number, size) [OK]
Hint: First param = count, second = size [OK]
Common Mistakes:
  • Swapping the order of parameters
  • Providing only one parameter
  • Using raw numbers instead of sizeof()
3. Consider this code snippet:
QueueHandle_t q = xQueueCreate(5, sizeof(char));
if (q == NULL) {
    printf("Queue creation failed\n");
} else {
    printf("Queue created successfully\n");
}
What will be printed if the queue is created successfully?
medium
A. Queue creation failed
B. Compilation error
C. Queue created successfully
D. No output

Solution

  1. Step 1: Check the return value of xQueueCreate()

    If queue creation succeeds, it returns a non-NULL handle.
  2. Step 2: Analyze the if condition

    The code prints "Queue created successfully" when q is not NULL.
  3. Final Answer:

    Queue created successfully -> Option C
  4. Quick Check:

    q != NULL means success [OK]
Hint: Check if queue handle is NULL for failure [OK]
Common Mistakes:
  • Assuming NULL means success
  • Ignoring the if condition
  • Confusing print messages
4. What is wrong with this code?
QueueHandle_t q = xQueueCreate(0, sizeof(int));
if (q == NULL) {
    // handle error
}
medium
A. Queue size cannot be zero, so creation fails
B. sizeof(int) is invalid parameter
C. Missing queue deletion after creation
D. QueueHandle_t is not the correct type

Solution

  1. Step 1: Understand queue length parameter

    The first parameter must be greater than zero to hold items.
  2. Step 2: Consequence of zero length

    Passing zero causes xQueueCreate() to fail and return NULL.
  3. Final Answer:

    Queue size cannot be zero, so creation fails -> Option A
  4. Quick Check:

    Queue length > 0 required [OK]
Hint: Queue length must be > 0 [OK]
Common Mistakes:
  • Using zero length queue
  • Confusing size of item with queue length
  • Ignoring return NULL check
5. You want to create a queue that can hold 3 structures of type SensorData. Which is the correct way to create this queue?
hard
A. xQueueCreate(1, sizeof(SensorData) * 3);
B. xQueueCreate(sizeof(SensorData), 3);
C. xQueueCreate(3, sizeof(SensorData*));
D. xQueueCreate(3, sizeof(SensorData));

Solution

  1. Step 1: Identify queue length and item size

    Queue length is 3, item size is size of one SensorData structure.
  2. Step 2: Match parameters to xQueueCreate()

    First parameter is number of items (3), second is size of each item (sizeof(SensorData)).
  3. Final Answer:

    xQueueCreate(3, sizeof(SensorData)); -> Option D
  4. Quick Check:

    Length=3, size=sizeof(struct) [OK]
Hint: Length first, size of one item second [OK]
Common Mistakes:
  • Swapping length and size parameters
  • Using pointer size instead of struct size
  • Creating queue for one large combined item
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