自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(651)
  • 资源 (70)
  • 收藏
  • 关注

原创 学习TCP/IP的第8步:紧急数据

本文介绍了TCP协议中的紧急数据传输机制。紧急数据是用户数据流中的特殊字节,通过紧急指针定位,最多只能传输1个字节。文章详细解析了TCP/IPv4数据包结构,包括MAC地址、IP头部、TCP头部等字段定义。重点阐述了紧急数据的处理流程:发送端通过设置URG标志位和紧急指针将紧急数据与用户数据一起发送;接收端根据紧急指针提取紧急数据。文中还提供了连接表结构定义、数据包发送函数实现以及序列号更新机制,展示了如何在实际代码中实现TCP紧急数据传输功能。

2026-01-27 10:06:30 364

原创 学习TCP/IP的第7步:设计TCPIP程序要注意的事项

TCP/IP程序设计关键要点:1.数据交付基于端口号;2.连接建立需三次握手(SYN-SYN/ACK-ACK);3.连接关闭需四次挥手,主动方需等待TIME_WAIT状态(默认60秒);4.缓冲区满时需通过窗口机制处理拥塞;5.RST用于异常时重建连接;6.URG实现紧急数据处理。特别注意端口占用问题和连接状态管理,建议服务器使用固定端口,客户端灵活更换端口。

2026-01-26 09:52:07 354

原创 学习TCP/IP的第6步:断开连接

本文介绍了TCP通讯中关闭连接的实现方法,主要涉及FIN和RST两种关闭方式。通过ENC28J60_Send_FIN_ACK_data_packet()函数发送FIN+ACK数据包实现正常关闭,使用ENC28J60_Send_RST_data_packet()函数发送RST数据包实现强制关闭。文章详细分析了TCP数据包的结构和校验和计算方法,包括IP头部和TCP头部的各个字段设置。同时展示了TCP状态转换流程和连接管理机制,包括连接表更新、序列号确认等核心功能。最后通过主程序演示了TCP客户端建立连接、发送

2026-01-23 15:17:07 524

原创 学习TCP/IP的第5步:传输数据

本文介绍了TCP通讯中建立连接、传输数据和关闭连接三个关键过程。重点分析了PSH数据包的发送函数实现,包括数据包结构构建、校验和计算以及用户数据填充等核心步骤。通过STM32与ENC28J60以太网模块的配合,展示了如何在嵌入式系统中实现TCP协议栈功能,包括连接管理、数据收发和状态维护。测试结果验证了TCP客户端与服务器端成功建立连接并完成数据传输的功能实现。

2026-01-23 14:33:54 580

原创 学习TCP/IP的第4步:重点掌握TCP序列号和确认号

TCP通信通过序列号和确认号机制确保数据传输的可靠性。建立连接需三次握手:客户端发送SYN包(含随机初始序列号),服务器回复SYN+ACK(含随机序列号及客户端序列号+1),客户端最后发送ACK确认。数据传输时,序列号随数据长度递增,确认号保持对端最新序列号+1。关闭连接采用四次挥手:双方分别发送FIN包并确认。RST包可强制立即终止连接。整个过程通过序列号和确认号的严格匹配实现数据有序传输和连接状态同步。

2026-01-23 13:45:12 924 1

原创 学习TCP/IP的第3步:和SYN相关的数据包

摘要 本文详细介绍了基于ENC28J60以太网芯片的TCP/IP协议栈学习与实践。通过分析TCP状态转换、数据包结构及实现过程,重点阐述了如何在没有硬件TCP/IP栈的ENC28J60芯片上实现网络通信功能。内容包括: TCP连接状态管理(Closed→SYN-SENT→SYN-RECEIVED→ESTABLISHED) 关键数据结构定义(以太网帧、IP头、TCP头等) 核心功能实现: ARP协议处理(请求/应答) ICMP协议实现(Ping功能) TCP连接建立(SYN/SYN-ACK/ACK三次握手)

2026-01-21 14:23:12 703 1

原创 学习TCP/IP的第2步:ICMP数据包

本文介绍了使用ENC28J60芯片学习TCP/IP协议的方法,重点讲解了ICMP数据包的实现。作者建议选择没有硬件TCP/IP栈的ENC28J60芯片,以便更深入地理解数据包结构。文中详细解析了ICMP协议的工作原理,包括Ping命令使用的回显请求和应答机制,并提供了具体的代码实现。在实现过程中,需要注意关闭计算机防火墙以确保ICMP通讯正常。文章包含完整的ICMP驱动代码和测试程序,展示了如何通过ENC28J60与计算机进行Ping通讯,包括数据包收发、校验和计算等关键步骤。

2026-01-08 12:26:29 661

原创 学习TCP/IP的第1步:ARP数据包

学习TCP/IP协议栈应从底层ARP协议入手,使用ENC28J60等无硬件协议栈的芯片更利于深入理解。本文详细介绍了ARP数据包结构及实现方法,包括: 定义网络信息结构体,包含MAC/IP/子网掩码/网关等参数 实现ARP请求发送函数(已知/未知目标MAC两种场景) 处理ARP请求接收与应答 设计ARP缓存表管理机制,包含超时更新策略 通过完整实现ARP协议栈,可深入理解以太网数据帧结构和网络通信基本原理,为后续学习TCP/IP协议打下基础。

