自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 VBA实现遍历Excel文件将指定的单元格内容拷贝到当前工作簿

选择一个文件夹,遍历其中所有Excel文件,并将每个文件指定的单元格内容拷贝到当前工作簿的目标区域。

2024-12-25 23:41:34 512 2

原创 PPT中添加多个图片

在ppt中插入多个图片并设置图片固定位置和大小在 PowerPoint VBA 中,设置图片大小和位置的单位是。1 点等于,也就是 0.352777 毫米。

2024-12-19 09:29:34 701

原创 绘制二维折线图

从B6 C6 D6开始选中3列数据绘制二维折线图。

2024-12-17 16:32:28 125

原创 关于stm32的STOP模式

【代码】关于stm32的STOP模式。

2024-12-13 17:59:20 631

原创 串口使用环形缓冲

在串口通信中,使用环形缓冲(circular buffer)是一种常见的方式,用于高效地管理串口接收和发送的数据。环形缓冲的主要优点是它允许数据在缓冲区满后从头开始重新利用,而不需要额外的内存分配,从而提升了性能和资源利用率。

2024-12-04 09:55:29 467

原创 Excel中根据某列内容拆分为工作簿

将上面的内容使用VBA会在当前test1下生成5个工作簿,工作簿名分别为TEST1.xls TEST2.xls TEST3.xls TEST4.xls TEST5.xls。2.由于生成的工作簿的名字是根据筛选内容决定的,所以注意筛选的内容要符合文件的命名,否则会出错,如:筛选的内容是 \\ 这种特殊符号,给工作簿命名的时候会出错。简介:根据A列的内容进行筛选,将筛选出来的数据生成一个新的工作簿(可以放到指定文件夹下),且工作簿名为筛选内容。使用VBA操作后是不可进行撤回的!

2024-11-28 17:25:44 762

原创 加速计读取出来的裸数据转为mg

加速计裸值转换为mg

2024-11-26 16:21:46 731

原创 printf的宏定义调试代码

如果使用 #define debug_printf(format, ...) printf(format, __VA_ARGS__) 在没有额外参数时,如调用 debug_printf("test\r\n");为了方便调试当我们调用debug_printf()函数时,打印出调用这行代码所在的行数,所以使用了__LINE__宏。在宏定义中使用 ##__VA_ARGS__,这样在 __VA_ARGS__ 为空时自动去除前面的逗号,以避免编译错误。

2024-11-01 11:08:06 216

原创 关于中断和异常的一些理解

异常向量表的理解,每个异常都有对应的异常号码即中断号,根据发生的异常号去异常向量表(数组)里面执行对应的异常服务函数。这段话的表述哪里有问题?总体上是正确的,但可以进一步澄清和细化几个方面,以增强对异常向量表的理解。

2024-09-24 16:08:33 368

原创 stm32启动文件流程

在看启动文件里的汇编代码时候有一些疑惑,这里记录一下。:这行代码通过SPACE指令分配了 512 字节的内存,这段内存的起始地址就是Heap_Mem的地址,表示堆的实际内存空间。:这个符号是在Heap_Mem之前定义的,它的值就是Heap_Mem的地址(即堆的起始地址)。:这是在堆分配的空间之后定义的符号,指向堆的末尾,即,用来表示堆的终止地址。

2024-09-24 15:45:55 414

原创 norflash和nandflash

CPU可以直接访问NOR Flash,并且能够从中执行代码。这使得NOR Flash在嵌入式系统中,特别是在需要高可靠性和快速启动的应用场景中,成为一种理想的存储器选择。与NOR Flash不同,NAND Flash 的访问方式和特性有所不同。尽管NAND Flash在存储容量和成本方面具有优势,但其访问方式与CPU的直接访问存在一些区别。NAND Flash的特点:适合大容量、低成本的数据存储,但不能直接被CPU访问或执行代码。它需要通过控制器管理,并且系统启动时通常需要将代码加载到RAM中运行。

2024-08-26 14:23:14 650

原创 程序计数器(PC)

