- 博客(66)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 GD32 4G模块通信调试记录
本文介绍了移远EG800AK系列4G模组与GD32微控制器的通信调试过程。EG800AK-CN是一款专为物联网设计的LTE Cat 1 bis模块,具有小尺寸、高性价比特点。文章详细展示了硬件接口电路设计,包括8pin/6pin USIM接口和串口通信电路。在软件方面,提供了AT指令操作示例(如查询IMSI、信号强度等)和关键程序设计思路,包括串口读写函数、TCP连接断开和初始化流程。初始化过程采用分步验证机制,包括命令模式确认、SIM卡检测、信号查询等步骤,确保可靠连接。该方案适用于各类物联网终端设备的4
2025-12-05 11:42:56
1076
51
原创 GD32 蓝牙模块调试
本文记录了GD32单片机与PB-03F蓝牙模块的调试过程。PB-03F模块采用PHY6252芯片,支持蓝牙5.2协议,具有低功耗特性,提供UART等外设接口。文章详细介绍了模块硬件连接方式,包括3.3V供电和串口通信线路设计注意事项。在软件部分,重点展示了常用的AT指令操作,如查询/设置蓝牙模式(AT+BLEMODE)、连接状态查询(AT+BLESTATE)、设备命名(AT+BLENAME)和服务UUID配置(AT+BLESERUUID)等。最后提供了GD32端的程序实现,包括串口读写函数和完整的蓝牙初始化
2025-12-05 11:42:38
1143
33
原创 后记:又有朋友在测试认证了,祝大家顺利拿证
本系列文章详细介绍了IEEE 2030.5标准和CSIP(Common Smart Inverter Profile)智能逆变器通信协议的相关内容,包括标准文档解读、协议分析、参考程序开发、调试方法等。作者分享了开发过程中的经验总结,并提供了认证准备相关的软件和测试工具信息。文章强调获得SUNSPEC互操作性认证的重要性,建议企业争取将认证证书展示在SUNSPEC官网上。所有内容均为作者个人开发经验,欢迎指正但不构成权威指导。
2025-12-04 10:09:13
58
13
原创 记录FreeRtos消息调试问题
本文记录了GD32平台FreeRTOS消息队列调试过程中遇到的内存异常问题。主要症状表现为:1)消息内存池参数被意外修改导致数组越界进入HardFault;2)创建超过9个消息通道时任务调度异常。通过逐步排查发现根本原因是任务堆栈分配不足,导致osDelay延迟参数被篡改和内存数据覆盖。解决方案包括增大消息队列空间设置(从10改为16)和显著增加任务堆栈内存(从128/256改为512/1024)。调试经验表明:处理类似问题应优先检查内存配置,通过放大参数排除干扰,待稳定后再优化内存分配。该案例揭示了堆栈不
2025-12-03 12:20:28
927
13
原创 STM32F103 ADC DMA采样与均值滤波处理实战指南
本文详细介绍了STM32F103通过ADC与DMA实现多通道数据采集并进行均值滤波的方法。主要内容包括:硬件准备(STM32开发板、信号源等)、STM32CubeMX配置ADC(设置模式/时钟/通道)和DMA(循环模式/传输大小)、代码实现(初始化/DMA中断处理/启动采样)以及测试验证流程。该方法利用DMA自动传输数据,对3个通道各50次采样值进行均值滤波处理,有效提高数据采集效率和稳定性,降低噪声干扰。文章提供了完整的配置步骤和关键代码,为嵌入式开发者实现高效模拟信号采集提供了实用参考。
2025-12-03 12:19:44
767
6
原创 STM32F103开发板上移植Agile Modbus库的详细指南
本文详细介绍了如何在STM32F103开发板上移植轻量级Agile Modbus库,实现Modbus RTU通信。内容涵盖硬件准备(STM32F103开发板、RS485模块)、软件配置(STM32CubeMX/IDE)、Agile Modbus源码导入,以及关键移植步骤:初始化RTU句柄、配置UART接口、实现发送/接收函数。文中提供了主/从机功能的代码实现方案,包括寄存器数据读写和通信处理逻辑,并通过ModbusPoll/ModbusSlaver工具完成测试验证。该方案充分发挥了Agile Modbus的
2025-12-01 15:14:44
1383
16
原创 杂记:记录一次Sqlite的使用问题
摘要 针对嵌入式设备中使用SQLite时因掉电导致数据未保存的问题,分析发现SQLite默认延迟写入机制导致数据未及时刷盘。通过调整PRAGMA配置强制同步写入:设置PRAGMA journal_mode=WAL启用预写日志,并配置PRAGMA synchronous=FULL确保事务提交后立即刷盘,解决了数据丢失问题。该方法在性能与数据安全性间取得平衡,适用于需高可靠性的嵌入式场景。其他潜在方案包括手动调用fsync()或调整WAL检查点参数,但推荐优先使用SQLite原生配置实现优化。
2025-12-01 15:14:17
893
13
原创 VSCode远程图形化GDB
添加Remote SSH、Remote Development等插件(ARM替代,Arm Assembly更全)设置语言环境:中文环境,安装Chinese(Simplified)插件后会提示更换并重启VSCode,或者去setting去设置locale.jsons设置"zh_cn"并重启VSCode。3、VSCode建立远程连接使用本地vscode的remote ssh 远程链接服务器第一行core文件大小为0,没有开启。使用#ulimit -c [kbytes]可以设置系统允许生成的core文
2025-04-21 11:27:48
2993
32
原创 LibModbus 主从机通信应用实例
通过上述代码实例与配置解析,开发者可快速构建稳定的Modbus RTU 一主多从系统。硬件可靠性:终端电阻与正确接线是物理层通信的基础。超时适配:根据环境调整响应与字节超时,平衡效率与稳定性。从机管理:动态地址绑定与线程安全设计支持灵活扩展。环境适配工业现场长距离通信时,优先增大响应超时(≥1秒)并添加终端电阻。高干扰环境中,同时增大字节超时(≥500ms)并启用奇偶校验。代码健壮性每次重连后重置超时参数,避免上下文残留。添加重试机制(如3次重试)应对偶发超时。监控与维护定期通过和。
2025-04-19 09:27:10
1791
16
原创 LibModbus移植
在嵌入式开发中,Modbus协议被广泛应用于工业自动化设备之间的通信。LibModbus作为一款开源的Modbus协议库,提供了丰富的接口用于实现Modbus通信功能。本文将详细介绍如何将LibModbus移植到嵌入式Linux系统中,并通过测试程序验证其功能。
2025-04-19 09:26:37
1594
24
原创 Sqlite3交叉编译全过程
然后将sqlite_sequence表中对应表格的seq置为0;也可以直接把sqlite_sequenc中对应表名的记录删除掉。9.1、当设定触发器后,修改过表名,由于触发器内写的表名是修改之前的,所有在触发器中的操作会使得操作失败。目录添加到/etc/profile文件中,所以在控制台中可以直接调用编译器。callback 函数用于处理查询结果(见示例中的回调函数)。释放错误消息内存:sqlite3_free(err_msg)。将.a文件移植到程序文件,直接调用编译到程序中。修改触发器后解决问题。
2025-04-18 09:13:45
1647
15
原创 Protocol buffer交叉编译及使用
在开发过程中,高效的数据序列化与反序列化技术至关重要,Protocol Buffer(简称 protobuf)便是这样一种强大的工具。然而,在使用 protobuf 进行 C 语言开发时,由于其原生不支持 C 语言,需要借助一些额外的步骤来实现相关功能。本文将全面总结在 Linux 环境下 protobuf 交叉编译及使用的关键步骤与要点。
2025-04-18 09:13:02
2056
11
原创 深入探究 printf 和 sprintf 函数中参数类型不匹配导致的问题及解析
在 C 语言编程中,我们经常会用到printf和sprintf这样强大的函数来进行格式化输出。然而,在实际使用过程中,如果不注意参数类型与格式说明符的匹配,就很容易出现一些意想不到的问题。尤其是当涉及到32位和64位整数时,格式化字符串与实际参数类型不匹配可能会引发各种奇怪的错误,甚至导致程序崩溃。今天,咱们就一起来深入探讨一下这背后的原因以及相关的解决办法。在C语言中,使用 printf 等可变参数函数时,必须确保格式化字符串与参数类型严格匹配。
2025-04-17 09:25:50
980
14
原创 stm32c011f4烧写程序 could not stop Cortex-M device
Could not stop Cortex-M device”是一个较为常见的STM32烧写问题,其原因可能涉及硬件连接、软件配置、芯片状态等多个方面。在遇到这一问题时,开发者应按照以下步骤进行排查和解决:• 检查硬件连接,包括复位引脚、JTAG/SWD接口、BOOT引脚等,确保硬件电路正常且连接正确。• 检查软件配置,包括编译选项、下载选项、中断向量表偏移、看门狗设置等,确保开发工具的配置与芯片的实际需求相符。
2025-04-16 09:11:34
3593
16
原创 STM32 调试口STM32CUBEMX配置
• JTAG调试接口适合复杂的调试场景,功能强大但占用较多引脚。• SWD调试接口适合简单的调试场景,节省引脚资源且硬件成本较低。• 如果引脚资源紧张,可以选择SWD接口或禁用调试接口,将引脚释放为普通GPIO使用。在实际开发中,根据项目需求和硬件资源情况选择合适的调试接口类型。
2025-04-16 09:11:10
2143
13
原创 STM32并口屏应用实例:点亮你的显示世界之应用篇
本文通过一个实际案例,展示了如何使用STM32驱动8位并口屏。通过硬件连接和软件编程,我们实现了屏幕的初始化、数据传输和显示功能。并口屏以其快速的数据传输能力,在嵌入式显示领域具有广泛的应用前景。希望本文能为你的项目提供参考和启发。本文提及的并口屏显示应用是针对这一系列文章所取的题名,所涉及的显示框架设计不仅仅局限于并口屏,其他串行接口也是适用的。
2025-04-15 09:11:44
1356
16
原创 STM32并口屏应用实例:点亮你的显示世界之程序篇
在嵌入式系统开发中,显示设备是与用户交互的重要界面之一。STM32作为一款功能强大的微控制器,支持多种外设接口,其中并口屏的驱动应用非常广泛,其抗干扰性比其他接口更为出色。本文将通过一个实际案例,介绍如何使用STM32驱动并口屏,并展示其原理和实现过程。
2025-04-15 09:11:03
1401
16
原创 STM32并口屏应用实例:点亮你的显示世界之原理篇
并口屏是一种通过并行数据线与控制器连接的显示屏,常见的有TFT-LCD屏。与串行接口相比,并口屏的数据传输速度快,适合高分辨率和高刷新率的应用场景。例如,8位并口屏通过8根数据线同时传输数据,大大提高了通信效率。本文通过一个实际案例,展示了如何使用STM32驱动8位并口屏。通过硬件连接和软件编程,我们实现了屏幕的初始化、数据传输和显示功能。并口屏以其快速的数据传输能力,在嵌入式显示领域具有广泛的应用前景。希望本文能为你的项目提供参考和启发。
2025-04-14 09:11:02
1389
16
原创 VM虚拟机安装及Ubuntu安装配置
通过以上步骤,我们成功地在 VMware 上安装了 Ubuntu 系统,并进行了一系列的优化和配置,还解决了安装及使用过程中可能遇到的常见问题,掌握了一些性能优化技巧。在 VMware 中安装 Ubuntu,为我们提供了一个安全、灵活且高效的 Linux 学习和开发环境,无论是学习 Linux 系统的基础知识、进行软件开发,还是测试各种应用程序,都非常方便。希望大家通过这篇文章,能够顺利搭建起自己的 Ubuntu 虚拟机环境,并在 Linux 的世界中不断探索和进步。
2025-04-14 09:10:26
1549
21
原创 STM32片内存储参数规划设计应用实例
STM32的存储结构主要包括以下几部分:• 代码区(Flash):用于存储程序代码和常量数据。• 数据区(SRAM):用于存储运行时变量和堆栈数据。• 备份寄存器区:用于存储低功耗模式下的关键参数。在本实例中,我们将重点关注Flash存储区的使用,特别是如何划分参数存储区和程序下载区。本文通过一个实际应用实例,介绍了如何在STM32中设计片内存储参数,并通过结构体方式存储参数。通过STM32Cube配置工程,我们成功划分了参数存储区和程序下载区,并实现了参数的读写操作。
2025-02-26 11:34:49
1113
12
原创 杂记:Profibus 测试记录推广
在项目中接触到Profibus总线的开发,由于这套协议相对比较封闭,编程资料比较少,规范文件非常枯燥乏味,晦涩难懂。所以出一个专栏总结一下。
2025-02-26 10:02:39
1078
8
原创 STM32外设SPI FLASH应用实例
在嵌入式系统中,数据的存储和备份是一个非常重要的功能。SPI FLASH 是一种常见的非易失性存储器,具有容量大、速度快、接口简单等优点。本文将介绍如何在 STM32F103 上使用 SPI 接口操作 QW128 SPI FLASH,并通过乒乓存储的方式实现数据备份。本文介绍了如何在 STM32F103 上使用 SPI 接口操作 QW128 SPI FLASH,并通过乒乓存储的方式实现数据备份。通过这种方式,可以有效地提高数据的可靠性和系统的稳定性。希望本文对大家有所帮助,欢迎在评论区留言讨论。
2025-02-17 10:59:07
2203
6
原创 STM32旋转编码器应用实例
旋转编码器是一种常用的机械式传感器,广泛应用于需要精确测量角度或位置的场景,如电机控制、人机界面等。STM32单片机提供了多种方式来驱动和读取旋转编码器的信号,本文将详细介绍旋转编码器的工作原理、STM32定时器编码器模式的原理、应用实例以及总结。旋转编码器是一种将机械旋转转换为电信号的传感器,通常用于测量旋转角度或速度。根据输出信号的形式,旋转编码器分为绝对式编码器和增量式编码器。在嵌入式系统中,增量式编码器更为常见,因为它输出的是脉冲信号,适合实时测量。
2025-02-15 14:25:24
3515
48
原创 AI:嵌入式码农晋升之路其三:freemobus从机移植
本文长度有点长,宗旨是对比现在比较热门的AI应用对嵌入式开发的辅助作用,尚且处于摸索之中。从下文的对比中来看,各个应用各有优劣,豆包和DeepSeek对freemodbus的应用似乎推理更深一筹,能够直接给出数据更新的回调函数,但是豆包忽略了参数需要映射到结构体中去。同时三个应用都没有直接给出移植的具体方案,把重点都放在了应用上。所以,笔者再次提出了优化方向,优化移植细节。
2025-02-15 14:25:00
1245
6
原创 AI:嵌入式码农晋升之路其二
生成的代码在一定程度上能够满足我们提出的需求,可以根据自己的想法进一步提出优化方向,直到更符合我们实际需求。也可以在这个基础上根据我们的编码习惯进行更改。
2025-02-14 10:14:53
460
7
原创 杂记:守护进程or守护进程脚本
的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。为了防止进程异常挂掉,为了避免影响业务,编写一个守护进程,定时检查某个进程是否存在,如果不存在则自动启动该进程。
2025-02-14 10:14:12
610
10
原创 杂记:使用KIMI优化博客质量记录
这段时间Deepseek比较火,突发奇想通过AI工具来优化博客质量,提高可读性,让读者更容易理解。这也是提高我们博客记录质量的一种尝试。通过KIMI的优化增加了一些原理性的介绍,让初次接触的同学能够更了解本文代码的主题思想。优化前的文章和优化后的文章同时发布出来,并且本文做了对比分析,对比优化前后的效果。为以后博客撰写质量的提高提供了一种思路。后面还需要更多摸索。
2025-02-13 14:28:25
658
10
原创 杂记:AI优化博客——LED呼吸流水灯发波控制
应用场景LED呼吸灯和流水灯效果广泛应用于智能家居、智能设备、汽车仪表盘等领域,用于提升用户体验和设备的美观性。例如,智能家居设备可以通过呼吸灯效果显示设备状态,汽车仪表盘可以通过流水灯效果显示车辆信息。技术背景LED灯控制的基本原理是通过调整LED的亮度来实现不同的视觉效果。呼吸灯效果通过模拟正弦波来实现亮度的渐变,而流水灯效果则通过控制多个LED灯的亮灭顺序来实现动态效果。这段时间Deepseek比较火,突发奇想通过AI工具来优化博客质量,提高可读性,让读者更容易理解。
2025-02-13 14:27:29
984
5
原创 杂记:QT发布
点击增加中的增加文件夹【递归】 ,并选择之前新建的文件夹,也就是存放exe文件的文件夹。添加C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin环境变量。找到文件夹中的这个exe文件(自己修改的名称),就可以复制到桌面或发给他人直接是用了。找到安装文件夹,输入如下命令拷贝所使用的库。软件打包(必须要在执行完上述过程后使用)更改输出文件名称,点击封包,等待结束。修改语言为中文,需要重启软件显示。选择默认无需更改,点击确定。必须使用搜索框打开CMD。点击文件选项,压缩文件。
2025-02-12 09:32:31
1403
6
原创 AI:嵌入式码农晋升之路其一
AI 辅助嵌入式 C 语言代码编写已经成为一种趋势,它为开发者带来了诸多优势,如提高开发效率、提升代码质量等。然而,目前也面临着一些挑战和局限性。随着 AI 技术的不断发展和完善,相信它将在嵌入式开发领域发挥更加重要的作用,推动嵌入式系统的发展和创新。开发者应该积极拥抱 AI 技术,合理利用 AI 辅助工具,提高自己的开发能力和效率。
2025-02-11 09:25:27
467
7
原创 杂记:移植FreeRtos启动卡住
后,main函数不会往下执行了,开始执行main函数中定义的Task。正常会启动一个空闲任务,然后启动第一个Task,执行到svc 0,调用 svc 并传入系统调用号为 0 手动拉 SVC 中断。在main函数中调用。
2025-02-10 09:17:11
841
4
原创 杂记:STM32下载后不运行
另外,栈溢出不一定会死机,比如栈只生长到堆区,或者稍微进入变量区,而且溢出整个过程不对这些区域做写入操作,不对这些区域做取指操作,就可以完美避免hardfault,但溢出还是溢出了,数据还是被修改了.最"直接"的表现是函数调用后,还没看到执行用户代码就发现某些不相干的数据被修改,不过这也足够隐蔽了. 而且,hardfault也不一定是栈溢出的直接结果,只是入栈后数据被修改,出栈时跳转错误(最容易出现),导致指令访问错误,或者数据访问错误。我曾尝试单纯的修改栈或者单纯的修改堆的大小但是程序还都是不运行。
2025-02-10 09:16:41
1627
5
原创 杂记:下载了BootLoader和APP到程序中无反应
是因为采用了printf输出打印。占用了大量堆栈导致程序运行异常。并且没有打开Use MicroLIB库的话会导致无法启动程序。2、如果不关闭printf打印,则加大Heap_Size 到0x2000。且使能Use MicroLIB库。1、关闭printf打印。
2025-02-09 20:44:31
320
6
原创 STM32Cube库和HAL库编写SPI通信程序
请注意,此示例仅适用于使用SPI1作为主设备的情况。如果要使用其他SPI外设或作为从设备,需要相应更改代码。函数中初始化SPI的配置,包括模式、数据大小、时钟极性和相位等。进行同时发送和接收数据。在主函数中,将要发送的数据存储在。数组中,并将接收的数据存储在。
2025-02-08 10:11:28
776
4
原创 LED呼吸流水灯发波控制
算法QT模拟,输出正弦波曲线。曲线有基准占空比,设置曲线条数,偏移相位,周期。20ms计算一次曲线当前值,在一定刷新周期(0.1ms)和输出值判断当前是否电量LED灯。根据占空比实时控制LED灯的亮度。
2025-02-07 10:09:07
338
6
原创 STM32 CUBE Can调试
需要注意的是STM32CUBE配置的代码需要再手动添加过滤器,并且将FIFO关联。启动函数记得添加在while循环之前。
2025-02-07 10:08:42
1218
5
VVV SunSpec-CSIP-Conformance-Test-Procedures-Results-Reporting
2024-06-01
VVV CSIPImplementationGuide-V2.1-03-15-2018
2024-06-01
STM32移植freemodbus主机、freertos操作系统
2023-05-08
STM32单片机移植freemodbus从机
2023-05-04
STM32单片机bootloader开发-STM32103ZET6-BOOTLOADER
2023-05-02
STM32CubeMX RTC配置STM32 RTC时钟掉电日期不更新
2022-05-19
旋转编码器数值获取单片机/STM32代码:旋转编码器限定上下范围,按十位、百位、千位、万位为单位步进调整数值
2025-04-28
电池状态估计中的卡尔曼滤波器应用及其优化
2025-03-01
电池管理系统中的电池单元平衡技术解析与应用场景分析
2025-03-01
电动汽车电池管理系统(BMS)的功能与要求:电压、电流、温度监测及保护机制详解
2025-03-01
电池管理系统中的物理最优控制与建模:功率估算和老化机制研究
2025-03-01
电池健康状态评估中的容量与阻抗参数估计方法及仿真验证(ECE5720课程笔记)
2025-03-01
电池管理系统中的电压基功率极限估计:理论与方法解析
2025-03-01
电池管理系统中模拟电池组的建模方法与电动汽车仿真
2025-03-01
电池管理系统(BMS)调试指南与应用建议-V1.0
2025-03-01
新能源汽车电池管理系统的架构设计及其应用方案 - 动力锂电池安全性控制
2025-03-01
CANoe软件是由德国Vector公司开发的一款用于汽车电子控制单元(ECU)网络和单个ECU通信开发和测试的分析工具 它被广泛用于汽车行业中,特别是在ECU网络和通信的仿真、测试和诊断方面
2025-03-01
winDPMaster 是一款模拟 Profibus DP 主站功能的专业软件,支持 DPV0 协议中IO周期性数据 读写,方便现场测试和生产测试等
2024-12-08
Mysql数据库表格丢失或者不存在无法操作也无法更新
2024-06-01
如何限定唯一的加密套件ECDHE-ECDSA-AES128-CCM8?
2021-05-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