2026-01-07 11:36:44 707

原创 重点学习三极管放大电路设计

本文系统介绍了三极管的基本原理与应用。主要内容包括:1)三极管类型(NPN/PNP)及电路符号识别;2)三个工作区(截止、放大、饱和)的偏置条件;3)关键参数符号及含义(如UBE(on)、VCEO、β值等);4)直流通路分析与静态工作点计算;5)等效电路模型及输入/输出电阻计算;6)共射极放大电路设计,重点分析发射极电阻RE的作用(稳定工作点、负反馈等),并提供具体参数计算方法。文章通过公式推导和实例计算,详细说明了三极管在放大电路中的应用要点。

2025-12-16 17:18:32 1186

原创 uip之TCP服务器

本文基于ENC28J60以太网控制器实现了一个TCP服务器系统,主要包括以下内容: 系统架构 硬件平台:STM32F10x + ENC28J60 软件组件:uIP协议栈、TCP服务器应用、驱动程序 核心功能实现 TCP服务器监听5000端口 支持8个并发TCP连接 实现数据收发和状态管理 提供连接建立、数据传输、超时处理等回调函数 关键技术点 网络初始化配置(IP、MAC、子网掩码等) uIP协议栈移植和优化 数据缓冲区管理 ARP协议处理 定时器管理(500ms轮询) 性能特点 支持最大1518字节以太网

2025-12-11 16:27:21 1062

原创 电池防反接电路

判断电动车充电器好坏需注意:1.需使用Y型螺丝刀打开塑料外壳;2.测量输出电压需外接电池或75Ω大功率电阻(因防反接电路需电池供电才能工作);3.充电器采用DB151晶闸管(触发电流2-15mA)和DB3W双向触发二极管(转折电压28-36V)构成的防反接保护电路,确保电池正接时才能导通充电。测试70V输出时,必须满足上述条件才能正常测量电压。

2025-12-10 15:33:01 363

原创 深度学习uip中的“psock.c和psock.h”

本文对uIP协议栈中的psock.c和psock.h文件进行了深度解析和重构,主要改进包括: 重构了protothread协程实现,通过#define宏控制是否替换原有PT协程机制,便于调试和原理分析。新增了状态机变量STATE_NONE等6种状态定义,优化了协程状态管理。 详细注释了关键数据结构: psock_buf结构体管理输入缓冲区 psock结构体包含双PT协程状态、数据指针和缓冲区信息 新增httpd_state结构体管理HTTP连接状态 重点分析了核心功能函数: 缓冲区操作函数(buf_setu

2025-12-06 19:00:36 610

原创 深度学习uip中“uip_arp.c“

本文介绍了一个经过修改的ARP协议实现文件uip_arp.c,主要功能包括: 初始化ARP表(uip_arp_init) 定时维护ARP表,清理超时条目(uip_arp_timer) 处理接收到的ARP请求和应答(uip_arp_arpin) 处理IP数据包发送时的ARP查询(uip_arp_out) 从IP数据包中更新ARP表(uip_arp_ipin) 该实现包含ARP表管理、请求/应答处理、超时机制等功能,支持以太网和IPv4协议,使用静态ARP表存储IP-MAC映射关系。通过定时器定期清理超时条目,

2025-12-05 10:10:26 632

原创 PT协程分析和应用

本文分析了PT协程的非阻塞特性及其实现原理。PT协程通过switch-case语句和状态变量实现协程调度,表面看似阻塞的代码实际上是基于条件判断的非阻塞执行。文章详细解析了PT协程的核心机制,包括lc-switch.h和pt.h中的关键宏定义,展示了如何通过PT_BEGIN、PT_WAIT_UNTIL等宏实现协程的挂起和恢复。通过一个STM32应用实例,演示了主协程调度子协程的过程,包括定时器同步和时间判断。分析表明,PT协程本质上是单任务的,适合用于学习协程的基本概念和实现原理。

2025-12-03 16:38:34 927

原创 “do{}while(0)”的作用

本文分析了do{}while(0)在C/C++编程中的三种典型应用场景:1)作为代码分块工具,允许在块内定义局部变量;2)用于宏定义,避免宏替换时因缺少大括号导致的逻辑错误;3)替代goto语句实现流程控制,提高代码可读性。在Linux内核和开源代码中,这种结构既能确保宏替换后的语法正确性,又能保持代码整洁,是解决复杂宏定义和流程控制问题的有效方案。通过实例对比展示了do{}while(0)相比直接使用大括号或goto语句的优势。

2025-12-01 14:58:04 454

原创 学习“指针函数,函数指针,指针数组,数组指针”

本文介绍了C语言中指针函数、函数指针、指针数组和数组指针的概念及用法。指针函数是返回指针的函数,函数指针是指向函数的指针变量。指针数组是元素为指针的数组,数组指针则指向一个数组缓冲区。通过typedef为函数指针类型创建别名,可以简化声明。文中提供了完整的测试代码,展示了如何使用结构体数组存储不同函数指针,并通过名称匹配调用相应函数。测试结果表明,系统能正确识别函数名并执行对应的函数操作,未匹配时执行默认函数。该实现方法可用于构建灵活的基于名称的函数调用机制。

