- 博客(59)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 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
2323
8
原创 LibModbus 主从机通信应用实例
通过上述代码实例与配置解析,开发者可快速构建稳定的Modbus RTU 一主多从系统。硬件可靠性:终端电阻与正确接线是物理层通信的基础。超时适配:根据环境调整响应与字节超时,平衡效率与稳定性。从机管理:动态地址绑定与线程安全设计支持灵活扩展。环境适配工业现场长距离通信时,优先增大响应超时(≥1秒)并添加终端电阻。高干扰环境中,同时增大字节超时(≥500ms)并启用奇偶校验。代码健壮性每次重连后重置超时参数,避免上下文残留。添加重试机制(如3次重试)应对偶发超时。监控与维护定期通过和。
2025-04-19 09:27:10
1100
3
原创 LibModbus移植
在嵌入式开发中,Modbus协议被广泛应用于工业自动化设备之间的通信。LibModbus作为一款开源的Modbus协议库,提供了丰富的接口用于实现Modbus通信功能。本文将详细介绍如何将LibModbus移植到嵌入式Linux系统中,并通过测试程序验证其功能。
2025-04-19 09:26:37
785
4
原创 Sqlite3交叉编译全过程
然后将sqlite_sequence表中对应表格的seq置为0;也可以直接把sqlite_sequenc中对应表名的记录删除掉。9.1、当设定触发器后,修改过表名,由于触发器内写的表名是修改之前的,所有在触发器中的操作会使得操作失败。目录添加到/etc/profile文件中,所以在控制台中可以直接调用编译器。callback 函数用于处理查询结果(见示例中的回调函数)。释放错误消息内存:sqlite3_free(err_msg)。将.a文件移植到程序文件,直接调用编译到程序中。修改触发器后解决问题。
2025-04-18 09:13:45
1044
3
原创 Protocol buffer交叉编译及使用
在开发过程中,高效的数据序列化与反序列化技术至关重要,Protocol Buffer(简称 protobuf)便是这样一种强大的工具。然而,在使用 protobuf 进行 C 语言开发时,由于其原生不支持 C 语言,需要借助一些额外的步骤来实现相关功能。本文将全面总结在 Linux 环境下 protobuf 交叉编译及使用的关键步骤与要点。
2025-04-18 09:13:02
1594
3
原创 深入探究 printf 和 sprintf 函数中参数类型不匹配导致的问题及解析
在 C 语言编程中,我们经常会用到printf和sprintf这样强大的函数来进行格式化输出。然而,在实际使用过程中,如果不注意参数类型与格式说明符的匹配,就很容易出现一些意想不到的问题。尤其是当涉及到32位和64位整数时,格式化字符串与实际参数类型不匹配可能会引发各种奇怪的错误,甚至导致程序崩溃。今天,咱们就一起来深入探讨一下这背后的原因以及相关的解决办法。在C语言中,使用 printf 等可变参数函数时,必须确保格式化字符串与参数类型严格匹配。
2025-04-17 09:25:50
597
6
原创 stm32c011f4烧写程序 could not stop Cortex-M device
Could not stop Cortex-M device”是一个较为常见的STM32烧写问题,其原因可能涉及硬件连接、软件配置、芯片状态等多个方面。在遇到这一问题时,开发者应按照以下步骤进行排查和解决:• 检查硬件连接,包括复位引脚、JTAG/SWD接口、BOOT引脚等,确保硬件电路正常且连接正确。• 检查软件配置,包括编译选项、下载选项、中断向量表偏移、看门狗设置等,确保开发工具的配置与芯片的实际需求相符。
2025-04-16 09:11:34
1152
3
原创 STM32 调试口STM32CUBEMX配置
• JTAG调试接口适合复杂的调试场景,功能强大但占用较多引脚。• SWD调试接口适合简单的调试场景,节省引脚资源且硬件成本较低。• 如果引脚资源紧张,可以选择SWD接口或禁用调试接口,将引脚释放为普通GPIO使用。在实际开发中,根据项目需求和硬件资源情况选择合适的调试接口类型。
2025-04-16 09:11:10
937
4
原创 STM32并口屏应用实例:点亮你的显示世界之应用篇
本文通过一个实际案例,展示了如何使用STM32驱动8位并口屏。通过硬件连接和软件编程,我们实现了屏幕的初始化、数据传输和显示功能。并口屏以其快速的数据传输能力,在嵌入式显示领域具有广泛的应用前景。希望本文能为你的项目提供参考和启发。本文提及的并口屏显示应用是针对这一系列文章所取的题名,所涉及的显示框架设计不仅仅局限于并口屏,其他串行接口也是适用的。
2025-04-15 09:11:44
1141
10
原创 STM32并口屏应用实例:点亮你的显示世界之程序篇
在嵌入式系统开发中,显示设备是与用户交互的重要界面之一。STM32作为一款功能强大的微控制器,支持多种外设接口,其中并口屏的驱动应用非常广泛,其抗干扰性比其他接口更为出色。本文将通过一个实际案例,介绍如何使用STM32驱动并口屏,并展示其原理和实现过程。
2025-04-15 09:11:03
1137
9
原创 STM32并口屏应用实例:点亮你的显示世界之原理篇
并口屏是一种通过并行数据线与控制器连接的显示屏,常见的有TFT-LCD屏。与串行接口相比,并口屏的数据传输速度快,适合高分辨率和高刷新率的应用场景。例如,8位并口屏通过8根数据线同时传输数据,大大提高了通信效率。本文通过一个实际案例,展示了如何使用STM32驱动8位并口屏。通过硬件连接和软件编程,我们实现了屏幕的初始化、数据传输和显示功能。并口屏以其快速的数据传输能力,在嵌入式显示领域具有广泛的应用前景。希望本文能为你的项目提供参考和启发。
2025-04-14 09:11:02
904
10
原创 VM虚拟机安装及Ubuntu安装配置
通过以上步骤,我们成功地在 VMware 上安装了 Ubuntu 系统,并进行了一系列的优化和配置,还解决了安装及使用过程中可能遇到的常见问题,掌握了一些性能优化技巧。在 VMware 中安装 Ubuntu,为我们提供了一个安全、灵活且高效的 Linux 学习和开发环境,无论是学习 Linux 系统的基础知识、进行软件开发,还是测试各种应用程序,都非常方便。希望大家通过这篇文章,能够顺利搭建起自己的 Ubuntu 虚拟机环境,并在 Linux 的世界中不断探索和进步。
2025-04-14 09:10:26
986
12
原创 STM32片内存储参数规划设计应用实例
STM32的存储结构主要包括以下几部分:• 代码区(Flash):用于存储程序代码和常量数据。• 数据区(SRAM):用于存储运行时变量和堆栈数据。• 备份寄存器区:用于存储低功耗模式下的关键参数。在本实例中,我们将重点关注Flash存储区的使用,特别是如何划分参数存储区和程序下载区。本文通过一个实际应用实例,介绍了如何在STM32中设计片内存储参数,并通过结构体方式存储参数。通过STM32Cube配置工程,我们成功划分了参数存储区和程序下载区,并实现了参数的读写操作。
2025-02-26 11:34:49
814
6
原创 杂记:Profibus 测试记录推广
在项目中接触到Profibus总线的开发,由于这套协议相对比较封闭,编程资料比较少,规范文件非常枯燥乏味,晦涩难懂。所以出一个专栏总结一下。
2025-02-26 10:02:39
862
1
原创 STM32外设SPI FLASH应用实例
在嵌入式系统中,数据的存储和备份是一个非常重要的功能。SPI FLASH 是一种常见的非易失性存储器,具有容量大、速度快、接口简单等优点。本文将介绍如何在 STM32F103 上使用 SPI 接口操作 QW128 SPI FLASH,并通过乒乓存储的方式实现数据备份。本文介绍了如何在 STM32F103 上使用 SPI 接口操作 QW128 SPI FLASH,并通过乒乓存储的方式实现数据备份。通过这种方式,可以有效地提高数据的可靠性和系统的稳定性。希望本文对大家有所帮助,欢迎在评论区留言讨论。
2025-02-17 10:59:07
1909
2
原创 STM32旋转编码器应用实例
旋转编码器是一种常用的机械式传感器,广泛应用于需要精确测量角度或位置的场景,如电机控制、人机界面等。STM32单片机提供了多种方式来驱动和读取旋转编码器的信号,本文将详细介绍旋转编码器的工作原理、STM32定时器编码器模式的原理、应用实例以及总结。旋转编码器是一种将机械旋转转换为电信号的传感器,通常用于测量旋转角度或速度。根据输出信号的形式,旋转编码器分为绝对式编码器和增量式编码器。在嵌入式系统中,增量式编码器更为常见,因为它输出的是脉冲信号,适合实时测量。
2025-02-15 14:25:24
1549
8
原创 AI:嵌入式码农晋升之路其三:freemobus从机移植
本文长度有点长,宗旨是对比现在比较热门的AI应用对嵌入式开发的辅助作用,尚且处于摸索之中。从下文的对比中来看,各个应用各有优劣,豆包和DeepSeek对freemodbus的应用似乎推理更深一筹,能够直接给出数据更新的回调函数,但是豆包忽略了参数需要映射到结构体中去。同时三个应用都没有直接给出移植的具体方案,把重点都放在了应用上。所以,笔者再次提出了优化方向,优化移植细节。
2025-02-15 14:25:00
905
1
原创 AI:嵌入式码农晋升之路其二
生成的代码在一定程度上能够满足我们提出的需求,可以根据自己的想法进一步提出优化方向,直到更符合我们实际需求。也可以在这个基础上根据我们的编码习惯进行更改。
2025-02-14 10:14:53
304
2
原创 杂记:守护进程or守护进程脚本
的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。为了防止进程异常挂掉,为了避免影响业务,编写一个守护进程,定时检查某个进程是否存在,如果不存在则自动启动该进程。
2025-02-14 10:14:12
453
1
原创 杂记:使用KIMI优化博客质量记录
这段时间Deepseek比较火,突发奇想通过AI工具来优化博客质量,提高可读性,让读者更容易理解。这也是提高我们博客记录质量的一种尝试。通过KIMI的优化增加了一些原理性的介绍,让初次接触的同学能够更了解本文代码的主题思想。优化前的文章和优化后的文章同时发布出来,并且本文做了对比分析,对比优化前后的效果。为以后博客撰写质量的提高提供了一种思路。后面还需要更多摸索。
2025-02-13 14:28:25
405
5
原创 杂记:AI优化博客——LED呼吸流水灯发波控制
应用场景LED呼吸灯和流水灯效果广泛应用于智能家居、智能设备、汽车仪表盘等领域,用于提升用户体验和设备的美观性。例如,智能家居设备可以通过呼吸灯效果显示设备状态,汽车仪表盘可以通过流水灯效果显示车辆信息。技术背景LED灯控制的基本原理是通过调整LED的亮度来实现不同的视觉效果。呼吸灯效果通过模拟正弦波来实现亮度的渐变,而流水灯效果则通过控制多个LED灯的亮灭顺序来实现动态效果。这段时间Deepseek比较火,突发奇想通过AI工具来优化博客质量,提高可读性,让读者更容易理解。
2025-02-13 14:27:29
819
1
原创 杂记:QT发布
点击增加中的增加文件夹【递归】 ,并选择之前新建的文件夹,也就是存放exe文件的文件夹。添加C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin环境变量。找到文件夹中的这个exe文件(自己修改的名称),就可以复制到桌面或发给他人直接是用了。找到安装文件夹,输入如下命令拷贝所使用的库。软件打包(必须要在执行完上述过程后使用)更改输出文件名称,点击封包,等待结束。修改语言为中文,需要重启软件显示。选择默认无需更改,点击确定。必须使用搜索框打开CMD。点击文件选项,压缩文件。
2025-02-12 09:32:31
1218
原创 AI:嵌入式码农晋升之路其一
AI 辅助嵌入式 C 语言代码编写已经成为一种趋势,它为开发者带来了诸多优势,如提高开发效率、提升代码质量等。然而,目前也面临着一些挑战和局限性。随着 AI 技术的不断发展和完善,相信它将在嵌入式开发领域发挥更加重要的作用,推动嵌入式系统的发展和创新。开发者应该积极拥抱 AI 技术,合理利用 AI 辅助工具,提高自己的开发能力和效率。
2025-02-11 09:25:27
364
原创 杂记:移植FreeRtos启动卡住
后,main函数不会往下执行了,开始执行main函数中定义的Task。正常会启动一个空闲任务,然后启动第一个Task,执行到svc 0,调用 svc 并传入系统调用号为 0 手动拉 SVC 中断。在main函数中调用。
2025-02-10 09:17:11
420
原创 杂记:STM32下载后不运行
另外,栈溢出不一定会死机,比如栈只生长到堆区,或者稍微进入变量区,而且溢出整个过程不对这些区域做写入操作,不对这些区域做取指操作,就可以完美避免hardfault,但溢出还是溢出了,数据还是被修改了.最"直接"的表现是函数调用后,还没看到执行用户代码就发现某些不相干的数据被修改,不过这也足够隐蔽了. 而且,hardfault也不一定是栈溢出的直接结果,只是入栈后数据被修改,出栈时跳转错误(最容易出现),导致指令访问错误,或者数据访问错误。我曾尝试单纯的修改栈或者单纯的修改堆的大小但是程序还都是不运行。
2025-02-10 09:16:41
913
原创 杂记:下载了BootLoader和APP到程序中无反应
是因为采用了printf输出打印。占用了大量堆栈导致程序运行异常。并且没有打开Use MicroLIB库的话会导致无法启动程序。2、如果不关闭printf打印,则加大Heap_Size 到0x2000。且使能Use MicroLIB库。1、关闭printf打印。
2025-02-09 20:44:31
224
1
原创 STM32Cube库和HAL库编写SPI通信程序
请注意,此示例仅适用于使用SPI1作为主设备的情况。如果要使用其他SPI外设或作为从设备,需要相应更改代码。函数中初始化SPI的配置,包括模式、数据大小、时钟极性和相位等。进行同时发送和接收数据。在主函数中,将要发送的数据存储在。数组中,并将接收的数据存储在。
2025-02-08 10:11:28
451
原创 LED呼吸流水灯发波控制
算法QT模拟,输出正弦波曲线。曲线有基准占空比,设置曲线条数,偏移相位,周期。20ms计算一次曲线当前值,在一定刷新周期(0.1ms)和输出值判断当前是否电量LED灯。根据占空比实时控制LED灯的亮度。
2025-02-07 10:09:07
267
原创 STM32 CUBE Can调试
需要注意的是STM32CUBE配置的代码需要再手动添加过滤器,并且将FIFO关联。启动函数记得添加在while循环之前。
2025-02-07 10:08:42
831
原创 第八章:Profibus 协议纯软方案测试记录
本案例采用的时循环接收,中断发送的方式进行数据交互。不支持波特率自适应。后期优化方向,可以考虑通过DMA接收和DMA发送等方式进行数据交换,前提是确保断帧正确和数据处理及时。考虑使用时钟频率更高的MCU,或许能够实现更高的通信波特率。目前通过测试软件测试最大波特率能够达到93.75K,长时间测试误码率万分之0.4左右。9600、19200、45.45K均能够实现长时间通信。本案例能够实现中断重连,通信中断后发送状态帧,通知主机重新建立连接。
2025-02-06 14:14:56
942
3
原创 STM32F103 STM32CUBE HAL库 串口DMA发送无法执行回调
弱函数重定义/***/ }重定义回调函数...STM32CUBE给开发提供了很多便利,但是HAL库还是有不少坑在里面,需要我们理解库函数的机制,遇到BUG后去调试优化。
2025-02-06 14:14:01
606
原创 第十一章:CSIP调试记录和调试方法
调试说明调试DER程序是使用官方指定测试机构开发的测试程序,测试程序只有插上官方授权测试第三方的测试狗(U盘秘钥)才能够正常启动,而且插上必须使用管理员权限启动,否则会报错通信异常。测试之前必须电机Configuration配置端口号和Ipv4或者ipv6。一般使用测试软件安装电脑的ip。
2024-12-16 10:57:36
197
原创 第十章:CSIP:DER_CLIENT各个帧处理方式
本文介绍了智能电网中的关键标准,包括IEEE 2030.5、Common Smart Inverter Profile (CSIP)和Rule21。2030.5标准用于智能逆变器与电网的互联互通,CSIP是其一部分,而Rule21是加州的并网法规,要求逆变器具备特定功能和通信协议。文章还提及了SUNSPEC联盟的角色,提供认证和测试标准,助力分布式能源设备的互操作性。本文介绍的时协议相关处理方式
2024-12-16 10:46:32
192
原创 第九章:CSIP应用程序开发方案参考
数据帧解析和打包调用libxml2库函数编写,所有接收和发送帧都需要实现打包和解析,有助于存储的控制打印分析。6、获取控制时,从fsa开始判断优先级,一层一层判断只取优先级最高的控制,获取不到就取优先级次高的,直到本轮轮询获取到控制为止。控制接收、开始、结束需要更新控制的状态,等待调度,激活,替代。derp_List;4、DERControl的优先级由其包含的DERProgram的优先级设置决定,该DERProgram具有指示高优先级的低优先级值。4、轮询List(数组),取当前最新的开始时间的控制执行。
2024-12-15 15:54:57
101
原创 第八章:CSIP参考程序分析解读
SunSpec协议主要用于光伏储能系统的监测和控制。例如,在光伏储能系统中,SunSpec协议可以用于监测逆流,确保能量的合理利用和逆流保护。具体应用包括:高精度电能计:能够准确记录光伏系统的发电量和用电量,确保数据的可靠性。实时监测:支持双向计量光伏储能系统中的电能参数。数据记录与分析:保存电能数据,并通过数据分析帮助用户优化能量使用。通讯方式:支持SunSpec通讯协议,可上传平台实现远程监控和数据传输,方便用户进行集中管理。
2024-12-15 15:53:46
109
1
原创 第七章:Profibus 真实项目协议对接
本着授人以鱼不如授人以渔的原则,本专栏没有给出完整的代码,但是总体描述了总体思路和需要注意的点。实在需要的朋友可以通过xianyu搜索本人用户昵称同号的xianyu账号,查找文章名称同名的链接。专栏到此基本结束。后续如果有时间的话,会新开一个调试方法、调试过程的博文专栏。如有更新,请留意,谢谢!
2024-12-10 17:06:50
920
旋转编码器数值获取单片机/STM32代码:旋转编码器限定上下范围,按十位、百位、千位、万位为单位步进调整数值
2025-04-28
电池管理系统中的物理最优控制与建模:功率估算和老化机制研究
2025-03-01
电池管理系统中的电压基功率极限估计:理论与方法解析
2025-03-01
电池管理系统中的电池单元平衡技术解析与应用场景分析
2025-03-01
电池健康状态评估中的容量与阻抗参数估计方法及仿真验证(ECE5720课程笔记)
2025-03-01
电池状态估计中的卡尔曼滤波器应用及其优化
2025-03-01
电池管理系统中模拟电池组的建模方法与电动汽车仿真
2025-03-01
电动汽车电池管理系统(BMS)的功能与要求:电压、电流、温度监测及保护机制详解
2025-03-01
新能源汽车电池管理系统的架构设计及其应用方案 - 动力锂电池安全性控制
2025-03-01
电池管理系统(BMS)调试指南与应用建议-V1.0
2025-03-01
CANoe软件是由德国Vector公司开发的一款用于汽车电子控制单元(ECU)网络和单个ECU通信开发和测试的分析工具 它被广泛用于汽车行业中,特别是在ECU网络和通信的仿真、测试和诊断方面
2025-03-01
winDPMaster 是一款模拟 Profibus DP 主站功能的专业软件,支持 DPV0 协议中IO周期性数据 读写,方便现场测试和生产测试等
2024-12-08
VVV CSIPImplementationGuide-V2.1-03-15-2018
2024-06-01
VVV SunSpec-CSIP-Conformance-Test-Procedures-Results-Reporting
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
Mysql数据库表格丢失或者不存在无法操作也无法更新
2024-06-01
如何限定唯一的加密套件ECDHE-ECDSA-AES128-CCM8?
2021-05-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人