- 博客(10)
- 收藏
- 关注
原创 4G模块通过网口进行数据链路层通信
VPN功能:实现本地电脑对远程PLC设备进行上下载功能。现在手里有一款板子,支持4G、网口上网,想实现VPN穿透功能
2026-03-18 00:52:28
247
原创 单片机远程升级:串口Bootloader实战指南
摘要:本文介绍了基于N32G455芯片的串口程序升级方案,通过Bootloader机制实现远程固件更新。系统采用两段式存储架构,包含转跳程序和主程序。转跳程序初始化串口和看门狗后,5秒内检测升级指令,支持擦除配置、下载程序、写入Flash等操作。升级完成后,通过标志位控制跳转到主程序执行。该方法解决了设备固定安装后难以取出升级的问题,为现场维护和版本更新提供了便捷的解决方案。
2026-03-16 22:52:52
258
原创 单片机芯片晶振修改
摘要:本文以N32G455单片机为例,详细讲解了外部晶振(12000)的频率处理过程。通过分析时钟树结构,介绍了PLLHSEPRES分频、PLLSRC时钟源选择、PLLMULFCT倍频等关键设置步骤。文章还说明了如何通过调试模式查看RCC配置,修改库文件中的晶振参数,以及定时器TIM的输入频率计算方法。最后介绍了通过SystemInit()函数修改频率配置的具体方法。
2026-03-16 00:26:29
246
原创 单片机模拟线程实现高效模块操作
本文提出了一种基于状态机的单片机多任务处理方案,通过在主循环中使用switch-case结构实现任务分层调度。针对传统delay延时阻塞问题,采用状态变量(run)控制任务流程,配合定时器中断实现非阻塞延时(CONNECT_delay)。方案将任务拆分为请求和响应两个阶段:请求阶段发送指令并设置超时时间,响应阶段通过中断接收数据并进行校验处理。以4G模块联网为例,展示了QMTCFG指令的完整处理流程,包括指令发送、超时判断和响应验证。该方法避免了任务阻塞,实现了多任务并行处理,同时通过宏定义方便指令修改,具
2026-03-15 18:47:39
435
原创 高效BCD转十进制代码实现
本文介绍了一组BCD编码与十进制整数相互转换的函数实现,包括8位、16位、32位和64位的无符号/有符号转换。核心函数changeto10()将16进制数转换为10进制整数,其他函数在此基础上通过位运算、符号位判断和权重计算实现不同位宽的BCD转换。无符号版本直接转换,有符号版本会检查最高位作为符号标志,并对负数进行特殊处理。这些函数支持从单字节到8字节数据的转换,采用高位在前、低位在后的数据存储格式,适用于不同规模的BCD编码数据转换需求。
2026-03-12 18:00:00
352
原创 数据类型转换Hex数组全解析
本文介绍了一组用于将多种数据类型转换为HEX数组的函数,主要用于Modbus灯协议中的数据写入。文章首先定义了一个枚举类型VAR_TYPE,包含布尔值、各种位数的有/无符号HEX数、浮点数、BCD码等30多种数据类型。随后详细介绍了三个核心函数:Disassemble_16()将16位数据分解为2个HEX字节,支持有/无符号数处理;Disassemble_32()将32位数据分解为4个HEX字节,支持整型、浮点型及多种排序方式;Disassemble_64()将64位数据分解为8个HEX字节,支持整型和双精
2026-03-12 12:00:00
22
原创 高效C语言数值转换函数集
本文介绍了6个数值转换函数:1)字符串转整数;2)16进制字符串转字节数组;3)整数转字符串;4)整数转BCD码;5)16进制数转类似10进制数;6)整数转16进制字节。这些函数实现了整数与字符串、16进制格式之间的相互转换,包括sscanf、sprintf等标准库函数的使用,以及位运算处理。每个函数都明确了输入输出参数和基本功能,涵盖了常见的数据格式转换需求。
2026-03-11 22:19:35
247
原创 CRC校验计算
该代码实现了CRC校验功能,采用16位校验值计算。输入参数为报文数组和长度(含CRC位),输出校验结果的高低位。算法核心是:初始化校验值为0xFFFF,遍历报文(排除最后2字节校验位),逐字节异或并移位处理。当最低位为1时,右移并与0xA001异或;否则仅右移。最终将16位校验值拆分为高低位存入输出数组。该实现适用于Modbus等协议的CRC校验需求。
2026-03-11 22:08:29
22
原创 数据类型转换: HEX数组转换为uint16_t、uint32_t、uint64_t、bool、float、double
本文介绍了用于单片机开发和Modbus协议处理的多种数据转换函数,主要包括: 16位整数转换:UHEX16(无符号)、HEX16(有符号) 32位整数转换:UHEX32(无符号)、HEX32(有符号) 64位整数转换:UHEX64(无符号)、HEX64(有符号) 浮点数转换:Float(32位)、Double(64位) 布尔值提取:uint8_t_getx(从字节中提取指定位) 这些函数采用高位在前、低位在后的数据格式,通过位运算实现高效的数据类型转换,适用于嵌入式系统中的数据处理需求。
2026-03-11 00:28:14
146
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