2025-11-28 16:59:41 424

原创 以太网HTTP数据包格式分析

本文详细分析了以太网HTTP数据包结构,包括ARP和TCP/IP协议的数据包格式。主要内容包括:1. ARP数据包结构分析,包含以太网头部和ARP头部定义;2. TCP/IP数据包结构解析,涵盖以太网首部、IP头部和TCP头部;3. 通过串口跟踪展示了完整的HTTP通信过程,包括ARP请求/应答、TCP三次握手、HTTP请求/响应等交互数据;4. 提供了校验和计算程序实现;5. 使用表格形式详细解析了ARP和HTTP数据包中各字段的含义和数值。文章通过实际通信数据分析,深入展示了网络协议的工作机制和数据包格

2025-11-24 18:14:09 1227 4

原创 “stdlib.h“中的函数

本文详细分析了C标准库<stdlib.h>中的数值转换和随机数生成函数。主要介绍了三类函数:1)基本转换函数(atoi、atol、atof)将字符串转换为数值;2)高级转换函数(strtol、strtoul、strtod)支持进制转换并返回剩余字符串指针;3)随机数函数(rand、srand)及其实现原理。文章通过代码示例展示了各函数的使用方法,特别比较了在不同系统架构下的行为差异,如32位与16位系统中atoi/atol的区别。此外,还介绍了绝对值函数(abs/labs)和除法函数(div/l

2025-11-22 11:42:58 599

原创 “string.h“中的函数

摘要:本文详细介绍了C语言标准库"string.h"中的常用字符串处理函数,包括字符串长度计算(strlen)、内存设置(memset)、字符串复制(strcpy/strncpy/memcpy/memmove)、字符串比较(strcmp/memcmp)、字符串搜索(strchr/strstr)等函数的使用方法和注意事项。通过代码示例演示了各函数的正确用法,并特别强调了内存溢出的风险及防范措施。文章还包含了自定义字符串处理函数(strnchr/strnstr)的实现,为开发者提供了全面的字

2025-11-22 11:38:20 652

原创 C语言控制语句

本文介绍了C语言中的控制语句,主要包括选择结构和循环结构。选择结构部分详细讲解了if语句(单分支、双分支和多分支)和switch语句的语法格式及应用实例,并比较了两者的使用场景。循环结构部分阐述了while、do-while和for三种循环语句的语法特点,通过具体代码演示了不同循环方式的使用方法。此外还介绍了break、continue、goto等流程控制语句的功能特性,最后概括了顺序结构、选择结构和循环结构三大基本程序结构的特点。全文通过丰富的代码示例,系统性地讲解了C语言流程控制语句的语法规则和实际应用

2025-11-22 11:33:30 417

原创 C语言中的构造类型

本文介绍了C语言中的构造数据类型,包括数组、结构体、联合体和枚举。数组是相同数据类型的连续存储元素集合,分为一维和二维数组,可通过下标或指针访问。结构体允许组合不同数据类型成员,需注意内存对齐问题。联合体让成员共享同一内存空间,适合处理同一数据的多种表示方式。枚举用于定义整型常量集合,可指定或使用默认值。文章详细说明了这些类型的声明格式、内存分配规则和访问方法,并强调了使用时的注意事项,如数组越界和结构体内存对齐等问题。这些构造类型大大增强了C语言处理复杂数据的能力。

2025-11-22 11:31:21 942

原创 字符和字符串

本文介绍了C语言中字符和字符串的基础知识。主要内容包括:字符表示方法(ASCII码1字节,汉字GBK编码2字节)、常用转义字符及其含义、ASCII字符表(需重点记忆0-127字符)、字符串定义(以'\0'结尾的字符序列)。详细讲解了printf函数的格式化输出:整数(%d/%i)、无符号数(%u)、十六进制(%x/X)、八进制(%o)、浮点数(%f/F)、科学计数法(%e/E)、字符(%c)、字符串(%s)等多种格式符的使用方法,并配有具体示例说明不同格式控制符(如宽度、补零等)的输出效果。

2025-11-22 11:26:25 325

原创 STM32单片机C语言运算符

C语言运算符详解:本文系统介绍了C语言中的各类运算符,包括算术运算符(+、-、*、/、%等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!)、位运算符(&、|、~等)、赋值运算符(=、+=等)以及特殊运算符(sizeof、指针运算符等)。通过代码示例详细演示了每种运算符的使用方法,并提供了运算符优先级表。特别强调了自增/自减运算符的前后置区别("++在前先加,++在后先用后加")以及强制类型转换等重要概念。文章还涵盖了条件运算符、逗号运算符

2025-11-22 11:24:40 794

原创 STM32单片机函数

本文介绍了C语言中函数的基本概念和使用方法。首先通过数学中的线性函数类比说明C语言函数的概念,然后详细讲解了函数的声明格式(无参数无返回值、带参数无返回值、带参数带返回值等)。接着阐述了void关键字在函数中的应用,包括表示无返回值和避免未使用变量警告。文章还详细说明了return语句的用法、函数参数传递方式(数值传递和指针传递),并介绍了函数指针的概念与使用方法。最后简要提及了表达式语句的分类。全文通过具体代码示例帮助理解函数在C语言中的实际应用。

2025-11-22 11:19:29 524

原创 STM32单片机指针变量

本文介绍了指针变量的基本概念和应用。指针变量存储另一个变量的内存地址,在MDK-ARM编译器中固定占用4字节空间。文章详细说明了一维指针和二维指针的声明格式及使用方法,包括通过指针间接修改变量值的操作。重点阐述了void和void**这两种通用指针类型的特点:void可指向任何数据类型,void**则指向void*指针。在使用这些通用指针时,需要通过类型转换才能正确访问数据。通过多个具体示例,展示了如何声明、初始化和操作不同类型的指针变量。

2025-11-22 11:16:34 380

原创 STM32单片机变量

本文介绍了C语言中变量的基本概念和使用规范。主要内容包括:1)变量命名规则要求具有可读性,以字母或下划线开头;2)变量声明格式及访问方式,可通过变量名直接访问或获取地址;3)变量类型分为局部变量和全局变量,详细说明了auto、static、extern等修饰符的使用场景;4)介绍了const和volatile修饰变量的特性;5)通过示例说明了同名全局变量和局部变量的处理方式。文章还提供了各种数据类型变量的声明示例,包括整型、浮点型和布尔型等。

