15.4-uC/OS-III资源管理(二值信号量)
互斥信号量是 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资源管理(二值信号量)的更多相关文章
- uc/os iii移植到STM32F4---IAR开发环境
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...
- FreeRTOS 二值信号量,互斥信号量,递归互斥信号量
以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节讲解 FreeRTOS 任务间的同步和资源共享机制,二值信号量. 二值信号量是计数信号量的一种特殊形式 ...
- freertos知识点笔记——队列、二值信号量、计数信号量
队列1.队列queue通常用于任务之间的通信,一个任务写缓存,另一个任务读缓存.队列还会有等待时间,2.阻塞超时时间.如果在发送时队列已满,这个时间即是任务处于阻塞态等待队列空间有效的最长等待时间.如 ...
- FreeRTOS 任务通知模拟二值信号量
FreeRTOS官方统计,使用任务通知替代二值信号量的时候,任务解除阻塞的时间要快45%,并且需要的RAM也更少 举例 void DataProcess_task(void *pvParameters ...
- FreeRTOS二值信号量
API函数 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) #define xSemaphoreCreateBinary() xQueueGenericCre ...
- uC/OS - III 移植 IAR平台
关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...
- FreeRTOS 任务计数信号量,任务二值信号量,任务事件标志组,任务消息邮箱
以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 计数信号量的另一种实现方式----基于任务通知(Task Not ...
- 15.3-uC/OS-III资源管理(多值信号量)
多值信号量是 uC/OS 操作系统的一个内核对象, 主要用于标志事件的发生和共享资源管理. 1.如果想要使用多值信号量,就必须事先使能多值信号量. 多值信号量的使能位于“os_cfg.h”. 2.OS ...
- 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...
随机推荐
- eclipse工具中使用Data Source Explorer连接数据库(MySQL)
1.进入Eclipse工具,打开Data Source Explorer.Window==>Show View==>Data Source Explorer(注:如果找不到请选择Other ...
- CentOS5.5上安装Python2.7及ez_setup和pip包
CentOS5.5上安装Python2.7及ez_setup和pip包 下载 首先从Python官方下载源代码包下载 编译安装 这里将python安装到/opt/python27文件夹下 tar xv ...
- [k8s]Docker 用户使用 kubectl 命令指南-unkown排错(kubelet端口解析)
参考:https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/ https://k8smeetup.github.io/docs/user-g ...
- 从零开始搭建FAQ引擎--基于ES的字面匹配
从零开始搭建FAQ引擎--基于ES的字面匹配
- git clone 后误删除了分离出来的文件怎么恢复?
git clone 后,会分离出项目的文件. 误删除了,可以使用以下命令恢复: #先检查一下git状态 git status #通过如下命令重新分离出文件 git checkout -f HEAD
- 云游戏真的来了,这次的搅局者是 Google,云游戏平台搭建
索尼.微软.任天堂和 Steam 等几家平台商的博弈. Google:云计算将会彻底改变我们的游戏方式 名为「Stadia」的全新游戏平台 和我们平时看到的索尼 PS4.微软 Xbox One 以及任 ...
- ABR与ASBR区别
ABR 区域边界路由器 area border router 位于一个或多个OSPF区域边界上.将这些区域连接到主干网络的路由器.ABR被认为同时是OSPF主干和相连区域的成员.因此,它们同时维护着描 ...
- 框架源码系列七:Spring源码学习之BeanDefinition源码学习(BeanDefinition、Annotation 方式配置的BeanDefinition的解析)
一.BeanDefinition 1. bean定义都定义了什么? 2.BeanDefinition的继承体系 父类: AttributeAccessor: 可以在xml的bean定义里面加上DTD ...
- ffmpeg CLI常用命令
使用-copy参数: CLI压缩视频时保持音频不变
- 从一次线上故障思考Java问题定位思路
问题出现:现网CPU飙高,Full GC告警 CGI 服务发布到现网后,现网机器出现了Full GC告警,同时CPU飙高99%.在优先恢复现网服务正常后,开始着手定位Full GC的问题.在现场只能够 ...