|
我天真的认为:
vTaskUserIF任务发送队列后,会先打印 "K2键按下,向xQueue1发送数据成功",
然后接收任务vTaskMsgPro才打印"接收到消息队列数据ucQueueMsgValue = 8"。
可是实际是相反的。为什么?
实际打印顺序:
接收到消息队列数据ucQueueMsgValue = 8
K2键按下,向xQueue1发送数据成功
static void vTaskTaskUserIF(void *pvParameters)
{
if( xQueueSend(xQueue1, (void *) &ucCount, (TickType_t)10) == pdFail )
{
printf("K2键按下,向xQueue1发送数据成功\r\n");
}
}
static void vTaskMsgPro(void *pvParameters)
{
BaseType_t xResult;
const TickType_t xMaxBlockTime = pdMS_TO_TICKS(300); /* éèÖÃ×î′óμè′yê±¼äÎa300ms */
uint8_t ucQueueMsgValue;
while(1)
{
xResult = xQueueReceive(xQueue1,
(void *)&ucQueueMsgValue,
(TickType_t)xMaxBlockTime);
if(xResult == pdPASS)
{
printf("接收到消息队列数据ucQueueMsgValue = %d\r\n", ucQueueMsgValue);
}
}
}
=================================================
任务名 任务状态 优先级 剩余栈 任务序号
vTaskUserIF R 1 318 1 发送任务
IDLE R 0 113 5
vTaskMsgPro B 3 444 3
vTaskLED B 2 444 2 接收任务
vTaskStart B 4 489 4
|
|