2025-11-22 11:14:50 309

原创 STM32单片机在KEIL中的数据类型

本文详细介绍了MDK-ARM编译器支持的数据类型及其特性。主要内容包括:1)基本数据类型(char、int、float等)的位数、字节数和取值范围;2)通过typedef定义的类型别名(如int8_t、uint32_t等);3)单精度和双精度浮点数的IEEE 754存储格式解析;4)编译器特殊定义(如__IO、__I等)及STM32专用数据类型;5)各类型数值范围的定义(INT32_MAX等)。文章强调要掌握这些数据类型的关键特性,建议使用编译器默认配置,并提供了浮点数存储格式的详细计算示例。

2025-11-22 11:11:35 806

原创 TCP数据包格式分析

摘要:本文详细解析了TCP数据包的结构组成和处理流程。TCP数据包由以太网首部(14字节,含MAC地址)、IP头部(20字节)、TCP头部(20-24字节)和用户数据四部分组成。文章通过代码示例展示了以太网首部、IP头部和TCP头部的数据结构定义,并解析了一个实际的TCP数据包实例。此外,还介绍了校验和计算方法(包括IP校验和、TCP校验和)、数据包跟踪处理流程(包括ARP和TCP数据包识别),以及数据收发函数实现。最后给出了一个包含HTML内容的TCP数据包实际案例解析。

2025-11-20 10:59:50 1328 1

原创 以太网ARP数据包格式分析

本文分析了以太网ARP数据包的格式和工作机制。首先介绍了以太网头部结构,包含目的/源MAC地址和协议类型字段。详细解析了ARP数据包结构,包括硬件/协议类型、地址长度、操作码及通信双方的MAC/IP地址。通过实例展示了计算机和ENC28J60设备之间ARP请求与应答的完整交互过程,包括数据包各字段的具体数值。最后提供了ENC28J60发送ARP请求的程序实现代码。分析表明,ARP协议通过广播请求和单播应答的方式实现IP地址到MAC地址的解析,为网络层通信提供底层支持。

2025-11-19 16:20:08 756

原创 如何方便打开或关闭“串口输出的调试信息”

摘要 本文提出了一种通过宏定义来控制串口调试信息输出的方法。通过定义DEBUG_PRINTF宏代替直接使用printf函数,在开发阶段可将宏定义为printf(VA_ARGS)输出调试信息,产品发布时只需将宏定义为空即可关闭所有调试输出。文中详细展示了宏定义方法,并提供了完整的STM32 USART1串口初始化及配置代码,以及包含调试信息输出的主程序示例。这种方法实现了调试信息的灵活控制,避免了在最终产品中手动删除大量printf语句的繁琐工作。

2025-11-19 14:04:01 481

原创 STM32 F103外部晶振8MHz改为12MHz,如何配置?

摘要:将STM32F103外部晶振从8MHz改为12MHz并保持72MHz主频的配置步骤:1)修改stm32f10x.h中的HSE_VALUE为12000000;2)在system_stm32f10x.c中调整PLL倍频系数(改为6倍);3)调用HSE_SetSysClock(RCC_PLLMul_6)重新配置系统时钟。配置完成后需验证PLL稳定性和时钟源切换状态。

2025-11-08 13:37:52 814

原创 RA8875支持的字库的FLASH型号

RA8875电路设计需选用指定FLASH型号才能正常工作,包括GT21L16TW、GT21H16T1W、GT30L16U2W等。通过设置0x2F寄存器的bit7:5位,可分别选择不同类型的串行FLASH作为外部字体ROM。文中提供了5种FLASH型号的配置函数,通过修改寄存器值来适配不同型号的FLASH芯片。这些FLASH型号在淘宝均有销售。

2025-11-01 16:35:21 165

