当前位置: 首页 > 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
);

相关文章:

  • 机器视觉工程师如何学习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: 一种适用于复杂环境中空地机器人的高性能高效导航系统
  • 新城悦服务:独董许新民辞任,新任独董与另两人组成调查委员会将调查与关联方资金往来
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯被执行死刑
  • 一周文化讲座|“我的生命不过是温柔的疯狂”
  • 日本一季度实际GDP环比下降0.2%
  • 上海“城市文明开放麦”全城总动员,樊振东担任首位上海城市文明大使
  • 外交部介绍对巴西、阿根廷、智利、秘鲁、乌拉圭等5国试行免签政策