Bird
Raised Fist0
FreeRTOSprogramming~5 mins

One-shot vs auto-reload timers in FreeRTOS - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is a one-shot timer in FreeRTOS?
A one-shot timer runs once and stops after its set time expires. It does not restart automatically.
Click to reveal answer
beginner
What is an auto-reload timer in FreeRTOS?
An auto-reload timer automatically restarts each time it expires, running repeatedly at fixed intervals.
Click to reveal answer
intermediate
How do you create a one-shot timer in FreeRTOS?
Use xTimerCreate() with the auto-reload parameter set to pdFALSE to create a one-shot timer.
Click to reveal answer
intermediate
How do you create an auto-reload timer in FreeRTOS?
Use xTimerCreate() with the auto-reload parameter set to pdTRUE to create an auto-reload timer.
Click to reveal answer
intermediate
When would you use a one-shot timer instead of an auto-reload timer?
Use a one-shot timer for single delayed actions, like a timeout or a one-time event, where repeating is not needed.
Click to reveal answer
Which FreeRTOS timer type automatically restarts after expiring?
AHardware timer
BOne-shot timer
CSoftware timer
DAuto-reload timer
What parameter value creates a one-shot timer in xTimerCreate()?
ApdFALSE
BpdTRUE
CNULL
DpdPASS
Which timer type is best for a repeated periodic task?
AAuto-reload timer
BOne-shot timer
CIdle timer
DWatchdog timer
If you want a timer to run only once after 5 seconds, which timer type do you use?
AAuto-reload timer
BPeriodic timer
COne-shot timer
DNone
What happens when an auto-reload timer expires in FreeRTOS?
AIt stops and deletes itself
BIt restarts automatically
CIt pauses until manually restarted
DIt triggers a system reset
Explain the difference between one-shot and auto-reload timers in FreeRTOS.
Think about whether the timer repeats or stops after firing.
You got /3 concepts.
    Describe how to create and use a one-shot timer in FreeRTOS.
    Focus on the creation parameter and behavior after expiration.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main difference between a one-shot timer and an auto-reload timer in FreeRTOS?
      easy
      A. One-shot timers run once after a delay; auto-reload timers run repeatedly at fixed intervals.
      B. One-shot timers run repeatedly; auto-reload timers run only once.
      C. One-shot timers are faster than auto-reload timers.
      D. Auto-reload timers cannot be stopped once started.

      Solution

      1. Step 1: Understand timer behavior

        One-shot timers execute their callback function only once after the specified delay.
      2. Step 2: Compare with auto-reload timers

        Auto-reload timers automatically restart after each expiration, running repeatedly at fixed intervals.
      3. Final Answer:

        One-shot timers run once after a delay; auto-reload timers run repeatedly at fixed intervals. -> Option A
      4. Quick Check:

        One-shot = single run, Auto-reload = repeated runs [OK]
      Hint: One-shot = once, Auto-reload = repeat [OK]
      Common Mistakes:
      • Confusing which timer runs repeatedly
      • Thinking one-shot timers repeat automatically
      • Assuming auto-reload timers cannot be stopped
      2. Which of the following is the correct way to create an auto-reload timer in FreeRTOS using xTimerCreate?
      easy
      A. xTimerCreate("Timer", pdMS_TO_TICKS(1000), pdFALSE, NULL, TimerCallback);
      B. xTimerCreate("Timer", 1000, pdTRUE, NULL, TimerCallback);
      C. xTimerCreate("Timer", 1000, pdFALSE, NULL, TimerCallback);
      D. xTimerCreate("Timer", pdMS_TO_TICKS(1000), pdTRUE, NULL, TimerCallback);

      Solution

      1. Step 1: Identify auto-reload parameter

        The third parameter of xTimerCreate is uxAutoReload, which should be pdTRUE for auto-reload timers.
      2. Step 2: Check time parameter format

        Use pdMS_TO_TICKS(1000) to convert milliseconds to ticks correctly.
      3. Final Answer:

        xTimerCreate("Timer", pdMS_TO_TICKS(1000), pdTRUE, NULL, TimerCallback); -> Option D
      4. Quick Check:

        Auto-reload needs pdTRUE and tick conversion [OK]
      Hint: Auto-reload = pdTRUE, use pdMS_TO_TICKS for time [OK]
      Common Mistakes:
      • Using pdFALSE for auto-reload timers
      • Passing raw milliseconds instead of ticks
      • Confusing parameter order
      3. Consider this FreeRTOS timer code snippet:
      TimerHandle_t timer = xTimerCreate("MyTimer", pdMS_TO_TICKS(500), pdFALSE, NULL, TimerCallback);
      xTimerStart(timer, 0);

      What will happen when this timer expires?
      medium
      A. The TimerCallback function will be called once after 500 ms.
      B. The TimerCallback function will be called repeatedly every 500 ms.
      C. The timer will never start because pdFALSE is invalid.
      D. The TimerCallback function will be called immediately and repeatedly.

      Solution

      1. Step 1: Analyze timer creation parameters

        The timer is created with pdFALSE for auto-reload, meaning it is a one-shot timer.
      2. Step 2: Understand timer start and expiration

        After starting, the timer waits 500 ms, then calls TimerCallback once and stops.
      3. Final Answer:

        The TimerCallback function will be called once after 500 ms. -> Option A
      4. Quick Check:

        pdFALSE means one-shot = single callback [OK]
      Hint: pdFALSE means one-shot, callback runs once [OK]
      Common Mistakes:
      • Thinking pdFALSE means repeated calls
      • Assuming timer starts immediately
      • Confusing pdFALSE with invalid parameter
      4. You wrote this code to create an auto-reload timer but it only runs once:
      TimerHandle_t timer = xTimerCreate("Timer", pdMS_TO_TICKS(1000), pdFALSE, NULL, TimerCallback);
      xTimerStart(timer, 0);

      What is the likely error?
      medium
      A. The timer period is too short to see repeated calls.
      B. xTimerStart was called with zero block time.
      C. The auto-reload parameter is set to pdFALSE instead of pdTRUE.
      D. The timer callback function is missing.

      Solution

      1. Step 1: Check auto-reload parameter

        The timer was created with pdFALSE, which means it is a one-shot timer.
      2. Step 2: Understand effect on timer behavior

        Because of pdFALSE, the timer runs only once and does not auto-reload.
      3. Final Answer:

        The auto-reload parameter is set to pdFALSE instead of pdTRUE. -> Option C
      4. Quick Check:

        pdFALSE disables auto-reload, causing single run [OK]
      Hint: Auto-reload needs pdTRUE, not pdFALSE [OK]
      Common Mistakes:
      • Ignoring auto-reload parameter
      • Thinking block time affects reload
      • Assuming callback absence causes single run
      5. You want to toggle an LED every 2 seconds indefinitely using a FreeRTOS timer. Which timer type and setup should you use?
      hard
      A. Create a one-shot timer with 2000 ms period and restart it manually each time.
      B. Create an auto-reload timer with 2000 ms period to toggle LED automatically.
      C. Create a one-shot timer with 1000 ms period and toggle LED twice per cycle.
      D. Create an auto-reload timer with 1000 ms period and toggle LED every 2 cycles.

      Solution

      1. Step 1: Identify requirement for repeated action

        Toggling LED every 2 seconds indefinitely means the action repeats automatically.
      2. Step 2: Choose timer type and period

        An auto-reload timer with 2000 ms period will call the toggle function every 2 seconds without manual restart.
      3. Final Answer:

        Create an auto-reload timer with 2000 ms period to toggle LED automatically. -> Option B
      4. Quick Check:

        Repeated action = auto-reload timer with correct period [OK]
      Hint: Repeated tasks use auto-reload timers with correct period [OK]
      Common Mistakes:
      • Using one-shot timer and forgetting to restart
      • Setting wrong timer period
      • Confusing toggle frequency with timer period
      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