1.15 作业

news2024/11/17 10:00:21

使用计数型信号量设计

2,相关函数的API

一、队列:

1,创建队列函数
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size,
const osMessageQueueAttr_t *attr);
msg_count : 队列中消息的最大数量,即队列的最大容量。
msg_size : 单个消息的大小(以字节为单位)。
osMessageQueueAttr_t:队列的属性
2,写队列函数
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr,
uint8_t msg_prio, uint32_t timeout);
mq_id : 目标消息队列的id。
msg_ptr : 指向要发送的消息的指针。
msg_prio : 消息的优先级。
timeout : 超时时间,以毫秒为单位。
返回值类型:osStatus_t(判断是否写入成功)
3, 读队列函数
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t
*msg_prio, uint32_t timeout);
mq_id : 目标消息队列的id。
msg_ptr : 指向接收消息的指针。
msg_prio : 优先级的指针,可以为 NULL
timeout :超时时间,以毫秒为单位。
返回值类型:osStatus_t(判断是否读取成功)
二、信号量
1,创建信号量
osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count,
const osSemaphoreAttr_t *attr);
max_count :信号量的最大计数。
initial_count :信号量的初始计数。
2,获取信号量
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout);
sem_id :信号量的id。
timeout :等待信号量的超时时间。
返回值类型:osStatus_t(判断获取是否成功)
3,释放信号量
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id);
sem_id :信号量的句柄,通过 osSemaphoreNew 返回。
返回值类型:osStatus_t(判断释放是否成功)
三、互斥量
1,创建互斥量
osMutexId_t osMutexNew(const osMutexAttr_t *attr);

attr :互斥量的属性。

2,获取互斥量
osStatus_t osMutexAcquire(osMutexId_t mutex_id, uint32_t timeout);
mutex_id :要获取的互斥量的id。
timeout :超时时间,通常以毫秒为单位。
3, 释放互斥量
osStatus_t osMutexRelease(osMutexId_t mutex_id);
mutex_id :要释放的互斥量的标识符。
四、事件组
1,创建事件组
osEventFlagsId_t osEventFlagsNew(const osEventFlagsAttr_t *attr);
attr :事件标志组的属性。
2,设置事件组
uint32_t osEventFlagsSet(osEventFlagsId_t ef_id, uint32_t flags)
ef_id :事件标志组的id
flags :要设置的事件标志位,可以使用按位或操作符 | 设置多个标志位。
2,等待事件组
uint32_t osEventFlagsWait(osEventFlagsId_t ef_id, uint32_t flags, uint32_t
options, uint32_t timeout);
ef_id :事件标志组的id
flags :要等待的事件标志位,可以使用按位或操作符 | 等待多个标志位。
options :等待标志的个数
timeout :等待的超时时间,单位是毫秒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1386572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安全基线检查需要修复的一些问题

一、可能出现的漏洞 限制容器之间的网络流量 限制容器的内存使用量 为Docker启用内容信任 将容器的根文件系统挂载为只读 审核Docker文件和目录 默认情况下,同一主机上的容器之间允许所有网络通信。 如果不需要,请限制所有容器间的通信。 将需要相互通…

【LeetCode题目详解】59. 螺旋矩阵 II 54. 螺旋矩阵 LCR 146. 螺旋遍历二维数组(c++)

这篇文章的题目稍微难一点 题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。 一、59. 螺旋矩阵 II 题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按…

原生IP代理如何帮助跨境电商店铺做谷歌广告投放业务的?

随着全球化的发展,越来越多的电商店铺开始拓展跨境业务,而谷歌广告作为全球最大的广告平台之一,为跨境电商店铺带来了巨大的收益和商机。 然而,由于谷歌广告的地域限制和审查机制,店铺很难直接进行投放业务&#xff0…

gradle版本中-bin与-all区别

打开android studio下载的gradle文件,发现-all比-bin多了一个docs文件夹和一个src文件夹。-bin是编译后的二进制发布版,-all还包含了源码和文档,比-bin大了几十兆,两者其余没有区别。 android开发只关注gradle功能不关注实现的情况…

Mingw32编译opencv库

文章目录 1. 准备工作2. 编译cmake构建程序mingw32-make编译 3. 安装4. 安装完的结果 注意: mingw32-make编译的库和MSVC编译的库不兼容,MSVC和mingw-make生成的动态库使用的是不同的ABI(Application Binary Interface)&#xff0…

如何实现无公网ip固定TCP端口地址远程连接Oracle数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

64位ATT汇编语言学习第一课:汇编和链接

源文件exitTest.s内容如下: # This is the first program .global _start .section .text _start:movq $60,%raxmovq $9,%rdisyscall源文件里边放的就是源代码,而我这里源代码是使用汇编语言写的,都是一些人类都可以阅读的字符。之后需要经过…

