自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 天线知识点

1. 电压驻波比在天线测试中,天线馈线我们知道,,而,负责把信号传输到天线,或者把天线接收到的信号传回来。当发射机产生的信号通过馈线传输到天线时,线,然后被天线发射出去,没有任何信号反射回来。这时候,,就好像高速公路上的车能毫无阻碍地开到目的地,没有车掉头往回跑。但在实际情况中,很难达到这种完美状态。因为天线和馈线的特性很难完全匹配,就像不同车道的宽度、坡度可能不一样,这就会导致。

2025-10-19 14:25:17 276

原创 使用C语言实现strcpy字符串拷贝函数

【代码】使用C语言实现strcpy字符串拷贝函数。

2025-08-31 21:44:09 144

原创 GDB调试

关系:CMake 可以生成 Makefile,Makefile 是make工具的输入文件。选择:简单项目可用 Makefile,跨平台或大型项目优先用 CMake。

2025-08-31 17:29:29 843

原创 RS232\485

选 RS232 的场景近距离点对点通信(如 PC 与单片机开发板调试、本地设备配置);对通信速率要求不高(≤20kbps),且环境干扰小(如实验室、办公室)。选 RS485 的场景工业现场多设备组网(如传感器阵列、PLC 控制);传输距离超过 15 米(如车间到控制室、楼宇间互联);环境干扰强(如电机、高压设备附近)。

2025-08-31 17:18:42 568

原创 sizeof和strlen的区别

'\0'作为结尾的终止符,算一个字节。空字符 '\0' 结尾的字符串的长度。运算符和关键字,但不是函数。变量所占用的字节数,

2025-08-27 19:56:26 235

原创 inline内联函数

inline是让编译器把函数 "展开" 到调用处的建议,目的是用代码体积换执行速度适合简短且频繁调用的函数。inline会让编译器会尝试把函数代码直接 "复制粘贴" 到调用它的地方,而不是跳转到函数定义处执行。

2025-08-26 21:01:23 394

原创 关于线程池

..

2025-08-26 12:05:08 290

原创 多路复用IO

比如一个装电池的土壤湿度传感器,要同时监控 “湿度数据” 和 “上位机指令(比如让它改采样频率)”。用 select 设置 1 秒超时:CPU 每 1 秒醒一次,先看有没有湿度数据或指令 —— 有就处理,没有就继续睡;结果:CPU 一天里 90% 的时间都在睡觉,只有 10% 的时间在处理数据,电池能用半年;要是用轮询:CPU 每秒得问 100 次 “有数据吗”“有指令吗”,99% 的时间在做无用功,电池可能 10 天就没电了。

2025-08-26 10:19:32 858

原创 const(常量)

const允许指定一个语义约束,会强制实施这个约束,允许程序员告诉编译器。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。

2025-08-22 15:19:55 400

原创 volatile

在 C 语言嵌入式开发中,volatile关键字用于告知编译器:这个变量的值可能在任何时候被代码之外的因素修改从内存中。

2025-08-22 12:12:24 460

原创 关于c++

..

2025-08-21 12:19:29 121

原创 rtsp推流

...

2025-08-20 15:24:51 111

原创 关于 FrameBuffer(帧缓冲器)

..

2025-08-20 14:44:31 158

原创 关于PWM..

..

2025-08-20 14:41:01 81

原创 关于热插拔

..

2025-08-17 20:11:04 145

原创 TCP/IP、socket、http

简单来说,socket 通讯就是两个(或多个)节点之间通过网络进行数据交换的过程,其中一个节点发起请求,另一个节点响应请求,它们通过 socket 接口实现数据的发送和接收。在 socket 通讯中,"节点" 通常指参与网络通信的端点,也就是进行数据发送和接收的实体。每个节点在网络中都有唯一的标识,由。,这两者共同构成了网络中唯一标识一个通信端点的 “地址”,确保数据能够准确地在两者之间传输。在 socket 通讯中,客户端和服务器。端口号的作用是区分同一设备上的不同服务。IP的作用是是定位网络中的设备。

