Я внедряю программные сторожевые таймеры, чтобы гарантировать, что задача с частотой 1 кГц выполняется в установленный срок (т. Е. 1 мс). Но мне интересно, есть ли ровно 1 мс между началом 1 кГц и тиком 1.
Насколько я понимаю, это то, что происходит, когда FreeRTOS запускается
vPortSetupTimerInterrupt(); // Tick 0 starts
...
prvPortStartFirstTick(); // Context switch
// After the context switch, the 1kHz task starts
Между тиками 0 и отметка 1, задача 1 кГц не получает целых 1 мс для выполнения полезной работы, потому что некоторое время было потрачено на вызовы от vPortSetupTimerInterrupt()
до prvPortStartFirstTick()
. Это правильно? И если так, это повод для беспокойства? Или время дополнительной задержки настолько мало, что оно пренебрежимо мало?
Я работаю на ARM Cortex M4 (серия STM32F302).