【UE Niagara】网格体渲染器初识

目录 效果 步骤 一、创建网格体粒子 二、设置粒子生成速率 三、设置粒子初始大小 四、设置粒子生成的初始位置 五、设置粒子移动速度 六、设置粒子旋转 七、 设置粒子大小变化 效果 步骤 一、创建网格体粒子 新建一个Niagara粒子系统 选择“Simple Sprite Burs…

Ubuntu配置NFS客户端和服务端详解——手把手配置

Ubuntu配置NFS客户端和服务端 如果您想实现远程访问并修改 ROS 主机中 Ubuntu 上的文件,可以通过 NFS挂载的方式。虚拟机上的 Ubuntu 系统可以通过 NFS 的方式来访问 ROS 主机中Ubuntu 系统的文件,NFS 分为服务器挂载和客户端访问。这里虚拟机上的 Ubun…

小型洗衣机怎么用?好用不贵的小型洗衣机推荐

近期,有不少小伙伴都在议论“对于内衣是机洗好,还是手洗”这个问题,对于机洗党认为家用的洗衣机就能清洁干净内衣物,而坚定的手洗党则是认为应该用手去洗,因为机洗的话,其他大件衣服混在一起洗,…

Picturesocial | 开发实践:如何在15分钟内将应用容器化

在常见的软件架构体系中,容器无疑是一个技术热点。有些开发者在工作中熟练使用容器技术,有些可能刚刚开始容器之旅。 面对容器使用经验不同的各类开发者,我们希望通过这个系列文章,由浅入深地介绍如何使用容器技术来构建&#xf…

小白从事光伏行业:如何快速入行?

鹧鸪云 在政策引导和产业链不断优化的背景下,国内光伏市场不断扩大,国际市场中也崭露头角,许多人纷纷进入光伏行业,但是苦于不知如何入手。本文着重于为刚刚进入光伏行业的新手小白介绍进入光伏行业的好办法。 光伏行业利用太阳…

【深度学习I-基础知识】

深度学习I-基础知识 1 基础知识1.1 模型的基本概念1.2 机器学习1.2.1 概率建模1.2.2 核方法1.2.3 决策树、随机森林和梯度提升机 1.3 深度学习1.3.1 张量1.3.2 数据批量1.3.3 张量运算1.3.4 训练过程 1 基础知识 1.1 模型的基本概念 模型是现实世界中一类具有泛化共性的真实系…

2024 外网数字化考试——精准限制只允许访问考试站点

一、适用场景: 1、防止考试作弊。校园内,需要用到外网的某个考试站点时,只允许浏览器访问考试网站,别的网站不允许访问时(避免使用搜索引擎搜索参考或答案)。 2、网络流量给教学资源,杜绝网络娱…

企业级做项目的流程

目录标题 前言企业做项目的流程 ⭐⭐总结 前言 我们平时在学校里做项目或者大作业的时候,基本上都是个人开发的,即使有小组一起开发,一般也不会遵守开发规范。最近入职一家企业开始实习,才发现开发规范竟然如此重要,因…

【数据结构】排序之归并排序与计数排序

个人主页 : zxctsclrjjjcph 文章封面来自:艺术家–贤海林 如有转载请先通知 目录 1. 前言2. 归并排序2.1 递归实现2.1.1 分析2.1.2 代码实现 2.2 非递归实现2.2.1 分析2.2.2 代码实现 3. 计数排序3.1 分析3.2 代码实现 4. 附代码4.1 Sort.h4.2 Sort.c4.3…

2. 示例:Spring Boot 入门

1.1 概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。习惯优于配置 1.2 为什么使用Spring Boot J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。 1.3 Spring Bo…

【python】进阶--->MySQL数据库(四)

一、主键约束 primary key : 唯一标识数据库中的每一条记录. 被主键的值唯一 主键列不能为null 每个表应该都要设置主键添加主键约束 在创建表时,直接在字段后面添加主键约束 create table 表名 (字段名 类型(长度) primary key )创建表时,不直接在字段后面添加主键…

二、Spring Boot与Mybatis代码自动生成

一、Mybatis代码自动生成 下载自动生成java包:https://www.alipan.com/s/7sGR9uGKoVh 下面就是根据这个进行简单配置即可 1.修改 下面主要修改这个文件 如下 如下 如下 运行 2.结果 解释:在运行之后,就会在上面输入的包里面创建…

【ubuntu】docker中如何ping其他ip或外网

docker中如何ping其他ip或外网 示例图: 运行下面命令: docker run -it --namehei busybox看情况需要加权限 sudo,即: sudo docker run -it --namehei busyboxping 外网 ping -c 4 www.baidu.comping 内网 ping -c 4 192.168.…