Arm FreeRTOS是否保证第一个计时器的滴答声精确为1ms?

Arm FreeRTOS是否保证第一个计时器的滴答声精确为1ms?,arm,freertos,cortex-m,Arm,Freertos,Cortex M,我正在实施软件看门狗,以确保1kHz任务在其分配的截止日期(即1ms)内执行。但是我想知道在1kHz的起始频率和滴答声1之间是否有精确的1ms 据我所知,这就是FreeRTOS启动时的情况 vPortSetupTimerInterrupt(); // Tick 0 starts ... prvPortStartFirstTick(); // Context switch // After the context switch, the 1kHz task starts 在勾号0和勾号1之间,

我正在实施软件看门狗,以确保1kHz任务在其分配的截止日期(即1ms)内执行。但是我想知道在1kHz的起始频率和滴答声1之间是否有精确的1ms

据我所知,这就是FreeRTOS启动时的情况

vPortSetupTimerInterrupt(); // Tick 0 starts
...
prvPortStartFirstTick(); // Context switch

// After the context switch, the 1kHz task starts
在勾号0和勾号1之间,1kHz任务没有一个完整的1ms来做有用的工作,因为调用
vPortSetupTimerInterrupt()
prvPortStartFirstTick()
花费了一些时间。这是正确的吗?如果是这样,这是否值得关注?或者额外的延迟时间是如此之短以至于可以忽略不计


我正在开发ARM Cortex M4(STM32F302系列)。

您是正确的,从VPortSetupTimerPrinterUpt()到prvPortStartFirstTick()(不确定该函数是什么,不是FreeRTOS提供的函数)执行确实需要一些时间,执行任何指令都需要时间。如果它是一个问题或不是取决于你的应用程序-但如果它是一个问题,那么你可能不会得到每一个精确的1毫秒到第一个滴答声。想想另一种方法——假设第一个任务在计时器启动之前启动——那么第一个任务必须是启动时间的任务——因此,你也要在任务中花一些时间做一些你不想让任务做的事情