FreeRTOS中'tick'的定义及时长是多少?技术咨询
FreeRTOS中'tick'的定义及时长说明
一、什么是'tick'
FreeRTOS里的'tick'是系统的核心时间基准单位,由内核的周期性硬件定时器中断触发产生。它是实现任务调度、延时、超时检测等所有时间相关功能的基础——比如任务的时间片轮转调度、vTaskDelay()这类延时接口,都是基于tick来计数的。当vTaskStartScheduler()启动调度器后,内核便开始累计tick的数量,xTaskGetTickCount()和xTaskGetTickCountFromISR()返回的就是从这一刻起的累计tick总数。
二、tick的时长
tick的单周期时长并非固定值,完全由用户在FreeRTOS的配置文件FreeRTOSConfig.h中通过configTICK_RATE_HZ宏定义决定:
- 该宏指定了每秒产生的tick数量,因此单个tick的时长计算公式为:
1 / configTICK_RATE_HZ秒 - 举例:
- 若
configTICK_RATE_HZ设为1000,单个tick时长为1毫秒 - 若
configTICK_RATE_HZ设为100,单个tick时长为10毫秒
- 若
需要注意,tick频率的选择需要权衡:频率越高,系统时间精度越高,但内核中断的CPU开销也会越大,会占用更多系统资源。
内容的提问来源于stack exchange,提问作者CivFan
相关产品推荐
相关产品推荐

