FreeRTOS学习:任务通知

任务通知简介

任务通知简单来说就是用来通知任务的,在任务控制块中的结构体成员ulNotifiedValue就是通知值。

  • 通知值为 0 时,表示没有任务通知;当通知值不为 0 时,表示有任务通知,并且通知值就是通知的内容。
  • 使用队列,信号量,事件标志组都需要新创建一个结构体,通过中间结构体进行间接通信,示意图如下,
  • 用任务通知时,任务控制块TCB包含了内部对象,可以直接接收别的任务发来的通知,示意图如下,

任务通知值更新方式

  • 不覆盖接收任务的通知值(队列不覆写)
  • 覆盖接收任务的通知值(队列覆写)
  • 更新接受任务通知值的一个或多个bit(事件标志组)
  • 增加接受任务的通知值(计数型信号量)

备注:我们会发现,任务通知值是可以替代队列,信号量,事件标志位的。 

任务通知优劣势 

优势:

  • 效率高:任务通知向任务发送事件或数据比使用队列、事件标志组或信号量快得多;
  • 内存小:任务通知代替队列、事件标志组或信号量,可以节省大量的内存
     

劣势: 

  • 无法发送数据给中断(ISR):ISR没有任务控制块的结构体,所以无法发送数据,但是任务通知功能可以在任务之间或从中断到任务发送事件或数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值