3.1 Configure Clock and Tick Rate

A real-time operating system (RTOS) uses a system tick which is the time unit the timers are based on. FreeRTOS uses the microcontroller's TCB0 timer to generate its own tick interrupt. The FreeRTOS kernel measures the time using the tick, and every time a tick occurs, the scheduler checks if a task should be woken up or unblocked.

The configCPU_CLOCK_HZ define must be configured for the FreeRTOS timings to be correct. The frequency of the TCB0 clock should be entered here. The TCB0 will by default operate at the same clock frequency as the CPU for the devices listed in the “Relevant Devices” section.

The configTICK_RATE_HZ is used to determine the frequency of the RTOS tick interrupt. The tick rate should not be set too high compared to the CPU frequency as there will be some CPU overhead every time the tick occurs.

If more than one task has the same priority, the RTOS scheduler will switch between these tasks at every tick if configUSE_TIME_SLICING is set to 1. Using a higher tick rate will, therefore, cause the CPU time for each task to be smaller. For example, if a tick rate of 1000 Hz is used, the time slice for each task will be T=1/f=1/1000 Hz, which is 1 ms.