自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 CPU眼里的 class vs struct

但要知道这里的函数指针变量memFunc是需要占用内存的:图片现在的结构体b不仅有两个8字节的long类型变量x和y,还有一个函数指针memFunc,所以它所占据的内存空间,从以前的16字节,扩大到了24字节。当然,虽然面向对象的效果是达到了,但显然没有用C++的class那么简洁、优雅,再加上满天飞的函数指针,可读性也会差很多。当然,这里我们只讨论C语言中的struct跟class之间的差异,因为C++中的struct,已经被强化的很厉害了,甚至可以定义构造函数和析构函数,已经非常接近class了。

2023-11-10 10:26:01 124

原创 如何将bootlooder和APP合成一个文件

另外,实际项目中,经常会使用内部flash空闲扇区保存一些设备参数信息,如校准系数、设备地址、序列号等信息,我们可以将参数信息保存为一个bin文件,通过该方式和固件合并,这样量产时将参数和固件一并写入,提高生产效率!第三步,重命名txt文件为".bat"后缀文件,即是Windows可执行脚本的文件类型 第四步,双击运行脚本,即可生成目标文件 出现任何目标文件生成失败的情况,检查相关源文件是否存在,路径是否正确。因此,在发布固件的时候,会存在BootLoader固件和App固件;前两者太繁琐,效率低下;

2023-11-10 10:08:06 377

原创 基于面向对象的思想轻量级的嵌入式框架

当然,也可以将前6个功能裁剪出来,然后运行在现有的嵌入式系统上面,这样子也可以满足实时性的需求。本篇实现的功能比较基础,但是整个框架开发的根基,后面所有扩展的功能都需要在此环境下进行开发。为了减少框架对资源的消耗,所以初步设定框架的最小时间周期为1ms,因此我们需要设置systick的定时周期为1ms,然后每次进入中断为我们的框架计数即可。关于硬件环境的搭建不多说,可以参照开发板提供的例程来搭建,板级初始化完成了调试串口和systick的初始化。/* 系统滴答程序(需挂在硬件的时间中断里边) */

2023-11-06 10:45:28 161

原创 卡尔曼滤波讲解

这种情况是有可能发生的,例如,我们基于旧的位置来估计新位置。跟踪这种关系是非常重要的,因为它带给我们更多的信息:其中一个测量值告诉了我们其它变量可能的值,这就是卡尔曼滤波的目的,尽可能地在包含不确定性的测量数据中提取更多信息!实际上,如果以正确的方式看待它,卡尔曼滤波是非常简单和容易理解的,下面我将用漂亮的图片和色彩清晰的阐述它,你只需要懂一些基本的概率和矩阵的知识就可以了。在这个例子中是位置和速度,它也可以是一个容器中液体的总量,汽车发动机的温度,用户手指在触摸板上的位置坐标,或者任何你需要跟踪的信号。

2023-10-23 21:32:03 124

原创 免费开源的在线手绘画图工具

无论你是学生、老师、设计师还是工程师,你都可以在这个网站上找到适合你的图表模板,或者从零开始自己设计。2、在下方的工具栏中,你可以选择不同的图形元素,如矩形、圆形、箭头、文本等,然后拖拽到画布上放置。无论你是为了学习、工作还是娱乐,你都可以在这个网站上发挥你的创意和想象力。4、 在顶部的菜单栏中,你可以撤销、重做、复制、粘贴、对齐、分组等操作。3、在右侧的属性栏中,你可以调整图形元素的颜色、大小、旋转角度等属性。支持图片、各种形状、对勾、高亮、框架。支持画笔、橡皮、箭头、文本框。转自《爱编程爱技术》

2023-10-20 18:34:17 469 1

原创 适用于嵌入式单片机的差分升级通用库

王瑞/mcu_bsdiff_upgrade适用于嵌入式单片机的差分升级库,通用所有单片机,如stm32、华大、复旦微、瑞萨等。适合嵌入式的差分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作成差分包,然后在设备通过还原算法将差异部分在源版本上进行还原从而升级成目标版本的过程。适合嵌入式的差分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作成差分包,然后在设备通过还原算法将差异部分在源版本上进行还原从而升级成目标版本的过程。

2023-10-10 20:21:11 715

原创 cJSON在单片机中的使用

cJSON_AddItemToObject(main_root, “我是嵌套的cJSON”, main_m_root);cJSON_AddItemToObject(main_root,“我是嵌套的数组”,main_l_root);cJSON_AddStringToObject(main_m_root, “淘宝店”, “This熏”);cJSON_AddStringToObject(main_root, “我的名字”, “老刘”);对于单片机而言,需要修改Heap_Size,不知道如何修改的,可以联系我。

2023-09-28 14:49:40 243

原创 内存中为什么分堆和栈,能否只用一种模型呢?为什么每个线程都有单独的栈

一般不建议在线程中用new开辟新内存空间,因为heap是共享的,所以一个线程在用new的时候别的所有线程都得停下来等,这样就有很大的同步代价. 如果m个线程每个线程分配n大小的内存到heap,那么就需要m次内存分配的操作,所有的线程需要等m次。在学编程的时候,我们应该都听过一句话 “如果程序结束之后仍然想要访问那一段数据就要用堆(不释放的话,程序修改后的数据仍存在)”,我想这个其实就是本题目的关键了,堆和栈都有其自己的独特性,可能你了解这两个东西,但是我还是解释下,以免别的小伙伴在看答案的时候,不知道。

2023-09-26 15:13:08 94

原创 设计模式之职责链模式

classDiagram

2023-02-06 20:58:24 105

原创 linux如何管理进程

