互斥信号量是 uC/OS 操作系统的一个内核对象, 与多值信号量非常相似,但它是二值
的,只能是 0 或 1,所以也叫二值信号量, 主要用于保护资源。

1.如果想要使用互斥信号量,就必须事先使能互斥信号量。 互斥信号量的使能位于
“os_cfg.h”。

2.OSMutexCreate ()

要使用 uC/OS 的互斥信号量必须先声明和创建互斥信号量,调用 OSMutexCreate () 函数
可以创建一个多值信号量。

OSMutexCreate () 函数的定义位于“os_mutex.c”。

其中,调用了 OS_PendListInit() 函数初始化了互斥信号量的等待列表。每个互斥信号量
都有一个等待列表,凡是等待该互斥信号量的的任务都会被插入到这个等待列表,方便高效
管理。 OS_PendListInit() 函数的定义位于“os_core.c”。

3.OSMutexPost ()

OSMutexPost () 函数用于释放(发布,提交) 互斥信号量。OSMutexPost () 函数的定义也位于“os_mutex.c 。

4.OSMutexPend ()

与 OSMutexPost () 互斥信号量释放函数相对应, OSMutexPend() 函数用于申请(等待,
请求) 获取一个互斥信号量。

5.OSMutexPendAbort()

OSMutexPendAbort() 函 数 用 于 中 止 任 务 对 一 个 互 斥 信 号 量 的 等 待 。要 使 用
OSMutexPendAbort () 函数,还 得事先使能 OS_CFG_MUTEX_PEND_ABORT_EN (位于
“os_cfg.h”)。

5.OSMutexDel()

OSMutexDel() 函数用于删除一个互斥信号量。要使用 OSMutexDel() 函数,还得事先使
能 OS_CFG_MUTEX_DEL_EN(位于“os_cfg.h”)。

15.4-uC/OS-III资源管理(二值信号量)的更多相关文章

  1. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  2. FreeRTOS 二值信号量,互斥信号量,递归互斥信号量

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节讲解 FreeRTOS 任务间的同步和资源共享机制,二值信号量. 二值信号量是计数信号量的一种特殊形式 ...

  3. freertos知识点笔记——队列、二值信号量、计数信号量

    队列1.队列queue通常用于任务之间的通信,一个任务写缓存,另一个任务读缓存.队列还会有等待时间,2.阻塞超时时间.如果在发送时队列已满,这个时间即是任务处于阻塞态等待队列空间有效的最长等待时间.如 ...

  4. FreeRTOS 任务通知模拟二值信号量

    FreeRTOS官方统计,使用任务通知替代二值信号量的时候,任务解除阻塞的时间要快45%,并且需要的RAM也更少 举例 void DataProcess_task(void *pvParameters ...

  5. FreeRTOS二值信号量

    API函数 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) #define xSemaphoreCreateBinary() xQueueGenericCre ...

  6. uC/OS - III 移植 IAR平台

    关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...

  7. FreeRTOS 任务计数信号量,任务二值信号量,任务事件标志组,任务消息邮箱

    以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 计数信号量的另一种实现方式----基于任务通知(Task Not ...

  8. 15.3-uC/OS-III资源管理(多值信号量)

    多值信号量是 uC/OS 操作系统的一个内核对象, 主要用于标志事件的发生和共享资源管理. 1.如果想要使用多值信号量,就必须事先使能多值信号量. 多值信号量的使能位于“os_cfg.h”. 2.OS ...

  9. 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II

    SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...

随机推荐

  1. eclipse工具中使用Data Source Explorer连接数据库(MySQL)

    1.进入Eclipse工具,打开Data Source Explorer.Window==>Show View==>Data Source Explorer(注:如果找不到请选择Other ...

  2. CentOS5.5上安装Python2.7及ez_setup和pip包

    CentOS5.5上安装Python2.7及ez_setup和pip包 下载 首先从Python官方下载源代码包下载 编译安装 这里将python安装到/opt/python27文件夹下 tar xv ...

  3. [k8s]Docker 用户使用 kubectl 命令指南-unkown排错(kubelet端口解析)

    参考:https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/ https://k8smeetup.github.io/docs/user-g ...

  4. 从零开始搭建FAQ引擎--基于ES的字面匹配

    从零开始搭建FAQ引擎--基于ES的字面匹配

  5. git clone 后误删除了分离出来的文件怎么恢复?

    git clone 后,会分离出项目的文件. 误删除了,可以使用以下命令恢复: #先检查一下git状态 git status #通过如下命令重新分离出文件 git checkout -f HEAD

  6. 云游戏真的来了,这次的搅局者是 Google,云游戏平台搭建

    索尼.微软.任天堂和 Steam 等几家平台商的博弈. Google:云计算将会彻底改变我们的游戏方式 名为「Stadia」的全新游戏平台 和我们平时看到的索尼 PS4.微软 Xbox One 以及任 ...

  7. ABR与ASBR区别

    ABR 区域边界路由器 area border router 位于一个或多个OSPF区域边界上.将这些区域连接到主干网络的路由器.ABR被认为同时是OSPF主干和相连区域的成员.因此,它们同时维护着描 ...

  8. 框架源码系列七:Spring源码学习之BeanDefinition源码学习(BeanDefinition、Annotation 方式配置的BeanDefinition的解析)

    一.BeanDefinition 1. bean定义都定义了什么? 2.BeanDefinition的继承体系  父类: AttributeAccessor: 可以在xml的bean定义里面加上DTD ...

  9. ffmpeg CLI常用命令

    使用-copy参数:  CLI压缩视频时保持音频不变

  10. 从一次线上故障思考Java问题定位思路

    问题出现:现网CPU飙高,Full GC告警 CGI 服务发布到现网后,现网机器出现了Full GC告警,同时CPU飙高99%.在优先恢复现网服务正常后,开始着手定位Full GC的问题.在现场只能够 ...