0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS任务通知简介

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-30 11:34 次阅读

任务通知简介

任务通知在 FreeRTOS 中是一个可选的功能,要使用任务通知的话就需要将宏configUSE_TASK_NOTIFICATIONS 定义为 1。

FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue 就是这个通知值。任务通知是一个事件,假如某个任务通知的接收任务因为等待任务通知而阻塞的话,向这个接收任务发送任务通知以后就会解除这个任务的阻塞状态。也可以更新接收任务的任务通知值,任务通知可以通过如下方法更新接收任务的通知值:

● 不覆盖接收任务的通知值(如果上次发送给接收任务的通知还没被处理)。

● 覆盖接收任务的通知值。

● 更新接收任务通知值的一个或多个 bit。

● 增加接收任务的通知值。

合理、灵活的使用上面这些更改任务通知值的方法可以在一些场合中替代队列、二值信号量、计数型信号量和事件标志组。使用任务通知来实现二值信号量功能的时候,解除任务阻塞的时间比直接使用二值信号量要快 45%(FreeRTOS 官方测试结果,使用 v8.1.2 版本中的二值信号量,GCC 编译器,-O2 优化的条件下测试的,没有使能断言函数 configASSERT()),并且使用的 RAM 更少!

任务通知的发送使用函数 xTaskNotify()或者 xTaskNotifyGive()(还有此函数的中断版本)来 完 成 , 这个通知值会一直保持着 ,直到接受任务调用函数xTaskNotifyWait() 或 者ulTaskNotifyTake()来获取这个通知值。假如接收任务因为等待任务通知而阻塞的话那么在接收到任务通知以后就会解除阻塞态。

任务通知虽然可以提高速度,并且减少 RAM 的使用,但是任务通知也是有使用限制的:

● FreeRTOS 的任务通知只能有一个接收任务,其实大多数的应用都是这种情况。

● 接收任务可以因为接收任务通知而进入阻塞态,但是发送任务不会因为任务通知发送失败而阻塞。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288506
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61349
收藏 人收藏

    评论

    相关推荐

    FreeRTOS介绍与基础任务创建

    本篇介绍FreeRTOS与基础任务创建
    的头像 发表于 09-26 09:00 1873次阅读
    <b class='flag-5'>FreeRTOS</b>介绍与基础<b class='flag-5'>任务</b>创建

    FreeRTOS任务通知模拟二值信号量怎么都获取不成功是怎么回事

    如图,所示,救助论坛的大神,元老? FreeRTOS 21080511 任务通知模拟二值信号量.rar (4.02 MB )
    发表于 06-15 04:32

    任务通知发送出问题怎么办

    大家好。我在STM32cubemx里使用FreeRTOS,开启定时器3中断,然后发送一个任务通知给TIM3_Task。但是无论是在回调函数里使用vTaskNotifyGiveFromISR()这个
    发表于 06-18 04:35

    FreeRTOS任务通知相关资料分享

    FreeRTOS--任务通知Notification今天发现了一个奇怪的现象,特意把它记录下来,防止忘记了。先上图于是找了所有的任务句柄,真的是没有操作挂起了这个
    发表于 01-21 12:07

    使用FreeRTOS通知功能加速应用执行

    使用FreeRTOS的直接任务通知实现更高效的交互,与信号量相比,通知机制内存占用更小,速度可提高45%。架构良好的FreeRTOS应用程序
    发表于 04-14 11:19

    FreeRTOS的直接任务(消息)通知

            之前分享了《FreeRTOS V10.4.0更新了哪些功能?》,今天就来详细讲述其中的一个知识点:FreeRTOS的直接任务(消息)通知,这样做的目的就是减少RAM占用
    的头像 发表于 01-07 09:37 4150次阅读

    FreeRTOS —— 9.任务通知

    9.1本章介绍与范围已经看到,使用FreeRTOS的应用程序被构造为一组独立的任务,并且这些任务很可能必须彼此通信,以便它们可以共同提供有用的系统功能。通过中介对象进行通信本书已经描述了任务
    发表于 12-04 20:21 10次下载
    <b class='flag-5'>FreeRTOS</b> —— 9.<b class='flag-5'>任务</b><b class='flag-5'>通知</b>

    FreeRTOS任务详解

    详细讲解freeRTOS任务
    发表于 12-23 20:01 11次下载
    <b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>任务</b>详解

    FreeRTOS高级篇8---FreeRTOS任务通知分析

    FreeRTOS版本V8.2.0中推出了全新的功能:任务通知。在大多数情况下,任务通知可以替代二进制信号量、计数信号量、事件组,可以替代长
    发表于 01-26 17:36 10次下载
    <b class='flag-5'>FreeRTOS</b>高级篇8---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b><b class='flag-5'>通知</b>分析

    FreeRTOS高级篇2---FreeRTOS任务创建分析

    FreeRTOS基础系列《FreeRTOS系列第10篇---FreeRTOS任务创建和删除》中介绍了任务创建API函数xTaskCreat
    发表于 01-26 17:42 23次下载
    <b class='flag-5'>FreeRTOS</b>高级篇2---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b>创建分析

    FreeRTOS系列第15篇---使用任务通知实现命令行解释器

    虽然这是介绍FreeRTOS系列的文章,但这篇文章偏重于命令行解释器的实现。这一方面是因为任务通知使用起来非常简单,另一方面也因为对于...
    发表于 01-26 17:49 6次下载
    <b class='flag-5'>FreeRTOS</b>系列第15篇---使用<b class='flag-5'>任务</b><b class='flag-5'>通知</b>实现命令行解释器

    FreeRTOS系列第14篇---FreeRTOS任务通知

    每个RTOS任务都有一个32位的通知值,任务创建时,这个值被初始化为0。RTOS任务通知相当于直接向任务
    发表于 01-26 17:49 5次下载
    <b class='flag-5'>FreeRTOS</b>系列第14篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b><b class='flag-5'>通知</b>

    FreeRTOS任务通知简介及实现

    每个系统任务都会有一个任务通知。然后每个任务通知都具有挂起或者未挂起的状态,以及32位的通知。常
    的头像 发表于 12-06 16:24 1511次阅读

    freeRTOS任务

    freeRTOS系统的任务切换的具体过程最终都是在pendSV中断服务函数里面完成的。
    的头像 发表于 02-10 11:02 1061次阅读
    <b class='flag-5'>freeRTOS</b>的<b class='flag-5'>任务</b>

    FreeRTOS任务通知通用发送函数

    发送任务通知 任务通知通用发送函数 任务任务通知
    的头像 发表于 07-30 11:43 507次阅读
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b><b class='flag-5'>通知</b>通用发送函数