- 博客(77)
- 收藏
- 关注
原创 TCP/IP、socket、http
简单来说,socket 通讯就是两个(或多个)节点之间通过网络进行数据交换的过程,其中一个节点发起请求,另一个节点响应请求,它们通过 socket 接口实现数据的发送和接收。在 socket 通讯中,"节点" 通常指参与网络通信的端点,也就是进行数据发送和接收的实体。每个节点在网络中都有唯一的标识,由。,这两者共同构成了网络中唯一标识一个通信端点的 “地址”,确保数据能够准确地在两者之间传输。在 socket 通讯中,客户端和服务器。端口号的作用是区分同一设备上的不同服务。IP的作用是是定位网络中的设备。
2025-08-12 13:34:44
189
原创 关于海思的内核
从 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
427
原创 stdin、stdout 、stderr
是三个标准的输入输出流,用于程序与外部环境(如终端、文件等)进行数据交互。它们本质上是预定义的文件指针(
2025-08-05 14:01:38
183
原创 查找位置函数
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
212
原创 cpy相关函数区分
功能:将 指向的字符串(包含 )完整复制到 ,直到遇到 的 为止。 特点: 不检查 缓冲区大小,若 长度超过 容量,会导致缓冲区溢出(覆盖其他内存)。 自动复制 的结束符 到 。 适用场景:仅在确定 长度小于 时使用(如常量字符串复制)。2. :有限制的复制(部分安全) 函数原型: 功能:最多复制 个字符从 到 。 特点: 限制复制长度为 ,避免缓冲区溢出(相比 更安全)。 关键缺陷: 若 长度 >= ,
2025-08-03 21:44:02
429
原创 STM32启动流程
我们要实现Bootloader区代码在运行中跳转去运行APP区代码,实现的效果应该和上电复位后直接运行APP区代码效果一样,所以通用寄存器R0-R12,存储返回地址R14 等都不需要保护起来,我们只需要关心修改。当你在 C 语言中调用一个函数(包括通过函数指针调用)时,编译器会生成对应的汇编指令,这些指令的最终目的就是修改 PC 寄存器的值,让其指向函数的入口地址。)并将 PC(程序计数器)设置为该值,是实现程序从当前区域(如 B 区)跳转到 A 区执行的核心操作。B区跳到A区是单向的,无法回头。
2025-07-28 19:30:58
886
原创 xmodem
接收方对收到的所有原始数据重新计算 CRC,若结果与收到的校验值一致,则认为数据未被篡改或出错如果不一致,则可确定数据在传输 / 存储过程中出现了错误。CRC(循环冗余校验码)校验的核心原理就是对输入的所有数据进行计算,生成一个固定长度的校验值。== 一字节报头+一字节包序号+一字节反包序号+128字节数据+2字节CRC校验。发送方将原始数据(所有字节)按 CRC 算法计算出校验值,随数据一起发送。
2025-07-24 16:57:35
119
原创 联合体知识点
应用场景:接收到16位数据需通过IIC转发,但是IIC一次收发8位数据,所以需要将16位拆为两个8位分别发送。联合体(union)和结构体(struct)的核心区别在于。
2025-07-24 16:33:12
250
原创 文件 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
403
原创 关于全局标志位记录状态变化
此时可以发现,BootStateFlag 同时包含了两种状态。这种方式可以高效地在一个变量中同时记录多个独立的状态,且操作时不会影响其他已设置的标志位。
2025-07-24 10:04:31
110
原创 关于单片机的无符号整型uint32_x
足以容纳 OTA 过程中所有可能的状态(如升级阶段、错误类型、校验结果等)。(1 个字符用 4 字节存储),完全没有必要。,最多只能表示 8 个状态,可能不够用。是 “标志位变量”,通常用于。),而字符串在计算机中本质是。(通过位运算实现)。
2025-07-23 10:07:54
277
原创 SPI的收发(W25Q64外部flash 和 内部flsah)
1. SPI读:通过循环调用SPI1_ReadWriteByte,将wdata数组中的数据逐个发送。读数据时,从机返回的字节通常无意义,因此不处理返回值。因此 “发送” 和 “接收” 是绑定的(即使只需要读或写,也必须进行双向操作)。串口和SPI为全双工模式,独立收发线,默认支持同时双向传输。IIC为半双工,同一时刻只能单向传输。,SPI的收发类似于一个轮盘操作,(不影响从机输出)。
2025-07-22 16:47:01
168
原创 关于指针与数组。普通指针、数组指针、指针数组
这样修改后发现两个打印的地址差了四个字节,因为这里地址取的是(*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
151
原创 iic子系统和时序
2. 确保在SCL为高电平时,SDA为稳定的低电平。应答信号:1. 第九个时钟脉冲前将SDA拉低。数据和应答信号都规定。要不然容易被误认为起始或停止信号。
2025-07-21 18:32:05
142
原创 关于抢占式优先级,保证每个任务都可以执行
**`vTaskDelayUntil()` 比 `vTaskDelay()` 更适合周期性任务**(避免时间漂移)。- **高优先级任务必须让出 CPU**(`vTaskDelay()` 或事件驱动),否则低优先级任务会被饿死。- **Task4(低优先级)**:模拟通信任务(如CAN发送),每1000ms执行一次。- **Task3(中优先级)**:模拟状态计算(如SOC估算),每500ms执行一次。- **`vTaskDelayUntil()`**:确保任务按固定周期执行,避免时间漂移。
2025-07-20 14:52:53
658
原创 各种通讯模块输入输出配置
**浮空输入(GPIO_MODE_INPUT_FLOATING)** 或 **上拉输入(GPIO_MODE_INPUT_PULLUP)**- **浮空输入(GPIO_MODE_INPUT_FLOATING)** 或 **上拉输入(GPIO_MODE_INPUT_PULLUP)**- **开漏输出(GPIO_MODE_OUTPUT_OD)** + **上拉电阻**(外部或内部)- 原因:I²C是开漏总线,支持多设备线与逻辑。- **推挽输出(GPIO_MODE_OUTPUT_PP)**(主机模式)
2025-07-20 13:15:27
291
原创 linux中断
中断是指在 CPU 正常运行期间,由外部或内部事件引起的一种机制。当中断发生时,CPU会停止当前正在执行的程序,并转而执行触发该中断的中断处理程序。处理完中断处理程序后,CPU 会返回到中断发生的地方,继续执行被中断的程序。中断机制允许 CPU 在实时响应外部或内部事件的同时,保持对其他任务的处理能力。中断的执行需要快速响应,但并不是所有中断都能迅速完成。此外,Linux 中的中断不支持嵌套,意味着在正式处理中断之前会屏蔽其他中断,直到中断处理完成后再重新允许接收中断,
2025-07-14 15:01:35
245
原创 设备树知识点
内容的学习中,我们使用 platform_device 结构体来对硬件设备进行描述,这是一种传统的平台总线设备描述方式。每个 platform_device 结构表示一个特定的硬件设备,并通过注册到平台总线上来使得内核能够与该设备进行通信和交互。为了克制设备平台所导致的代码重复杂乱,进而引入。名称、资源(如内存地址、中断号等)、设备驱动程序等信息。
2025-07-14 10:12:33
137
原创 lora网关
若利用延时处理按键消抖,hal库里用systick中断实现延时,如果想在按键触发中断中使用延时,就得把默认的systick优先级由默认的15升高,这里systick升到2,gpio的按键为3.所需配置的引脚,SPI传输,PG13复位(输出引脚,推挽输出),PE2忙碌(输入引脚,浮空输入)PE6PE5输出。
2025-07-11 20:21:38
212
原创 stm32与ESP32-C3通过串口连接
ESP32-C3 是一款安全稳定、低功耗、低成本的物联网芯片,搭载 RISC-V 32位单核处理器,支持2.4 GHz和(LE)。ESP32-C3本身就可以作为一个单片机使用,但是我们这里只是把ESP32-C3作为一个Wi-Fi/蓝牙模块使用。STM32与ESP32-C3使用串口进行通讯。STM32可以给ESP32-C3发送命令,这种命令叫指令。首先通过pc串口ESP32中烧写ESP-AT固件,ESP-AT 是基于 ESP-IDF 实现的软件工程。
2025-07-09 17:17:39
350
原创 stm32Cubmax的配置
2.2.在时钟配置选项中,选择外部高速晶振作为时钟源;选择9倍频,得到72Mhz的系统时钟;设置APB1为二分频选则,得到36Mhz;设置APB2为72Mhz.2.1. 在RCC(复位和时钟控制)中,先配置外部高速晶振和外部低速晶振。1.在系统中,将debug改为单线调试。
2025-07-09 16:52:52
286
原创 关于tcp握手挥手
而接收方通过 ACK 告诉发送方:“我已经成功收到了截至某个序列号的数据,请继续发送后续数据”。这种机制是 TCP 实现可靠传输的基础,确保发送方知道哪些数据需要重传,哪些已成功交付。TCP 是可靠传输协议,发送方会给每个字节的数据分配一个唯一的。ACK 本身不直接表示数据长度,但可以通过。在 TCP 通讯中,例如:发送方上次发送的起始序列号是。
2025-07-09 15:49:42
252
原创 rtos事件标志组
如果 configUSE_16_BIT_TICKS 设置为 1,则事件组内实现的位数(或标志数)为 8;事件标志组(Event Flags Group)和信号量(Semaphore)都是FreeRTOS中用于任务同步和通信的机制,但它们在用途和行为上有一些关键的区别。事件标志组就像是一个共享的标志牌集合,每个标志位都代表一种特定的状态或事件。任务可以等待或设置这些标志位,从而实现任务之间的协同工作。每个标志位通常代表一个特定的状态或事件,任务可以等待某些标志的发生或者设置标志来通知其他任务。
2025-07-09 14:52:20
648
原创 Linux的互斥锁、Linux的POSIX信号量(二值、计数)、RTOS的二值信号量
POSIX 标准指出系统的最大限制值至少要为 32767。计数信号量可用于表示多个可用资源,当线程获取信号量时,信号量值减 1,释放信号量时,信号量值加 1,其值可以根据资源的使用和释放情况在允许范围内变动。其中rtos的二值信号量和linux的POSIX二值信号量本质一致,都是通过信号量置0 or 1,来释放与获取。POSIX 信号量分为。,主要用于实现互斥功能,类似互斥锁。
2025-07-08 17:48:00
262
原创 rtos信号量
FreeRTOS中的信号量是一种用于任务间同步和资源管理的机制。信号量可以是二进制的(只能取0或1)也可以是计数型的(可以是任意正整数)。信号量的基本操作包括“获取”和“释放”。比如动车上的卫生间,一个卫生间同时只能容纳一个人,由指示灯来表示是否有人在使用。适用于对资源的互斥访问,控制任务的执行顺序,或者限制同时访问某一资源的任务数量。存储和传递消息的数据结构,任务可以发送消息到队列,也可以从队列接收消息。用于任务之间的数据通信,通过在任务之间传递消息,实现信息的传递和同步。
2025-07-08 15:53:06
192
原创 rtos消息队列
因为同一个队列可以被多个任务读取,因此可能会有多个任务因等待同一个队列,而被阻塞,在这种情况下,如果队列中有可用的消息,那么也只有一个任务会被解除阻塞并读取到消息,并且会按照阻塞的先后和任务的优先级,决定应该解除哪一个队列读取阻塞任务。因为同一个队列可以被多个任务写入,因此可有会有多个任务因等待统一个任务,而被阻塞,在这种情况下,如果队列中有空闲的位置,那么也之后一个任务会被解除阻塞并往队列中写入消息,并且会按照阻塞的先后和任务的优先级,决定应该解除哪一个队列写入阻塞任务。若接收方变更,发送方代码需修改。
2025-07-08 14:44:22
765
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人