原创 解析 FSMC 地址线与 LCD RS 引脚的连接控制逻辑

摘要:文章分析了FSMC驱动LCD时不同芯片对RS信号定义的差异。在RA8875中,RS=1表示命令,地址0x60020000为命令区;而在ILI9341中,RS=1表示数据,通过FSMC_A10区分寄存器(0x6C0007FE)和数据区(0x6C000800)。文中详细解释了FSMC地址映射机制,说明外部存储器宽度不同时HADDR与FSMC_A的转换关系,最终通过查阅资料解决了不同芯片RS信号定义差异的困惑。

2025-10-30 13:48:52 879

原创 IR红外遥控器和接收器

本文详细介绍了NEC红外遥控协议的工作原理及实现方法。红外通信基于38KHz载波传输,通过不同时长的高低电平组合来表示逻辑0(560us低+560us高)、逻辑1(560us低+1680us高)和引导码(9ms低+4.5ms高)。系统采用STM32定时器进行信号捕获(TIM2)和PWM发射(TIM4),通过识别高低电平时间差来解码接收数据,并实现了完整的发送/接收功能,包括地址码、命令码及其反码的校验机制。文中提供了详细的初始化配置、中断处理和信号发送代码,为红外遥控系统的开发提供了完整的技术方案。

2025-10-22 17:21:11 901

原创 解决Error: L6411E: No compatible library exists with a definition of startup symbol __main.

摘要:编译时遇到"Error:L6411E"报错,提示缺少与__main相关的启动符号定义。经排查发现是连接问题,解决方法为删除相关设置后重新编译即可。操作步骤:在指定位置点击"OK"确认后再次编译。该问题与工程中的main函数定义有关。

2025-10-16 16:52:15 287

原创 字节内的位序和多字节的大小端模式

本文介绍了位序和字节序的概念及其在通信中的应用。位序指字节数据在传输时的各位排列顺序,分为MSB(最高有效位)和LSB(最低有效位)。不同通信协议采用不同的位序:串口从LSB开始传输,I2C和CAN从MSB开始传输,而SPI可配置。字节序分为大端模式(高字节存低地址)和小端模式(低字节存低地址),KEIL是小端模式,IAR是大端模式。通信中需注意不同协议和编译器的大小端模式转换,如以太网采用大端模式。理解这些概念对数据通信和硬件编程至关重要。

2025-10-13 15:18:47 678

原创 W5500接收丢数据

摘要:在测试WEB服务器时发现W5500模块存在数据丢失问题,经检查发现厂家提供的库函数getSn_RX_RSR()存在缺陷。原代码在读取接收缓冲区大小时未添加延时,导致数据不完整(Receive_Len=536),正确数据应为667。通过在读取操作间插入1ms延时delay_ms(1)修复了该问题。同时发现发送缓冲区函数getSn_TX_FSR()存在相同问题,采用相同方案修改后恢复正常。该案例表明厂家驱动代码可能存在未充分测试的情况,深入研究底层代码对解决问题至关重要。

2025-10-10 15:43:11 645 2

原创 以太网继电器控制页面

本文介绍了基于W5500的智能家居继电器控制系统实现方案。通过搭建Web服务器,用户可通过手机浏览器访问控制页面(如http://192.168.2.199/),点击按钮切换8路继电器的开关状态。作者详细对比了W5500与enc28j60的优势(价格更低、体积更小、库易获取),并提供了完整的HTML控制页面代码,包含两种实现方式:可编辑文本框和只读文本框版本。系统通过POST方式将继电器状态传输到后台,数据以ASCII码形式解析后控制相应继电器动作,文末还附有ioLibrary库的下载地址。该方案为家庭无线

2025-10-05 23:27:33 789

原创 #define 宏名() (变量名=常数)的问题分析

本文探讨了C语言中宏定义的使用方法及注意事项。文章首先介绍了无参宏定义和带参宏定义的基本语法格式,并通过#define M(a+b)和#define Add(x,y)等示例说明其替换功能。然后重点分析了宏定义在判断语句中的使用问题,通过#define uip_close()(UIPFlag=UIP_CLOSE)的实例,指出将赋值操作放入宏定义可能导致的逻辑错误,并提供了测试代码验证。最后以uIP移植中的httpd.c为例,说明在特定场景下将宏定义作为执行语句的合理性。文章通过具体案例对比,强调了在不同应用场

2025-09-30 15:57:05 256

原创 UIP中的psock_generator_send()的宏分析

本文分析了开发软件中常见的宏定义问题,以UIP代码为例解析了三个关键宏定义:1)PT_THREAD宏将函数声明替换为字符返回类型;2)PT_BEGIN宏通过switch-case结构实现流程控制;3)PT_END宏包含清理和返回值操作。通过逐层展开宏定义,揭示了底层代码逻辑,为理解使用宏定义的程序提供了分析方法。文章指出,掌握宏展开技巧是读懂这类代码的关键。

2025-09-29 17:09:39 269

MQTT通信协议-MQTT-3.1.1-CN

