FreeRTOS互斥

2023-05-16

互斥信号量是一个特殊的二值信号量类型,用来控制访问多个任务之间共享的资源。允许使用互斥需要在FreeRTOSConfig.h中配置configUSE_MUTEXES为1。

在一个互斥访问的场景,互斥信号量可以被认为是一个令牌,只有拥有这个令牌的任务才能访问某一资源。因此任务在访问这一资源时,要先取得令牌,才被允许访问资源。而在访问资源完毕后,要将令牌放回到原来的位置,供其他任务或自己获取。

这时候我们可能会有疑惑,这个功能不是与之前介绍的二值信号量相类似吗,这里我要提两点不同..

  • 互斥信号量在使用完毕后,必须要返还
  • 而用于同步的二值信号量在使用完毕后不用再放回,只需等待下次事件触发

 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

使用互斥信号量之前必须先创建这个信号量,使用xSemaphoreCreateMutex()创建互斥信号。创建互斥信号不需要传入参数,返回一个互斥信号的句柄,我们在后续访问这个互斥信号时,通过这个句柄访问这个互斥信号。

#define xSemaphoreCreateMutex()    xQueueCreateMutex( queueQUEUE_TYPE_MUTEX )

QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType )

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

使用xSemaphoreTake()来获取互斥信号。传入参数分别为互斥信号句柄,阻塞时长。

#define  xSemaphoreTake(xSemaphore, xBlockTime)    

xQueueSemaphoreTake((xSemaphore), (xBlockTime))

BaseType_t xQueueSemaphoreTake(QueueHandle_t xQueue,

                           TickType_t xTicksToWait )

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

使用xSemaphoreGive()来将互斥信号令牌放回。传入参数为要放回的互斥信号句柄。

#define  xSemaphoreGive( xSemaphore )    

xQueueGenericSend((QueueHandle_t) (xSemaphore), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK)

BaseType_t xQueueGenericSend(QueueHandle_t xQueue,

                             const void * const pvItemToQueue,

                             TickType_t xTicksToWait,

                          const BaseType_t xCopyPosition )

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

