Event bits are used to signal and synchronize tasks by setting or clearing specific bits in an event group, allowing tasks to wait for or react to certain conditions.
Click to reveal answer
beginner
How do you set event bits in FreeRTOS?
Use the function xEventGroupSetBits() to set one or more bits in an event group, signaling that certain events have occurred.
Click to reveal answer
beginner
How do you clear event bits in FreeRTOS?
Use the function xEventGroupClearBits() to clear one or more bits in an event group, indicating that certain events are no longer active.
Click to reveal answer
intermediate
What does the function xEventGroupWaitBits() do?
It allows a task to wait for one or more bits to be set in an event group, optionally clearing the bits before returning, enabling synchronization based on events.
Click to reveal answer
intermediate
Why might you clear event bits after a task wakes up?
Clearing event bits prevents the same event from triggering the task repeatedly and allows the system to detect new events separately.
Click to reveal answer
Which FreeRTOS function sets bits in an event group?
AxEventGroupWaitBits()
BxEventGroupClearBits()
CxEventGroupCreate()
DxEventGroupSetBits()
✗ Incorrect
xEventGroupSetBits() sets one or more bits in an event group.
What happens when you clear event bits in FreeRTOS?
AThe bits are set to 1, signaling an event.
BThe bits are reset to 0, indicating the event is no longer active.
CThe event group is deleted.
DTasks are suspended.
✗ Incorrect
Clearing bits resets them to 0, showing the event is cleared.
Which function lets a task wait for specific event bits to be set?
AxEventGroupSetBits()
BxEventGroupClearBits()
CxEventGroupWaitBits()
DvTaskDelay()
✗ Incorrect
xEventGroupWaitBits() blocks a task until specified bits are set.
Why would you clear bits after waiting on them?
ATo avoid repeated triggers from the same event.
BTo create a new event group.
CTo suspend the task.
DTo reset the scheduler.
✗ Incorrect
Clearing bits prevents the same event from waking the task again.
What data type represents event groups in FreeRTOS?
AEventGroupHandle_t
BTaskHandle_t
CSemaphoreHandle_t
DQueueHandle_t
✗ Incorrect
EventGroupHandle_t is the type used for event groups.
Explain how to set and clear event bits in FreeRTOS and why this is useful.
Think about how tasks communicate using bits to signal events.
You got /4 concepts.
Describe the role of xEventGroupWaitBits() and how clearing bits affects task behavior.
Consider what happens when a task waits for an event and how clearing bits changes future waits.
You got /3 concepts.
Practice
(1/5)
1. What is the primary purpose of xEventGroupSetBits() in FreeRTOS?
easy
A. To create a new event group
B. To clear (reset) specific bits in an event group
C. To set (signal) specific bits in an event group
D. To delete an existing event group
Solution
Step 1: Understand the function name
xEventGroupSetBits() suggests setting bits, which means signaling events.
Step 2: Compare with other functions
xEventGroupClearBits() is used to clear bits, so setting bits is done by xEventGroupSetBits().
Final Answer:
To set (signal) specific bits in an event group -> Option C
Quick Check:
Set bits = signal events [OK]
Hint: Set bits means signal events, clear bits means reset [OK]
Common Mistakes:
Confusing setting bits with clearing bits
Thinking it creates or deletes event groups
Mixing up function names
2. Which of the following is the correct syntax to clear bits 0x03 in an event group named myEventGroup?
easy
A. xEventGroupClear(myEventGroup, 0x03);
B. xEventGroupSetBits(myEventGroup, 0x03);
C. xClearEventBits(myEventGroup, 0x03);
D. xEventGroupClearBits(myEventGroup, 0x03);
Solution
Step 1: Identify the correct function for clearing bits
The function to clear bits is xEventGroupClearBits().
Step 2: Check the syntax
The correct syntax is xEventGroupClearBits(eventGroupHandle, bitsToClear);. xEventGroupClearBits(myEventGroup, 0x03); matches this exactly.
Final Answer:
xEventGroupClearBits(myEventGroup, 0x03); -> Option D
C. xEventGroupClearBits requires a pointer, not a value
D. Missing include for FreeRTOS headers
Solution
Step 1: Check function parameter order
xEventGroupClearBits() expects (EventGroupHandle_t, EventBits_t). The code passes (0x01, myEventGroup), which is reversed.
Step 2: Confirm return type of xEventGroupCreate()
xEventGroupCreate() returns an EventGroupHandle_t, so assignment is correct.
Final Answer:
Arguments to xEventGroupClearBits are reversed -> Option A
Quick Check:
Function parameters order matters [OK]
Hint: Check parameter order carefully for FreeRTOS API calls [OK]
Common Mistakes:
Swapping parameters in API calls
Assuming wrong return types
Ignoring compiler warnings
5. You want to signal two events represented by bits 0x01 and 0x04, then immediately clear bit 0x01 without affecting others. Which sequence correctly achieves this?
hard
A. xEventGroupClearBits(myEventGroup, 0x05); xEventGroupSetBits(myEventGroup, 0x01);
B. xEventGroupSetBits(myEventGroup, 0x05); xEventGroupClearBits(myEventGroup, 0x01);
C. xEventGroupSetBits(myEventGroup, 0x01); xEventGroupClearBits(myEventGroup, 0x04);
D. xEventGroupClearBits(myEventGroup, 0x01); xEventGroupSetBits(myEventGroup, 0x05);
Solution
Step 1: Set bits 0x01 and 0x04 together
Setting bits 0x05 (binary 0101) signals both events at once.
Step 2: Clear only bit 0x01
Clearing bit 0x01 removes that event signal but leaves 0x04 set.
Final Answer:
xEventGroupSetBits(myEventGroup, 0x05); xEventGroupClearBits(myEventGroup, 0x01); -> Option B
Quick Check:
Set both bits then clear one bit [OK]
Hint: Set all bits first, then clear only the unwanted bit [OK]
Common Mistakes:
Clearing bits before setting them
Clearing wrong bits
Not combining bits correctly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.