- 博客(22)
- 收藏
- 关注
原创 PID控制算法c实现
NOTE]PID控制的目标是让系统平稳、精确的达到设定的目标值IpKp∗Ek∗dtIiKi∗ΣEk))∗dtIdKd∗dtEk−Ek−1。
2025-12-11 16:08:36
1021
原创 PID控制算法与代码实现
变量解释::可以配置是否使能P、I、D、积分限幅、微分先行、输出限幅功能3.2 ⚙️ 关键代码逻辑 (Implementation Details)函数原型:编程步骤解析:函数定义(详细注释):
2025-12-03 16:42:54
584
原创 c++函数进阶
特性C 语言C++核心优势默认参数不支持支持简化函数调用,减少冗余代码。占位参数不支持支持接口兼容,操作符重载区分前后置。函数重载不支持(函数名唯一)支持静态多态的一种,同名函数处理不同数据,提高代码复用性。
2025-11-27 14:58:39
749
原创 c++中的引用
引用就是别名,操作引用就是操作原变量。必须初始化,且不可改变指向。最佳实践函数参数若需要修改,用Type&。函数参数若只读且对象较大,用。避免使用裸指针,能用引用代替的地方尽量用引用。
2025-11-26 14:21:57
632
原创 姿态解算基础-坐标系定义、旋转矩阵、加速度解算欧拉角
方向余弦矩阵 (DCM)旋转矩阵。DCM名字强调构造过程:由坐标轴夹角的余弦组成。旋转矩阵名字强调功能:用于旋转向量或转换坐标。它们都有 9 个元素,但在描述 3D 旋转时都有 6 个冗余约束(因为只有 3 个自由度),这使得它们在数值计算更新时不如四元数(Quaternion)高效,但它们在直观理解“当前朝向”时是最方便的。
2025-11-26 14:21:40
873
原创 c++中的new操作符
new用于在堆上分配内存并初始化对象。必须使用delete释放内存,否则会导致泄漏。数组分配需用new[]和delete[]。最佳实践:尽量避免直接使用new,改用或等智能指针,以确保内存安全。
2025-11-25 22:22:17
750
原创 c/c++程序编译的预处理过程(c/c++编译器在真正编译代码之前会进行的工作)
define用于定义宏,它本质上是一种简单的文本替换。对象式宏(Object-like Macro):定义一个常量或符号。预处理后变成:int buffer[1024];函数式宏(Function-like Macro):定义一个类似函数调用的宏。(a) : (b))预处理后变成:int result = ((x) > (y)?(x) : (y));重要陷阱:函数式宏是纯粹的文本替换,不考虑类型和作用域,容易引发意想不到的副作用(例如会导致i或j。
2025-06-23 17:04:43
1000
原创 移植mavlink2到stm32f427(pixhawk2.4.8)详细教程及代码
至此,你已经完成了移植,下面只需编写mavlink应用代码即可。
2025-06-21 18:39:52
1237
原创 HMC5883L磁力计详细介绍、驱动代码(基于stm32f427)
HMC5883L 是一款基于各向异性磁阻(AMR)技术的三轴磁力计,能够测量 X、Y、Z 三个轴向的磁场强度,输出数字信号。
2025-06-09 16:04:50
1425
原创 pixhawk无法连接QGC、Mission Planner问题解决方法(地面站识别不到pixhawk对应串口)
问题的起因是之前通过stlink往pixhawk烧录过自己写的一些程序,刚一开始,虽然烧录后地面站也无法识别pixhawk串口,但只需用stlink重新给芯片刷bootloder就可以重新连接地面站,但过了一段时间又试了试,发现即使刷bootloder也无法识别,不知道咋回事,可能我在写程序的时候不小心破坏了一些固件吧,反正现在pixhawk变砖了。之后在网上收集了一些资料,发现只需按照同。将固件加载到没有现有 ArduPilot 固件的板上的方法重新烧写一遍固件即可解决。
2025-03-26 16:56:43
1037
原创 GPIO开漏输出模式下keil逻辑分析仪不显示波形问题
由于开漏输出在高电平状态是高阻态(输出引脚的等效电阻非常高,对外呈现出既不是高电平也不是低电平的状态,类似于一个断开的开关),逻辑分析仪内部的输入电路可能无法正确检测到这个状态。逻辑分析仪的输入一般期望连接到具有明确电平驱动能力的信号源,而开漏输出的高阻态不符合这种要求,除非外部连接了合适的上拉电阻并且上拉到逻辑分析仪能够识别的有效电平。开漏输出模式下,输出级晶体管的漏极是开路的。当输出为高电平时,输出引脚实际上是处于高阻态,需要外部上拉电阻来将电平拉高;当输出为低电平时,输出引脚直接连接到地。
2024-12-06 13:40:21
485
原创 TortoiseGit右键菜单不显示的问题
在电脑杀毒软件中,找到TortoiseGit,将上图中的TortoiseGit右键菜单打开即可。
2024-10-28 15:56:56
1113
1
原创 TortoiseGit图标不显示的问题
最近在使用TortoiseGit时,在Git本地库中突然在不显示状态图标了,在网上查了下原因,大多数说是因为注册表中TortoiseGit排序问题,但很奇怪我注册表相关目录中并没有TortoiseGit的相关项,按照网上说的方法添加相关项后没多久项就被删除了,图标仍无法显示。
2024-10-28 12:28:54
1226
原创 内存分配方式总结
全局变量和静态变量:已初始化的全局和静态变量,存放在数据段(已初始化的全局变量和静态变量存放在data段,未初始化的存放在bss段)。在程序编译时分配内存,无需手动管理内存,分配和释放由编译器处理。
2024-10-18 22:29:47
395
原创 FreeRTOS动态创建任务函数(xTaskCreate)内部实现
任务控制块tskTCB:FreeRTOS会为每个创建的任务分配一个任务控制块,任务控制块是一个结构体变量,储存了任务状态信息。
2024-10-18 21:03:18
249
原创 编写按键检测例程时遇见的一个bug(按键检测不灵敏)
在编写按键检测例程时,遇到了这样一个bug:按键在按下时不灵敏,有时在按下按键后,对应程序并无反应。经检查,硬件并无问题,编写的按键检测函数Key_CheckPress也无问题,而且如果把主函数改为只检测一个按键是否按下按键不灵敏的问题就没了。
2024-10-17 21:16:42
331
原创 stm32基于SysTick编写delay函数。
SysTick是CM3内核中的外设,是一个24位递减的计数器,每1/SYSCLC递减一次,其中,SYSCLC是SysTick的时钟,在stm32f1系列单片机中,可以设置为72M(时钟源位HCLK)、9M(HCLC的8分频)。这里只列举几个重要寄存器,图片摘自野火stm32库开发实战指南:前面说到SysTick每1/SYSCLC递减一次是指:SysTick从重装载寄存器的RELOAD值开始每次递减1,假设SYSCLC设置位9MHZ,则SysTick每1/9M递减一次,基于此,SysTick从RELOAD递减
2024-09-08 17:03:19
746
原创 内存对齐与__align()关键字
内存对齐是指在内存中对数据进行存储的一种方式,通常是使数据的起始地址符合特定的规则存储,例如使数据的起始地址按照4字节边界对齐,即数据的起始地址可以被4字节整除。
2024-08-29 15:04:34
369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