FreeRTOS源码阅读笔记4--semphr.h
信号量是特殊的队列--无法存储消息的队列,相关的接口函数声明在semphr.h中,通过宏定义替换队列函数实现。
4.1创建二值信号量xSemaphoreCreateBinary()
4.1.1函数原型


- queueQUEUE_TYPE_BINARY_SEMAPHORE:一个宏,表示创建队列的类型是二值信号量
4.1.2函数框架
创建二值信号量实际上是,创建了一个队列,这个队列的长度为1,存储队列消息的空间为0。
4.2创建计数信号量xSemaphoreCreateCounting()
4.2.1函数原型

- uxMaxCount:计数信号量的最大值,当达到这个值的时候,信号量不能再被释放。
- uxInitialCount:初始信号量的值。
4.2.2函数框架

- ①调用xQueueGenericCreate函数创建一个长度为uxMaxCount,消息存储空间为0的队列。

- ②使uxMessagesWaiting = uxInitialCount,表示当前可用的信号量数量为uxInitialCount。
4.3删除信号量vSemaphoreDelete()
4.3.1函数原型

4.3.2函数框架
调用vQueueDelete()函数删除。
4.4释放信号量xSemaphoreGive()
4.4.1函数原型

- xSemaphore:信号量的句柄,指向队列控制块;
- NULL:表示消息体为空;
- semGIVE_BLOCK_TIME:宏,数值0,表示阻塞时间为零;
- queueSEND_TO_BACK:一个宏,表示发送到队列尾部。
4.4.2函数框架
从函数原型可以看出,信号量释放是不会阻塞任务的,所以如果队列是满的,就不会去更新阻塞时间、检查阻塞时间是否过了、再检查队列是否还是满的等操作,直接返回err_QUEUE_FULL。
- ①如果队列没满,uxMessageWaiting加一,表示信号量的数量加一;如果此时有任务在等待接收信号量,唤醒该任务,返回pdPASS。
- ②如果队列满了,直接返回err_QUEUE_FULL。
4.5释放信号量xSemaphoreGiveFromISR()
4.5.1函数原型

- xSemaphore:信号量句柄;
- pxHigherPriorityTaskWoken:在函数里会改变*pxHigherPriorityTaskWoken的值,可根据它的值判断在中断退出后是否要进行任务切换。
4.5.2函数框架

xQueueGiveFromISR()是xQueueGenericSendFromISR()的简单版,区别是不需要处理队列消息,因为信号量没有消息存储空间。
4.6获取信号量xSemaphoreTake()
4.6.1函数原型

4.6.2函数框架
类似xQueueReceive()函数。

4.7获取信号量xSemaphoreTakeFromISR()
4.7.1函数原型

