
产品研发
文章平均质量分 65
LaoZhangGong123
老家亲友若相问,就说我在写代码。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
测试W5500的第11步_使用ARP解析IP地址对应的MAC地址
本文介绍了基于W5500芯片的ARP协议实现方法,详细阐述了ARP请求与回复的工作机制。ARP协议通过广播请求和单播回复实现IP地址与MAC地址的映射,确保局域网设备间的可靠通信。文章提供了完整的STM32F10x开发环境下的代码实现,包括网络初始化、SPI接口配置、ARP请求发送和回复处理等核心功能模块。测试结果表明,该系统能成功完成ARP地址解析,准确获取目标设备的MAC地址,为后续网络通信奠定基础。原创 2025-06-05 17:02:46 · 677 阅读 · 0 评论 -
测试W5500的第10步_使用W5500去PING计算机
本文主要介绍采用W5500和计算机之间互相PING,看看网络是否连接是否正常。W5500工作在 IPRAW模式下,去PING远程计算机,同时,远程计算机也可以PING 这个W5500。W5500工作在TCP模式下,远程计算机可以随时去PING这个W5500。原创 2025-06-04 11:33:55 · 383 阅读 · 0 评论 -
测试W5500的第9步_使用SNTP实现网络时间同步
本文摘要: 文章介绍了NTP与SNTP两种网络时间协议的区别,其中NTP提供微秒级精确同步,SNTP是简化版本精度约1秒。列举了常用的NTP服务器域名,包括开源、云服务商和操作系统自带的。提供了ioLibrary库的下载地址,并详细展示了基于W5500芯片实现SNTP协议的STM32代码,包括变量定义、网络参数配置、主程序逻辑和DNS解析过程。最后通过测试成功获取北京时间并输出,验证了SNTP时间同步功能的实现。原创 2025-05-28 15:14:23 · 401 阅读 · 0 评论 -
测试W5500的第8步_使用ioLibrary库创建HTTP服务器
本文介绍了如何使用STM32和W5500搭建HTTP服务器,并详细解析了HTML网页文件的结构。主要内容包括: HTML基础知识:介绍HTML标签、网页结构及常用标签用法; index.html示例:提供完整的网页模板代码,包含标题、导航栏和内容区; 硬件实现:给出STM32和W5500的初始化代码,包括网络参数配置; 测试方法:说明通过浏览器访问服务器的操作步骤,展示预期网页效果; 资源获取:提供所需库文件的下载地址。该方案可实现基本的网页服务功能,适合嵌入式系统学习应用。原创 2025-05-28 10:44:29 · 900 阅读 · 0 评论 -
测试W5500的第7步_使用ioLibrary库创建HTTP客户端
本文介绍了基于STM32和W5500芯片的HTTP通信开发过程。主要内容包括:1)HTTP测试工具httpbin的使用说明;2)W5500硬件初始化与SPI接口配置;3)DNS域名解析功能实现;4)HTTP客户端功能开发。通过实际测试,成功实现了域名解析、HTTP GET/POST请求等功能,验证了系统的可用性。测试结果显示,设备能正确获取IP地址信息,并能通过HTTP协议与远程服务器进行数据交互。文中详细提供了各功能模块的代码实现思路和关键配置参数,为嵌入式网络通信开发提供了实用参考。原创 2025-05-26 15:34:53 · 473 阅读 · 0 评论 -
测试W5500的第6步_使用ioLibrary库创建DNS
本文介绍了基于STM32F10x和W5500的DNS解析实现,详细描述了硬件初始化、SPI配置、W5500芯片的初始化及网络参数设置。通过DNS_run函数实现域名解析,成功后将解析结果输出。代码中还包括了W5500的SPI通信、定时器中断、网络信息读取等功能,最终通过串口输出网络配置信息和DNS解析结果。测试结果表明,系统能够成功解析域名并输出对应的IP地址。原创 2025-05-23 14:47:59 · 228 阅读 · 1 评论 -
测试W5500的第5步_使用ioLibrary库创建UDP组播
UDP组播是一种向特定设备组发送数据的网络通信方式。其基本步骤包括:设置本地网络参数(如IP地址、子网掩码、网关等),为SOCKET通道配置临时MAC地址、组播IP地址和端口,以便接收组内消息。发送组播消息时,数据需发送到组播组的IP地址和端口。原创 2025-05-23 10:28:59 · 249 阅读 · 0 评论 -
测试W5500的第4步_使用ioLibrary库创建UDP客户端和服务器端
当W5500用作服务器时,只需要一个SOCKET就可以和很多个UDP客户端进行通讯。同理,当W5500用作客户端时,可以也很多个UDP服务器与之通讯。因为本计算机只有1个IP地址,无法测试,只能将W5500的8个SOCKET通道设置为不同的端口来测试UDP客户端。本文还详细介绍了W5500的初始化、网络配置及UDP通信的实现过程,展示了其作为UDP客户端和服务器端的应用场景。原创 2025-05-21 14:37:30 · 479 阅读 · 0 评论 -
测试W5500的第3步_使用ioLibrary库创建TCPServer
W5500是一款具有8个Socket的网络芯片,支持TCP Server模式,最多可同时连接8个客户端。本文介绍了基于STM32F10x和W5500的TCP Server实现,包括SPI初始化、W5500复位、网络参数配置、Socket状态管理等功能,适用于需要多客户端连接的嵌入式网络应用场景。原创 2025-05-20 16:05:39 · 367 阅读 · 0 评论 -
测试W5500的第2步_使用ioLibrary库创建TCP客户端
本文介绍了如何初始化STM32的硬件资源,配置W5500的网络参数,并通过DHCP获取动态IP地址。并使用这个IP地址配置TCP客户端,以及双方交换数据的测试。原创 2025-05-20 12:54:20 · 426 阅读 · 0 评论 -
测试W5500的第1步_使用ioLibrary库创建DHCP客户端
本文介绍了如何通过STM32F10x与W5500以太网模块进行通信的代码实现。首先,通过SPI接口初始化W5500的硬件配置,包括SPI引脚、复位引脚和中断引脚的设置。接着,注册SPI的片选、读写函数,并通过DHCP协议动态获取IP地址。原创 2025-05-20 12:33:52 · 277 阅读 · 0 评论 -
STM32F103定时器1每毫秒中断一次
定时器溢出中断,在程序设计中经常用到。在使用TIM1和TIM8溢出中断时,需要注意“TIM_TimeBaseStructure.TIM_RepetitionCounter=0;”,它表示溢出一次,并可以设置中断标志位。原创 2025-05-17 22:37:39 · 369 阅读 · 0 评论 -
W5500使用ioLibrary库创建DHCP客户端
本文还绍了如何配置W5500的网络参数,并通过代码示例展示了如何初始化SPI接口、配置端口、实现DHCP获取在局域网中的本地IP地址。端口0配置为调试端口,端口1配置为DNS客户端,端口2配置DHCP客户端。原创 2025-05-17 16:06:10 · 861 阅读 · 0 评论 -
W5500使用ioLibrary库创建DNS客户端
在因特网中,主机访问另一台主机时需获取其IP地址,但IP地址由四段数字组成,不易记忆,因此使用域名系统(DNS)来管理域名与IP的对应关系。本文详细介绍了如何通过W5500芯片实现DNS解析功能。首先,通过SPI接口初始化W5500芯片,并配置其网络参数,包括MAC地址、IP地址、子网掩码、网关和DNS服务器。接着,通过DNS客户端功能将域名解析为IP地址,并使用W5500的端口1进行解析操作。最终,解析结果通过端口0发送到远程主机。此外,文章还提供了相关代码实现,包括SPI初始化、DNS解析、定时器配置等原创 2025-05-17 15:26:48 · 210 阅读 · 0 评论 -
W5500使用ioLibrary库创建TCP客户端
WIZnet的全硬件TCP/IP协议栈支持多种网络协议,如TCP、UDP、IPv4等,适用于W5500、W5300等芯片。W5500是一款集成TCP/IP协议栈的以太网控制器,支持8个独立端口同时通讯,。每一个 Socket 的发送 缓存区都在一个 16KB 的物理发送内存中,初始化分配为 2KB。每一个 Socket 的接收缓 存区都在一个 16KB 的物理接收内存中,初始化分配为 2KB。原创 2025-05-17 11:21:13 · 965 阅读 · 0 评论 -
W5500使用SocketTool工具测试
W5500使用SocketTool工具测试。原创 2025-05-14 13:56:55 · 206 阅读 · 0 评论 -
MCU屏和RGB屏
MCU屏:全称为单片机控制屏(Microcontroller Unit Screen),在显示屏背后集成了单片机控制器,因此,MCU屏里面有专用的驱动芯片。RGB屏的内部没有GRAM和控制器。原创 2025-04-11 12:35:58 · 1077 阅读 · 0 评论 -
解决STM32F103串口2接收空闲中断+DMA传输丢失第1帧和第2帧数据
串口接收空闲中断+DMA传输解决丢失第1帧和第2帧数据。原创 2025-04-07 11:32:15 · 278 阅读 · 0 评论 -
char表示有符号,还是无符号
编译器默认char是8位无符号数据类型,因此取值范围为0 ~ 255。如果在配置中设置“--signed_chars”,char就是8位有符号数据,取值范围为-128 ~ 127。建议在以后程序设计中,使用编译器的默认配置,不建议搞不兼容的配置。如果不清楚,就用int8_t,s8,uint8_t和u8来声明变量。原创 2025-04-06 21:02:28 · 336 阅读 · 0 评论 -
RS485串口更新APP程序协议
串口更新APP程序,好像作用不大,但是如果涉及到程序保护,就很有意义了。如果使用其它可以买到到的工具烧写程序,烧录程序的人,就有可能会泄密。为了防止泄密,使用自己特制的工具对程序进行更新程序和加密,就非常稳妥了。其次程序设置读保护,对防止被盗版也有一定的意义。通常使用JLINK也可以设置读保护。至于程序加密,最好依赖自己的代码去实现比较安全。最后是带系统,让盗版方无法定位加密位置。原创 2025-03-19 16:16:59 · 754 阅读 · 0 评论 -
单片机自学总结
自从工作以来,一直努力耕耘单片机,至今,颇有收获。从51单片机,PIC单片机,直到STM32,以及RTOS和Linux,几乎天天在搞:51单片机,STM8S207单片机,PY32F003单片机,STM32F103单片机,GD32F103单片机,STM32G474单片机,FreeRTOS实时操作系统,uCOSii实时操作系统,uCOSiii实时操作系统,Linux操作系统。原创 2025-03-18 11:03:56 · 2762 阅读 · 8 评论 -
六轴传感器ICM-20608
ICM-20608-G是一个6轴传感器芯片,由3轴陀螺仪和3轴加速度计组成。陀螺仪可编程的满量程有:±250,±500,±1000和±2000度/秒。加速度计可编程的满量程有:±2g,±4g,±8g和±16g。原创 2025-03-08 15:04:32 · 1186 阅读 · 0 评论 -
STM32程序的加密与破解以及烧录方法
盗取他人的PCB和烧录文件,可以节省大大开发成本,何乐而不为呢。因此,就滋生了一些协助他人盗版的公司。为了防止被盗版和复制,单片机工程师也是煞费苦心,对硬件和软件均采取了防盗版措施。原创 2025-03-04 11:08:44 · 1248 阅读 · 0 评论 -
STM32的C语言软件延时函数
STM32的延时方法很多,其中采用定时器延时,可以得到较为精确的延时,但是有时对延时精度要求不高的场合,采用软件延时,也是必须的。特别是在RTOS系统中,使用SysTick的普通计数模式对延迟进行管理,如果需要执行毫秒级延时,会引起系统调度。C语言软件延时函数,不会引起软件延时调度,在进入系统之前可能需要这种延时,因此,还是需要的。//函数功能:当time=1,需要执行72027个周期,相当于延时0.993972.6毫妙。//函数功能:当time=10,需要执行738个周期,相当于延时10.25微妙。原创 2025-02-26 15:29:02 · 601 阅读 · 0 评论 -
STM32的“Unique device ID“能否修改?
通过查看各种资料,发现STM32的"Unique device ID"只读,不能修改,它只能由ST在生产时进行编程 。只要盗版者无法修改的"Unique device ID"寄存器的内容,程序就不会被盗版。原创 2025-02-22 23:03:35 · 1376 阅读 · 0 评论 -
年月日时分秒和总秒数相互转换
年月日时分秒和总秒数相互转换。原创 2025-02-21 14:01:51 · 408 阅读 · 0 评论 -
年月日和天数相互转换
在使用RTC时,将天数转换为年月日,会经常遇到。原创 2025-02-21 12:21:30 · 340 阅读 · 0 评论 -
Linux第107步_Linux之PCF8563实验
使用PCF8563代替内核的RTC,可以降低功耗,提高时间的精度。同时有助于进一步熟悉I2C驱动的编写。原创 2025-02-15 23:17:10 · 981 阅读 · 2 评论 -
了解rtc_time64_to_tm()和rtc_tm_to_time64()
rtc_time64_to_tm()和rtc_tm_to_time64()主要用于RTC的驱动程序,在Linux外部RTC驱动中较常见。原创 2025-02-15 19:35:32 · 541 阅读 · 0 评论 -
了解i2c_check_functionality()
i2c_check_functionality()用来检查设备适配器支持的标志是否要求。原创 2025-02-15 19:31:30 · 326 阅读 · 0 评论 -
了解module_driver宏
module_driver这个宏,在Linux驱动中,应用比较多,所以要重点掌握,这对理解驱动程序很有帮助。原创 2025-02-15 19:15:45 · 489 阅读 · 0 评论 -
了解“/linux-5.4.31/drivers/of/device.c”中的of_device_get_match_data()
了解“/linux-5.4.31/drivers/of/device.c”中的of_device_get_match_data();原创 2025-02-09 21:39:16 · 441 阅读 · 0 评论 -
Linux第106步_Linux内核RTC驱动实验
基于Linux内核RTC驱动实验。原创 2025-02-09 14:47:00 · 947 阅读 · 0 评论 -
了解/linux-5.4.31/drivers/regulator/devres.c中的devm_regulator_get()和devm_regulator_bulk_get()
devm_regulator_get()和devm_regulator_bulk_get()的区别。原创 2025-02-05 20:13:34 · 1123 阅读 · 4 评论 -
了解linux-5.4.31/drivers/gpio/gpiolib-devres.c中的devm_gpiod_get_optional()函数
获取GPIO线的索引,查找“设备资源”,分配“设备资源数据”,注册“设备资源”;原创 2025-02-05 11:38:30 · 1076 阅读 · 0 评论 -
Linux第105步_基于SiI9022A芯片的RGB转HDMI实验
SiI9022A是一款HDMI传输芯片,可以将“音视频接口”转换为HDMI或者DVI格式,是一个视频转换芯片。本实验基于linux的驱动程序设计。原创 2025-02-03 13:16:44 · 1154 阅读 · 0 评论 -
Linux第104步_基于AP3216C之I2C实验
Linux之I2C实验是在AP3216C的基础上实现的,进一步熟悉修改设备树和编译设备树,以及学习如何编写I2C驱动和APP测试程序。原创 2025-01-31 20:57:01 · 889 阅读 · 0 评论 -
Linux第103步_了解I2C总线框架
了解Linux中的I2C总线框架为后面做I2C实验做准备,学驱动,就是学习框架,了解是必须的。原创 2025-01-21 21:52:30 · 890 阅读 · 0 评论 -
Linux第102步_了解LCD背光驱动“pwm_bl.c”
了解“stm32mp15-pinctrl.dtsi”和“stm32mp157d-atk.dts”是如何编写“背光属性”的,了解LCD背光驱动“pwm_bl.c”。原创 2025-01-16 21:09:34 · 792 阅读 · 0 评论 -
了解linux中的“of_property_read_u32()”
了解linux中的“int of_property_read_u32()”原创 2025-01-15 22:47:40 · 628 阅读 · 0 评论