Bird
Raised Fist0
ARM Architectureknowledge~10 mins

SysTick timer for RTOS tick in ARM Architecture - Interactive Code Practice

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

Complete the code to enable the SysTick timer interrupt.

ARM Architecture
SysTick->CTRL |= [1];
Drag options to blanks, or click blank then click option'
ASysTick_CTRL_COUNTFLAG_Msk
BSysTick_CTRL_CLKSOURCE_Msk
CSysTick_CTRL_ENABLE_Msk
DSysTick_CTRL_TICKINT_Msk
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing the ENABLE bit with the interrupt enable bit.
Using the clock source bit instead of the interrupt enable bit.
2fill in blank
medium

Complete the code to set the SysTick reload value for a 1ms tick assuming a 48 MHz clock.

ARM Architecture
SysTick->LOAD = [1] - 1;
Drag options to blanks, or click blank then click option'
A48000
B480000
C4800
D480
Attempts:
3 left
💡 Hint
Common Mistakes
Using 4800 instead of 48000, confusing kHz with MHz.
Forgetting to subtract 1 from the reload value.
3fill in blank
hard

Fix the error in the code to start the SysTick timer with processor clock as source.

ARM Architecture
SysTick->CTRL = [1] | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;
Drag options to blanks, or click blank then click option'
ASysTick_CTRL_COUNTFLAG_Msk
BSysTick_CTRL_ENABLE_Msk
CSysTick_CTRL_CLKSOURCE_Msk
DSysTick_CTRL_TICKINT_Msk
Attempts:
3 left
💡 Hint
Common Mistakes
Using ENABLE or TICKINT bits instead of CLKSOURCE for clock selection.
Using COUNTFLAG which is a status bit, not a control bit.
4fill in blank
hard

Fill both blanks to create a SysTick handler function that increments the RTOS tick count and clears the interrupt flag.

ARM Architecture
void SysTick_Handler(void) {
    [1]();
    [2] = 0;
}
Drag options to blanks, or click blank then click option'
ARTOS_Tick_Handler
BSysTick->CTRL
CSysTick->VAL
DRTOS_Tick_Count
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to clear the CTRL register instead of VAL.
Calling a wrong function name or missing the function call.
5fill in blank
hard

Fill all three blanks to configure SysTick for a 1ms RTOS tick with interrupt enabled and processor clock source.

ARM Architecture
SysTick->LOAD = [1] - 1;
SysTick->VAL = 0;
SysTick->CTRL = [2] | [3] | SysTick_CTRL_ENABLE_Msk;
Drag options to blanks, or click blank then click option'
A48000
BSysTick_CTRL_TICKINT_Msk
CSysTick_CTRL_CLKSOURCE_Msk
DSysTick_CTRL_COUNTFLAG_Msk
Attempts:
3 left
💡 Hint
Common Mistakes
Using COUNTFLAG bit which is read-only status.
Forgetting to clear VAL before starting.

Practice

(1/5)
1. What is the main purpose of the SysTick timer in an RTOS?
easy
A. To generate regular interrupts for task switching
B. To increase CPU clock speed
C. To store data temporarily
D. To manage memory allocation

Solution

  1. Step 1: Understand SysTick timer role

    The SysTick timer is designed to create periodic interrupts.
  2. Step 2: Connect interrupts to RTOS function

    These interrupts allow the RTOS to switch tasks regularly.
  3. Final Answer:

    To generate regular interrupts for task switching -> Option A
  4. Quick Check:

    SysTick timer = periodic interrupts for RTOS [OK]
Hint: SysTick timer triggers interrupts for switching tasks [OK]
Common Mistakes:
  • Confusing SysTick with CPU clock speed control
  • Thinking SysTick stores data
  • Assuming SysTick manages memory
2. Which of the following is the correct way to enable the SysTick timer interrupt in ARM Cortex-M?
easy
A. Write zero to the RELOAD register
B. Set the TICKINT bit in the SysTick CTRL register
C. Clear the ENABLE bit in the SysTick CTRL register
D. Disable the NVIC interrupt controller

Solution

  1. Step 1: Identify the control register bits

    The SysTick CTRL register controls timer and interrupt enabling.
  2. Step 2: Enable interrupt by setting TICKINT bit

    Setting the TICKINT bit enables SysTick interrupts.
  3. Final Answer:

    Set the TICKINT bit in the SysTick CTRL register -> Option B
  4. Quick Check:

    Enable interrupt = set TICKINT bit [OK]
Hint: Enable SysTick interrupt by setting TICKINT bit [OK]
Common Mistakes:
  • Clearing ENABLE disables timer, not interrupt
  • Writing zero to RELOAD stops timer from counting
  • Disabling NVIC stops all interrupts, not just SysTick
3. Given a CPU clock of 48 MHz and a desired RTOS tick interval of 1 ms, what reload value should be set in the SysTick timer?
medium
A. 47999
B. 480
C. 48000
D. 47

Solution

  1. Step 1: Calculate ticks per 1 ms interval

    CPU clock = 48,000,000 Hz means 48,000 ticks per 1 ms (since 1 ms = 0.001 s).
  2. Step 2: Determine reload value

    Reload value = ticks per interval - 1 = 48000 - 1 = 47999.
  3. Final Answer:

    47999 -> Option A
  4. Quick Check:

    Reload = (CPU clock * tick interval) - 1 = 47999 [OK]
Hint: Reload = (CPU clock x interval) - 1 [OK]
Common Mistakes:
  • Using CPU clock directly without subtracting 1
  • Confusing microseconds with milliseconds
  • Using too small reload value causing faster ticks
4. A developer sets the SysTick reload value to 0 and enables the timer and interrupt. What issue will occur?
medium
A. System will reset immediately
B. SysTick will never generate interrupts
C. CPU clock speed will increase
D. SysTick will generate interrupts continuously without delay

Solution

  1. Step 1: Understand reload value effect

    A reload value of 0 means the timer counts from 0 to 0, triggering interrupt immediately.
  2. Step 2: Resulting behavior

    This causes continuous interrupts with no delay, overwhelming the system.
  3. Final Answer:

    SysTick will generate interrupts continuously without delay -> Option D
  4. Quick Check:

    Reload=0 causes continuous interrupts [OK]
Hint: Reload 0 means no delay, interrupts fire nonstop [OK]
Common Mistakes:
  • Assuming no interrupts occur with reload 0
  • Thinking CPU clock changes due to SysTick
  • Expecting system reset from this setting
5. In an RTOS using SysTick for task switching, if the CPU clock changes dynamically (e.g., due to power saving), what must be done to maintain correct tick timing?
hard
A. Disable SysTick and rely on software delays
B. Keep the reload value fixed regardless of clock changes
C. Update the SysTick reload value to match the new CPU clock frequency
D. Increase the interrupt priority of SysTick

Solution

  1. Step 1: Recognize effect of CPU clock changes

    SysTick timer counts CPU clock cycles, so changing clock speed affects tick timing.
  2. Step 2: Adjust reload value accordingly

    To keep tick interval constant, reload value must be recalculated based on new CPU clock.
  3. Final Answer:

    Update the SysTick reload value to match the new CPU clock frequency -> Option C
  4. Quick Check:

    Adjust reload for clock changes to keep tick timing [OK]
Hint: Reload value must match CPU clock for correct ticks [OK]
Common Mistakes:
  • Ignoring clock changes and keeping reload fixed
  • Disabling SysTick breaks RTOS timing
  • Changing interrupt priority doesn't fix timing
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