当前位置: 首页 > news >正文

旋转变压器工作及解调原理

旋转变压器

旋转变压器是一种精密的位置、速度检测装置,广泛应用在伺服控制、机器人、机械工具、汽车、电力等领域。但是,旋转变压器在使用时并不能直接提供角度或位置信息,需要特殊的激励信号和解调、计算措施,才能将旋转变压器信号处理得到位置信息。

旋转变压器按照极数、工作方式可分为多种,目前应用最为广泛的是单输入、双输出的无刷旋转变压器。它包含三个绕组,即一个转子绕组和两个定子绕组,两个定子绕组互为90°分布。

其工作原理是,将高频的正弦载波Vin通过耦合施加在转子绕组上,并耦合至次级定子绕组。

通过对两个耦合信号解调便可得到转子位置θ相关的信息,输入信号及对幅值进行调制的定子绕组输出信号表达如下:

Vin=V∙sinωt

Vout sin=K∙Vin∙sinθ=K∙V∙sin⁡(ωt+τ)∙sinθ

Vout cos=K∙Vin∙cosθ=K∙V∙sin⁡(ωt+τ)∙cosθ

两个定子绕组的调制输出信号的相位相差90度。通过解调将高频的载波成分去除后,可以获得Vsin和Vcos信号,据此可计算出电机的转子位置信息。

Vsin=K∙V∙sinθ

Vcos=K∙V∙cosθ

θ=arctan⁡(VsinVcos)

由此可看出,在获取旋转变压器位置信息的过程中需要三个要素:

1. 载波生成:产生高频的激励载波;

2. 高频采样:对返回的带有高频载波的信号进行采样;

3. 解耦计算:通过解耦去除高频载波信号,进而计算得到位置。

解调原理

在旋转变压器的位置信息获取过程中,关键一步是将带有高频载波的两相输出信号,解调成为只包含位置信息的正、余弦信号。如下示意图所示,解调过程分为6个步骤,实际应用中为1、4、6三个环节:

1.滤波。经过主滤波器后,将比特数据流转化为高分辨率的数据信号。具体的数据位数根据滤波器的阶数以及抽取率的不同而有所不同,这里假设每个得到的滤波结果为一个12位的数据结果。图中示例为360°周期内,共包含20个载波周期。

2.展开。为了去除载波分量,将任意一个载波周期展开如图步骤2所示。在图中可以看出,每个载波周期中,可以得到14个点,即14个12位的滤波结果(最后一个零点考虑为下一个载波周期中的点)。

3.符号。在载波信号产生的同时,会产生一个载波的符号信号,如图步骤3所示。当载波信号在正半周期时,符号信号为“+1”,当载波信号在负半周期时,符号信号为“-1”。

4.整形。整形器会根据符号信号的正负,将载波信号的负半周期进行翻转。当符号信号为“+1”时,若载波信号为正,则翻转为全正状态,类似于“电压整流”的过程。反之,则翻转为全负的状态。

5.聚拢。对每个载波周期进行整形后,得到的波形如图步骤5所示。此时,在位置的正半周期,所有的载波信号全部为正;同样在位置的负半周期,所有的载波信号全部为负。

6.积分。对步骤4所示的载波周期内的14个结果进行积分运算,便可得到一个累加和的结果。这个结果在图中表示为一个点。那么将整个位置周期中的20 个载波周期全部积分完成,便可得到20个点,如图步骤6所示,这样便得到了我们需要的正、余弦包络线信号。可用如下公式表示:

其中,φ=(ωt+τ) ,因此,经过整形和积分环节后,便可将高频的载波信号去除,并保留表征位置信息的正、余弦信号。

实现过程

在英飞凌XMC4500平台上,以TI公司的ADS1205作为前端调制器芯片进行模数转换,配合DSD模块为例,获取旋转变压器的位置信息的实现过程如下图所示,整个过程可分为8个部分:

1. 载波生成

载波生成部分主要确定载波的形状、频率和PWM 模式,生成的载波信号再经过滤波处理吼,产生更加平滑的载波信号。

2. 励磁电路

两个差分的载波信号从PWMP 和PWMN 引脚输出后,需经过励磁缓冲电路调整后,送入旋转变压器的励磁绕组中。励磁缓冲电路的主要作用是,调整偏置、调节比例、增强驱动能力等。

3. 返回电路