MQTT通信协议MQTT-3.1.1-CN主要讲解:MQTT控制报文格式,CONNECT – 连接服务端,CONNACK – 确认连接请求,PUBLISH – 发布消息,PUBACK –发布确认,PUBREC – 发布收到(QoS 2,第一步),PUBREL – 发布释放(QoS 2,第二步),PUBCOMP – 发布完成(QoS 2,第三步),SUBSCRIBE - 订阅主题,SUBACK – 订阅确认,UNSUBSCRIBE –取消订阅,UNSUBACK – 取消订阅确认,PINGREQ – 心跳请求,PINGRESP – 心跳响应,DISCONNECT –断开连接等。

2025-07-15

5-W5500-DHCPClient

本文介绍了如何通过STM32F10x与W5500以太网模块进行通信的代码实现。首先,通过SPI接口初始化W5500的硬件配置,包括SPI引脚、复位引脚和中断引脚的设置。接着,注册SPI的片选、读写函数,并通过DHCP协议动态获取IP地址。代码中还实现了定时器中断,用于处理DHCP超时等任务。最后,通过串口输出网络配置信息,如MAC地址、IP地址、子网掩码、网关和DNS服务器。整个流程展示了如何从硬件初始化到网络配置的完整步骤,适用于嵌入式系统中以太网通信的开发。

2025-05-20

STM32F1-W5500-TCP客户端接收中断

STM32F103通过SPI和W5500通讯,使用端口0建立TCP客户端。可以通过INT引脚中断,提示有新数据输入。

2025-05-17

TCP和UDP测试工具

TCP和UDP测试工具,支持TCP客户端,TCP服务器端,UDP客户端和UDP服务器端。

2025-05-14

如何设计IAP和APP-2025

《如何设计IAP和APP_2025》主要介绍如何在STM32F103上设计IAP和APP程序,以及如何烧录IAP代码和APP代码。通过演示,让大家容易上手设计。

2025-03-20

PT100温度计算及其电路图

PT100温度计算,采用ADC转换读到PT100的电阻值,然后采用求根法计算温度,并附上EXCEL计算表格,以及电路图。

2024-07-23

SIM800-Series-AT-Command-Manual-V1.07

SIM800 Series AT Command Manual V1.07是SIM800模块的AT命令说明书。这是曾经销售很火爆的一款2G模块,支持GSM电话,短信,彩信,GPRS,GPS和蓝牙,等通讯,功能十分强悍,在2G通讯领域,独占头角。

2024-07-17

汉字内码查看器.exe

汉字内码查看器,输入汉字可以查询其汉字内码;输入汉字内码可以查看到是什么汉字。

2024-07-17

STM32F030F4工程模板-标准库

STM32F030F4工程模板,采用标准库实现。

2024-07-09

STM32F407-标准库工程模板

STM32F407工程模板,采用标准库实现

2024-07-09

STM32F042工程模板-HAL库

STM32F042工程模板,使用HAL库。

2024-07-09

STM32F042工程模板-标准库

STM32F042工程模板,使用标准库。

2024-07-09

基于正点原子的STM32FMP157开发板的Linux系统移植

基于正点原子的STM32FMP157开发板的Linux系统移植,Ubuntu下的Linux压缩包:linux2024-02-5.4.31.tar.bz2

2024-06-24

基于正点原子的STM32FMP157开发板的buildroot根文件系统移植

基于正点原子的STM32FMP157开发板的buildroot根文件系统移植,Ubuntu下的Linux压缩包:buildroot2024-2-2020.02.6.tar.bz2

2024-06-24

基于正点原子的STM32FMP157开发板的FlashLayout

基于正点原子的STM32FMP157开发板的FlashLayout,使用STM32CubeProgrammer打开,用来指定文件烧录FLASH中的位置,并指定烧录的哪些文件。Window文件:FlashLayout.tsv,有的人命名为tf-a.tsv,但不影响烧录。

2024-06-24

基于正点原子的STM32FMP157开发板的Uboot移植

基于正点原子的STM32FMP157开发板的Uboot移植,Ubuntu下的Linux压缩包:u-boot-stm32mp-2024.02.tar.bz2

2024-06-24

基于正点原子的STM32FMP157开发板的TF-A移植

基于正点原子的STM32FMP157开发板的TF-A移植,Ubuntu下的Linux压缩包:tf-a-stm32mp-2024.2.tar.bz2

2024-06-24

基于正点原子的STM32FMP157开发板的busybox根文件系统移植

基于正点原子的STM32FMP157开发板的busybox根文件系统移植,Ubuntu下的Linux压缩包:busybox2024-02-1.32.0.tar.bz2

2024-06-24

stm32-CAN波特率计算工具及代码生成

stm32 CAN波特率计算工具,双击合适的配置,并会生成配置代码

2024-06-18

使用单相电测试三相空气开关

使用单相电测试三相空气开关。

2023-10-12

34-ENC28J60以太网-uip-TCP-Server

