FreeRTOS是否保证第一次计时滴答精确到1毫秒?

问题描述 投票: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之间,由于在调用vPortSetupTimerInterrupt()prvPortStartFirstTick()上花费了一些时间,因此1kHz任务无法获得完整的1ms来完成有用的工作。它是否正确?如果是这样,这是否值得关注?还是额外的延迟时间太短以至于可以忽略不计?

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

arm freertos cortex-m
1个回答
0
投票

您是正确的,从vPortSetupTimerInterrupt()到prvPortStartFirstTick()的执行(不确定该函数是什么,不是FreeRTOS提供的函数)确实需要一些时间-与执行任何指令一样。如果您担心与否取决于您的应用程序-但是如果您担心,那么到第一个滴答声,您可能不会每次都获得精确的1ms。考虑以另一种方式进行操作-比如说第一个任务在计时器启动之前开始-那么第一个任务必须是开始计时的任务-因此,您又要花一些时间在任务上做其他事情而不是您想要任务执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.