meiko 发表于 2018-3-25 00:35:53

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:17:32

本帖最后由 meiko 于 2018-3-25 10:19 编辑

我猜测vPrintString() 在每个任务中只执行一次,并且在阻塞前?

meiko 发表于 2018-10-15 19:53:17

问这个问题说明我没有理解什么是阻塞中的任务,Receiver 是被阻塞在xQueueReceive() 这句的位置,系统切换后仍从此处开始执行,所以会先读并清空...
页: [1]
查看完整版本: freeRTOS手册上的一个疑问