经过旋转变压器后,两个绕组的输出信号经过返回的缓冲电路送入前置调制器中。这里的缓冲电路主要起到调整偏置电压、隔离缓冲、调整比例、滤波整形的作用。经过缓冲电路送入前置调制器的电压应与调制器芯片的输入要求相匹配。如下图所示,所选的ADS1205 调制器输入范围为:单端电压为0-5V,差分电压为-2.5V~+2.5V。

因此,经过缓冲电路后,Sin 和/Sin 的信号应控制在0~2.5V范围内,从而使两端的差分电压保持在-2.5V~2.5V 间,,Cos 和/Cos 信号同上。其中,2.5V的偏置电压可由调制器芯片的参考电压经运放缓冲后接入。

4. 前端调制器

经过缓冲电路的正、余弦信号送入调制器的A、B通道中,输出一路时钟(Clock)和两路的比特数据流(Data)信号。本应用中,为了方便时钟同步,将ADS1205的时钟和COS 通道数据,引入DSD模块的通道2,将时钟和SIN通道数据,引入DSD模块的通道3中。

5. 滤波环节

经过调制的时钟和数据信号,直接送入DSD模块的主滤波器中。主滤波器的作用是将高频的、低分辨率(1位)的数据比特流信号转变为低频的、高分辨率的数字结果。这部分的内容包括:滤波器结构的选择、抽取系数的选取,以及结果的移位处理等。下图给出了一阶CIC(SINC)滤波器的结构示意图,它由一个积分器、一个抽取计数器和一个差分器构成。最大的优势在于只需要简单地加、减、抽取动作即可完成滤波,而无须乘法器。将这样的一阶SINC滤波器串联起来便可组成高阶的CIC(SINC)滤波器,即K阶CIC或SINCk可由K个1阶滤波器串联而成。DSD模块的主滤波器提供了1阶、2阶、3阶和全阶CIC的四种选择。

6. 整形环节

滤波得到的数字结果需要进行整形处理,将载波信号的负半周翻转,以便进行后续的积分运算。这部分需要注意的地方有两个:符号信号的产生和延迟时间的计算。

片上的载波生成单元在生成载波信号的同时,会自动产生出与载波信号相对应的符号信号,用以表征载波信号的正负半周。 “0”表示正半周期,“1”表示负半周期。由于产生的载波信号在传输过程中会由于缓冲电路、感性旋转变压器绕组以及滤波器的群延迟等因素造成返回信号中的载波分量和符号信号之间存在一定延迟,只有正确配置延迟时间后,可得到延迟后的符号信号由RECTCFGx.SGND位表示。至此,便得到了所需的符号信号SGND,整形器会根据SGND的状态自动将后半周的载波信号翻转成与前半周期符号相同的信号达到整形作用,整形后的波形如下图所示。

7. 积分环节

接下来的工作是设置合适的积分窗口,并对其中的滤波结果进行积分计算,将每个周期内周期变化的滤波结果累积成为一个数值结果。

8. 角度计算

经过积分环节之后,便可在所选的两个DSD通道的结果寄存器REMS中同时得到解调后的Sin和Cos结果。

在本应用示例中,结果每个SGND周期,即每个载波周期刷新一次。

得到Sin和Cos结果后,可通过软件进行位置信息的计算,目前常用的方法有两种:

  • 反正切法,将Sin和Cos的结果代入反正切函数,从而求得位置角度。

- 抗噪声性能不好;

- 静态角度波动较大;

- 无额外延迟;

- 计算反正切时间长;

  • 观测器法,通过角度观测器观测位置角度。

- 抗噪声性能较好;

- 静态角度稳定;

- 加减速时存在理论静差;

- 可同时产生速度观测值;

相关文章:

旋转变压器工作及解调原理

旋转变压器 旋转变压器是一种精密的位置、速度检测装置,广泛应用在伺服控制、机器人、机械工具、汽车、电力等领域。但是,旋转变压器在使用时并不能直接提供角度或位置信息,需要特殊的激励信号和解调、计算措施,才能将旋转变压器…...

字符串转浮点数函数atof、strtod、strtof和strtold使用场景