uip之TCP服务器。 本文基于ENC28J60以太网控制器实现了一个TCP服务器系统,主要包括以下内容: 系统架构 硬件平台:STM32F10x + ENC28J60 软件组件:uIP协议栈、TCP服务器应用、驱动程序 核心功能实现 TCP服务器监听5000端口 支持8个并发TCP连接 实现数据收发和状态管理 提供连接建立、数据传输、超时处理等回调函数 关键技术点 网络初始化配置(IP、MAC、子网掩码等) uIP协议栈移植和优化 数据缓冲区管理 ARP协议处理 定时器管理(500ms轮询) 性能特点 支持最大1518字节以太网帧 TCP窗口大小动态调整 连接状态监控和日志记录 异常处理和重传机制 该系统实现了完整的TCP服务器功能,能够稳定处理客户端连接和数据传输,为嵌入式网络应用提供了可靠的基础平台。

2025-12-11

以太网HTTP数据包格式分析20251127.pdf网络通信协议分析:以太网ARP与HTTP数据包结构解析及传输机制研究

以太网HTTP数据包格式分析。本文详细分析了以太网HTTP数据包结构,包括ARP和TCP/IP协议的数据包格式。主要内容包括:1. ARP数据包结构分析,包含以太网头部和ARP头部定义;2. TCP/IP数据包结构解析,涵盖以太网首部、IP头部和TCP头部;3. 通过串口跟踪展示了完整的HTTP通信过程,包括ARP请求/应答、TCP三次握手、HTTP请求/响应等交互数据;4. 提供了校验和计算程序实现;5. 使用表格形式详细解析了ARP和HTTP数据包中各字段的含义和数值。文章通过实际通信数据分析,深入展示了网络协议的工作机制和数据包格式规范。内容概要:本文详细分析了以太网中HTTP数据包的格式,通过串口抓包的方式展示了完整的通信流程,包括ARP请求与响应、TCP三次握手、HTTP请求与响应等关键环节。文档深入解析了各层数据包结构,如以太网帧、ARP、IP、TCP头部格式,并结合实际十六进制数据进行逐字段对照说明,同时提供了结构体定义和校验和计算方法,帮助理解底层网络协议的工作机制。此外,文中还通过表格形式对多个数据包进行了系统化拆解,增强了可读性和实用性。; 适合人群:具备基本网络基础知识的嵌入式开发人员、单片机开发者、物联网工程师以及对底层网络协议感兴趣的技术人员。; 使用场景及目标:①学习和掌握以太网通信中ARP、IP、TCP、HTTP协议的实际交互过程;②理解数据链路层到应用层各协议头部的组成与含义;③应用于嵌入式Web服务器开发、网络调试及数据包解析等场景。; 阅读建议:建议结合ENC28J60等以太网控制器的实际应用进行学习,重点关注数据包的构造与解析过程,并动手实践抓包分析,以加深对网络协议栈的理解。

2025-11-27

ENC28J60原理图

ENC28J60是以太网芯片,本原理重点绘制了它和RJ45插座之间连接。

2025-11-04

W5500电路-RJ45-5631-S-K-F-L-8C

W5500是以太网芯片,自带硬件协议栈,性价比要比ENC28J60高,适合做以太网通讯。

2025-11-04

《吴坚鸿-从单片机基础到程序框架》

《吴坚鸿-从单片机基础到程序框架》

2025-10-28

24-W5500基于MAC的WEB服务器控制8个灯

W5500使用软件TCPIP协议栈实现WEB服务器,可控制8个LED灯。适合学习,但用于产品,速度有点慢。

2025-10-16

CRC校验和MD5校验工具

CRC校验和MD5校验工具

2025-09-25

中英文字符编码查询-V1.1

中英文字符编码查询_V1.1

2025-09-25

开拓者32-颜色获取器

开拓者32_颜色获取器

2025-09-25

汉字内码查询V1.3-正点原子

汉字内码查询V1.3_正点原子

2025-09-25

固件库STM32F10x-标准库-V3.5.0

【固件库】STM32F10x_标准库_V3.5.0

2025-09-25

固件库STM32F10x-StdPeriph-Lib-V3.0.0

【固件库】STM32F10x_StdPeriph_Lib_V3.0.0

2025-09-25

《建立一个VC++工程》

内容概要:本文详细介绍了在VC++开发环境中如何建立和配置一个工程,包括创建新的工作区、添加项目到现有工作区、设置项目路径与名称、选择应用类型等步骤。文中通过具体实例演示了创建两个控制台应用程序(Hello和HelloCpp)的过程,并讲解了如何切换活动工程、编译和运行程序。此外,还展示了如何查看.dsw工作区文件的内容,以及如何打开已有工程并修改代码,最终实现一个简单的C++程序,接收用户输入并输出欢迎信息。 适合人群:具备基本C++编程知识、正在学习VC++开发环境使用的初学者或刚入门的开发者。 使用场景及目标:①掌握VC++中创建Win32控制台应用程序的基本流程;②理解工作区(Workspace)与项目(Project)的关系;③学会配置多项目工程并进行编译运行操作;④熟悉从代码编辑到程序执行的完整开发流程。 阅读建议:

2025-09-17

《建立一个VC++程序》基于Visual C++环境的Hello World项实现方法

