为什么我应该使用 portTICK_PERIOD_MS 而不是 pdMS_TO_TICKS?

问题描述 投票:0回答:1

我可以使用以下任一方法检索达到 500 毫秒所需的滴答数:

const TickType_t xDelay = 500 / portTICK_PERIOD_MS

或:

const TickType_t xDelay = pdMS_TO_TICKS(500);

地点:

#define portTICK_PERIOD_MS              ( ( TickType_t ) 1000 / configTICK_RATE_HZ )

#define pdMS_TO_TICKS( xTimeInMs )    ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000U ) )

对我来说,两个

#define
似乎做同样的事情。性能或其他方面有什么区别吗?

c freertos esp-idf
1个回答
0
投票

使用

pd_MS_TO_TICKS
是一种更简洁的编码风格。它暴露了一点 FreeRTOS 的“内部”细节,并有助于避免错误,例如不小心做了
portTICK_PERIOD_MS * x
,而最近 ESP32 论坛问题中的 OP 本来打算使用
x / portTICK_PERIOD_MS

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