推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

实验68_任务通知_等待超时与超时处理.docx

资料介绍

实验 68:任务通知 — 等待超时与超时处理

实验说明

实验概述

任务通知的接收函数 ulTaskNotifyTake() 和 xTaskNotifyWait() 都支持超时参数。当任务等待通知时,可以设置最大等待时间,超时后返回 0 或 pdFALSE,任务可以继续执行其他操作,而不是无限期等待。这种机制在需要检测任务是否收到通知的场景中非常有用。

实验原理

ulTaskNotifyTake(pdFALSE, xTicksToWait) 等待通知值大于 0,如果超时时间内通知值保持为 0,则返回 0。xTaskNotifyWait() 则返回 pdTRUE 或 pdFALSE。通过检查返回值,任务可以判断是否在超时时间内收到了通知,从而采取不同的处理逻辑。

实验现象

任务等待通知,超时时间为 3 秒。如果 3 秒内收到通知则处理,否则执行超时处理逻辑。

完整代码

  c
#include "FreeRTOS.h"
#include "task.h"
#include <stdio.h>

TaskHandle_t xRecvTaskHandle = NULL;

/* 发送任务:随机间隔发送通知 */
static void vSenderTask(void *pvParameters)
{
    for (;;)
    {
        /* 随机延时 1~6 秒 */
        TickType_t delay = pdMS_TO_TICKS(1000 + (rand() % 5000));
        vTaskDelay(delay);

        printf("[发送] 发送通知 (延时了 %lu ms)\r\n",


部分文件列表

文件名 大小
实验68_任务通知_等待超时与超时处理.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载