傻童:CPU
业精于勤,荒于嬉;行成于思,毁于随。
展开
-
卡尔曼滤波器
以下是一个简单的 C语言实现卡尔曼滤波器 的示例代码,适用于一维数据(如温度、位置等单变量估计)。卡尔曼滤波器通过预测和更新两个步骤,结合系统模型(理论预测)和实际观测(含噪声的测量),动态修正对系统状态的估计,最终输出更接近真实值的结果。若需处理多维状态(如位置+速度),需修改结构体,使用矩阵运算库(如Eigen)或自行实现矩阵乘法和求逆。高斯噪声:系统噪声和观测噪声均为高斯分布(均值为0,协方差已知)。原创 2025-04-26 10:26:11 · 55 阅读 · 0 评论 -
STM32F28335的振荡周期、时钟周期、机器周期和指令周期之间的关系
STM32F28335 是德州仪器(TI)生产的一款基于 32 位 C28x 浮点数字信号处理器(DSP)内核的微控制器。要理解 STM32F28335 的振荡周期、时钟周期、机器周期和指令周期之间的关系,首先需要明确这些术语的定义及其在 C28x 架构中的具体含义。原创 2025-04-21 15:04:36 · 52 阅读 · 0 评论 -
浮点数的储存和运用
浮点数在内存中的存储遵循特定的标准,最常用的是 IEEE 754 标准。该标准定义了浮点数的表示方法,包括符号位、指数位和尾数位的布局,使得不同计算机系统之间能够一致地进行浮点数运算和数据交换。示例示例以下是一个简单的 C 程序,展示如何将浮点数转换为其二进制表示:要将四个字节按照大端模式(Big-Endian)发送并拼接成一个 float 数据,可以按照以下步骤进行操作。以下是一个完整的 C 程序示例,演示如何将四个字节按照大端模式拼接成一个 float 数据:代码解释使原创 2025-03-25 15:35:07 · 41 阅读 · 0 评论 -
三相永磁同步电机的控制方法之矢量控制
三相永磁同步电机的控制方法有:矢量控制(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 · 368 阅读 · 0 评论 -
伯德图的意义
伯德图(Bode Plot)是一种用于分析线性时不变系统频率响应的图示工具。它以对数刻度绘制系统的幅频特性和相频特性,通过频率的对数尺度展示系统的传递函数响应。伯德图的横轴通常表示频率,纵轴分别表示振幅和相位。注意:在实际应用中,你可能需要根据具体问题调整传递函数的系数和频率范围。此外,可以使用grid on命令在伯德图上添加网格线,以便更容易地读取和分析数据。在MATLAB中,可以使用bode函数或margin函数绘制伯德图。这将绘制传递函数G(s)的伯德图,并在命令窗口中输出增益裕度和相位裕度。原创 2025-01-03 16:32:15 · 369 阅读 · 0 评论 -
int32类型在内存中数据是如何分布
在大端字节序中,数据的低位字节存储在内存的高地址处,而数据的高位字节存储在内存的低地址处。在小端字节序中,数据的低位字节存储在内存的低地址处,而数据的高位字节存储在内存的高地址处。字节序的不同会影响多字节数据在内存中的存储方式,尤其是在跨平台通信或处理二进制数据时需要特别注意。原创 2024-12-29 10:51:00 · 101 阅读 · 0 评论 -
如何计算相位差
这里两个信号的角频率w=2πf是相同的,根据同频正弦信号相位差的计算方法,直接用两个信号的相位相减。原创 2024-12-27 20:12:53 · 745 阅读 · 0 评论 -
C语言实现模糊PID控制
当误差在零附近时(e为Z),分三种情况:ec为时,超调越来越大,此时△kp取负;它的基本原理是通过模糊化输入变量(如误差、误差变化率等),根据预设的模糊规则进行推理,得到模糊输出,再通过去模糊化得到精确的 PID 参数调整量,从而实现对 PID 控制器参数的实时调整,以适应不同的工况和系统变化,提高控制性能。选取E、EC和U的各语言变量值:正大为PB,正中为PM,正小为PS,为零为Z,负小为NS,负中为NM,负大为NB,隶属度函数均为三角形,“去模糊化”,采用的是“重心法”。原创 2024-12-24 11:42:36 · 223 阅读 · 0 评论 -
CCS中静态库lib的生成和实现
首先,建立工程或者打开已有的工程(这里演示)。将封装库函数的头文件路径添加到库函数中。使用生成的lib(库)替换.c(函数)将需要封装的函数复制到库工程。在主函数中调用,测试效果。建立.h文件和.c文件。注意单片机型号的选择。原创 2024-10-24 11:37:42 · 379 阅读 · 0 评论 -
霍纳法则实现
使用循环从次高次项开始逐步累加,每次累加时将上一步的结果乘以 x 并加上当前项的系数。参数 poly[] 是多项式的系数数组,按次数从低到高排列。多项式在 x = 2.00 处的值为: 14.00。初始化 result 为最高次项的系数。参数 n 是多项式的次数。参数 x 是要求值的点。原创 2024-10-08 16:38:17 · 95 阅读 · 0 评论 -
查表法的实现
二维查表法用于处理需要二维数组或表格的情况,类似于处理一组数据中每个元素的值可以通过查找表快速获取的场景。查表法是一种通过预先计算并存储结果来加速计算过程的方法。在C语言中,可以通过使用数组来实现查表法。这种查表法特别适用于需要频繁进行计算的场景,因为预计算的结果可以大大减少每次计算的时间开销。例子:使用查表法来计算正弦值。原创 2024-09-11 16:26:52 · 184 阅读 · 0 评论 -
QT文件操作实战
采用“另存为”按钮的槽函数,编写的代码如下。采用“浏览”按钮的槽函数,编写的代码如下。原创 2024-08-14 11:16:40 · 240 阅读 · 0 评论 -
QT文件的操作
OTextStream是一个用于读写文件txt流的操作类,它通常会把存储在磁盘上的8bit数据转换为16bit的Unicode字符串QString。OTextStream类对操作符进行了重载,我们可以通过原创 2024-08-14 08:32:23 · 286 阅读 · 0 评论 -
学生管理系统之更新和删除、筛选
使用Widget把二个放在一块,作为一列,然后全选进行栅格布局,最后添加弹簧进行微调。.exec模态显示,必须要求执行窗口,其他窗口不能动。.show只是显示窗口(非模态显示)。在主函数中调用对话框。原创 2024-08-04 17:01:03 · 89 阅读 · 0 评论 -
学生管理系统之数据模拟与数据显示
设计一个单例模拟数据显示数据。原创 2024-08-04 14:16:09 · 490 阅读 · 0 评论 -
学生管理系统之数据库设计与开发
获取第几页学生数量,注意页数是从第0页开始的。整理后(1,6,7需要加单引号)定义完接口,在.cpp中实现。TEXT需要添加单引号。添加某个语句的头文件。原创 2024-08-03 21:21:04 · 230 阅读 · 0 评论 -
学生管理系统之界面设计
用户名、密码和二个QLineEdit组件放到一个widget;先将想要放到一个块的放入widget里,选择栅格布局,然后调整每个组件的固定长度中宽度和高度进行调整。修改组件名字,密码的QLineEdit选择密码模式(Password)先显示主界面,但是让主界面进行隐藏,在显示登录界面。将界面的大小设定为固定值之后,就不会随意改变大小了。调整位置之后,在微调各个组件的字体大小。最后还可以微调各个组件的宽度和高度。双击QTableWidget。将二个组件放到一个布局里。选中整个框,点击栅格布局。原创 2024-08-03 18:08:22 · 356 阅读 · 0 评论 -
FIR低通滤波器
FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。APP中信号与通信中;或者在命令框中输入filterDesigner调用滤波器设计工具设置参数生成MATLAB代码指定参数,选择FIR滤波器,采样频率128Hz,通带截止频率15Hz,阻带截止频率16Hz。通带最大波纹0.1dB,阻带原创 2024-08-03 14:43:58 · 380 阅读 · 0 评论 -
bootloader开发总结
首先明白了BootLoader和应用程序之间跳转,就明白了大概。上电启动程序,会有一个程序入口,这个入口由0x33fff6(28335的)地址决定。应用程序也会有一个启动入口,这个用户可以自己决定。bin文件是高地址在前,DSP内部是地址在前。原创 2024-08-03 14:43:11 · 87 阅读 · 0 评论 -
在CCS中通过设置二个断点来计算代码运行时间
时钟周期为300MHz,测得数据为1000,则代码运行时间time = 1000 * (1/300,000,000) = 3.3 μs。还有一种方法就是在中断程序里第一条指令打个断点,使能ccs的clock功能,看每进一次中断用了多少clock。第二步:使能时钟,先打开clock功能,步骤是Run -> clock -> Enable。在中断程序中,翻转一个GPIO口的输出电平,用示波器观察波形。单位是:CPU运动周期。第一步:就是在二段你想要测试的代码之间设置断点。断点的设置参考如下连接。原创 2024-07-22 18:13:27 · 693 阅读 · 0 评论 -
将四个8位的int类型拼接位一个32位的float
【代码】将四个8位的int类型拼接位一个32位的float。原创 2024-07-10 14:53:56 · 174 阅读 · 0 评论 -
CCS的安装步骤
找到安装执行文件,右击选择管理员运行。选择安装路径,将C修改为D。最后直接等待安装完成即可。原创 2024-06-26 21:09:53 · 1517 阅读 · 0 评论 -
如何使用CCS9.3打开CCS3.0工程
点菜单栏上的project,选择Import Legacy CCSv3.3 Porjects…,弹出对话框,通过Browse…按钮导入一个3.3版本的工程项目;一般在properties中的general中的products下的XDCtools选项的勾就了消掉了。选择.pjt文件,选择Copy projects into worlkspace。删除原来的include,从新添加工程include。右击选择Properties。原创 2024-06-14 14:45:04 · 973 阅读 · 0 评论 -
C语言实现正弦信号扫频
这段代码生成了一个从起始频率到结束频率的正弦扫频信号,并将每个采样值输出到标准输出。包含必要的头文件:首先,你需要包含 和 头文件,分别用于输入输出和数学函数的使用。在一个循环中,改变正弦波的频率并用sin()函数生成对应频率的正弦波数据,将数据存储到数组中。生成正弦波信号:使用正弦函数生成扫频信号,可以根据当前时间和扫频参数计算出对应的频率。定义扫频参数:定义正弦扫频的参数,例如起始频率、结束频率、扫频时间等。将数组中的数据输出或保存到文件中。原创 2024-05-26 10:08:33 · 854 阅读 · 0 评论 -
stm32 作为从机, fpga 作为主机,进行 spi 通信
STM32和FPGA之间的SPI通信是直连形式。使用FPGA读取传感器的值,传输到STM32中进行计算。原创 2024-05-19 16:31:20 · 715 阅读 · 0 评论 -
旋转矩阵(将坐标轴旋转)
在二维空间中,旋转可以用一个单一的角 定义。作为约定,正角表示逆时针旋转。原创 2024-05-08 12:54:20 · 268 阅读 · 0 评论 -
CCS中如何折叠代码
鼠标点击行号,右击,选择Folding->Enable Floding。原创 2024-04-24 14:57:25 · 574 阅读 · 0 评论 -
DSP中DELAY_US()函数的使用
在Main.c中,使用MemCopy()函数将段ramfuncs中的函数DSP28x_usDelay()的代码从装载地址RamfuncsLoadStart—RamfuncsLoadEnd拷贝到RamfuncsRunStart开始的SARAM空间中。之后在程序运行时,只要调用DSP28x_usDelay()函数,都会自动地指向SARAM中相应的函数入口地址,这一点是自动完成的。注意:即使这样,定时仍然可能不精确,因为可能有中断打断DSP28x_usDelay()的运行,所以在调用之前要关中断。原创 2024-04-19 21:45:46 · 1026 阅读 · 0 评论 -
QT charts模块画图
在项目中使用Qt Charts模块,必须在项目的配置文件(.pro文件)添加行语句。在需要使用QtCharts的类的头文件或源文件中,包含如下语句。原创 2024-03-20 19:06:34 · 513 阅读 · 0 评论 -
QT-绘制动态曲线
将控件功能提升为QChartView。设置定时器绑定DrawLine函数。pro文件中添加chart。添加相关的头文件和变量。将二个函数加入到主函数。在串口工程中添加控件。原创 2024-03-19 18:40:41 · 1008 阅读 · 0 评论 -
MCBPS配置成SPI
CLKSTP位同时也是使能SPI功能的一个位,控制的是时钟停止模式的使能和禁用,这个功能开启时,McBSP兼容SPI。当CLKSTP=0或CLKSTP=1时,禁用SPI功能,CLKSTP=2或CLKSTP=3时,使能McBSP的SPI功能,时钟停止模式开启。CLKXP表示数据发送的时钟极性,CLKXP=0,发送的数据在时钟的上升沿采样,CLKXP=1,发送数据在时钟下降沿采样。CLKRP表示数据接收的时钟极性,CLKRP=0,接收的数据在时钟的下降沿采样,CLKRP=1,接收数据在时钟上升沿采样。原创 2024-02-29 22:16:34 · 697 阅读 · 0 评论 -
controlSUITE介绍
controlSUITE下载安装指南controlSUITE的执行文件。原创 2024-01-27 10:42:39 · 401 阅读 · 0 评论 -
C2000ware介绍
C2000的下载安装指南C2000目录。原创 2024-01-27 10:10:11 · 2039 阅读 · 0 评论 -
controlSUITE™ Getting Started Guide(控制入门指南)
controlSUITE设备支持包含启动C2000实时控制微控制器开发所需的软件和文档。在特定的设备目录中提供了文档,以描述如何为设备设置CCS项目,并提供所包含示例项目的概述,并协助进行故障排除。ControlSuite中的开发工具包提供了各种硬件开发工具,旨在加快和简化设计过程。C2000工具与ControlSuite软件相结合,为评估设备和无缝过渡提供了一种有效的方式。controlSUITE中包含的库范围从固定点数学和浮点数学库到专门的DSP库以及各种应用程序和实用程序库。原创 2024-01-06 22:15:59 · 777 阅读 · 0 评论 -
TMS320F28335使用多个串口时,SCIRXST Register出现错误
【代码】TMS320F28335使用多个串口时,SCIRXST Register出现错误。原创 2023-11-17 22:49:20 · 564 阅读 · 0 评论 -
看28377代码笔记
使用的是20MHz外部晶振,为取200MHz系统时钟,倍频设为20,分频设为2,这样sysclock = 20MHz * 20 / 2,正好200MHz。注意:SPISTE配置成普通的GPIO端口,是为了更好控制芯片,配置芯片的时序。FMULT_0:小数点位数,小数只能有0,0.25,0.5,0.75四个选择。XTAL_OSC:表示使用外部晶振。GPIO_MUX_CPU1:复用类型。GPIO_MUX_CPU1:复用类型。PLLCLK_BY_2:表示2分频。IMULT_20:表示倍频数。原创 2023-10-11 19:30:06 · 646 阅读 · 0 评论 -
C语言实现线性插值
线性插值是一种常用的数据插值方法,用于在已知的数据点之间估计未知点的值。函数中,通过查找查询点的位置,确定其在已知数据点数组中的区间,然后利用线性插值公式计算插值结果。你可以根据实际需求,修改已知的数据点和查询点,并通过调用。在示例代码中,我们假设已知的数据点为。的函数,它接收一个需要插值的查询点。以上代码中,我们定义了一个名为。原创 2023-10-07 14:42:21 · 1311 阅读 · 0 评论 -
CCS介绍
设置主体颜色修改字体的颜色和大小安装一些插件CCS中的App中心切换工作空间导入工程放大字体配置工程烧录文件查看工程属性编译工程增加编译速度工程右击属性。原创 2023-09-25 23:10:29 · 319 阅读 · 0 评论 -
C# 将二个字节拼接成有符号输出
【代码】C# 将二个字节拼接成有符号输出。原创 2023-09-25 12:43:00 · 446 阅读 · 0 评论 -
通信协议中含有转义字符的处理方法
当通信协议中,有些帧含有转义字符,接收的时候需要去掉某些位的转义字符,接受的时候需要去掉转义字符。发送的时候可以进行分段式发送。原创 2023-09-22 15:46:00 · 662 阅读 · 0 评论