作用:PC(Program Counter)是一个专用寄存器,用于存储当前正在执行的指令的地址。不过在ARM架构中,它通常指向下一个要取指令的地址,而不是当前正在执行的指令。 ARM7的PC行为: 在ARM7中,由于使用了三级流水线结构(取指Fetch、译指Decode、执行Execute),所以PC的值等于当前执行的指令地址加8。这是因为在执行当前指令时,下一条指令和再下一条指令已经在流水线中被取指和译指。 在ARM7中,PC通常映射到寄存器R15。

2024-08-23 14:50:43 836

原创 excel合并工作博

方法允许选择.xls.xlsx, 和.csv文件。允许一次选择多个文件。.xls.xlsx:在处理完每个文件后,源文件将被关闭以释放资源。

2024-08-14 10:53:28 556

原创 根据某列的数据计算平均值

代码读取K列的值,假设这些值代表行号(例如,K1表示开始行号,K2表示结束行号)。:对于每一对K列的值,计算从起始行到结束行之间的B列的平均值。endRow - 1用来确保范围正确,因为通常计算的是从startRow到endRow - 1的数据。:将计算的平均值输出到D列的相应行中。:如果startRow和endRow是相同的,代码将计算那一行B列的值(避免错误的范围选择)。

2024-08-14 10:52:22 409

原创 excel查找某列包含 | 的行号

Sub FindRowsWithPipeToArray() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim outputRow As Long Dim cellValue As Variant Dim results() As Long Dim resultCount As Long On Error GoTo ErrorHandler ' 错误处理

2024-08-14 10:51:17 481

原创 Cortex-M3复位序列

举例来说,如果你的堆栈区域在 0x20007C00‐0x20007FFF 之间,那么 MSP 的初始值就必须是。向量表跟随在 MSP 的初始值之后——也就是第 2 个表目。在此之前初始化 MSP 是必需的,因为可能第 1 条指令还没执行就会被 NMI 或是其。因为 CM3 使用的是向下生长的满栈,所以 MSP 的初始值必须是堆栈内存的末地址加 1。态下执行,所以向量表中的每个数值都必须把 LSB 置 1(也就是奇数)。对于不同的开发工具,需要使用不同的格式来设置 MSP 初值和复位向量——有些则由。

2024-08-01 10:56:07 250

原创 滑动窗口求平均值

【代码】滑动窗口求平均值。

2024-07-10 23:24:56 231

原创 简单滤波算法伪码