中断中使用的API接口不再给出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS互斥 的相关文章

  • 【FreeRtos学习笔记】STM32 CubeMx——Timers(定时器)

    目录 1 软件定时器 2 示例程序 2 1 例程功能 2 2 步骤 2 3 实验结果 2 4 函数讲解 1 软件定时器 定时器是MCU常用的外设 我们在学习各种单片机时必然会学习它的硬件定时器 但是 MCU自带的硬件定时器资源是有限的 而且
  • freertos---软定时器

    一 软件定时器介绍 freeRTOS软件定时器的时基是基于系统时钟节拍实现的 可以创建很多个 在硬件定时器资源不充足的情况下非常有用 软件定时器一般用作周期性地执行函数 在创建软件定时器时指定软件定时器的回调函数 在回调函数中实现相应的功能
  • FreeRTOS系列

    1 RTOS简介 RTOS全称为 Real Time Operation System 即实时操作系统 RTOS强调的是实时性 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 不允许超时 而软实时里对处理过程超时的要求则没有很严
  • STM32移植FreeRTOS的Tips

    转自 http bbs armfly com read php tid 7140 1 在FreeRTOS的demo文件夹中拷贝对应的FreeRTOSConfig h文件后 需要加入一行 define configUSE MUTEXES 1
  • FreeRTOS学习笔记<中断>

    中断概念 Cortex M的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽中断 NMI 1个Systick 滴答定时器 定时器中断和多个系统异常 Cortex M处理器有多个用于管中断和异常的可编程寄存器 这些寄存器大多数都在 NV
  • FreeRTOS ------- 任务(task)

    在学习RTOS的时候 个人觉得带着问题去学习 会了解到更多 1 什么是任务 在FreeRTOS中 每个执行线程都被称为 任务 每个任务都是在自己权限范围内的一个小程序 其具有程序入口每个任务都是在自己权限范围内的一个小程序 其具有程序入口通
  • freeRTOS手册 第六章 . 中断管理

    如果我对本翻译内容享有所有权 允许任何人复制使用本文章 不会收取任何费用 如有平台向你收取费用与本人无任何关系 第六章 中断管理 章节介绍和范围 事件 嵌入式实时系统必需对环境中的事件做出响应 比如 外部网络设备收到一个发送给TCP IP栈
  • 基于HAL库的FREERTOS----------一.任务

    FreeROTS 就是一个免费的 RTOS 类系统 这里要注意 RTOS 不是指某一个确定的系统 而是指一类系统 比如 UCOS FreeRTOS RTX RT Thread 等这些都是 RTOS 类操作系统 FreeRTOS 是 RTOS
  • FreeRTOS_中断

    传送门 博客汇总帖 传送门 Cortex M3 中断 异常 传送门 Cortex M3笔记 基础 笔记内容参考 正点原子的FreeRTOS开发手册 cortex m3权威指南 Cortex M3和Cortex M4权威指南等 文中stm32
  • 基于HAL库的FREERTOS-----------三.队列

    一 队列简介 在实际的应用中 常常会遇到一个任务或者中断服务需要和另外一个任务进行 沟通交流 这个 沟通交流 的过程其实就是消息传递的过程 在没有操作系统的时候两个应用程序进行消息传递一般使用全局变量的方式 但是如果在使用操作系统的应用中用
  • FreeRTOS基础五:软件定时器

    软件定时器简介 软件定时器的作用 在指定的时间到来时执行指定的函数 或者以某个频率周期性地执行某个函数 被执行的函数叫做软件定时器回调函数 软件定时器由FreeRTOS内核实现 不需要硬件支持 软件定时器只有在软件定时器回调函数被调用时才需
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • FreeRTOS之软件定时器

    FreeRTOS之软件定时器 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 include sys h include delay h include usart h include led h in
  • FreeRTOS学习(三)开关中断

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 背景知识 Cotex M3的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽 NMI 1个Systick 滴答定时器 Cortex M处理
  • FreeRTOS之事件

    FreeRTOS之事件 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 一 事件定义 事件 事件集 与高数上的集合意义差不多 事件啊 其实是实现任务间通信的机制 主要用于实现多任务间的同步 但是事件类型
  • FreeRTOS笔记(十)中断

    中断 当CPU在执行某一事件A时 发生另外一个更重要紧急的事件B请求CPU去处理 产生了中断 于是CPU暂时中断当前正在执行的事件A任务而对对事件B进行处理 CPU处理完事件B后再返回之前中断的位置继续执行原来的事件A 这一过程统称为中断
  • FreeRTOS死机原因

    1 中断回调函数中没有使用中断级API xxFromISR 函数 xSemaphoreGiveFromISR uart busy HighterTask 正确 xSemaphoreGive uart busy 错误 2 比configMAX
  • FreeRTOS笔记(二)

    FreeRTOS笔记 二 静态任务 文章目录 FreeRTOS笔记 二 静态任务 一 任务定义 二 任务创建 2 1 定义任务栈 2 2 定义任务函数 2 3 定义任务控制块 2 4 实现任务创建函数 三 实现就绪列表 3 1 定义就绪列表
  • STM32 Freertos 添加 外部sram heap_5.c

    1 添加外部SRAM 初始化 2 添加heap 5 c 3 初始化heap 5 c 外部堆栈 Define the start address and size of the two RAM regions not used by the
  • 如何更改 FreeRTOS 中任务的最大可用堆大小?

    我通过以下方式在任务中创建元素列表 l dllist pvPortMalloc sizeof dllist dlllist 有 32 字节大 我的嵌入式系统有 60kB SRAM 所以我希望系统可以轻松处理我的 200 个元素列表 我发现在

