The difference configTICK_RATE_HE between 1000 and 100

hmtsai wrote on Sunday, September 20, 2015:


I wonder about the difference with 1000 and 100. If the value is 1000, it means FreeRTOS the kernel tick is 1000Hz. The time’s resolution is 1ms. If the value is 100, it tick is 100HZ, The resolution is 10 ms. I set the value is 100, then use vTaskDelay(6/portTICK_PERIOD_MS). It equals no delay. Because the resolution is 10ms. Is it correct? I want to know how to delay 1ms when I set the value is 100. Is it possbile?


richard_damon wrote on Sunday, September 20, 2015:

If TICK_RATE_HZ is 100, and thus TICK_PERIOD_MS is 10, you can not request a delay of 1 ms, as the unit of measure on time is 10ms.

In fact, with a TICH_RATE_HZ of 1000, and TICK_PERIOD_MS of 1, you can’t get an exactly 1ms delay either, as a call to vTaskDelay(1) will block your task till the next tick occurs, which will be AT MOST 1ms, and likely somewhat less. If you need a delay of at least 1ms, you need to call vTaskDelay(2), which will delay at least 1ms, and up to 2ms (or longer if a higher priority task is ready at that point).