4.7.2函数框架
调用xQueueReceiveFromISR函数。
相关文章:
FreeRTOS源码阅读笔记4--semphr.h
信号量是特殊的队列--无法存储消息的队列,相关的接口函数声明在semphr.h中,通过宏定义替换队列函数实现。 4.1创建二值信号量xSemaphoreCreateBinary() 4.1.1函数原型 queueQUEUE_TYPE_BINARY_SEMAPHORE:一个宏,表示创建队列的…...
面试:MyBatis问题
文章目录 什么是MyBatis?MyBatis的核心组件有哪些?能说说MyBatis的工作原理吗?MyBatis的工作流程是怎样的?Mybaits 的优点 & 缺点MyBatis 与 JPA 有哪些不同?MyBatis一二级缓存的区别?MyBatis如何处理延迟加载&am…...
vue中页面(路由)跳转及传值的几种方式 router-link + query + params
vue中页面(路由)跳转及传值的几种方式 知道query 和 params 是什么 参考文案:https://www.php.cn/js-tutorial-382859.html 跳转的几种方式与传值 1、router-link 1.1 根据路由路径(无参数与有参数) <router-link to = "/page">跳转到page页面</…...
媒体格式转换软件Permute 3 mac中文版软件特点
Permute mac是一款媒体格式转换软件,可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式:支持几乎所有常见的音频、视频和图像格式ÿ…...
Docker实用篇
Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…...
开启数据库审计(db,extended级别或os级别),并将审计文件存放到/home/oracle/audit下
文章目录 开启数据库审计(db,extended级别或os级别),并将审计文件存放到/home/oracle/audit下一. 简介二. 配置2.1. 审计是否安装2.2. 审计表空间迁移2.3. 审计参数2.4. 审计级别2.5. 其他审计选项2.6. 审计相关视图 三. 使用3.1. 开启/关闭审…...
单片机语音芯片开发要解决的问题
在单片机语音芯片开发过程中,可能会遇到多种问题,这些问题可能来自于技术层面,也可能来自于芯片本身的设计和应用层面。下面让我们具体从芯片的功耗、语音识别的准度、芯片的尺寸和芯片的可靠性四个方面开展讨论。 1.芯片的功耗问题 首先&a…...
Cesium 展示——地球以及渲染数据导出(下载)为图片或 pdf
文章目录 需求分析新加需求分析第一种方式第二种方式需求 将 Cesium 球体以及渲染数据导出为 jpg/png/pdf 分析 获取场景 scene 信息,转为image 的 octet-stream 流 进行下载为图片 /*** @todo canvas 导出图片* @param {string} dataurl - 地址* @return {Blob}*/ functio…...
大数据平台红蓝对抗 - 磨利刃,淬精兵! | 京东云技术团队
一、背景 目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复…...
java游戏制作-王者荣耀游戏
一.准备工作 首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 创建一个名为“img”的文件夹来储存所需的图片素材。 二.代码呈现 package com.sxt;import javax.sw…...
Linux实验三:shell程序设计: shell基础
实验目的: 进一步巩固shell程序设计语言基本语法,加深对所学知识理解。 实验要求 1. 四种变量的使用 2. 配置环境变量 3. 元字符和正则表达式 4. 引号 1. 本地变量 $ var1"hello Linux" //定义本地变量var1 $ read var2 //定义本地变量vae…...
webpack环境变量的设置
现在虽然vite比较流行,但对于用node写后端来说,webpack倒是成了一个很好的打包工具,可以很好的保护后端的代码。所以这块的学习还是不能停下来,接下来我们来针对不同的环境做不同的设置写好笔记。 引用场景主要是针对服务器的各种…...
基于51单片机音乐盒设计( proteus仿真+程序+原理图+PCB+报告+讲解视频)
音乐盒 主要功能:仿真原理图PCB图程序设计:设计报告实物图资料清单(提供资料清单所有文件):资料下载链接: 基于51单片机音乐盒仿真设计( proteus仿真程序原理图PCB报告讲解视频) 仿真图proteus …...
技术分享| anyRTC之RTN网络
RTN(Real-time Network)中文名:实时音视频传输网络。 RTN是最近几年由各大RTC的云厂商提出的一个全新架构的音视频实时传输网络概念。类似于直播的CDN网络,RTN是对音视频的实时性又强烈要求的场景而设计的,原理上全球端到端的时延通过RTN网络…...
基于GPRS的汽车碰撞自动报警系统(论文+源码)
1. 系统设计 本次基于GPRS的汽车碰撞自动报警系统的设计中,其主要的目标功能如下:1、实时检测当前的GPS精度和纬度坐标;2.当发生碰撞后系统自动将当前的信息通过GPRS数据发送到远端数据进行报警;3、系统在碰撞后一方面进行本地报警…...
qgis添加wms服务
例如添加geoserver的wms服务 左右浏览器-WMS/WMTS-右键-新建连接 URL添加geoserver的wms地址 http://{ip}:{port}/geoserver/{workspace}/wms 展开wms目录,双击相应图层即可打开...
【DQN】基于pytorch的强化学习算法Demo
目录 简介代码 简介 DQN(Deep Q-Network)是一种基于深度神经网络的强化学习算法,于2013年由DeepMind提出。它的目标是解决具有离散动作空间的强化学习问题,并在多个任务中取得了令人瞩目的表现。 DQN的核心思想是使用深度神经网…...
【C++】泛型编程 ⑭ ( 类模板示例 - 数组类模板 | 容器思想 | 自定义类可拷贝 - 深拷贝与浅拷贝 | 自定义类可打印 - 左移运算符重载 )
文章目录 一、容器思想1、自定义类可拷贝 - 深拷贝与浅拷贝2、自定义类可拷贝 - 代码示例3、自定义类可打印 - 左移运算符重载 二、代码示例1、Array.h 头文件2、Array.cpp 代码文件3、Test.cpp 主函数代码文件4、执行结果 一、容器思想 1、自定义类可拷贝 - 深拷贝与浅拷贝 上…...
砖家测评:腾讯云标准型S5服务器和s6性能差异和租用价格
腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…...
Linux常用命令——blkid命令
在线Linux命令查询工具 blkid 查看块设备的文件系统类型、LABEL、UUID等信息 补充说明 在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
