- 博客(49)
- 收藏
- 关注
原创 C语言结构体
结构体允许你将不同类型的数据项组合在一起,以表示一个更复杂的数据结构。每个结构体可以包含多个成员变量(也称为字段或属性),这些成员变量可以具有不同的数据类型。结构体是C语言中非常有用的数据类型,它使你能够创建更复杂的数据结构,例如记录、列表、树等。通过结构体,你可以将相关的数据组织在一起,以便更轻松地管理和操作它们。要访问结构体成员,使用结构体变量的名称,后跟成员变量的名称和点运算符。你可以将结构体传递给函数,使函数能够操作结构体的成员。你还可以使用指向结构体的指针来操作结构体的成员。
2023-09-19 13:35:51
157
原创 error: #44: expression must have pointer type
要解决这个错误,你需要检查代码中出现错误的位置,并确保在使用指针运算符(*)、函数参数传递或指针操作时,你使用的表达式都是指针类型。在函数调用时,传递给函数的参数类型不匹配:函数参数期望接收一个指针类型的参数,但你传递了一个非指针类型的参数。在指针操作中使用了错误的语法:你可能在指针操作中使用了错误的语法,导致编译器无法识别你的表达式。)用于获取指针指向的变量的值。如果你在一个非指针类型的变量前使用了指针运算符,就会触发该错误。对非指针类型的变量使用了指针运算符(
2023-05-30 17:02:16
10289
原创 L6200E: Symbol **** multiply defined
这个错误是链接器(Linker)报告的错误,指示在链接过程中出现了符号"SystemInit"的多重定义。具体来说,符号"SystemInit"被两个目标文件(system_stm32f0xx_1.o和system_stm32f0xx.o)同时定义了。在嵌入式系统中,通常会有一些系统初始化函数,用于设置硬件和其他系统级别的配置。在这种情况下,"SystemInit"可能是一个用于初始化STM32F0xx微控制器的函数。请注意,这只是一般的解决方法,具体解决方案可能因您的项目和环境而异。
2023-05-27 14:42:00
12670
1
原创 ST平台用DMA传输ADC采集的数据
在 STM32F0 硬件平台上,使用 DMA(Direct Memory Access)传输 ADC(Analog-to-Digital Converter)采集的数据是一个高效的方法。在实现过程中,你需要熟悉 STM32F0 系列的器件参考手册和相关的库函数。确保正确配置 ADC、DMA 和中断,并处理可能的错误情况。
2023-05-20 14:31:45
1271
原创 无刷电机中的MTPA控制
具体来说,MTPA控制需要测量电机的电流和位置信息,并基于这些信息来计算出最佳的电流矢量方向,以最大化电机的输出转矩。总之,MTPA控制基于磁场定向控制和矢量控制理论,通过同时控制电机的电流和磁通量方向,以实现电机的最大转矩输出。总之,MTPA控制的实现方法包括电机参数识别、磁场定向控制、计算电流矢量、控制电流矢量和调整电流矢量等步骤。控制电流矢量:一旦计算出最佳的电流矢量方向,就可以通过PWM控制器控制电机的定子绕组电流,使其与计算出的电流矢量方向一致。这个过程可以通过控制器的开关信号来实现。
2023-05-08 13:55:59
1941
原创 tab widget用法
Tab Widget 是 QT 中的一个常用控件,它提供了多个选项卡(tab)来显示不同的内容,用户可以通过点击选项卡来切换内容。以上是 Tab Widget 的基本用法,具体使用还需要根据实际需求进行适当的调整和扩展。例如,在选项卡中添加其他控件、设置选项卡的样式等。
2023-05-07 22:27:41
1463
原创 QwtPlotCurve使用说明
setSymbol(const QwtSymbol &symbol):设置曲线上数据点的符号,参数为QwtSymbol类型,可以是圆、矩形、三角形等。setSamples(const QVector &samples):设置曲线的数据点,参数为QVector类型,即一组QPointF对象的序列。setSamples(const QPolygonF &samples):设置曲线的数据点,参数为QPolygonF类型,即一组浮点数的序列。detach():将曲线对象从QwtPlot对象上分离,停止绘制曲线。
2023-05-04 14:39:31
1265
原创 位置式pid和增量式pid
比如,在机器人控制中,需要控制机器人的运动轨迹,这时可以使用增量式PID控制器,因为机器人在运动过程中,往往受到各种干扰,如摩擦力、惯性力等,增量式PID控制器对这些干扰有较强的鲁棒性。又如,在液位控制中,需要控制液位的高度和稳定性,这时也可以使用增量式PID控制器,因为在液位测量中,测量信号通常存在一定的噪声和波动,增量式PID控制器可以较好地抵抗这些干扰。需要注意的是,由于增量式PID控制器的控制器输出是差值,因此需要在计算过程中维护上一次的控制器输出和误差,否则可能会导致计算错误。
2023-05-03 15:18:19
4491
原创 母线电容的计算
在此公式中,所需的母线电容量取决于负载电流和电压下降时间。当负载电流增加时,所需的电容量也会相应增加。同样,如果允许的电压下降量较小,则需要更多的电容来确保电压稳定。因此,推荐的母线电容大小为0.2法拉(F)。需要注意的是,这只是一个估计值,实际的电容大小可能需要根据具体的设计和应用情况进行调整。需要注意的是,此公式仅适用于直流电路。ΔV:允许的电压下降量,单位为伏特(V)C:所需的母线电容,单位为法拉(F)t:电压下降时间,单位为秒(s)I:负载电流,单位为安培(A)
2023-04-23 10:25:50
3678
原创 求与矩阵相似的三角矩阵
要求一个矩阵与给定矩阵相似,可以通过将该矩阵对角化的方法来实现。对角化的过程可以分解为两个步骤:首先找到该矩阵的特征值和特征向量,然后将特征向量按列组成的矩阵和一个对角矩阵相乘,得到相似的对角矩阵。Schur分解可以用于求解复矩阵的特征值和特征向量,以及解线性方程组等问题。相似的三角矩阵,可以进行Schur分解。Schur分解是将一个矩阵分解为一个上三角矩阵和一个酉矩阵相乘的形式。具体来说,对于任意一个矩阵。首先,我们可以使用特征值和特征向量的方法对。我们将特征向量按列组成一个矩阵。是一个上三角矩阵,与。
2023-04-22 17:20:28
2023
原创 SVPWM调制系数
需要注意的是,在确定SVPWM调制比的值时,还需要考虑到逆变器的功率损耗和效率问题,以及控制算法的实现难度和计算复杂度等方面的因素。根据电机特性:不同类型的电机对调制比的要求不同,可以根据电机的电气参数和性能特点,以及应用场景中对输出电压质量和效率的要求,来确定调制比的值。根据输出电压的平滑度:如果输出电压需要较高的平滑度,调制比可以取较大的值,以降低逆变器输出电压的谐波含量和噪声。根据输出电压的变化速度:如果输出电压需要快速变化,调制比可以取较小的值,以提高输出电压的响应速度和动态性能。
2023-04-21 11:10:38
3253
原创 UCOSII学习笔录
摘要本文章主要从以下几点去解析ucosii系统,熟悉基本原理,不涉及实践。1.所包含的相关文件,以及文件的大概作用2.从运行状态的角度去理解此系统。
2023-03-23 15:29:05
442
原创 在Qt中使用定时器
方法一在类的定义中,重写定时器事件Class A{...public: void timerEvent(QTimerEvent *) int ID1; int ID2;...}重写此事件:void A::timerEvent(QTimerEvent *){ static int num=0; num++;}窗口的主函数://启动定时器ID1=startTimer(1000);ID2=startTimer(300);说明:在重写的timerE
2022-04-03 21:37:54
492
原创 S32 Design Studio licence missing
摘要S32 Design Studio 出现 licence missing 或者Activate 会Error解决方法通过NXP官网,申请Case去延长licence。通过重新注册NXP账号,获取ID。
2022-04-03 17:38:52
1031
原创 STM32看门狗配置说明
系统时钟:The WWDG clock is prescaled from the APB clock and has a configurable time-window thatcan be programmed to detect abnormally late or early application behavior./** @defgroup WWDG_Prescaler WWDG Prescaler * @{ */#define WWDG_PRESCALER_1 0x
2022-03-29 10:10:18
321
原创 Keil编译下出现axf: Error: L6218E: Undefined symbol
摘要使用STM32F0的主控芯片,Keil编译环境,编译能通过,链接出现axf: Error: L6218E: Undefined symbol 故障解决措施stm32f0xx_hal_conf.h此配置文件需要定义相关模块,否侧无法Link。/* ########################## Module Selection ############################## *//** * @brief This is the list of modules to
2022-03-21 17:16:52
16982
原创 数据Q格式和标幺化
摘要浮点数计算会占用大量CPU时间,所以我们用定点数定标的方法来进行浮点数运算,也就是所谓的数据Q格式。详述用1.[N-1]形式(一个符号位,N-1位的小数)来表示N位的有符号小数,这样有符号小数(SF)的取值范围就是:对于16位Q格式有符号数,它能表示的最大负数为-1.0,也就是0x8000。最大的正数为:也就是0x7FFF。标幺值是电力系统分析和工程计算中常用的数值标记方法,表示各物理及参数的相对值,单位为pu(也可以认为其无量纲)。标幺值是相对于某一基准值而言的,同一有名值,当基准值选
2022-03-08 09:55:58
4874
原创 电容滤波笔记
电容滤波效果公式:容抗F=1000Hz 干扰频率C=1000uFXC=12∗π∗F∗CXC = \frac{1}{2*π*F*C}XC=2∗π∗F∗C11000Hz,1A的干扰输入:XC=0.16Ω ,干扰输出为0.16Vπ型滤波XC1=0.32Ω XC2=0.32Ω1000Hz,1A的干扰输入,电阻为6.4Ω,在C1的干扰为0.32V0.05=0.326.4+0.320.05= \frac{0.32}{6.4+0.32}0.05=6.4+0.320.32可得
2022-02-27 22:02:33
9378
原创 关于数据处理的算法
1.LPF#define FirstOrder_LPF_Cacl(Xn, Yn_1, a) Yn = (1-a)*Yn_1 + a*Xn; //Xn:in;Yn:out;a:系数
2022-02-24 09:30:12
1525
原创 Qt widget-->Calendar
摘要基于Qt的界面开发QCalendarWidget 一次显示日历的月并让User 选择一个日期。这个日历有四个部分组成:导航栏让User改变月的显示,一个网格其中每个cell代表一个月的一天;两个表头显示周名和第几周。QCalendarWidget 特性的总结特性描述selectedDate当前选择的日期minimumDate能够选择最早的日期maximumDate能够选择最晚的日期firstDayOfWeek这天展现一周的第一天gridVis
2022-02-21 23:52:22
394
原创 MOS管的驱动电阻
摘要驱动电阻的选择每毫米的PCB走线的寄生电感量大概为1nH;50mm的走线大概为50nHG S之间的寄生电容大概为500pF对等效电路进行仿真,用示波器测量G极的波形,可以看到在信号边缘存在严重的振荡。振荡原因:假设G、S极之间的电压为u(t),如果忽略R1,分析附图3电路,u(t)满足附图3的二阶微分方程。进一步得到附图3的特征方程,这是一元二次方程。其判别式为:Δ=R2R2C1C1-4L1C1;当判别式小于零时,该一元二次方程没有实数解,得到的u(t)为虚数解,表现为阻尼振荡。
2022-02-16 16:42:04
5621
原创 电解电容寿命
电解电容的寿命跟电容的工作环境有关,假若一个-40~105度,5000小时的电容,所谓的5000小时是说在105度的工作环境下寿命是5000H。工作环境的温度每降低10度,寿命增加一倍。反之亦然。环境温度过高,超过了电解电容器的最高额定温度,将会使电解电容器中电解液沸腾产生过压将泄压部件产生不可逆转泄压动作造成电解液泄露,使电解电容器永久性的损坏。因此电解电容器的储存和使用温度绝不可超过额定温度。影响电解电容寿命的其他因素:电解电容器的使用寿命不仅与环境温度的高低有关,还与纹波电流的大小有关。由于热
2022-02-16 09:26:48
1359
原创 Qt 环境下的调式问题集
摘要已安装VS2015编译环境是Qt creater环境配置问题环境配置有两种:一、MSVC2015 32bit 或 MSVC2017 64bit说明:MSVC是微软公司的ui编译环境,需要提前装VS,这样可以获得对应的Compiler 和 Debugger二、MinGW 32bit说明:是Qt自带的编译环境,可以不安装VS。调试过程问题LNK2001在类中声明的函数没有定义LNK2019...
2022-01-10 15:40:42
220
原创 直流永磁电机原理
直流永磁电机原理一、电机的负载1.风机输出功率P2=K∗Q∗p60∗ηP2 = \frac{K*Q*p}{60*η}P2=60∗ηK∗Q∗pK为系数(1.1~1.5);Q为风量(m3/min);p为风压(Pa);η为风机效率二、电机的电路与磁路1.电路方程:U = E +I*(R1+R2)U为输入电压;E为电枢在磁场中切割磁力线时产生的反电动势;R1为电枢导线电阻;R2为电刷及电刷与换向器的接触电阻;I为电机的工作电流三、电机的转矩常数1.电机的转矩常数KT=p∗N∗Φa∗2∗π
2021-12-14 19:58:31
3042
原创 Ubuntu系统总结
一、Ubuntu命令Ctrl”+“Alt”+“t” 进入 Ubuntu 图形界面“Ctrl”+“d”, 退出 Ubuntu 命令行终端Ctrl”+“Alt”+“F1 图形界面系统终端Ctrl”+“Alt”+“F7 返回 Ubuntu 的图形界面su root 启用 root 账号Ctrl”+“d”, 退出 root 用户,进入 admin 用户...
2021-11-28 22:18:21
4147
原创 运算放大器
简介1.运放有两个输入端-In(反相输入端),+In(同相输入端)和一个输出端Out2.运放的供电方式分双电源供电与单电源供电两种。对于双电源供电运放,其输出可在零电压两侧变化,在差动输入电压为零时输出也可置零。采用单电源供电的运放,输出在电源与地之间的某一范围变化。特性 单位增益的内部频率补偿 高直流电压增益:110dB(Typ) 单位增益下的宽带宽:1.2MHz(Typ) 宽电源范围:3V 至 36V 双电源:±1.5V 至 ±18V EMIRR IN+: 71dB(低于
2021-11-24 15:15:43
1872
1
原创 集成式智能热管理系统
新能源汽车处于寒冷地区,如果没有温度调节,电池性能会大幅下降;使用现在常用的PTC制热技术,开空调为车内加热要损失30%以上续航里程。为解决这些问题,普通热泵空调系统已经得到不错应用了,在零下8-10度的气温下打开空调制热功能给车内和电池加热,不会太大影响整车续航里程,我们协助北汽、一汽、蔚来等已经采用的这类热泵。而使用R134a或者R1234yf,奥特佳低温热泵系统可以做到适应零下20度的环境,保证电池、车内温度合适,零下20度的应用场景基本覆盖了中国90%的地区了。目前低于零下20度的环境下还没有有效
2021-04-18 23:57:33
2590
1
原创 底层抽象
volatile /*简单的说,就是不让编译器进行优化,即每次读取或者修改值的时候,都必须重新从内存或者寄存器中读取或者修改。1、中断服务程序中修改的供其它程序检测的变量需要加volatile; 2、多任务环境下各任务间共享的标志应该加volatile; 3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;*//*一个参数既可以是const还可以是volatile吗?解释为什么 */// 是的// 一个例子是只读的状态寄存器。它是volatil
2021-03-25 23:37:38
210
原创 Q数的定义
1.Q数的定义对于16位的DSP而言,Q数定义共有16种,其简化写法分别是Q15、Q14、Q13到Q0,其数学含义可以 在其标准定义中确定。分别是Q1.15、Q2.14、Q3.13到Q16.0即标准形式为 Qn:m , 其数学意义是Q数的最大整数的绝对值<=2^(n-1);例如Q15其整数位小于等于1;Q14的整数位小于等于2;Q13的整数位小于等于4;2.Q数圆对于16位的DSP,如果是有符号数,则可以表示为图,所绘制的Q数圆,Q数圆在整个圆周上分布有2^(16)=65536个数据点,每一个数
2021-03-24 09:58:25
4355
原创 C语言精髓 指针
附录A野指针:就是指针指向的位置是不可知的,指向的位置可能不能访问,触发段错误。怎么避免野指针:在指针解引用之前,要确保指针指向一个绝对可用的空间1.在定义指针时,同时初始化为NULL;2.在解引用之前先判断这个指针是不是NULL;3.使用完后再将其赋值为NULL;4.在使用指针前,先将其赋值绑定一个可用的地址空间const: C语言中采用const修饰变量功能是对变量声明为只读特性,并保护变量值以防止修改。定义变量的同时,必须初始化。定义形式为 const int a=5;cons
2021-03-16 10:50:57
163
原创 Qt跨平台开发
摘要Ubuntu16.04交叉编译工具:arm-linux-gcc-4.3.2.tar.gzQt源码压缩包:qt-everywhere-opensource-src-4.7.1.tar.gz一.根文件系统1.配置busybox工具配置busybox的交叉编译工具 arm-none-linux-gnueabi-设置最终生成的二进制文件安装到system目录下编译busybox执行make命令后,开始编译Busybox命令编译完成后,用make install 安装二进制到…/system目录
2021-03-13 10:52:09
1714
原创 MCU的程序的存储结构详述
简介程序由一个或者多个函数组成,必须要有main()函数,作为程序入口。存储结构程序存储在RAM内存中,内存结构由高地址到低地址分别为:STACK、unused memory、HEAP、BSS、GVAR、TEXT。STACK即栈:编译期间就能确认的存储大小,在函数作用域内创建,离开作用域后销毁。HEAP即堆: 使用malloc或者new开辟的空间,需要灵活释放,否则有溢出故障。BSS段:没有被初始化的全局变量和静态变量,会被初始化为0.GVAR即数据段:初始化后的全局变量,静态变量,常量。T
2021-03-09 09:38:19
1242
原创 C++精髓 类
类定义: class + 类名class student{public : char var; void function();private: char value; };对象通过类定义出来的变量就是对象,对象就是类的实例化。1.直接定义的对象student my; // student 就是类 my就是对象2.在堆里面定义对象student *my1 =new student;删除对象(只能删除堆里面的对象)删除对象的意义:释放堆里面
2021-03-08 05:39:23
204
原创 UART和USART通信技术说明
简介UART是universal asynchronous receiver and transmitter 通用异步收/发器 ;USART:是universal synchronous asynchronous receiver and transmitter 通用同步/异步收发器。USART是UART增强行,都是单片机串口通信。 Synchronous表意为同步,同步通信需要时钟来触发数据传输,USART能够提供主动时钟。该总线双向通信,可实现全双工传输和接收数据。网络拓扑注:USA
2021-03-05 11:32:11
1510
1
原创 IIC通信协议技术说明
简介IIC Bus 最早是Philips半导体开发的两线时串行总线,经常用于微控制器和外设之间的连接。IIC通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485为半双工,SPI和UART为全双工。网络拓扑SDA:串行数据线SCL:串行时钟线数据传输每个字节传输必须带有响应位ACK,相关的响应时钟也有主机产生,在响应的时钟脉冲期间(第9个时钟周期),发送端释放SDA线,接收端把SDA拉低。SCL第9位时钟高电平信号期间,SDA拉低代表了有ACK响应位。当出现非响应NACK位:
2021-03-05 10:36:21
1093
1
原创 SPI通信协议技术说明文档
SPI通信协议技术说明文档简介:SPI通信是串口外设接口的缩写。Motorola公司推出的一种同步串行接口技术,是一种高速的、全双工、同步的通信总线。四根线分别为MOSI、MISO、CLK、CS(片选)。网络拓扑:数据传输 Data transfer starts with the **falling edge of the CS signal**. Execution of new input data is enabled on the rising edge of the CS si
2021-03-05 08:41:59
928
1
原创 Freescale的KEA系列PWM配置说明
外部时钟8MHz时钟配置1.频率选测范围(RANGE):4–24 MHz 的高频范围。2.基准频率分频RDIV 011:2563.IREFS内部基准选择:0 选择外部基准时钟4.OUTDIV1时钟分频器1:该字段设置内核/系统时钟的分频值。00 同 ICSOUTCLKOUTDIV1时钟分频器2:(该字段设置总线/FLASH 的分频值,跟随 OUTDIV1)–> 1 根据分频器 1 进行 2 分频。OUTDIV3:(该字段设置定时器(FTM0、 FTM1、 FTM2、 PWT)的分频
2021-02-22 16:54:19
993
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人