自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小柚子的博客

做一条有理想的咸鱼

  • 博客(810)
  • 资源 (1)
  • 收藏
  • 关注

原创 卡尔曼滤波器

以下是一个简单的 C语言实现卡尔曼滤波器 的示例代码,适用于一维数据(如温度、位置等单变量估计)。卡尔曼滤波器通过预测和更新两个步骤,结合系统模型(理论预测)和实际观测(含噪声的测量),动态修正对系统状态的估计,最终输出更接近真实值的结果。若需处理多维状态(如位置+速度),需修改结构体,使用矩阵运算库(如Eigen)或自行实现矩阵乘法和求逆。高斯噪声:系统噪声和观测噪声均为高斯分布(均值为0,协方差已知)。

2025-04-26 10:26:11 58

原创 弄清C语言中的链表

注意:一定要判断是否开辟空间失败,否则生产中由于未知的情况造成空间开辟失败,仍然在继续执行代码,后果将不堪设想啦,因此养成这样的判断是很有必要的。DATA作为结构体中自定义的数据类型;NEXT为指向链表结点的指针,通过访问NEXT,可以去访问链表的下一个结点。链表是,利用结构体,在堆上开辟内存空间去作为指针,这个指针总是指向下一个节点,结点通过指针相互串联,形成链表。创建一个单链表的前置节点并向后逐步添加节点,一般指的是申请结点的空间,同时对一个结点赋空值(NULL)。

2025-04-24 20:11:48 307

原创 STM32F28335的振荡周期、时钟周期、机器周期和指令周期之间的关系

STM32F28335 是德州仪器(TI)生产的一款基于 32 位 C28x 浮点数字信号处理器(DSP)内核的微控制器。要理解 STM32F28335 的振荡周期、时钟周期、机器周期和指令周期之间的关系,首先需要明确这些术语的定义及其在 C28x 架构中的具体含义。

2025-04-21 15:04:36 53

原创 Multisim14.3的安装步骤

依次右键【Base Edition】、【Full Edition】、【Power ProEdition】、【Full Edition】、【Power ProEdition】,选择【Activate】右击Install.exe,以管理员身份运行。粘贴到安装路中的stingfiles下。右击,以管理员身份运行。

2025-04-03 16:15:37 432

原创 qcustomPlot画出串口实时接受的数据

QCustomPlot 是一个用于在 Qt 应用程序中绘制图表的 C++ 类库。它提供了丰富的功能,可以绘制各种类型的图表,如折线图、散点图、柱状图、饼图等。// 设置 QCustomPlot 的标题ui->customPlot->setWindowTitle("QCustomPlot 示例");// 添加数据// 101个点i < 101;++i) {// x 范围从 -1 到 1// y = x^2// 创建图形并设置数据// 设置坐标轴范围// 设置坐标轴标签。

2025-03-26 16:30:14 71

原创 浮点数的储存和运用

浮点数在内存中的存储遵循特定的标准,最常用的是 IEEE 754 标准。该标准定义了浮点数的表示方法,包括符号位、指数位和尾数位的布局,使得不同计算机系统之间能够一致地进行浮点数运算和数据交换。示例示例以下是一个简单的 C 程序,展示如何将浮点数转换为其二进制表示:要将四个字节按照大端模式(Big-Endian)​发送并拼接成一个 float 数据,可以按照以下步骤进行操作。以下是一个完整的 C 程序示例,演示如何将四个字节按照大端模式拼接成一个 float 数据:代码解释使

2025-03-25 15:35:07 40

原创 三相永磁同步电机的控制方法之弱磁控制

弱磁控制(Field Weakening Control, FWC)是一种用于扩展电机转速范围的先进控制技术,特别适用于永磁同步电机(PMSM)和感应电机(IM)。弱磁控制通过调节直轴电流(d轴电流),削弱永磁体的磁场强度,从而降低反电动势,扩展电机的转速范围。以下是一个简化的弱磁控制的C语言实现案例,假设电机为三相永磁同步电机(PMSM),使用STM32微控制器。磁场定向控制(FOC)​:实现FOC算法,包括Clarke变换、Park变换、PI控制和逆变换。PI控制器:实现d轴和q轴的PI控制。