linux如何管理进程

2023-01-08 18:29:08 70

原创 魔方还原步骤

1.黄色小花2.白色十字3.底面白色找到角块不带黄转动顶层两边放上钩下回

2023-01-08 08:36:50 5286

原创 mermaid之时序图

#mermaid-svg-QDbK2lpK8LAUwCDg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QDbK2lpK8LAUwCDg .error-icon{fill:#552222;}#mermaid-svg-QDbK2lpK8LAUwCDg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QDbK2lp

2023-01-07 16:20:40 422

原创 nullptr打印出来是什么?

笔者写了这样一段代码,运行结果尽然跟笔者想得不一样???ObjetA a_ptr= nullptr;prinf("the a ptr is %d/n", a_ptr);if(a_ptr != nullptr) {}

2022-12-11 12:01:39 213

原创 linux执行应用程序的时候报“not found“

明明程序存在,执行的时候却报"not found",原来是用另一个平台的工具链编的。

2022-11-24 21:36:38 1260

原创 设计模式之代理模式

代理模式

2022-11-02 21:36:57 62

原创 python画图工具

python画图

2022-10-28 12:11:54 508

原创 设计模式之装饰器模式

ClassDiagramA<|-B

2022-10-21 19:55:48 160

原创 c/c++程序编译过程

预处理,加入包含的头文件,生成.i文件将预处理后的文件翻译成汇编语言,生成.S文件将汇编语言翻译成机器语言,生成.o文件链接,生成可执行文件

2022-10-13 12:34:33 147

原创 UML和mermaid表示

1.类的表示第一栏是类名,第二栏是成员变量,第三栏是成员函数+:公有ˉ:私有#mermaid-svg-cECEHAwT2OA09X5s {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cECEHAwT2OA09X5s .error-icon{fill:#552222;}#mermaid-svg-cECEHAwT2OA09X5s .error-text{fill:#5

2022-10-10 08:30:57 138

原创 设计模式之简单工厂模式

就好好干哈哈哈哈哈

2022-10-09 12:33:22 50

原创 设计模式之设计原则

1.迪米特法则一个软件实体应当尽可能少的与其他实体发生相互作用

2022-10-08 17:24:17 42

原创 卡尔曼滤波

卡尔曼滤波

2022-09-30 16:25:24 78

原创 使用C++类成员函数作为C库的回调函数

typedef std::function<void(int a, int b)> DataCallback;void register_test(DataCallback cb) { int x = 5, y = 6; cb(x, y);}class A { public: A(); ~A(); void f(int k,

2022-09-28 12:45:12 802

原创 重拾数学之概率论

期望贝叶斯

2022-09-24 09:26:36 56

原创 PID的计算机实现

y=kpx+kixy=kpx+kixy=kpx+kix

2022-09-16 08:30:27 232

原创 markdown之mermaid

markdown状态转换图和时序图

2022-09-10 20:57:12 461

原创 markdown公式

markdown公式

2022-09-05 08:49:19 107

原创 c语言编译时打印宏的值

#pragma message只能打印字符串"#"可以把内容变成字符串#define TEST 5#define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x "=" PRINT_MACRO_HELPER#pragma message(PRINT_MACRO(TEST))

2022-09-01 21:30:13 1585

原创 机器学习之线性回归

线性回归

2022-08-31 11:41:52 648

原创 函数指针的使用

1.c/c++

2022-08-29 09:36:43 214

原创 常用滤波方法

1.中位值滤波的算法: 连续采样 N 次(N 取奇数)把 N 次采样值按大小排列(多采用冒泡法)取中间值为本次有效值。其优点能有效克服因偶然因素引起的波动 (脉冲) 干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果。缺点是对流量、速度等快速变化的参数不宜。...

2022-08-26 09:58:14 299

原创 A*路径规划探究

A*

2022-08-20 15:34:01 194

原创 持续集成之道

稳定分支与新功能分支原则一:永远使用最新的稳定分支,除非产品确定不再迭代。原则二:新功能分支一定周期后要转稳定分支,这个周期要约定好。子模块同步为避免临时分支构建时,子模块不同步问题,可以采用定期合入再牵出的办法,保持子模块的更新,又不影响临时分支构建。...

2022-07-21 20:58:25 58

原创 开源协议说明

1.BSD允许修改,商用,闭源

2022-07-20 20:57:38 884

原创 机器人之里程计

1.两轮小车的位置描述p(x, y, thelt)2.两轮小车的运动模型1).小车的线速度v = (vl +vr) /22).小车的运动可以微分成绕着某个点做圆周运动

2022-07-19 21:32:19 86

原创 云计算产业链

云服务器国内:腾讯,阿里,华为国外:亚马逊物联网国内:阿里,小米,涂鸦国外:亚马逊

2022-07-14 21:49:53 312

原创 嵌入式linux的gdb使用

1.gdb执行在交叉编译环境执行gdb 带debug信息的可执行文件 core文件2.依赖库的查找执行过程可能会报错Could not load shared library symbols解决办法:在gdb下执行”info sharedlibrary”,看缺少哪些库设置依赖库查找路径,可以直接在gdb下执行设置绝对路径,多个路径之间以冒汗隔开set solib-absolute-prefix...

2022-07-11 21:19:31 325

原创 linux常用信号

linux 信号

2022-07-09 23:08:12 223

原创 重拾数学之线性代数

线性代数

2022-07-09 22:49:53 161

原创 slam技术

1.定位通过点云匹配整个环境,找到机器人在环境中的位置

2022-07-09 21:08:31 78

空空如也

空空如也

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

TA关注的人

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