FreeRTOS中怎么实现的无限期等待,例如xQueueReceive消息队列读取函数为什么可以一直等待着消息的到来,即第三个参数设置为portMAX_DELAY后就可以无限期的等待消息到来?

FreeRTOS中怎么实现的无限期等待,例如xQueueReceive消息队列读取函数为什么可以一直等待着消息的到来,即第三个参数设置为portMAX_DELAY后就可以无限期的等待消息到来?刚学习FreeRTOS,希望大家帮忙解答一下疑惑。感谢。

#define portMAX_DELAY ( TickType_t ) 0xffffffffUL

xQueueReceive( Queue, /* 消息队列的句柄 /
&r_queue, /
发送的消息内容 /
portMAX_DELAY); /
等待时间 一直等 */

供参考

你想问的是阻塞接收吧?没接收到消息就一直阻塞住?对吗?

假设Tick时钟是1ms,那么超时时间就是0xFFFFFFFF,计算一下超时天数等于0xFFFFFFFF/1000/3600/24 = 49.710269618055555天。。。在这个时间内收不到信号一直阻塞。。。是不是有点离谱了