2025-03-24 17:53:56 627

原创 三相永磁同步电机的控制方法之直接转矩控制(DTC, Direct Torque Control)

直接转矩控制(DTC,Direct Torque Control)是一种高性能的电机控制方法,广泛应用于永磁同步电机(PMSM)、感应电机(IM)和其他类型的电机。与矢量控制(FOC)不同,DTC不依赖于复杂的坐标变换和PI控制器,而是通过直接控制电机的电磁转矩和磁链,实现快速动态响应和高精度控制。以下是一个简化的直接转矩控制(DTC)的C语言实现案例,假设电机为三相感应电机(IM),使用STM32微控制器。开关表选择:根据磁链和转矩误差,选择逆变器的电压矢量。PI控制:实现磁链和转矩的PI控制。

2025-03-24 17:44:17 1000

原创 三相永磁同步电机的控制方法之无传感器控制

无传感器控制(Sensorless Control)是一种通过估算电机转子位置和速度,而不依赖物理位置传感器(如霍尔传感器或编码器)的控制方法。它通过检测电机的电流、电压或其他物理量,间接获取转子位置信息,从而实现高效控制。以下是一个基于反电动势观测法的三相无传感器控制的C语言实现案例,假设电机为三相无刷直流电机(BLDC),使用STM32微控制器。Park变换:将两相静止坐标系(α-β)的信号转换为同步旋转坐标系(d-q)。PI控制:实现d轴和q轴的PI控制,调节电流和速度。定义电机控制所需的基本变量。

2025-03-24 17:25:46 440

原创 三相永磁同步电机的控制方法之六步换向控制(Six-Step Commutation)

六步换向控制(Six-Step Commutation)是一种简单的三相无刷直流电机(BLDC)或永磁同步电机(PMSM)的控制方法。它通过依次切换三相绕组的电流方向,产生旋转磁场,驱动电机运行。与矢量控制(FOC)相比,六步换向控制算法简单,计算量小,适合低成本、低性能要求的场景。以下是一个简化的六步换向控制的C语言实现案例,假设电机为三相无刷直流电机(BLDC),使用STM32微控制器。

2025-03-24 17:07:19 793

原创 三相永磁同步电机的控制方法之矢量控制

三相永磁同步电机的控制方法有:矢量控制(FOC, Field-Oriented Control)​、​六步换向控制(Six-Step Commutation)、无传感器控制、直接转矩控制(DTC, Direct Torque Control)​、弱磁控制和自适应控制与智能控制。矢量控制(FOC,Field-Oriented Control),也称为磁场定向控制,是三相永磁同步电机(PMSM)和感应电机(IM)中常用的高性能控制方法。d-q坐标系的控制目标。

2025-03-24 16:14:10 370

原创 约束文件SDC常用命令

般而言setupuncertainty.的设置和时钟周期相关,周期越大,设置越大。A→B不能超过1.2ns(防慢),C→D不能快于0.8ns(防hold违例),常见于组合逻辑路径上的检查。cIkA和clkB是异步时钟,它们之间的路径不用检查时序(如跨时钟域)。数据进芯片前,外部电路已消耗0.5ns,综合要预留这段“堵车时间”。告诉工具主时钟周期是2ns(频率500MHz),从clk端口输入。这条路径允许用2个时钟周期传输,放宽时序要求(如低频控制信号)。

2025-03-24 09:08:34 228

原创 FPGA中串行执行方式之使用时钟分频或延迟的方式

