你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407运行半个月后出现死机

[复制链接]
东方人的梦 提问时间:2018-4-10 11:24 /
阅读主题, 点击返回1楼
收藏 评论20 发布时间:2018-4-10 11:24
20个回答
东方人的梦 回答时间:2018-4-11 13:13:55
feixiang20 发表于 2018-4-11 03:07
既然重启可行,那就检查硬件发热元件以及初始化代码,查看芯片硬件复位

程序运行后开始工作就没有初始化代码了,也无硬件发热情况,而且从机是一样的装置,并没有出现死机现象。单机也不出现死机
东方人的梦 回答时间:2018-4-11 13:18:18
不吃肉的羊 发表于 2018-4-11 10:26
这种偶然性的死机很麻烦,我也遇到过蛮多次
1.硬件问题
被静电打死的情况比较多,你试试花两块钱买个打火机 ...

硬件经过静电测试的,也通过EMC测试,没有问题;
软件出问题至少都是工作半个月,仿真器仿真不到这么久,而且一死机连modbusTCP都停止工作了,显示系统状态的指示灯也不闪烁了,但是晶振肯定是有波形的,示波器测试得到。
东方人的梦 回答时间:2018-4-11 13:24:18
任风吹吹 发表于 2018-4-10 16:58
这种问题一般是只能你自己解决,想要知道原因并彻底解决问题,建议将打印信息输出来,监控程序运行流程,关 ...

我把通讯的相关参数全部通过modbusTCP送到上位机了,出现问题后modbusTCP停止,停止前的参数都是正常的,通过仿真器,一般仿真器连续仿真几天就不错了,但是我们设备一般出问题至少都超过半个月,也没办法仿真,现在我只能扩大堆栈空间,已经开始做老化测试了,希望有用吧
cheny3922 回答时间:2018-4-19 08:57:08
本帖最后由 cheny3922 于 2018-4-19 08:58 编辑

是不是某个变量溢出了判断失败,比如一个毫秒计数器a,然后判断条件if((a>(b+500))b=a,dosomething;如果a计数到最大后再计数就变成0,然后判断一直就不成立了

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

带我装逼带我飞 回答时间:2018-4-19 09:19:32
我曾经试过使用UCOS+LWIP做网络通讯的应用,运行一段时间后也是程序死机,也怀疑过堆栈后加大堆栈空间,问题照样存在。。。一直也找不到原因,后来只能加个看门狗勉强应付了

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

pentral0311 回答时间:2018-4-19 10:58:40
小弟浅见,觉得问题偏向软件部分,
1.可能堆栈异常,例如某个子程序,开的一个变量缓冲不够,一开始也没问题,等频繁调用时,慢慢造成你的PC指针或者溢出。
2. 还有一种就是can使用中断方式,是否使用了过多的操作,因为断开没问题,只有联网通讯才出现。

3.可以只保留CAN通讯功能,把其应用的先删除,再试试,会不会出现,这个可以区分是底层的硬件方面的,还是应用层出的问题,缩小范围吧。 建议多搭几套测试环境,看看是那种环境出来的

以上仅供lz参考, 开发最大的工作就是找思路的DEBUG

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

叔森 回答时间:2018-4-21 16:35:22
我之前遇到过类似问题,后来发现是STM32 CAN通信有个错误计数保护机制,当发现CAN总线错误帧超过128时自动离线。有两个解决办法,CAN芯片初始化或关闭错误计数自动离线功能(在STM32 CAN配置里)。
这个别的没事个别板有问题 原因还是你那CAN总线布线在运行中受干扰问题。最好顺带优化下那CAN线,双绞线首末两端加120欧电阻

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

hello_bug 回答时间:2018-4-21 16:53:22
确定是重启就好了?
那也有2种情况:1、硬件问题。芯片有问题,看看硬件设计和选型上是否有不合理的地方。
2、软件问题,但软件问题可以看产品,如果所有产品都是如此,那就是软件问题,如果有一部分没事,那和软件就没关系了。如果是软件问题,建议加打印输出,然后一直运行,当停止运行时,将当时状态输出查看。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

东方人的梦 回答时间:2018-5-2 16:15:40
pentral0311 发表于 2018-4-19 10:58
小弟浅见,觉得问题偏向软件部分,
1.可能堆栈异常,例如某个子程序,开的一个变量缓冲不够,一开始也没问 ...

恩,现在能排除堆栈异常了,只能继续找问题,开发产品容易,找BUG太困难了。谢谢了
东方人的梦 回答时间:2018-5-2 16:17:39
叔森 发表于 2018-4-21 16:35
我之前遇到过类似问题,后来发现是STM32 CAN通信有个错误计数保护机制,当发现CAN总线错误帧超过128时自动 ...

你好,请问CAN离线能引起整个系统死机?
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版