字符串转浮点数函数 atof、strtod、strtof 和 strtold 在 C 语言标准库中都有各自的使用场景,它们的主要功能是将字符串转换为浮点数,但在处理的浮点数类型、错误处理机制和精度方面有所不同。 一、atof 函数使用场景 atof(ASCII to Float&…...

GD32F4xx系列微控制器中,定时器的主模式(Master Mode)和从模式(Slave Mode)

在GD32F4xx系列微控制器中,定时器的主模式(Master Mode)和从模式(Slave Mode)是两种不同的工作模式,它们的主要区别在于定时器的操作是否依赖于外部信号或另一个定时器的输出信号。以下是对这两种模式的详细…...

深度学习系列--03.激活函数

一.定义 激活函数是一种添加到人工神经网络中的函数,它为神经网络中神经元的输出添加了非线性特性 在神经网络中,神经元接收来自其他神经元的输入,并通过加权求和等方式计算出一个净输入值。激活函数则根据这个净输入值来决定神经元是否应该…...

在linux 中搭建deepseek 做微调,硬件配置要求说明

搭建 可参考 使用deepseek-CSDN博客 官方网站:DeepSeek DeepSeek 是一个基于深度学习的开源项目,旨在通过深度学习技术来提升搜索引擎的准确性和效率。如果你想在 Linux 系统上搭建 DeepSeek,你可以遵循以下步骤。这里我将提供一个基本的指…...

机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战

前一篇文章,使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …...

MySQL - Navicat自动备份MySQL数据

对于从事IT开发的工程师,数据备份我想大家并不陌生,这件工程太重要了!对于比较重要的数据,我们希望能定期备份,每天备份1次或多次,或者是每周备份1次或多次。 如果大家在平时使用Navicat操作数据库&#x…...

javaEE-9.HTML入门

目录 一.什么是html 二.认识html标签 1.标签的特点: 2.html文件基本结构 3.标签的层次结构 三、html工具 四、创建第一个文件 五.html常见标签 1标题标签h1-h6 2.段落标签:p 3.换行标签:br 4.图片标签:img 图片路径有1三种表示形式: 5.超链接:a 链接的几种形式: …...

springcloud微服务使用不同端口启动同一服务

若想同时启动两个服务,则会产生端口冲突,在启动类设置界面,添加虚拟机选项,随后设置 -Dserver.portxxxx即可...

JavaScript系列(61)--边缘计算应用开发详解

JavaScript边缘计算应用开发详解 🌐 今天,让我们深入探讨JavaScript的边缘计算应用开发。边缘计算是一种将计算和数据存储分布到更靠近数据源的位置的架构模式,它能够提供更低的延迟和更好的实时性能。 边缘计算基础架构 🌟 &am…...

【容器技术01】使用 busybox 构建 Mini Linux FS

使用 busybox 构建 Mini Linux FS 构建目标 在 Linux 文件系统下构建一个 Mini 的文件系统,构建目标如下: minilinux ├── bin │ ├── ls │ ├── top │ ├── ps │ ├── sh │ └── … ├── dev ├── etc │ ├── g…...

Effective Python系列(1.3):使用zip函数同时遍历两个迭代器

zip函数是 Python 中的一个内置函数,用于将多个可迭代对象(如列表、元组等)的元素配对,生成一个迭代器。 使用 zip 函数的好处之一就是能够节省内存空间,因为该函数会创建惰性生成器,每次遍历时只生成一个元…...

gitlab个别服务无法启动可能原因

目录 一、gitlab的puma服务一直重启 1. 查看日志 2. 检查配置文件 3. 重新配置和重启 GitLab 4. 检查系统资源 5. 检查依赖和服务状态 6. 清理和优化 7. 升级 GitLab 8. 查看社区和文档 二、 gitlab个别服务无法启动可能原因 1.服务器内存或磁盘已满 2.puma端口冲突…...

基于Springboot+vue的租车网站系统

基于SpringbootVue的租车网站系统是一个现代化的在线租车平台,它结合了Springboot的后端开发能力和Vue的前端交互优势,为用户和汽车租赁公司提供了一个高效、便捷、易用的租车体验和管理工具。以下是对该系统的详细介绍: 一、系统架构 后…...

Github - 记录一次对“不小心包含了密码的PR”的修复

Github - 记录一次对“不小心包含了密码的PR”的修复 前言 和好朋友一起开发一个字节跳动青训营抖音电商后端(now private)的项目,某大佬不小心把本地一密码commit上去并提了PR。 PR一旦发出则无法被删除,且其包含的commit也能被所有能看到这个仓库的…...

【后端开发】系统设计101——通信协议,数据库与缓存,架构模式,微服务架构,支付系统(36张图详解)

【后端开发】系统设计101——通信协议,数据库与缓存,架构模式,微服务架构,支付系统(36张图) 文章目录 1、通信协议通信协议REST API 对比 GraphQL(前端-web服务)grpc如何工作&#x…...

SpringMVC请求

一、RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 1. 作用在类上:第一级的访问目录 2. 作用在方法上:第二级的访问目录 3. 细节:路径可以不编写 / 表示应…...

【学术征稿-组织单位 武汉理工大学西安理工大学、西安财经大学】第三届通信网络与机器学习(CNML 2025)

重要信息 官网:www.iccnml.org 大会时间:2025年2月21日-23日 大会地点:中国 南京 通信网络 通信是人与人之间通过某种媒体进行的信息交流与传递。网络是用物理链路将各个孤立的工作站或主机相连在一起,组成的数据链路。通信网…...

代码随想录算法训练营打卡第55天:并查集相关问题;

Java并查集的模板 //并查集模板 class DisJoint{private int[] father;public DisJoint(int N) {father new int[N];for (int i 0; i < N; i){father[i] i;}}public int find(int n) {return n father[n] ? n : (father[n] find(father[n]));}public void join (int …...

设计模式学习

1.设计模式分类 1.创建型模式 用于描述“怎样创建对象”&#xff0c;主要特点是“将对象的创建与使用分离”。 单例&#xff0c;原型&#xff0c;工厂方法&#xff0c;抽象工厂&#xff0c;建造者 2.结构型模式 用于描述如何将类或对象按某种布局组成更大的结构 代理&…...

js-对象-JSON

JavaScript自定义对象 JSON 概念: JavaScript Object Notation&#xff0c;JavaScript对象标记法. JSON 是通过JavaScript 对象标记法书写的文本。 由于其语法简单&#xff0c;层次结构鲜明&#xff0c;现多用于作为数据载体&#xff0c;在网络中进行数据传输. json中属性名(k…...

C/C++编译器

C/C 代码是不可跨平台的&#xff0c;Windows 和 Unix-like 有着不同的 API&#xff0c;C/C 在不同平台有着不同编译器。 MSVC Windows 平台&#xff0c;MSVC 是 Visual Studio 中自带的 C/C 编译器。 GCC Unix-like 平台&#xff0c;GCC 原名 GNU C Compiler&#xff0c;后…...

【R语言】数据操作

一、查看和编辑数据 1、查看数据 直接打印到控制台 x <- data.frame(a1:20, b21:30) x View()函数 此函数可以将数据以电子表格的形式进行展示。 用reshape2包中的tips进行举例&#xff1a; library("reshape2") View(tips) head()函数 查看前几行数据&…...

Linux 安装 RabbitMQ

Linux下安装RabbitMQ 1 、获取安装包 # 地址 https://github.com/rabbitmq/erlang-rpm/releases/download/v21.3.8.9/erlang-21.3.8.9-1.el7.x86_64.rpm erlang-21.3.8.9-1.el7.x86_64.rpmsocat-1.7.3.2-1.el6.lux.x86_64.rpm# 地址 https://github.com/rabbitmq/rabbitmq-se…...

“AI智能分析综合管理系统:企业管理的智慧中枢

在如今这个快节奏的商业世界里&#xff0c;企业面临的挑战越来越多&#xff0c;数据像潮水一样涌来&#xff0c;管理工作变得愈发复杂。为了应对这些难题&#xff0c;AI智能分析综合管理系统闪亮登场&#xff0c;它就像是企业的智慧中枢&#xff0c;让管理变得轻松又高效。 过去…...

2024最新版Java面试题及答案,【来自于各大厂】

发现网上很多Java面试题都没有答案&#xff0c;所以花了很长时间搜集整理出来了这套Java面试题大全~ 篇幅限制就只能给大家展示小册部分内容了&#xff0c;需要完整版的及Java面试宝典小伙伴点赞转发&#xff0c;关注我后在【翻到最下方&#xff0c;文尾点击名片】即可免费获取…...

调用腾讯云批量文本翻译API翻译srt字幕

上一篇文章介绍了调用百度翻译API翻译日文srt字幕的方法。百度翻译API是get方式调用&#xff0c;参数都放在ur中&#xff0c;每次调用翻译文本长度除了接口限制外&#xff0c;还有url长度限制&#xff0c;而日文字符通过ur转码后会占9个字符长度&#xff0c;其实从这个角度来讲…...

【分块解决大文件上传的最佳实践】

前言 前几天看了一篇关于大文件上传分块实现的博客&#xff0c;代码实现过于复杂且冗长&#xff0c;而且没有进行外网上传的测试。因此&#xff0c;我决定自己动手实现一个大文件上传&#xff0c;并进行优化。 实现思路 在许多应用中&#xff0c;大文件上传是常见的需求&…...

机器学习中的关键概念:通过SKlearn的MNIST实验深入理解

欢迎来到我的主页&#xff1a;【Echo-Nie】 本篇文章收录于专栏【机器学习】 1 sklearn相关介绍 Scikit-learn 是一个广泛使用的开源机器学习库&#xff0c;提供了简单而高效的数据挖掘和数据分析工具。它建立在 NumPy、SciPy 和 matplotlib 等科学计算库之上&#xff0c;支持…...

【Elasticsearch】post_filter

post_filter是 Elasticsearch 中的一种后置过滤机制&#xff0c;用于在查询执行完成后对结果进行过滤。以下是关于post_filter的详细介绍&#xff1a; 工作原理 • 查询后过滤&#xff1a;post_filter在查询执行完毕后对返回的文档集进行过滤。这意味着所有与查询匹配的文档都…...

Git基础

目录 一、Git介绍二、Git下载与配置1、下载安装Git2、Git配置2.1 注册码云账号2.2 Git配置 三、Git开发流程1、相关代码2、上述代码执行截图示例 四、Git提交&撤销五、Git资料 一、Git介绍 Git是一种分布式版本控制系统&#xff0c;广泛用于软件开发项目的版本管理。它由L…...

深度学习系列--02.损失函数

一.定义 损失函数&#xff08;Loss Function&#xff09;是机器学习和深度学习中用于衡量模型预测结果与真实标签之间差异的函数&#xff0c;它在模型训练和评估过程中起着至关重要的作用 二.作用 1.指导模型训练 提供优化方向&#xff1a;在训练模型时&#xff0c;我们的目…...

如何在自己mac电脑上私有化部署deep seek

在 Mac 电脑上私有化部署 DeepSeek 的步骤如下&#xff1a; 1. 环境准备 安装 Homebrew&#xff08;如果尚未安装&#xff09;&#xff1a; Homebrew 是 macOS 上的包管理工具&#xff0c;用于安装依赖。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com…...

攻防世界 fileclude

代码审计 WRONG WAY! <?php include("flag.php"); highlight_file(__FILE__);//高亮显示文件的源代码 if(isset($_GET["file1"]) && isset($_GET["file2"]))//检查file1和file2参数是否存在 {$file1 $_GET["file1"];$fi…...

Ubuntu24登录PostgreSql数据库的一般方法

命令格式如 psql -U user -d db 或者 sudo psql -U user -d db 修改配置 /etc/postgresql/16/main/postgresql.conf 改成md5&#xff0c;然后重新启动pgsql sudo systemctl restart postgresql...

3.5 Go(特殊函数)

目录 一、匿名函数 1、匿名函数的特点&#xff1a; 2、匿名函数代码示例 2、匿名函数的类型 二、递归函数 1. 递推公式版本 2. 循环改递归 三、嵌套函数 1、嵌套函数用途 2、代码示例 3、作用域 & 变量生存周期 四、闭包 1、闭包使用场景 2、代码示例 五、De…...

设计模式学习(三)

行为模式 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09; 定义 它允许多个对象有机会处理请求&#xff0c;从而避免请求的发送者与接收者之间的耦合。职责链模式将这些对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有对象处理它为止…...

挑战项目 --- 微服务编程测评系统(在线OJ系统)

一、前言 1.为什么要做项目 面试官要问项目&#xff0c;考察你到底是理论派还是实战派&#xff1f; 1.希望从你的项目中看到你的真实能力和对知识的灵活运用。 2.展示你在面对问题和需求时的思考方式及解决问题的能力。 3.面试官会就你项目提出一些问题&#xff0c;或扩展需求…...

堆(Heap)的原理与C++实现

1. 什么是堆&#xff1f; 堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;通常用于实现优先队列。堆可以分为两种类型&#xff1a; 最大堆&#xff08;Max Heap&#xff09;&#xff1a;每个节点的值都大于或等于其子节点的值。最小堆&#xff08;Min H…...

(10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例

&#xff08;1&#xff09; 先介绍下后面的代码里要用到的基础函数&#xff1a; 以及&#xff1a; &#xff08;2&#xff09; 接着给出现代版的 读写 socket 参数的系统函数 &#xff1a; 以及&#xff1a; &#xff08;3&#xff09; 给出 一言的 范例代码&#xff0c;获取…...

linux 进程补充

环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪 里&#xff0c;但是照样可以链接成功&#…...

通过docker安装部署deepseek以及python实现

前提条件 Docker 安装:确保你的系统已经安装并正确配置了 Docker。可以通过运行 docker --version 来验证 Docker 是否安装成功。 网络环境:保证设备有稳定的网络连接,以便拉取 Docker 镜像和模型文件。 步骤一:拉取 Ollama Docker 镜像 Ollama 可以帮助我们更方便地管理…...

vim-plug的自动安装与基本使用介绍

vim-plug介绍 Vim-plug 是一个轻量级的 Vim 插件管理器&#xff0c;它允许你轻松地管理 Vim 插件的安装、更新和卸载。相较于其他插件管理器&#xff0c;vim-plug 的优点是简单易用&#xff0c;速度较快&#xff0c;而且支持懒加载插件&#xff08;即按需加载&#xff09; 自动…...

Python 自学秘籍:开启编程之旅,人生苦短,我用python。

从2009年&#xff0c;用了几次python后就放弃了&#xff0c;一直用的php&#xff0c;现在人工智能时代&#xff0c;完全没php什么事情。必须搞python了&#xff0c;虽然已经40多岁了。死磕python了。让滔滔陪着你一起学python 吧。 开启新世界 在当今人工智能化的时代&#xff…...

DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)

一、引言 1.1 研究背景与意义 在医疗领域的改革进程中&#xff0c; DRG/DIP 2.0 时代&#xff0c;医院成本管理的重要性愈发凸显。新的医保支付方式下&#xff0c;医院的收入不再单纯取决于医疗服务项目的数量&#xff0c;而是与病种的分组、费用标准以及成本控制紧密相关。这…...

swift 专题三 swift 规范一

一、Swift编码命名规范 对类、结构体、枚举和协议等类型的命名应该采用大驼峰法&#xff0c;如 SplitViewController。 文件名采用大驼峰法&#xff0c;如BlockOperation.swift。 对于扩展文件&#xff0c;有时扩展定义在一个独立的文件中&#xff0c;用“原始类型名 扩展名…...

Vue的状态管理:用响应式 API 做简单状态管理、状态管理库(Pinia )

文章目录 引言单向数据流多个组件共享一个共同的状态I 用响应式 API 做简单状态管理使用 reactive()创建一个在多个组件实例间共享的响应式对象使用ref()返回一个全局状态II 状态管理库Pinia枚举状态管理引言 单向数据流 每一个 Vue 组件实例都在“管理”它自己的响应式状态了…...

排序算法--希尔排序

希尔排序是插入排序的改进版本&#xff0c;适合中等规模数据排序&#xff0c;性能优于简单插入排序。 // 希尔排序函数 void shellSort(int arr[], int n) {// 初始间隔&#xff08;gap&#xff09;为数组长度的一半&#xff0c;逐步缩小for (int gap n / 2; gap > 0; gap …...

HAL库 Systick定时器 基于STM32F103EZT6 野火霸道,可做参考

目录 1.时钟选择(这里选择高速外部时钟) ​编辑 2.调试模式和时基源选择: 3.LED的GPIO配置 这里用板子的红灯PB5 4.工程配置 5.1ms的systick中断实现led闪烁 源码: 6.修改systick的中断频率 7.systick定时原理 SysTick 定时器的工作原理 中断触发机制 HAL_SYSTICK_Co…...

ESXI虚拟机中部署docker会降低服务器性能

在 8 核 16GB 的 ESXi 虚拟机中部署 Docker 的性能影响分析 在 ESXi 虚拟机中运行 Docker 容器时&#xff0c;性能影响主要来自以下几个方面&#xff1a; 虚拟化开销&#xff1a;ESXi 虚拟化层和 Docker 容器化层的叠加。资源竞争&#xff1a;虚拟机与容器之间对 CPU、内存、…...