2025-08-12 13:34:44 317

原创 关于海思的内核

从 SPI Flash 地址 0x1E00000 读取 0x100000(1MB)数据到内存地址 0x82000000(读取 logo 分区内容)3. saveenv:将上述设置的环境变量(bootargs 和 bootcmd)保存到 Flash 中,确保下次启动时仍能生效。3. rtoofs 20mb:用于存储系统运行所需的文件和数据,为系统提供文件管理等功能。:启动视频层(参数包含缓冲区地址和 1920x1080 分辨率):JPEG 数据地址(logo 数据存放地址):JPEG 数据大小(1MB)

2025-08-11 18:21:20 515

原创 makefile

【代码】makefile。

2025-08-06 12:00:39 115

原创 总线设备驱动 和 字符设备驱动设备驱动

驱动的 “资源容器”

2025-08-05 21:38:23 196

原创 关于iic驱动-触摸芯片

FT5X06 触摸芯片除了 I2C 部分,还有另外两个 GPIO 分别为中断引脚和复位引脚。

2025-08-05 17:47:59 176

原创 stdin、stdout 、stderr

是三个标准的输入输出流,用于程序与外部环境(如终端、文件等)进行数据交互。它们本质上是预定义的文件指针(

2025-08-05 14:01:38 322

原创 IAP相关

stm32f103ZET6+W25Q64外部flash+AT24C02eeprom。

2025-08-04 21:48:51 963

原创 查找 / 比较 (字符串或二进制)

strstr是 “字符串专属查找工具”,依赖\0识别字符串边界,适合纯文本处理。memmem是 “通用内存查找工具”,不依赖\0,通过显式长度参数控制搜索范围,适合二进制数据或特殊字符串。在解析协议(如之前提到的 GNSS 报文)时,memmem更常用,因为协议数据可能包含\0或二进制内容,无法用strstr正确处理。// 1. 查找协议头g_gnss_msg_buf_process + index, // 起始地址g_gnss_msg_len_process - index, // 剩余长度。

2025-08-03 21:57:11 250

原创 malloc、calloc、realloc

(2)用 调整内存大小 的特殊行为

2025-08-03 21:50:08 288

原创 cpy相关函数区分

功能:将 指向的字符串(包含 )完整复制到 ,直到遇到 的 为止。 特点: 不检查 缓冲区大小,若 长度超过 容量,会导致缓冲区溢出(覆盖其他内存)。 自动复制 的结束符 到 。 适用场景:仅在确定 长度小于 时使用(如常量字符串复制)。2. :有限制的复制(部分安全) 函数原型: 功能:最多复制 个字符从 到 。 特点: 限制复制长度为 ,避免缓冲区溢出(相比 更安全)。 关键缺陷: 若 长度 >= ,

2025-08-03 21:44:02 477

原创 C语言的各种区及编译过程

(const int a,将变量修饰为常量)字符串常量、const 常量。

2025-07-28 19:37:21 122

原创 大端和小端

大端(Big-Endian)和小端(Little-Endian)是计算机存储多字节数据时的两种字节序规则,核心区别在于。

2025-07-28 19:34:34 592

原创 STM32启动流程及RTOS多任务调度与切换流程

我们要实现Bootloader区代码在运行中跳转去运行APP区代码,实现的效果应该和上电复位后直接运行APP区代码效果一样,所以通用寄存器R0-R12,存储返回地址R14 等都不需要保护起来,我们只需要关心修改。当你在 C 语言中调用一个函数(包括通过函数指针调用)时,编译器会生成对应的汇编指令,这些指令的最终目的就是修改 PC 寄存器的值,让其指向函数的入口地址。)并将 PC(程序计数器)设置为该值,是实现程序从当前区域(如 B 区)跳转到 A 区执行的核心操作。B区跳到A区是单向的,无法回头。

2025-07-28 19:30:58 1115

原创 STM32时钟源

STM32 微控制器具有灵活且复杂的时钟系统,为不同外设和核心提供精确的时钟源。

2025-07-28 19:03:58 257

