FreeRTOS实时操作系统(十三)任务通知

文章详细介绍了FreeRTOS实时操作系统中的任务通知机制,包括任务通知的基本概念、更新方式、优缺点以及相关API函数的使用。任务通知提供了轻量级的同步和通信方式,如模拟二值信号量、计数信号量、事件标志组和消息邮箱等。文章还给出了实验测试示例,展示了如何在任务中应用这些功能。

系列文章

FreeRTOS实时操作系统(一)RTOS的基本概念

FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库)

FreeRTOS实时操作系统(三)任务挂起与恢复

FreeRTOS实时操作系统(四)中断任务管理

FreeRTOS实时操作系统(五)进入临界区、任务调度器挂起与恢复

FreeRTOS实时操作系统(六)列表与列表项

FreeRTOS实时操作系统(七)时间片调度及RTOS的滴答定时器

FreeRTOS实时操作系统(八)任务状态查询及时间统计函数

FreeRTOS实时操作系统(九)时间延时函数及消息队列

FreeRTOS实时操作系统(十)信号量

FreeRTOS实时操作系统(十一)队列集

FreeRTOS实时操作系统(十二)事件标志组

FreeRTOS实时操作系统(十三)任务通知

FreeRTOS实时操作系统(十四)软件定时器

FreeRTOS实时操作系统(十五)Tickless低功耗模式

FreeRTOS实时操作系统(十六)内存管理



任务通知

任务通知优点:
通过直接通知解除 RTOS 任务阻塞状态的速度和使用中间对象(如二进制信号量)相比快了 45% , 使用的 RAM 也更少 。

任务通知:用来通知任务的,任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值。
(相比队列、信号量和事件标志组,内存消耗比较小,不需要创建)

更新方式:
可以覆盖或不覆盖接收任务的通知值
更新接受任务通知值的一个或多个bit
增加接收任务的通知值

优势:
效率更高,比队列、信号量和事件标志组速度更快
使用内存更小,无需额外创建结构体
劣势:
无法发送数据给ISR,但ISR可以发送数据给任务
无法广播给多个任务:任务通知只能指定一个任务接收处理
无法缓存多个数据:结构体中只有一个任务通知值,只能保存一个数据
发送受阻不支持阻塞:发送方无法进入阻塞状态
除了这些缺点之外的情况都能用。

任务通知值和通知状态

任务通知值

任务都有一个结构体:任务控制块TCB,它里边有两个结构体成员变量

typedef  struct  tskTaskControlBlock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值