随机推荐

  • 柳鲲鹏悖论(猜想):量子纠缠和同时关系是冲突的

    按照现在标准说法 xff1a 两个纠缠的光子 xff08 粒子好像也行 xff1f xff09 xff0c 即使远离多少光年 xff0c 一旦测量其中一个 xff0c 另外一个立即确定 按照广义相对论 xff0c 同时性与两个物体的运动关系
  • 手机充电时,应显示实时功率

    现在手机的充电功率越来越大 xff0c 据说240W的都有了 其实这个是一种误导 xff0c 240W只是最高功率 xff0c 实际上功率并没有这么多 充电时 xff0c 也就显示个百分比 然后吾就想 xff0c 充电时的功率 xff0c
  • 数字货币的挖矿,是否可以考虑使用随机选择

    之前的数字货币 xff0c 采用暴力计算哈希 xff0c 谁算对了归谁 于是就有人使用大量显卡计算 xff0c 消耗了无数能源 xff0c 引起公愤 据说以太币已经换了方式 xff0c 咱也没了解 于是吾就想 xff0c 咱能不能使用随机选
  • 登录GITHUB:Open your two-factor authenticator (TOTP) app or browser extension to view your authenticat

    这明摆着就是欺负中国人不能用手机进行验证 如图 Open your two factor authenticator TOTP app or browser extension to view your authentication cod
  • 编程学:一次荒唐的用户体验改进

    2020年底 xff0c 我就向几个头目提出 xff0c 既然泰山OFFICE 3 0已经开发完成 xff0c 赶紧进入卖的阶段 准备卖和可以卖 xff0c 还是差很多时间 xff08 比如半年 xff09 结果头目们也不听 xff0c 还
  • 近期使用的几个流量卡小结

    陆续使用了多个流量卡 买的时候追求大流量 xff0c 实际使用中 xff0c 并不需要那么大 如果不是出差 xff0c 一个月有个10G通用完全够了 小结如下 xff1a 电信 通用200G 忘记哪里购买的 xff0c 归属地是海南 xff
  • docker容器内用apt报错 E: List directory (13: Permission)

    用docker compose安装jenkins xff0c 现在要和jenkins整合 xff0c 安装了插件之后 xff0c 需要在docker 容器内安装ansible 先查看操作系统版本 xff0c 得到结果是debian debi
  • yum解决办法:fatal error: alsa/asoundlib.h: No such file or directory #include <alsa/asoundlib.h>

    错误 libavdevice alsa c 31 28 fatal error alsa asoundlib h No such file or directory include lt alsa asoundlib h gt 安装命令 s
  • -Werror=deprecated-declarations

    错误 mod av c 在函数 mod av shutdown 中 mod av c 125 2 错误 xff1a 不建议使用 av lockmgr register 声明于 usr local include libavcodec avc
  • libav已停止维护,可使用ffmpeg代替

    以前无意中看到 xff0c 说两个其实是一回事 后来libav另有思路 xff0c 从ffmpeg分裂出来 所以二者的头文件 xff0c 编译库 xff0c 几乎是一样的 以目前来看 xff0c libav已偏上维护 最新的版本是12 3
  • 惋惜于泰山OFFICE:这么好的东西,也没人收购

    3月的时候 xff0c 都知道没戏了 偶尔讨论点问题 xff0c 难免要说一些公司的事情 当时我说 xff0c 可以考虑把OFFICE这一块卖掉 同事就说 xff0c 这有什么好卖的 我说当然是指我手上这一套东西啊 有什么呢 xff1f 泰
  • 六石管理学:员工埋头做事,中层检查出力,头目向前远视

    六石管理学 xff0c 对员工和头目的要求 xff0c 是完全不同的 为此特别总结为三点 xff1a 员工埋头做事 员工分配任务后 xff0c 就只管做事 难度超出能力 xff0c 那也是你分配的问题 xff0c 怪不得我 中层检查出力 中
  • 怪谁:泰山OFFICE四年多没出一个可卖版本

    吾2020年底就询问各个头目 xff1a 泰山OFFICE怎么卖 xff1b 为了卖 xff0c 赶紧做好准备 然后被怪多事 一拖又过去两年多 xff0c 摊子更大了 xff0c MAC 手机 英文 WEB xff08 这个是真投入了大量人
  • OFFICE开发技术讲座:谈谈窗口并排的技术实现

    泰山OFFICE在内部一直没有用起来 原因是头目并没有清楚的认识 有一次吾跟泰安测试头目聊天 xff0c 无意中他说起一个事情引起吾重视 xff1a 问了人事 xff08 财务 xff1f xff09 为什么不用泰山OFFICE xff0c
  • 社交软件中,临时好友的概念

    一般来说 xff0c 好友加了都是永久性的 xff0c 你不删除就一直留着 有时 xff0c 某些场合 xff0c 需要好友 xff0c 又只是临时处理一下事情 这个时候 xff0c 如果加好友太麻烦了 xff0c 以后还要手动删除 所以吾
  • 编程学:LINUX版竟然使用微软雅黑为界面字体

    我知道自己的意见经常跟别人不同 其实吾亦很想证明自己是错的 然而 在吾看来再明显不过的错误 xff0c 别人会觉得自己是无比英明 吾能怎么办 xff1f 泰山OFFICE的LINUX版界面 xff0c 使用的是微软雅黑字体 xff0c 吾就
  • Detected problems with API compatibility

    在我的手机升级为android9的时候 xff0c 通过屎丢丢安装程序就会出现提示 xff1a Detected problems with API compatibility 究其原因 xff1a 说的是开发者可能通过 Java 反射 J
  • JETSON TX2 安装 CUDA9.0 及 CUDNN7 超详细(真实亲测)

    JETSON TX2 安装 CUDA9 0 及 CUDNN7 超详细 xff08 真实亲测 xff09 划重点 xff1a 本文主要针对于Jetson TX1 2 xff0c 如果想在 pc端 安装 cuda 及 cudnn xff0c 那
  • Slam

    SLAM 是什么 xff1f SLAM 是同步定位与地图构建 Simultaneous Localization And Mapping 的缩写 xff0c 最早由 Hugh Durrant Whyte 和 John J Leonard 提
  • FreeRTOS互斥

    互斥信号量是一个特殊的二值信号量类型 xff0c 用来控制访问多个任务之间共享的资源 允许使用互斥需要在FreeRTOSConfig h中配置configUSE MUTEXES为1 在一个互斥访问的场景 xff0c 互斥信号量可以被认为是一