内容概要:本文介绍了在VC++开发环境中创建和运行一个简单C++程序的完整步骤。通过打开.dsw工作区文件,修改HelloCpp.cpp源代码,加入标准输入输出和字符串处理功能,实现一个欢迎程序。文中详细说明了从文件打开、代码编辑、保存、编译到运行的全过程,并展示了程序执行后的输出效果,帮助用户理解VC++项目的构建流程。; 适合人群:具备基本C++语法知识,正在学习VC++开发环境使用的学生或初学者。; 使用场景及目标:①学习如何在VC++中打开项目并编辑C++源文件;②掌握VC++程序的编译(F7)与运行(Ctrl+F5)操作;③理解简单的C++程序结构,如main函数、string类、cin/cout输入输出等基础语法的应用; 阅读建议:建议读者结合VC++6.0或类似开发环境实际操作,边看步骤边实践,以加深对IDE操作和C++程序运行机制的理解。注意代码中头文件的引用和命名空间的使用,确保程序正确编译执行。

2025-09-17

RJ45插座-FC-256GYNL

W5500官方使用的RJ45插座就是FC-256GYNL。

2025-09-16

【网络通信硬件】RJ45磁性模块技术规格:10/100BASE-T单端口连接器设计与波峰焊工艺参数

内容概要:本文档为元册科技股份有限公司生产的RJ45插座(型号:13F-60FGYDPNW2NL)的技术规格说明书,详细介绍了该网络接口插座的机械尺寸、电气特性、材料构成、环境适应性、包装方式及焊接工艺建议。产品符合RoHS标准,适用于10/100BASE-T单端口应用,具备良好的信号完整性指标,如插入损耗、回波损耗、串扰和共模抑制比,并支持波峰焊工艺,峰值温度建议为250±10℃,持续时间不超过5秒。; 适合人群:电子硬件工程师、PCB设计人员、生产制造技术人员以及负责网络接口选型与测试的相关技术人员;具备基本的电子元器件知识和电路设计背景者更佳; 使用场景及目标:①用于网络设备中RJ45接口的选型与设计参考;②指导PCB布局布线及波峰焊工艺参数设置;③确保产品在-40℃至+85℃环境下稳定工作,满足工业级温度要求; 阅读建议:本资料技术性强,建议结合实际产品设计需求查阅关键参数,重点关注电气性能指标、材料规格及焊接条件,以确保可靠性和兼容性。

2025-09-16

W5500电路-RJ45-HR911105A

目前用的比较多的RJ45插座,就是HR911105A。

2025-09-16

【电子设计自动化】AD16原理图和PCB设计入门教程:涵盖工作空间创建、项目管理、原理图与PCB绘制、元件库建立及布线规则设置等基础操作指导

内容概要:本文档《AD16原理图和PCB设计入门教程.pdf》详细介绍了Altium Designer 16(AD16)从创建新工作空间到完成PCB设计的全流程。内容包括:创建和管理新工作空间与项目、创建和编辑原理图及PCB文件、创建和管理元件库、绘制原理图和PCB元件、设置布线规则、执行DRC检测、解决常见问题等。文档还涵盖了如何进行元件排序、网络表装载、批量放置过孔、3D封装元件制作以及解决一些软件兼容性问题的具体步骤。每个操作都有详细的步骤说明和截图辅助理解。 适用人群:适合具有基本电子电路知识和PCB设计经验的技术人员,特别是初学者或希望深入掌握AD16使用技巧的工程师。 使用场景及目标:①帮助用户快速上手AD16,掌握从原理图到PCB设计的完整流程;②提高工作效率,减少设计错误,确保设计质量;③解决实际操作过程中遇到的各种问题,如元件库管理、布线规则设置、DRC检测等。 其他说明:文档提供了大量实用的操作细节和技巧,如元件库的创建与维护、布线规则的精细调整等,有助于用户更好地理解和应用AD16的功能。同时,针对常见的软件兼容性和操作难题,给出了具体的解决方案。

2025-08-14

物联网通信中MQTT协议的详细解析及其报文结构实现

内容概要:本文详细介绍了MQTT通讯协议的架构及其主要控制报文的格式和功能。MQTT协议通过轻量级的消息传输机制,支持客户端与服务端之间的高效通信。文章首先概述了客户端和服务端的角色,接着深入探讨了MQTT控制报文的结构,包括固定报头、可变报头和有效载荷。重点描述了CONNECT、CONNACK、PUBLISH、PUBACK、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP以及DISCONNECT等关键报文的功能和格式。此外,还特别强调了不同服务质量(QoS)级别下的消息传递流程。 适合人群:具备一定网络编程基础的技术人员,特别是从事物联网开发或对轻量级消息队列协议感兴趣的开发者。 使用场景及目标:①理解MQTT协议的工作原理及其在网络应用中的优势;②掌握MQTT协议中各种控制报文的具体格式和用途;③学习如何根据不同的QoS级别设计可靠的消息传递机制;④为实际项目中选择合适的MQTT实现提供理论依据。 阅读建议:由于MQTT协议涉及较多底层通信细节,建议读者结合实际应用场景逐步理解各控制报文的作用,并通过实验加深印象。

2025-07-29

MQTT开发包开源代码程序

MQTTPacket是ioLibrary库的一部分,是一个完整的MQTT开发包程序。在W5500的芯片上验证。

2025-07-15

空空如也

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

TA关注的人

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