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

FreeRTOS之互斥量

文章目录

  • 概述
  • 配置
  • 函数
    • 创建
    • 其他函数

概述

互斥量也被称为互斥锁

  • 互斥量有一个重要特性,它会让任务的优先级提升到持有该互斥量的所有任务中的最高优先级- 用于解决优先级反转的问题
  • 信号量实现优先级继承和优先级恢复的功能
  • 其实也是信号量,各类操作函数,比如删除、give/take,跟一般是信号量是一样的
  • 要注意的是,互斥量不能在 ISR 中使用

配置

要想使用互斥量,需要在配置文件FreeRTOSConfig.h中定义:

##define configUSE_MUTEXES 1

函数

创建

/* 创建一个互斥量,初始值为1,返回它的句柄。
* 此函数内部会分配互斥量结构体
* 返回值: 返回句柄,非 NULL 表示成功
*/
SemaphoreHandle_t xSemaphoreCreateMutex( void );
/* 创建一个互斥量,返回它的句柄。
* 此函数无需动态分配内存,所以需要先有一个 StaticSemaphore_t 结构体,并传入它的
指针
* 返回值: 返回句柄,非 NULL 表示成功
*/
SemaphoreHandle_t xSemaphoreCreateMutexStatic( StaticSemaphore_t *pxMutexBuffer );

其他函数

/*
* xSemaphore: 信号量句柄,你要删除哪个信号量, 互斥量也是一种信号量
*/
void vSemaphoreDelete( SemaphoreHandle_t xSemaphore );
/* 释放 */
BaseType_t xSemaphoreGive( SemaphoreHandle_t xSemaphore );
/* 释放(ISR 版本) */
BaseType_t xSemaphoreGiveFromISR(
SemaphoreHandle_t xSemaphore, BaseType_t *pxHigherPriorityTaskWoken
);
/* 获得 */
BaseType_t xSemaphoreTake(
SemaphoreHandle_t xSemaphore, TickType_t xTicksToWait
);
/* 获得(ISR 版本) */
xSemaphoreGiveFromISR(
SemaphoreHandle_t xSemaphore, BaseType_t *pxHigherPriorityTaskWoken
);
http://www.dtcms.com/a/68474.html

相关文章:

  • 机器视觉工程师如何学习C#通讯
  • SANS 网络安全 网络安全三件套
  • 解决MySQL 8.x初始化后设置忽略表和字段大小写敏感的问题
  • 算法刷题整理合集(二)
  • C题库-判断水仙花数
  • 基于 Redis Stream 实现消息队列功能
  • Java基础关键_021_集合(五)
  • Spring TX配置(声明式事务管理+annotation)
  • 计算矩阵边缘元素之和(信息学奥赛一本通-1121)
  • Python 实现的采集诸葛灵签
  • 研发团队协作软件推荐:18款工具对比
  • win10升级到22H2版本后无法联网
  • 01-Canvas-使用fabric初始
  • 从零搭建微服务项目Pro(第2-2章——JSR303自定义文件校验+整合至微服务公共模块)
  • Java使用JDBC连接操作Sqlite 笔记250314
  • 【算法】 【c++】字符串s1 中删除所有 s2 中出现的字符
  • 总结 HTTP 协议的基本格式, 相关知识以及抓包工具fiddler的使用
  • 67.Harmonyos NEXT 图片预览组件之性能优化策略
  • 【Scala】
  • 论文分享 | HE-Nav: 一种适用于复杂环境中空地机器人的高性能高效导航系统
  • TIA博途在编译 PLC时出现崩溃的解决方法
  • 测不准关系
  • 【redis】zset 类型:基本命令(上)
  • Java中架构DDD:理解聚合、实体和值对象三种核心构造块
  • C#+EF+SqlServer性能优化笔记
  • Python 科学计算与机器学习入门:NumPy + Scikit-Learn 实战指南
  • 大数据-spark3.5安装部署之local模式
  • ubuntu24.04-qt5-mysql8.0
  • 【网工第6版】第1章 计算机网络概论
  • mac安装navicat及使用