基本原理:时钟分频是通过将输入时钟信号的频率降低(即周期变长)来生成一个新的时钟信号。分频后的时钟信号可以用于控制逻辑的执行速度,或者在某些场景下用于降低功耗。在FPGA设计中,​时钟分频和延迟是两种常用的技术,用于控制信号的时序或调整信号的频率。以下是一个简单的延迟实现,假设输入信号 data_in 需要延迟 N 个时钟周期后输出。以下是一个偶数分频的实现,假设输入时钟频率为 clk_in,分频系数为 N(偶数)。以下是一个奇数分频的实现,假设输入时钟频率为 clk_in,分频系数为 N(奇数)。

2025-03-24 08:30:46 121

原创 FPGA中串行执行方式之流水线(Pipeline)

在FPGA设计中,​流水线(Pipeline)​ 是一种常见的优化技术,用于提高系统的吞吐量和性能。流水线通过将复杂的逻辑分解为多个阶段,每个阶段在一个时钟周期内完成一部分工作,并将中间结果传递到下一阶段。这种方式可以显著提高时钟频率,同时实现并行处理。在某些场景中,流水线的输出可能需要反馈到输入。以下是一个带反馈的流水线示例,模拟一个简单的计数器流水线。以下是一个简单的4级流水线示例,输入数据经过4个阶段的处理后输出。在多通道流水线中,每个通道独立运行,适合并行处理多个数据流。

2025-03-24 08:01:07 267

原创 FPGA中串行执行方式之计数器控制

使用计数器控制的方式实现状态机是一种简单且直观的方法。它通过计数器的值来控制状态的变化,从而实现顺序逻辑。计数器的方式特别适合状态较少且状态转移是固定的场景。以下是一个简单的状态机,状态依次为 IDLE -> STATE1 -> STATE2 -> STATE3 -> IDLE,使用计数器控制状态转移。以下是一个带有复位和超时机制的状态机,计数器值超过某个阈值时会强制回到初始状态。以下是一个带有条件判断的状态机,计数器值达到某个阈值时才进行状态转移。计数器控制的状态机(带复位和超时)​。

2025-03-21 17:26:03 204

原创 FPGA中串行执行方式之状态机

这可以通过以下几种方法实现:使用状态机(Finite State Machine, FSM)​、使用计数器控制、使用流水线(Pipeline)控制、使用时钟分频或延迟、使用软件控制(如MicroBlaze或PetaLinux)​。Moore型状态机的输出仅依赖于当前状态,而Mealy型状态机的输出依赖于当前状态和输入。以下是一个简单的三段式状态机示例,实现一个计数器状态机,状态依次为 IDLE -> COUNT1 -> COUNT2 -> IDLE。Mealy型状态机的输出依赖于当前状态和输入。

2025-03-21 16:52:10 205

原创 由于找不到MSVCP140.dll的解决方法

找到 ​Microsoft Visual C++ 2019 Redistributable 和 ​Microsoft Visual C++ 2015 Redistributable;第二步:下载最新的正确版本的 Visual C++ 2019 Redistributable。第一步:打开“控制面板” > “程序” > “程序和功能”;最好X86和X64都下载安装。

2025-03-21 11:51:43 265

原创 补偿算法之幅值补偿算法

幅值补偿算法通常用于信号处理中,目的是调整信号的幅值以满足特定的要求。以下是一个简单的C语言实现幅值补偿算法的示例代码。假设我们有一个输入信号数组,我们希望对每个信号样本进行幅值补偿。幅值补偿算法主要用于调整信号的幅值,以使其满足特定的要求,如匹配目标幅值、消除幅值波动、增强弱信号等。下面详细介绍幅值补偿算法的原理设计,包括基本概念、常见方法及其实现步骤。

2025-03-18 11:50:14 324

原创 补偿算法之相位补偿算法

例如,在电机调速系统中,为了提高系统在高速运行时的稳定性,可能会采用相位超前补偿算法,通过在控制回路中添加适当的滤波器或控制器结构,使系统在高频段的相位提前,从而增加相位裕度,防止系统出现振荡或失稳现象。二阶全通滤波器是一种在数字信号处理和控制系统等领域广泛应用的滤波器,其系数决定了它的相位特性,进而影响对信号相位的补偿效果。相位补偿算法有基于全通滤波器的相位补偿原理、基于锁相环(PLL)的相位补偿原理、基于模型预测的相位补偿原理,本章主要讲解全通滤波器的相位补偿原理。

