freeRTOS手册上的一个疑问
本帖最后由 meiko 于 2018-3-25 09:41 编辑手册在这里:https://www.freertos.org/Documentation/161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf
其中在讲信号队列时的一个例程,两个任务往同一个队列里写数据,一个任务以最高优先级读这个队列,代码如下:
我的问题就是那个 vReceiverTask 中查询队列的函数uxQueueMessagesWaiting 在读取并删除队列元素的函数xQueueReceive之前,那么它始终都应该能返回非零值。为啥注释里说 "它总是会返回零,因为这个任务会立即读取并删除队列中的值" ? 本帖最后由 meiko 于 2018-3-25 10:19 编辑
我猜测vPrintString() 在每个任务中只执行一次,并且在阻塞前? 问这个问题说明我没有理解什么是阻塞中的任务,Receiver 是被阻塞在xQueueReceive() 这句的位置,系统切换后仍从此处开始执行,所以会先读并清空...
页:
[1]