在FreeRTOS中,sysTimeTick
通常指的是系统时钟节拍,它是操作系统调度任务和处理时间相关功能的基础。
-
计时方式:
sysTimeTick
是通过一个定时器中断来实现的,这个中断会定期触发,每次触发都会增加系统的时间计数器。FreeRTOS的内核会在这个中断服务例程中执行一些必要的调度操作。 -
最小计时单位:
sysTimeTick
的最小计时单位是tick,也就是系统时钟的节拍间隔。这个间隔是由系统配置决定的,通常在系统初始化时通过configTICK_RATE_HZ
宏定义来设置。例如,如果configTICK_RATE_HZ
被设置为1000,那么每秒就会有1000个时钟节拍,每个节拍的间隔就是1毫秒。默认的配置就是1000。 -
计数溢出(最大值):
源码:FreeRTOS/port.c
extern volatile unsigned int sysTimeTick;
int类型 4字节,最大值我们可以定义一个宏常量#define TIMER_MAX_TICK 0xFFFFFFFF
当达到最大值后,再计数就从0开始了,0 1 2 3 …
当程序逻辑判断,遇到异常情况 - sysTimeTick变得非常小,意味着重新从0计数了,这时或许要补上这个最大值后,再去做判断。
在FreeRTOS中,时间相关的API(如xTaskDelay
、vTaskDelayUntil
等)都是基于这个tick来实现的。开发人员可以根据需要设置不同的tick率,但是较高的tick率可以提供更精细的时间控制,但同时也会增加CPU的开销,因为需要更频繁地处理定时器中断。
总的来说,sysTimeTick
是FreeRTOS中用于时间管理的核心机制,它的精度和性能取决于系统配置和定时器中断的频率。