系列文章
FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库)
FreeRTOS实时操作系统(五)进入临界区、任务调度器挂起与恢复
FreeRTOS实时操作系统(七)时间片调度及RTOS的滴答定时器
FreeRTOS实时操作系统(八)任务状态查询及时间统计函数
FreeRTOS实时操作系统(十五)Tickless低功耗模式
文章目录
任务通知
任务通知优点:
通过直接通知解除 RTOS 任务阻塞状态的速度和使用中间对象(如二进制信号量)相比快了 45% , 使用的 RAM 也更少 。
任务通知:用来通知任务的,任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值。
(相比队列、信号量和事件标志组,内存消耗比较小,不需要创建)
更新方式:
可以覆盖或不覆盖接收任务的通知值
更新接受任务通知值的一个或多个bit
增加接收任务的通知值
优势:
效率更高,比队列、信号量和事件标志组速度更快
使用内存更小,无需额外创建结构体
劣势:
无法发送数据给ISR,但ISR可以发送数据给任务
无法广播给多个任务:任务通知只能指定一个任务接收处理
无法缓存多个数据:结构体中只有一个任务通知值,只能保存一个数据
发送受阻不支持阻塞:发送方无法进入阻塞状态
除了这些缺点之外的情况都能用。
任务通知值和通知状态
任务通知值
任务都有一个结构体:任务控制块TCB,它里边有两个结构体成员变量
typedef struct tskTaskControlBlock
文章详细介绍了FreeRTOS实时操作系统中的任务通知机制,包括任务通知的基本概念、更新方式、优缺点以及相关API函数的使用。任务通知提供了轻量级的同步和通信方式,如模拟二值信号量、计数信号量、事件标志组和消息邮箱等。文章还给出了实验测试示例,展示了如何在任务中应用这些功能。
订阅专栏 解锁全文
5457

被折叠的 条评论
为什么被折叠?



