自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32低功耗LOW POWER

2025-04-07 15:40:28 55

原创 嵌入式系统中的存储机制

宏常量由于在编译时被替换,因此仅存在于代码段中。

2025-04-07 10:24:11 179

原创 ADC笔记

TC寄存器标志位(TCIFx)硬件设置这些位。在DMA_IFCR寄存器的相应位写入’1’可以清除这里对应的标志位。32位使用低16位 分辨率为12 所以要选择对齐方式 非一般为右对齐选择低12位。是否使用中断即看IE使能控制位有没有使能,使能则会在标志位转换完成置1后产生中断。4-JL[1:0]开始转换 JL为0代表一个转换通道->则从4开始转换。实时监控、需要连续数据流。SQR1中要设置L[3:0] 代表要转换的通道数目 0代表1个通道。单次转换(只转换一次) / 连续转换(自动触发下一次转换)

2025-03-29 16:23:17 468

原创 IIC的SDA和SCL数据线使用开漏输出更合适

I2C总线允许多个主设备(Master)和从设备(Slave)共存于同一总线上。I2C支持多主设备,开漏输出配合仲裁机制(通过检测SCL和SDA的电平变化)可公平分配总线控制权。这样更加公平,如果使用推挽则谁的高电平多谁更有优势。

2025-03-25 15:00:34 263

原创 快速了解SRAM/DRAM/SDRAM/DDR SDRAM 及 NOR Flash与NAND Flash、FMC与FSMC的区别

123

2025-03-24 19:51:52 112

原创 RS-232与TTL、CMOS、RS485的区别

ttl

2025-03-18 09:15:40 461

原创 单端信号与差分信号的区别

