当前位置: 首页 > article >正文

STM32 FreeRTOS任务通知

目录

任务通知的简介

任务通知相关API函数介绍


任务通知的简介

任务通知是 FreeRTOS 中一种用于任务间通信的机制,它允许一个任务向其他任务发送简单的通知或信号,以实现任务间的同步和协作。任务通知通常用于替代二值信号量或事件标志组,提供了更轻量级的任务间通信方式

大多数任务间通信方法通过中间对象,如队列、信号量或事件组。发送任务写入通信对象,接收任务从通信对象读取。当使用直接任务通知时,顾名思义,发送任务直接向接收任务发送通知,而无需中间对象。

通过中间对象进行通信

 无需中间对象进行通信

 

每个 RTOS 任务都有一个任务通知组,每条通知均独立运行,都有“挂起”或“非挂起”的通知状态,以及一个 32 通知值。常量 configTASK_NOTIFICATION_ARRAY_ENTRIES 可设置任务通知组中的索引数量。在 FreeRTOS V10.4.0 版本前,任务只有单条任务通知(即只能一对一),没有任务通知组。

向任务发送“任务通知” 会将目标任务通知设为“挂起”状态------相当于短信未读状态。 正如任务可以阻塞中间对象 (如等待信号量可用的信号量),任务也可以阻塞任务通知, 以等待通知状态变为“挂起”。向任务发送“任务通知”也可以更新目标通知的值(可选),可使用下列任一方法:

  • 覆盖原值,无论接收任务是否已读取被覆盖的值。
  • 覆盖原值(仅当接收任务已读取被覆盖的值时)。
  • 在值中设置一个或多个位。
  • 对值进行增量(添加 1)。

RTOS 任务通知功能默认为启用状态,将configUSE_TASK_NOTIFICATIONS 设为0可以禁用。

任务通知相关API函数介绍

任务通知相关函数如下:

函数

描述

xTaskNotify()

发送通知,带有通知值

xTaskNotifyAndQuery()

发送通知,带有通知值并且保留接收任务的原通知值

xTaskNotifyGive()

发送通知,不带通知值

xTaskNotifyFromISR()

在中断中发送任务通知

xTaskNotifyAndQueryFromISR()

vTaskNotifyGiveFromISR()

ulTaskNotifyTake()

获取任务通知,可选退出函数时对通知值清零或减1

xTaskNotifyWait()

获取任务通知,可获取通知值和清除通知值的指定位

注意:发送通知有相关ISR函数,接收通知没有ISR函数,不能在ISR中接收任务通知。


http://www.kler.cn/a/512667.html

相关文章:

  • TypeScript - 利用GPT辅助学习
  • 2024 年度学习总结
  • 我在广州学Mysql 系列——触发器的使用
  • MySQL面试题2025 每日20道【其四】
  • Python新春烟花
  • ChromeOS 132 版本更新
  • C++设计新思维:泛型编程与设计模式之应用学习笔记
  • WebSocket 和 Socket 的区别
  • 谈一谈前端构建工具的本地代理配置(Webpack与Vite)
  • 开发常用工具
  • QT:IconButton的动画效果
  • leetcode刷题记录(七十二)——146. LRU 缓存
  • Docker 单机快速部署大数据各组件
  • 力扣10-搜索插入位置
  • uni-app连接EventSource
  • 嵌入式硬件篇---ADC模拟-数字转换
  • MySQL表的增删改查(基础)CRUD
  • 【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】
  • Kubernetes 集群网络及服务暴露方式详解
  • 【Linux 重装】Ubuntu 启动盘 U盘无法被识别,如何处理?
  • 一款功能强大的互联网资产测绘引擎-CyberEdge
  • Dockerfile -> Docker image -> Docker container
  • Docker 学习总结(85)—— docker cp 使用总结
  • 2025 最新flutter面试总结
  • 不用编程即可实现多台PLC的MQTT协议JSON文件发布与订阅的智能网关的配置说明
  • Slate文档编辑器-Node节点与Path路径映射