自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OTA升级中保障代码升级完整性:防止升级过程中丢包导致程序异常运行的校验方法(CRC校验)!

首先,这个方法主要是通过使用去实现hex文件计算32位的CRC校验码,然后在将这个带有CRC校验码的hex文件同样通过软件去生成带有CRC校验码的bin文件,这样就得到带有CRC校验码的bin文件了,然后在你的bootloader程序里面通过单片机自带的CRC计算的函数接口去计算一段地址的CRC校验码,然后进行比较就好。

2024-05-05 19:09:37 718 2

原创 关于ARM-M3-M4寄存器基础知识总结

如图所示,PRIMASK寄存器为1位宽的中断屏蔽器,在为1时,会阻止不可屏蔽中断(NMI)和HardFault异常之外的所有异常(包括中断)。这13个寄存器为通用的寄存器,前面八个R0-R7为低位寄存器,许多16位指令只能访问低寄存器,R8-R12为高寄存器,可以用于32位指令和少部分16位指令。多数情况下,跳转和调用由专门的指令实现,利用数据处理指令更新PC的情况很少,但是在访问位于程序存储器中的字符数据时,PC数值非常有用,存储器读操作经常将PC作为基地址寄存器,而地址偏移由指令中的立即数生成。

2023-12-15 00:06:07 1386

原创 关于ILI9163芯片的TFT屏幕翻转问题

这个命令就是控制显示方向的,该命令定义了帧存储器的读/写扫描方向,不更改其他驱动程序的状态。图中B7:B5 = 000时为初始状态,通过改变它们的值实现不同的显示,其实一般控制B7:B6位就可以将屏幕调整。知道,通过虚拟地址到物理地址的转换,使得写入到GRAM中图片的映射方向发生了改变,从而实现屏幕显示的转换。MCU向(131,131)写入数据,实际写入到GRAM的地址是(0,0),对应LCD的左上角。MCU向(0,0)写入数据,实际写入到GRAM的地址是(0,0),对应LCD的左上角。

2023-12-05 23:56:53 838

原创 一个简单的数据区间映射方法(单片机)

本人在使用的时候会涉及到死区,所以通常会动态的减去死区的值(存在死区的时候Omax的值会改变)。

2023-12-04 22:36:11 557

原创 JLINK烧录hex文件的步骤

之前一直都是直接通过keil软件烧录,今天要配合测试工程师去测试产品开始使用到hex文件烧录,但是我是没想到测试员烧录时选择的芯片型号根本不搭边,所以没烧录进去,当时还以为是代码问题,我自个检查了一下发现软件没有问题,因为没有使用过JLINK直接烧录进单片机,我对JLINK的exe文件不是很熟悉,于是让测试教了一下我,我弄了一遍就发现问题,选择的型号不对,然后就像开头所说的换了个高版本的软件找到对应的芯片便正常。2、Target->connet,记得插上单片机烧录口,没有插上单片机所以是灰色的。

2023-12-03 02:14:59 1256 1

原创 IAP代码升级时一个奇葩的问题导致程序跳转卡死

紧接着我就把APP的大部分代码给屏蔽掉,在查看bin文件是发现时间是更新的,但是大小没变,于是我就将生成的文件全部删除,让他重新生成,在重新生成的文件夹里面并没有找到bin文件。个人比较疑惑的是网上的说法是axf文件是数据+调试信息,bin文件是纯纯的数据不带地址,hex文件是数据+地址,但是我用winhex打开bin文件的时候是可以看到一些地址的(比如栈顶指针的地址0x2开头的,还有复位中断地址0x08开头的)。开始查找bin文件生成的方法,使用通用路径的指令时可以生成bin文件。用之前的指令就不行,

2023-11-28 22:37:40 1155

原创 C++学习——构造函数

构造函数是一个特殊的函数,用于初始化一个对象的状态并分配内存以保存该状态。它是创建一个对象时自动调用的函数。通常用于变量初始化。

2023-11-20 23:50:39 61 1

原创 C++学习——类的权限与继承

1.访问权限都是针对外部的,权限就是我对外部的限制。2.不管继承方式如何,基类中的 private 成员在派生类中始终不能使用(不能在派生类的成员函数中访问或调用)。private 和 protected 继承方式会改变基类成员在派生类中的访问权限,导致继承关系复杂。3.基类和派生类存在重名成员时,派生类会使用自己新增的成员,即使参数不同也不会产生重载。

2023-11-14 00:19:31 74 1

原创 C++学习——class类

面向过程:面向过程强调的是完成既定目标需要完成哪些步骤,总结完步骤之后,把所有步骤走完也就达到了既定目标了,所以一个目标就是各个步骤的糅合的结果面向对象:面向对象强调的是完成既定目标需要哪些条件(比如需要什么物品),之后逐步满足各个条件之后,最后再进行组装合并,达到既定目标。

2023-11-05 18:50:14 38 1

原创 C++学习——关于new与delete

如果不是内置类型或者没有析构函数的类类型下使用delete去释放new[]的话会导致内存泄漏的风险,因为operator delete去释放数组时,delete只调用了一次析构函数,导致其他数据资源没有释放。此外关于new delete与new[] delete []它们最好搭配在一起使用,因为开辟多个数据空间时delete会多次调用operator delete和。在内置类型下使用delete去释放new[]是正常的。new[]与delete (编译器报异常)new[]与delete[]

2023-11-05 16:21:28 33

原创 C++学习——引用

我们只看最后一个名词就好,如果是字符指针那就是该指针指向一个字符,那顾名思义常量指针就是指向一个常量的,相当于指向的值是不能改变的;指针常量就是指针的指向已经固定,无法在改变指向。/*常量指针*//*指针常量*/类型 &变量 = 初始化对象int a;int &b = a;void swap(int& c, int& d)/*使用引用作为参数,直接交换数据*/int temp;temp = c;c = d;d = temp;

2023-11-03 00:34:27 23

原创 万事开头难

作为一个刚毕业出来工作一个月的吊毛,打算空余时间学习C++,学完C++将会接着学习QT,学习过程希望自己能坚持写博客。

2023-11-02 23:52:43 23

空空如也

空空如也

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

TA关注的人

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