传输信号,以公共地线(GND)为参考基准判断电平高低。地线易受干扰(如电机、电源线噪声),导致信号畸变。常见于低成本设备(如传统GPIO、RS-232)。传输距离短(如RS-232通常≤15米)。单线电流突变易产生辐射,可能干扰周边设备。抗干扰能力弱,适合短距离或低干扰环境。长距离易因干扰或衰减导致数据错误。),接收端通过计算两线电压差(仅需单线,成本低、实现简单。传输相位相反的信号(如。

2025-03-17 17:12:59 305

原创 c中<string.h>

strlen:不计算\0的长度。sizeof:计算\0的长度。

2025-03-17 11:16:06 182

原创 复用输入详细介绍

复用输入是指将GPIO引脚配置为特定外设的输入功能,而不是作为普通的数字输入引脚使用。这种配置通常通过软件设置特定的寄存器来实现,允许GPIO引脚在多个外设功能之间切换。

2025-03-15 09:24:25 271

原创 CRC校验(循环冗余校验)

CRC校验是一种用于检测数据传输或存储过程中是否出现错误的技术。它通过在数据末尾附加一个校验码,接收方利用相同的算法对接收到的数据进行校验,以确认数据的完整性和准确性。CRC校验广泛应用于计算机网络通信、数据存储设备等领域,是一种高效、可靠的错误检测方法。循环冗余校验法检验不出来的错的情况:收到的位串虽然是错误的,但是恰巧能被生成多项式整除,这个时候检测不出来。计算复杂度:随着生成多项式阶数的增加,CRC校验的计算复杂度也会相应提高。

2025-03-12 21:57:15 93

原创 STM32外部中断

STM32F103ZET6 0-4每个中断线都有一个中断函数,5-9共用一个,10-15也共用一个中断服务函数,16个引脚只有7个中断服务函数。还有一种情况就是当两个或者多个中断的抢占式优先级和响应优先级相同时,那么就遵循 自然优先级,看中断向量表的中断排序,数值越小,优先级越高。)公共中断处理函数调用回调函数,而回调函数为__weak弱函数,自己需要对其重写,写入自己的逻辑代码。4.设置优先级--> HAL_NVIC_SetPriority(中断号,抢占优先级,响应优先级);

2025-03-12 20:53:00 398

原创 NPN型三极管与PNP型三极管以及NMOS与PMOS区别

NPN使用B-E电流(Ib)控制C-E电流(Ic)。正常放大时,E极电位最低,C极电位通常最高,即Vc>Vb>Ve。PNP使用E-B电流(Ib)控制E-C电流(Ic)。正常放大时,E极电位最高,C极电位通常最低,即Vc<Vb<Ve。NPN 给基极一个极小电流 发射极接地 集电极可以得到大电流。基极加低电压0,集电极与发射极开路,即三极管截止。基极高电压,集电极与发射极开路,即三极管截止;即高电位(高电平)有效。即低电位(低电平)有效。

2025-03-11 15:08:42 235

原创 TTL肖特基触发器与施密特触发器的区别

应用场景与需求匹配上。

2025-03-08 10:09:25 277

原创 STM32中输入/输出有无默认电平

上拉输入:当外部电路没有提供有效的低电平时,引脚将保持在高电平状态。下拉输入:当外部电路没有提供有效的高电平时,引脚将保持在低电平状态。模拟输入:引脚接收的是模拟信号,而不是固定的电平状态。

2025-03-06 17:46:19 381

原创 I2C多主机多从机中的仲裁机制原理

I2C多主机通信机制允许在不发生数据碰撞的情况下,通过一个确定的仲裁过程来解决总线访问冲突,确保数据传输的完整性和稳定性。仲裁机制是基于对总线上所有主机发送的信号进行线与之后的结果进行裁决,需要在开漏电路下完成。当多个主机想要启动通信时,它们都通过生成启动条件开始(将SDA线拉低,而SCL线拉高)。在启动条件之后,所有主机开始同时发送它们的从地址。当它们逐位发送数据时,它们将总线状态(SDA线)与它们正在发送的数据进行比较。

2025-03-06 17:13:56 352

原创 LORA和ZIGLETZ,DOCSIS的区别

LORA(Long Range)是一种低功耗广域网(LPWAN)无线通信技术,由美国Semtech公司开发。超远距离:LORA的传输距离远,在城镇可达2-5公里,在郊区可达15公里。低功耗:LORA模块在未工作时的休眠电流非常低,适合电池供电设备。多节点容量:LORA网络能够支持大量节点同时工作。低成本:LORA模块的硬件成本相对较低。应用场景:广泛应用于物联网领域,如智能农业、智能家居、智能城市、环境监测等。

2025-03-05 19:48:56 311

原创 通过配置寄存器的方式,同时使用多个定时器

来避免赋值的寄存器覆盖问题。

2025-03-03 10:19:57 68

原创 51单片机中reg52.h与regx52.h在进行位操作时的不同

reg52.h中不能使用例如 P2_0;这样的定义 而只能使用 P2^0;这样的定义 但是都不可以对位进行直接赋值操作;在 C 语言中是一个按位异或(bitwise XOR)运算符,而不是用于位寻址的运算符。在 C 语言中,特别是用于 8051 单片机的编程时,直接对特殊功能寄存器(SFR)的位进行赋值(如。regx52.h中可以使用 P2_0和P2^0;但是只有使用下划线的才可以对位进行赋值操作。例如P2_0 = 1;但不可以是P2^0 = 1;reg52.h中可以先定义宏。)通常是不被允许的,因为。

2025-02-28 19:37:16 290

原创 电容与电阻在嵌入式中的部分作用

电阻:防止ESD对电路板的损坏,如果只连接电容和机壳地则电路板是一个浮空系统,在做ESD测试或复杂环境电场中使用,打入电路板的电荷无法释放,积累到一定程度,会击穿放电,使得PCB上十到数百倍的安培电流,产生电磁脉冲使得电路宕机,或者击毁放电处附近的元器件,并联电阻可以慢慢释放电荷。从EMI角度:电容形成了高频路径,电路板内部产生的高频干扰会经电容流入机壳进入大地,避免了高频干扰形成的天线辐射。

2025-02-12 11:49:17 135

原创 linux命令(不断完善)

touch 创建文件 mkdir创建文件夹 白色文件 蓝色文件夹。/代表根目录 ./代表当前路径 ../当前的上一级目录 ~ 家目录。ctrl+ - 终端变小。-R 递归查找 可以往目录里进行查找文件。ctrl+shift ++ 终端变大。cp 备份更新源文件 拷贝4。d开头代表文件夹 drwxr。grep mm 查看mm。net模式与主机同ip。-开头代表文件 -rw。ctrl+q 键盘失灵。>重定向 覆盖新内容。创建多级文件夹 -p。

2025-02-05 16:12:23 199

原创 volatile的作用

软件修改变量会被编译器察觉,而由硬件或者中断修改或者多线程修改的变量不会被编译器察觉而无法修改缓冲器(寄存器)中的值,从而造成错误。可以,因为const是限制程序员(软件)无法修改该变量值,但是硬件可以修改。防止编译器优化,每次调用从内存中拿而不是从优化后的缓冲器(寄存器)中拿。一个参数既可以是const还可以是volatile吗?一个指针可以是volatile 吗?可以,指针也是变量。

2025-01-22 09:45:03 104

原创 STM32调用库函数步骤

只有定义在魔法棒中才可使用库函数。

2025-01-18 14:16:52 101

原创 c语言注意事项(不断完善版)

在C语言中,比较字符串应该使用strcmp函数而不是直接使用==。==用于比较指针是否指向相同的内存地址,而strcmp用于比较两个字符串的内容。并且strcmp判断相等返回0,应当让其与0比(strcmp(a,b)==0)动态申请空间时在函数内释放后制空则地址不会制空,需进行传址操作。- 全局数组:若不初始化,编译器将其初始化为零。结构体中字符串数组重新赋值应使用strcpy。- 局部数组:若不初始化,内容为随机值。结构体嵌套 被嵌套的放前面。函数传值 函数外不改变。函数传址 函数外改变。

2025-01-14 20:49:27 216

原创 算法的时间复杂度及空间复杂度

常 对 ----------------------幂------------------------ 指 阶。时间从小到大以此为: 常 对 幂 指 阶。如果是多层循环 则只需关注最深层次的循环。

2025-01-14 19:54:57 149

原创 51中DS1302芯片读时序末尾为什么需将IO致0

在通信结束时未拉低 DS1302_IO,如果系统中有其他设备共享该引脚(如另一个传感器),引脚悬空可能导致其他设备的操作失败,进一步干扰主控对 DS1302 的读取。如果 DS1302_IO 未被拉低且引脚悬空,外部环境中的电磁干扰可能使得引脚状态随机抖动,主控在读取数据时可能收到错误的值。如果不主动将 DS1302_IO 拉低,它可能处于悬空状态,受到噪声或外部电路的干扰,导致错误的数据传输。下一次主控发送数据时,由于 IO 引脚未被正确释放,DS1302 会误判通信起始,导致时序错误。

2025-01-13 14:23:57 377

原创 串口通信相关寄存器图

SMOD:波特率倍增位。在串口方式 1、方式 2、方式 3 时,波特率与 SMOD 有。关,当 SMOD=1 时,波特率提高一倍。复位时,SMOD=0。//将接收到的数据放入到发送寄存器。//设置计数器工作方式 2。//设置为工作方式 1。//波特率为 9600。//清除接收中断标志位。//清除发送完成标志位。//计数器初始值设置。//串口通信中断函数。//存储接收到的数据。//等待发送数据完成。

2025-01-01 15:28:02 315

原创 函数传值与传址

结构体变量的传递机制是值传递,而非地址传递。这一点跟数组的赋值不同,使用赋值运算符复制数组,不会复制数据,只是传递地址。使用char *name;字符不可变性,无法修改-> 指向相同内存地址。函数传值:函数外向函数内传参传递的是。函数传址:函数内修改函数外的。

2024-12-24 20:35:05 95

原创 指针注意事项

/指第1行的第二位元素的地址。// ptr是一个指向包含10个整数的数组的指针。a+1 为数组a的下一个元素 &a+1 为数组下一行的元素。当指针变量里存放一个数组的首地址时,此指针变量称为指向数组的指针变量,简称数组指针。//定义一个3个元素的数组,元素都是整型指针。

2024-12-23 19:48:36 259

原创 c语言中比较字符串

在C语言中,比较字符串应该使用strcmp函数而不是直接使用==。==用于比较指针是否指向相同的内存地址,而strcmp用于比较两个字符串的内容。并且strcmp判断相等返回0,应当让其与0比(strcmp(a,b)==0)

2024-12-18 20:07:40 155

原创 c模块化编程注意事项

1.对方法进行模块管理,将其添加到一个新的c文件中;#ifndef __大写方法名_H__#define __大写方法名_H__2.创建头文件,一下为固定格式。

2024-12-16 20:03:49 115

原创 c中按位左(右)移

标准规定,无符号值执行的所有位移操作都是逻辑移位,对于有符号值,到底采用逻辑移位还是算术移位取决于编译器。按位右移:看符号位,正数为逻辑运算(补0),负数可能为算数移位(根据符号位补)按位左移:补码左移,移位后最高位为1,需要逆运算为源码;

2024-12-12 11:06:32 128

原创 c中对数组的认识

数组名也代表着数组的地址,即第一个元素的地址,即 arry[0] 的地址。指针,指向一个地址,一旦确定,就不能再指向其他地方。

2024-12-11 20:19:45 112

原创 位域如何计算sizeof()的字节大小

(1)当位域中的成员没有赋予位数时,结构体的大小等于所有成员类型的总和(字节数)。(2)当结构体中的成员被赋予位数时:①当所有成员是同一类型时,结构体的大小等于该类型的大小。②当结构体中有不同的类型的成员时,该结构体的大小等于成员中最大类型的大小乘于所有类型的种类(不考虑各个类型的数量)。注:当赋予的位数大于当前类型的字节数时,按最大的类型字节数扩增。

2024-12-11 15:32:40 91

原创 c中按位与、按位或、按位异或 快速理解

按位与(&)运算:位与位进行比较,如果都为1,则为1,否则为0;按位或(|)运算:位与位进行比较,如果都为0,则为0,否则为1;按位异或运算:位与位进行比较,相同为0,不同为1;

2024-12-10 19:47:18 145

原创 c中 P=*i 和 P=&i 代表的意思

是取值的意思,&是取地址的意思。P = &i : 代表i所对应的。P = *i :代表i所对应。

2024-12-09 21:01:30 171

原创 c中变量声明和定义变量的区别

声明变量:(extern)即这个变量已经在别的地方定义过了,声明变量可以声明多次,可在不同文件内声明已经定义的变量,并没有分配内存。定义变量:定义的变量名只能再一定区域内定义一次,定义时为其分配内存。

2024-12-09 17:37:37 84

原创 mp中枚举类使用

当后端定义的枚举 需要通过接口返回给前端时,前端需要拿到枚举中定义的所有属性时,可以在枚举上增加。@JSONType(serializeEnumAsJavaBean = true)注解,来实现。当后端想要枚举中的特定属性时可以在该属性上加(枚举默认前端的时枚举名称)并在对应想要转换的变量上加@EnumValue注解即可实现。如何使用PO类中的枚举变量与数据库字段转换?@JsonValue 注解来实现。使用枚举名称代表相应变量。

2024-10-29 22:11:03 201

原创 mp逻辑删除

逻辑删除本身有自己的问题(如查询效率下降)所以不推荐使用,所以可以使用表单迁移的方式,在删除之前将数据添加到一张新的表中。逻辑删除后数据库对应的逻辑字段值发生变化,在做后续的查询等相应操作配置后自动需要携带条件。# 代表已删除的值 (默认为1,可以不配置)# 代表未删除的值(默认为0,可以不配置)delFlag为数据库对应的一个逻辑字段。# 逻辑删除的字段(

2024-10-29 21:38:53 247

原创 MyBatisPlus插件使用方式

数据库名?

2024-10-29 19:28:35 199

原创 Java包装类为什么要使用equals进行判断

因为包装类是存在缓冲区的,如果超过缓冲区后,再次使用!=判断,这是它比对的是堆中的内存地址,虽然此时堆内存中的值是相同的,但是地址是不同的所以依然返回false。

2024-10-27 20:19:19 79

空空如也

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

TA关注的人

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