xTaskGetTickCount疑问:返回当前任务还是全局滴答数?差值含义?
xTaskGetTickCount 功能解析
xTaskGetTickCount 返回的是系统启动后累计的系统滴答总数,和单个任务的CPU使用时长没有关联,既不是当前任务的运行滴答数,也不是所有任务的累计使用滴答数。
针对你给出的代码片段:
TickType_t xT0 = xTaskGetTickCount(); /// DO SOME STUFF TickType_t xT1 = xTaskGetTickCount();
若系统滴答周期为1毫秒,xT1 - xT0反映的是实际流逝的挂钟时间——也就是从执行xT0赋值到xT1赋值之间的真实时间跨度,这段时间里哪怕有其他任务抢占CPU、中断触发占用时间,都会被计入这个差值,它并不是仅执行"DO SOME STUFF"代码所消耗的CPU时间。
如果需要统计单个任务的CPU占用时长,FreeRTOS提供了vTaskGetRunTimeStats()等接口(需提前开启configGENERATE_RUN_TIME_STATS等相关配置宏)。
内容的提问来源于stack exchange,提问作者Theodore Norvell
相关产品推荐
相关产品推荐