限副滤波法 由于单片机系统中可能存在随机脉冲干扰 ,或 由于变送器不可靠而将脉冲干扰引入输入端 , 从而 造成测量信号的严重失真。其基本方法是比较相邻 (n 和n -1 时刻的两个采样值 yn 和 yn -1。然后根 据经验确定两次采样允许的最大偏差。如果两次采 样值yn 和yn -1 的差值超过了所允许的最大偏差 范围 ,则认为发生可随机干扰 ,并认为后一次采样值 yn 为非法值 ,应予删除 ,删除 yn 后,可用yn -1 代替 yn。若未超过所允许的最大偏差范围 , 则认为本次 采样值有效。

2024-07-10 11:06:32 266

原创 git从master分支创建分支

git checkout mastergit checkout -b developgit push origin developgit branch --set-upstream-to=origin/develop develop

2024-06-19 16:46:19 939 1

原创 git中将所有修改的文件上传到暂存区

git add -u 命令使用

2024-02-22 11:11:04 686

原创 4.6 继承

C++中的继承是一种面向对象编程的重要特性,允许一个类(派生类/子类)使用另一个类(基类/父类)的成员和行为。关键字,基类的公有成员和保护成员在派生类中仍然是公有和保护的,基类的私有成员在派生类中不可访问。关键字,派生类的所有成员在派生类中都变为私有的,基类的私有成员在派生类中不可访问。关键字,派生类的公有和保护成员在派生类中仍然是保护的,基类的私有成员在派生类中不可访问。从基类继承过过来的表现其共性,而新增的成员体现了其个性。一类是从基类继承过来的,一类是自己增加的成员。下面图示就解释了上面的代码案例。

2023-12-21 21:53:16 893

原创 4.4 友元

Tom类的成员函数,访问了Person类内的私有属性的成员(p_age)所以函数要定义在Person类定义之后。再由于上面1的原因,就造成了Tom类成员函数的类外实现。类的成员函数可以在类的定义之后定义,但是不能在类的定义之前声明为友元。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。因为要在Person类内将Tom类的成员函数做一个友元函数声明。将一个类声明为另一个类的友元。友元函数的声明在类内,但定义在类外。1.要将Tom类的定义放在Person类的定义之前。

2023-12-21 15:15:27 421

原创 4.3 C++对象模型和this指针

this指针是一个常量指针,可以看做const type * this ,指针的指向不能修改,this = NULL这样是错的。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针。在类的非静态成员函数中返回对象本身,可使用return *this。c++通过提供特殊的对象指针,this指针,解决上述问题。this指针是隐含每一个非静态成员函数内的一种指针。在C++中,类内的成员变量和成员函数分开存储。

2023-12-20 17:29:23 1020

原创 C++知识 抽象基类

抽象基类通常包含至少一个纯虚函数,即一个没有具体实现的虚函数,通过在基类中声明纯虚函数,它强制派生类提供这个函数的具体实现。抽象基类的目的是为了提供一个通用的接口,使得不同的派生类能够共享相似的行为,并通过多态性实现对这些不同派生类的统一处理。初始化来创建纯虚函数,这样的类就成为抽象基类。就是一个抽象基类,它包含一个纯虚函数。通过在类的声明中使用。

2023-12-09 22:57:01 267

原创 C++的继承语法

C++中的继承是构建灵活且可扩展代码的强大工具。通过了解和熟练使用继承语法,开发者可以更好地利用面向对象编程的优势,实现代码的重用和组织。在设计类层次结构时,合理运用访问修饰符、多重继承以及虚函数和多态等概念,将有助于构建高效且易于维护的代码结构。

2023-12-08 22:44:38 166

原创 Qtcreator使用的简单记录

在创建项目的时候,对于基类有3种类型,分别为QWidget、QMainWindow、QDialog。QWidget是它们两个的父类,这个比较简单。Qtcreator使用的简单记录。

2023-12-07 11:58:54 477

原创 时钟控制模块

锁相环电路简单的理解。

2023-11-29 15:21:14 160

原创 busybox制作根文件系统2

上篇内容使用busybox制作好了根文件系统,接下来需要进行一些测试和功能的完善!

2023-11-22 11:40:08 153

原创 busybox制作根文件系统1

由前面了解到,根文件系统里面就是一堆的可执行文件和其他文件组成的,那么其实需要一种工具,负责“收集”这些文件,然后将其打包,给开发者可以直接拿来用。BusyBox就是实现了这样的功能。BusyBox是一个集成了大量的Linux命令和工具的软件,像ls、mv、ifconfig等命令BusyBox都会提供。BusyBox就是一个大的工具箱,这个工具箱里面集成了Linux的许多工具和命令。

2023-11-22 11:29:10 221

原创 uboot移植-野火imx6ull

野火imx6ull pro开发板tftp服务的搭建IMX6ULL开发板参考的是NXP官方的I.MX6ULL EVK开发板做的硬件。Linux的移植要复杂的多,在移植Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动Linux 内核,bootloader有很多,常用的就是 U-Boot。

2023-11-22 11:27:11 684

原创 linux上交叉编译qt库

Qt程序从X86平台Linux移植到ARM平台Linux需要做什么1.在ubuntu上使用qt的源码交叉编译出Qt库2.将编译好的库拷贝到开发板上并设置相应的环境变量(库路径啥的)前两步一劳永逸,做一次就行3.X86上写好程序代码,通过交叉工具链进行程序的交叉编译,(动态)链接交叉编译的Qt库,或者厂商提供的Qt-sdk(友善),总之不能直接用开发板文件系统里的Qt库,那个是在arm上运行的4.程序拷贝到开发板上运行。

2023-11-20 15:07:41 1631 4

原创 linux上安装qt creator

下载地址为:http://download.qt.io/archive/qt/根据自己的需求选择Qt Creator版本,这里我下载的是5.12.9,如下图所示:在ubuntu上可以使用wget命令下载安装包:2 Qt Creator 的安装2.1 给安装包添加执行权限输入下面命令给安装包添加执行权限。输入以下命令进行Qt Creator安装,默认会将qt安装在/opt目录下出现下面这种错误:是由于我在vscode编辑器中安装qt遇到的,直接在Ubuntu上执行,就条命令执行上面的命令会出现如下

2023-11-20 14:42:55 2545 4

原创 git diff相关命令

git diff此命令比较的是工作目录中当前文件和暂存区中的文件差异,也就是修改之后还没有暂存起来的变化内容。因为后续要将工作目录中的文件添加到暂存区。

2023-11-18 21:39:40 343

原创 git的简单使用

git的基本使用。清晰明了!!

2023-11-17 12:56:55 296

原创 交叉编译tslib

tslib的交叉编译,记录一下!

2023-11-01 16:39:18 276

原创 tftp服务的搭建

搭建tftp网络,嵌入式使用。

2023-10-27 22:11:53 418

原创 执行make menuconfig问题的解决

在终端输入以下命令执行。在终端输入上面命令执行时,没有成功运行,出现了如下的问题。出现这个错误提示意味着在运行命令时,系统找不到 ncurses 库。ncurses 是一种文本用户界面(TUI)库,提供了开发和使用 TUI 界面所需的工具和功能。在 Linux 系统上,很多命令行工具和系统管理工具都依赖于 ncurses 库来实现 TUI 界面。

2023-10-12 13:40:23 2573

原创 什么是读写锁

读写锁有3 种状态:读模式下的加锁状态、写模式下的加锁状态和不加锁状态,一次只有一个线程可以占有写模式的读写锁,但是可以有多个线程同时占有读模式的读写锁。因此可知,读写锁比互斥锁具有更高的并行性!

2023-09-22 20:43:24 167

原创 报式套接字通讯实例

被动端(先运行)1、取得SOCKET2、给SOCKET取得地址3、收/发消息4、关闭SOCKET主动端1、取得SOCKET2、给SOCKET取得地址(可省略)3、发/收消息4、关闭SOCKET。

2023-09-22 18:02:20 195

原创 令牌桶C语言代码实现

cps 每秒钟传输字节数burst 令牌桶内最多能传输的字节数,token的最大值token 令牌的个数之前是一个令牌(token)对应一个字节,现在将一个token变为一个cps,cps是解码速率,每攒到一个令牌,就token+=cps如果需要不同的速率,使用不同的令牌桶,将令牌桶存储在一个数组中。

2023-08-23 20:56:02 441

gcc-linaro-4.9.4-2017.01-x86-64-arm-linux-gnueabihf

gcc-linaro-4.9.4-2017.01-x86-64-arm-linux-gnueabihf

2023-10-25

gcc-arm-eabi v6.3.1 linux x86-64

gcc-arm-eabi v6.3.1 linux x86-64

2023-08-04

imx6ull启动方式-SD卡启动

做的笔记,自己复习用

2023-08-03

notepad软件的安装包

编程使用,notepad

2023-06-17

适用于Windows 64 8086汇编包含DOS和NASM

8086汇编包含DOS和NASM,配合王爽编写的汇编教材使用效果更佳

2023-06-01

gcc-arm-8.2-2018.08-x86-64-arm-eabi.tar.xz 适用于linux 64位

适用于野火imx6ull裸机开发 之前野火裸机串口编译就是出各种问题,换了这个编译器就解决了,气死我了。

2023-06-01

USB转串口驱动-CH340

USB转串口驱动-CH340,Windows 7 x64

2023-05-25

空空如也

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

TA关注的人

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