2025-03-18 10:56:43 451

原创 vivado关联notepad

输入:notepad的执行文件+[file name] -l[line number]找到TextEditor中的CustomEditor。点击.v文件会弹出notepad文本,则关联成功。从vivado的tool中进入setting。修改语言,关键字就会高亮。

2025-03-04 10:53:01 402

原创 QT中如何显示反汇编语言

默认是显示的是AT&T格式的汇编代码。切换为Intel风格的汇编语言。第三步:打开反汇编窗口。

2025-02-18 20:31:29 133

原创 QT中修改名称

第二步:将.pro文件名修改为新的工程名称,.pro.user文件删除。第三步:使用QT打开新工程文件夹里面的工程,并配置编译器。第一步:复制一份工程,将工程名称修改为新的工程名。

2025-02-17 14:55:41 263

原创 改写中断例程,用中断响应外设

应用

2025-01-22 17:59:21 221

原创 外设链接与中断

PC键盘处理过程定制键盘的输入过程。

2025-01-22 17:15:26 182

原创 端口的读写

【代码】端口的读写。

2025-01-22 16:26:46 226

原创 BIOS和DOS中断

BIOS中断调用例程。

2025-01-20 20:16:06 305

原创 中断及其处理

【代码】中断及其处理。

2025-01-15 20:22:45 193

原创 数据和代码的直接定址表

清屏的功能设置前景色设置背景色向上滚动一行主程序直接写址表的优势。

2025-01-14 19:52:47 161

原创 操作显存数据、标号

将显存区域进行地址标号后,进行操作显示。

2025-01-14 16:20:42 156

原创 移位指令的理解

移位指令包含:逻辑左移(SHL)、逻辑右移(SHR)、循环左移(ROL)、循环右移(ROR)、算术左移(SAL)、算数右移(SAR)、带进位循环左移(RCL)、带进位循环右移(RCR)逻辑左移一位,相当于乘以2,逻辑右移一位,相当于除以2.

2025-01-14 15:49:21 217

原创 方向标志位和串传送指令

DF标志和串传送指令。

2025-01-13 17:11:00 138

原创 比较指令和条件转移指令

cmp指令无符号比较有符号比较条件转移指令条件转移指令的应用。

2025-01-13 16:53:58 152

原创 带位的加减法

带位的加减法sub指令

2025-01-13 16:25:39 124

原创 寄存器及标志寄存器

寄存器冲突问题的解决方法。注意CF和OF的区别。

2025-01-13 16:05:48 722

原创 汇编语言模块化程序设计

参数和结果传递。

2025-01-13 15:25:42 401

原创 乘法指令mul

回顾一下,除法指令div。

2025-01-09 17:56:44 259

原创 模块化程序设计

指令call far ptr标号,实现的是段间转移。转移地址在寄存器中的call指令。

2025-01-09 17:51:11 155

原创 转移指令jmp以及其他转移指令

jmp short 的机器指令中,包含的是跳转到指令的相对位置(位移),而不是转移的目标地址。转移地址在寄存器变量中。jmp–无条件的转移。远转移和近转移的区别。

2025-01-08 17:34:04 166

原创 “转移”的理解

一般情况下指令是顺序执行的,而在实际工程中,需要改变程序的执行流程。用操作符offset取得标号的偏移地址。

2025-01-07 18:00:39 538

原创 使用div指令实现除法,dup设置内存空间

切记提前在默认的寄存器中设置好被除数,且默认寄存器不作别的用处。使用div指令不需要给出被除数,只需要给出除数即可。

2025-01-07 16:31:28 255

Multisim安装包

Multisim安装包

2025-04-03

uart_drive.rar

uart_drive.rar

2021-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除