尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Keil Debug调试心得
下面这个问题是基于程序6-12libmodbus_all_uart来实现的1.在keil中监控局部变量必须在该函数内部断点进行访问不然是访问不到这个变量的实际内容的所以目前问题进一步定位在为什么信号量无法正确的创建好无奈的按道理调用的是官方API不应该有问题的挺实用的从malloc分配错误倒推看是谁触发的找到第一个原因是因为这个函数多次进行申请内存直到把堆的内存都用完然后程序崩掉修改完之后程序直接进入HardFault开始排查第二个问题这个问题无法复现我记得我只修改了ClientTask任务的堆栈大小就没问题了。可是我尝试改回来以复现这个问题的时候无法复现仿佛这个问题没有出现过第二个问题ux_device_cdc_acm_send这个usb串口发送根本没有得到运行有这种事情看我一步一步调试sprintf(str,ctx-backend-_modbus_rtu_send_msg_pre:%X,ctx-backend-_modbus_rtu_send:%X,(uint32_t)ctx-backend-send_msg_pre,(uint32_t)ctx-backend-send);我去这两个函数的地址是一样的都是800CC48D逆天怎么会这样。继续debug就很奇怪。我一开始以为是(uint32_t)ctx-backend-send_msg_pre,(uint32_t)ctx-backend-send这两个函数名称前缀一样导致keil犯糊涂于是将send函数改为xsend函数然后这两个函数地址确实不一样了但是_modbus_rtu_xsend又和_modbus_set_slave地址重复我真不理解了啊太逆天了应该是哪里出问题了有图有证据找到问题了使用下面注释的代码即使用未初始化指针就会出现这个问题解决完这个问题就可以执行到这个函数了ux_device_cdc_acm_send不过呢貌似数据还是没有发出去有点不知道为什么了很奇怪明明执行ux_device_cdc_acm_send这个底层函数怎么还会失败呢找到问题所在啦是这个没有定义我猜测应该是UX_STANDLONE在cubemx生成的过程中被不小心去掉了这个原因还好我尝试了一下之前看到这页代码有这个#define声明都不打算尝试这个可能还好我进入内部代码看了一下发现#define相关声明下的函数是灰色的虽然可能是keil反应慢导致的但是还好尝试了一下真是酣畅琳琳的调试的一天啊这个作为面试问到你遇到的最大的困难是什么中进行回答3.在写板载串口互相收发数据时又遇到了问题第一个问题还是卡死在assert(queue)中一看是我没有调用pdev-init函数导致没有创建队列很好解决第二个问题根据接收不到数据我将断点打在串口接收中断函数中包括空闲中断和队列接收函数中都是不行的表明串口4根本没有接收到程序突然又可以了可能是需要一定的反应时间本来人家已经接收到消息我等不及直接开启仿真了所以说有的时候不能着急这次仿真有点可惜没学到具体的debug经验就是提升了熟练度还有心态。不然被bug搞心态4.关于SSCOM无法和W800建立网络连接的问题一开始遇到这个问题就是老办法抓瞎。一重试二是换个网络调试助手都不出意味的没有效果。后来问GPTGPT说先尝试ping一下看看能不能ping通然后一尝试确实没有ping通因为电脑和W800没有处于同一网段后来把笔记本电脑和W800都连接在热点上就解决这个问题了你可能会问为什么一开始不直接把电脑也连接到手机热点上试试呢因为我一开始手机热点设置的最大设备连接数是1导致电脑一直连接不上去我又觉得不是同一个网络又没有关系其实是有关系的连接同一个网络是保证ip地址在同一网段最简单的办法
RELATED

相关推荐

深入解析Linux链接:软链接与硬链接的本质区别与实战指南

深入解析Linux链接:软链接与硬链接的本质区别与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/25 1:19:06
Thaiphoon Burner内存SPD修改全攻略:从备份到刷写恢复

Thaiphoon Burner内存SPD修改全攻略:从备份到刷写恢复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/25 1:14:06
内存屏障实战:多核与DMA系统中必须掌握的同步技术

内存屏障实战:多核与DMA系统中必须掌握的同步技术

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/25 1:14:06
MORE NEWS

更多资讯

📰

数学物理计算题批改:公式识别与步骤给分技术

数学和物理计算题是AI阅卷中技术难度最高的题型之一。不像选择题有唯一答案,计算题需要识别手写公式、理解解题步骤、按评分标准给分。本文拆解这个技术链路。 一、手写公式识别的特殊之处 普通文字OCR识别的是一维线性文本,但数学公式是二维结构。一个分…

📰

内容运营的终局:从流量生产者到语义资产配置者

【摘要】AI时代决策入口迁移正在重构内容行业的价值体系。这套框架覆盖4类存量内容症状、4步选题约束法、5维质量打分模型、3层结构化标准、3类典型误区,帮助从业者完成从流量执行者到资产经营者的能力升级,实现内容获客成本30%以上的长期下降。核心关键…

📰

面试问题总结

1.回答输出结果,为什么?Integer i new Integer(100);Integer j new Integer(100);System.out.println(i j);String a "abc";String b "a" "b" "c";System.out.println(a b);String c "abcd"…

📰

【Linux网络加餐】《HTTP 会话保持:Cookie 与 Session 原理及实验验证》---详解

一.HTTP 会话保持1.Cookie HTTP 的特征如下:简单快捷无连接无状态HTTP 本身是无状态协议:协议层面不会保存客户端的历史访问信息,每一次 HTTP 请求都是独立的,服务器收到单次请求时,默认不知道这个请求来自哪个用户、之…

📰

2026年毕业设计相关信息

01 毕业设计学生信息基本信息 学生1 ### 学生2### 学生2 卓老师,想问您今年还有本科毕设名额吗? 我是自动化2023级本科生曾天怀(自34班),之前大二的时候上过您的信号与系统课,想要在您的指导下完成毕设。 在…

📰

RE转换为NFA:Thompson算法

RE转换为NFA:Thompson算法词法分析器生成器接受RE作为输入,并将RE转换为NFA,再将NFA转换为DFA,进一步处理得到词法分析器代码。 Thompson算法思想 它是一个递归算法:考虑下面正则表达式的基本形式:前面两种…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