我可以使用以下任一方法检索达到 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
似乎做同样的事情。性能或其他方面有什么区别吗?
使用
pd_MS_TO_TICKS
是一种更简洁的编码风格。它暴露了一点 FreeRTOS 的“内部”细节,并有助于避免错误,例如不小心做了 portTICK_PERIOD_MS * x
,而最近 ESP32 论坛问题中的 OP 本来打算使用 x / portTICK_PERIOD_MS
。