原创 keil编译.bin

命令:

2025-07-25 18:16:46 103

原创 xmodem

接收方对收到的所有原始数据重新计算 CRC,若结果与收到的校验值一致,则认为数据未被篡改或出错如果不一致,则可确定数据在传输 / 存储过程中出现了错误。CRC(循环冗余校验码)校验的核心原理就是对输入的所有数据进行计算,生成一个固定长度的校验值。== 一字节报头+一字节包序号+一字节反包序号+128字节数据+2字节CRC校验。发送方将原始数据(所有字节)按 CRC 算法计算出校验值,随数据一起发送。

2025-07-24 16:57:35 161

原创 联合体知识点

应用场景:接收到16位数据需通过IIC转发,但是IIC一次收发8位数据,所以需要将16位拆为两个8位分别发送。联合体(union)和结构体(struct)的核心区别在于。

2025-07-24 16:33:12 298

原创 文件 I/O 于标准 I/O

1. 低级 I/O 直接与操作系统内核交互,无缓冲区(默认),提供更精细的控制能力,速度快。一般用于操作设备文件 /dev/...2. 标准 I/O 基于低级 I/O 封装,提供缓冲区机制和格式化操作,可以移植性高。一般用于操作普通文本文件。低级 I/O 函数标准 I/O 对应函数主要特点open()的flags参数更丰富(如O_RDONLYO_WRONLY等),mode指定文件权限;fopen()的mode是字符串(如 "r"、"w" 等)read()返回实际读取的字节数;fread()

2025-07-24 16:07:24 446

原创 关于全局标志位记录状态变化

此时可以发现,BootStateFlag 同时包含了两种状态。这种方式可以高效地在一个变量中同时记录多个独立的状态,且操作时不会影响其他已设置的标志位。

2025-07-24 10:04:31 145

原创 关于单片机的无符号整型uint32_x

足以容纳 OTA 过程中所有可能的状态(如升级阶段、错误类型、校验结果等)。(1 个字符用 4 字节存储),完全没有必要。,最多只能表示 8 个状态,可能不够用。是 “标志位变量”,通常用于。),而字符串在计算机中本质是。(通过位运算实现)。

2025-07-23 10:07:54 348

原创 SPI的收发(W25Q64外部flash 和 内部flsah)

1. SPI读:通过循环调用SPI1_ReadWriteByte,将wdata数组中的数据逐个发送。读数据时,从机返回的字节通常无意义,因此不处理返回值。因此 “发送” 和 “接收” 是绑定的(即使只需要读或写,也必须进行双向操作)。串口和SPI为全双工模式,独立收发线,默认支持同时双向传输。IIC为半双工,同一时刻只能单向传输。,SPI的收发类似于一个轮盘操作,(不影响从机输出)。

2025-07-22 16:47:01 218

原创 指针,与数组,与函数

这样修改后发现两个打印的地址差了四个字节,因为这里地址取的是(*p)的地址,也就是变量a的起始地址,即a[0]的地址。p+1改变了指向的地址,即偏移4个字节(int),即a[1]的地址。两个打印相同,皆为指针p的地址。因为p+1改变的是p存储的内容跟,即它指向的地址。指针的+ - 操作改变的是指针指向的地址,而不是指针本身。3.a的首地址+8字节偏移量(数组整体字节大小)输出结果:1.a的首地址,&a[0]2.a的第二个地址,&a[1]

2025-07-22 10:49:07 190

原创 iic子系统和时序

2. 确保在SCL为高电平时,SDA为稳定的低电平。应答信号:1. 第九个时钟脉冲前将SDA拉低。数据和应答信号都规定。要不然容易被误认为起始或停止信号。

2025-07-21 18:32:05 227

原创 系统滴答定时器配置延时函数

【代码】系统滴答定时器配置延时函数。

2025-07-21 18:20:00 462

原创 串口 及 关于输出打印信息

方法二:重新一个函数,结合va_list和vsprintf(关于。

2025-07-21 16:48:25 489

空空如也

空空如也

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

TA关注的人

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