- 博客(94)
- 收藏
- 关注
原创 传感器的中断 Latch、中断状态寄存器、中断读取与保持时间
这种情况下,MCU 不处理也没关系,引脚会自己跟着物理条件走。但缺点是:如果事件很短(比如一个脉冲),MCU 可能来不及看到。:事件条件一旦不满足,中断信号就自动撤销。比如“超过阈值才触发”,那么加速度回落到阈值以下,信号就没了。决定,不是 MCU 决定的。,比如 10µs、1ms,然后自动变低,不管你有没有读。Latch(锁存)的核心作用是:当传感器检测到事件后,中断引脚上的高\低电平,通常来自传感器内部的一个。这是硬件定时器产生的,跟 MCU 无关。,因为引脚电平是多个事件的“或”逻辑。
2026-10-10 16:05:10
149
原创 关闭单个通道的中断
EXTI0 → EXTI0_IRQn (1根线独享) EXTI1 → EXTI1_IRQn (1根线独享) EXTI2 → EXTI2_IRQn (1根线独享) EXTI3 → EXTI3_IRQn (1根线独享) EXTI4 → EXTI4_IRQn (1根线独享) EXTI5~9 → EXTI9_5_IRQn (5根线共享) EXTI10~15 → EXTI15_10_IRQn (6根线共享)通道5 = PD15 → EXTI15,通道7 = PD14 → EXTI14,两个共用。
2026-08-03 17:09:21
166
原创 keil使用Jlink下载时出现No Cortex-M SW Device Found 解决方法
环境:keil开发环境,Jlink烧录器,LE501x芯片,在使用ble_uart工程是可以正常烧录并运行的,排除接线错误。文件复制一份并修改文件名为le501x_flash_algo.FLM,并将le501x_flash_algo.FLM文件拷贝到keil安装目录下的。经排查是因为下图中这个JTAG Device Chain里没有识别到导致的,将JTAG改为SW后就能识别到了。这个原因是因为下面Flash Download这里缺少一个文件,这个文件提供了Flash 驱动算法(烧录方法)
2025-12-24 17:47:50
882
原创 NMOS管和PMOS管
对于PMOS,载流子为空穴带正电荷,故电流方向是源极到漏极。对于NMOS,载流子为电子,故电流方向是漏极到源极。看箭头,箭头向里的是NMOS,箭头向外是PMOS管。箭头的与源极相连,表示衬底中电子的移动方向。对于NMOS,当栅极为高电平导通。对于PMOS,当栅极为低电平导通。载流子总是从源极流向漏极,
2025-09-23 13:49:38
397
原创 stm32 g031g8 flash擦除函数被坑
先记录一下在擦除的时候由于调用了这个FLASH_PageErase(FLASH_BANK_1, secpos);导致擦除不成功,写入失败。
2025-04-29 13:43:51
512
原创 VBA实现遍历Excel文件将指定的单元格内容拷贝到当前工作簿
选择一个文件夹,遍历其中所有Excel文件,并将每个文件指定的单元格内容拷贝到当前工作簿的目标区域。
2024-12-25 23:41:34
1017
2
原创 PPT中添加多个图片
在ppt中插入多个图片并设置图片固定位置和大小在 PowerPoint VBA 中,设置图片大小和位置的单位是。1 点等于,也就是 0.352777 毫米。
2024-12-19 09:29:34
950
原创 串口使用环形缓冲
在串口通信中,使用环形缓冲(circular buffer)是一种常见的方式,用于高效地管理串口接收和发送的数据。环形缓冲的主要优点是它允许数据在缓冲区满后从头开始重新利用,而不需要额外的内存分配,从而提升了性能和资源利用率。
2024-12-04 09:55:29
1000
原创 Excel中根据某列内容拆分为工作簿
将上面的内容使用VBA会在当前test1下生成5个工作簿,工作簿名分别为TEST1.xls TEST2.xls TEST3.xls TEST4.xls TEST5.xls。2.由于生成的工作簿的名字是根据筛选内容决定的,所以注意筛选的内容要符合文件的命名,否则会出错,如:筛选的内容是 \\ 这种特殊符号,给工作簿命名的时候会出错。简介:根据A列的内容进行筛选,将筛选出来的数据生成一个新的工作簿(可以放到指定文件夹下),且工作簿名为筛选内容。使用VBA操作后是不可进行撤回的!
2024-11-28 17:25:44
1456
原创 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
330
原创 关于中断和异常的一些理解
异常向量表的理解,每个异常都有对应的异常号码即中断号,根据发生的异常号去异常向量表(数组)里面执行对应的异常服务函数。这段话的表述哪里有问题?总体上是正确的,但可以进一步澄清和细化几个方面,以增强对异常向量表的理解。
2024-09-24 16:08:33
457
原创 stm32启动文件流程
在看启动文件里的汇编代码时候有一些疑惑,这里记录一下。:这行代码通过SPACE指令分配了 512 字节的内存,这段内存的起始地址就是Heap_Mem的地址,表示堆的实际内存空间。:这个符号是在Heap_Mem之前定义的,它的值就是Heap_Mem的地址(即堆的起始地址)。:这是在堆分配的空间之后定义的符号,指向堆的末尾,即,用来表示堆的终止地址。
2024-09-24 15:45:55
567
原创 norflash和nandflash
CPU可以直接访问NOR Flash,并且能够从中执行代码。这使得NOR Flash在嵌入式系统中,特别是在需要高可靠性和快速启动的应用场景中,成为一种理想的存储器选择。与NOR Flash不同,NAND Flash 的访问方式和特性有所不同。尽管NAND Flash在存储容量和成本方面具有优势,但其访问方式与CPU的直接访问存在一些区别。NAND Flash的特点:适合大容量、低成本的数据存储,但不能直接被CPU访问或执行代码。它需要通过控制器管理,并且系统启动时通常需要将代码加载到RAM中运行。
2024-08-26 14:23:14
850
原创 excel合并工作博
方法允许选择.xls.xlsx, 和.csv文件。允许一次选择多个文件。.xls.xlsx:在处理完每个文件后,源文件将被关闭以释放资源。
2024-08-14 10:53:28
670
原创 根据某列的数据计算平均值
代码读取K列的值,假设这些值代表行号(例如,K1表示开始行号,K2表示结束行号)。:对于每一对K列的值,计算从起始行到结束行之间的B列的平均值。endRow - 1用来确保范围正确,因为通常计算的是从startRow到endRow - 1的数据。:将计算的平均值输出到D列的相应行中。:如果startRow和endRow是相同的,代码将计算那一行B列的值(避免错误的范围选择)。
2024-08-14 10:52:22
567
原创 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
743
原创 Cortex-M3复位序列
举例来说,如果你的堆栈区域在 0x20007C00‐0x20007FFF 之间,那么 MSP 的初始值就必须是。向量表跟随在 MSP 的初始值之后——也就是第 2 个表目。在此之前初始化 MSP 是必需的,因为可能第 1 条指令还没执行就会被 NMI 或是其。因为 CM3 使用的是向下生长的满栈,所以 MSP 的初始值必须是堆栈内存的末地址加 1。态下执行,所以向量表中的每个数值都必须把 LSB 置 1(也就是奇数)。对于不同的开发工具,需要使用不同的格式来设置 MSP 初值和复位向量——有些则由。
2024-08-01 10:56:07
347
原创 简单滤波算法伪码
限副滤波法 由于单片机系统中可能存在随机脉冲干扰 ,或 由于变送器不可靠而将脉冲干扰引入输入端 , 从而 造成测量信号的严重失真。其基本方法是比较相邻 (n 和n -1 时刻的两个采样值 yn 和 yn -1。然后根 据经验确定两次采样允许的最大偏差。如果两次采 样值yn 和yn -1 的差值超过了所允许的最大偏差 范围 ,则认为发生可随机干扰 ,并认为后一次采样值 yn 为非法值 ,应予删除 ,删除 yn 后,可用yn -1 代替 yn。若未超过所允许的最大偏差范围 , 则认为本次 采样值有效。
2024-07-10 11:06:32
329
原创 git从master分支创建分支
git checkout mastergit checkout -b developgit push origin developgit branch --set-upstream-to=origin/develop develop
2024-06-19 16:46:19
1214
1
原创 4.6 继承
C++中的继承是一种面向对象编程的重要特性,允许一个类(派生类/子类)使用另一个类(基类/父类)的成员和行为。关键字,基类的公有成员和保护成员在派生类中仍然是公有和保护的,基类的私有成员在派生类中不可访问。关键字,派生类的所有成员在派生类中都变为私有的,基类的私有成员在派生类中不可访问。关键字,派生类的公有和保护成员在派生类中仍然是保护的,基类的私有成员在派生类中不可访问。从基类继承过过来的表现其共性,而新增的成员体现了其个性。一类是从基类继承过来的,一类是自己增加的成员。下面图示就解释了上面的代码案例。
2023-12-21 21:53:16
964
原创 4.4 友元
Tom类的成员函数,访问了Person类内的私有属性的成员(p_age)所以函数要定义在Person类定义之后。再由于上面1的原因,就造成了Tom类成员函数的类外实现。类的成员函数可以在类的定义之后定义,但是不能在类的定义之前声明为友元。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。因为要在Person类内将Tom类的成员函数做一个友元函数声明。将一个类声明为另一个类的友元。友元函数的声明在类内,但定义在类外。1.要将Tom类的定义放在Person类的定义之前。
2023-12-21 15:15:27
485
原创 4.3 C++对象模型和this指针
this指针是一个常量指针,可以看做const type * this ,指针的指向不能修改,this = NULL这样是错的。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针。在类的非静态成员函数中返回对象本身,可使用return *this。c++通过提供特殊的对象指针,this指针,解决上述问题。this指针是隐含每一个非静态成员函数内的一种指针。在C++中,类内的成员变量和成员函数分开存储。
2023-12-20 17:29:23
1101
原创 C++知识 抽象基类
抽象基类通常包含至少一个纯虚函数,即一个没有具体实现的虚函数,通过在基类中声明纯虚函数,它强制派生类提供这个函数的具体实现。抽象基类的目的是为了提供一个通用的接口,使得不同的派生类能够共享相似的行为,并通过多态性实现对这些不同派生类的统一处理。初始化来创建纯虚函数,这样的类就成为抽象基类。就是一个抽象基类,它包含一个纯虚函数。通过在类的声明中使用。
2023-12-09 22:57:01
457
原创 C++的继承语法
C++中的继承是构建灵活且可扩展代码的强大工具。通过了解和熟练使用继承语法,开发者可以更好地利用面向对象编程的优势,实现代码的重用和组织。在设计类层次结构时,合理运用访问修饰符、多重继承以及虚函数和多态等概念,将有助于构建高效且易于维护的代码结构。
2023-12-08 22:44:38
262
原创 Qtcreator使用的简单记录
在创建项目的时候,对于基类有3种类型,分别为QWidget、QMainWindow、QDialog。QWidget是它们两个的父类,这个比较简单。Qtcreator使用的简单记录。
2023-12-07 11:58:54
542
gcc-linaro-4.9.4-2017.01-x86-64-arm-linux-gnueabihf
2023-10-25
gcc-arm-8.2-2018.08-x86-64-arm-eabi.tar.xz 适用于linux 64位
2023-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