打印
[STM32F0]

STM32F030C8T6死机,百思不得其解!

[复制链接]
1642|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小管|  楼主 | 2020-5-14 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小管 于 2020-5-14 10:33 编辑

应用介绍:有个网关型主机,用的是STM32F030C8T6,24小时工作,一个串口接的是网络转串口模块,另一个串口接的是几十个485设备。
电路介绍:ACDC电源模块输出5V,一个5V转3.3V的LDO专门供MCU,MCU使用的是内部RC振荡器,有一个1F的超级电容用于停电时发送几秒数据到服务器
编程介绍:已经打开内置软件看门狗,喂狗是在主程序中,有个指示灯亮5秒灭5秒(在定时中断中进行翻转)
故障现象:使用一段时间大概几十天,不定时出现死机现象,无法通讯,指示灯熄灭,因为设备在外地,无法亲自测试,只能让客户断电重启,断电重启后一切正常。
现在判断的问题可能出在以下几点:
1、出现闩锁现象;
2、因为某种原因电源电压跌落导致复位不完全,在初始化看门狗之前就出现死机对于第二点,能否在烧录时打开选项字节中的硬件看门狗?让MCU一上电就工作
请各位经验丰富的大神出出主意,被这个问题已经困扰很久了。

使用特权

评论回复
沙发
cdklh1968| | 2020-5-14 11:43 | 只看该作者
大部分是软件设计问题,估计有些突发状态没有考虑到,从系统再仔细想想,鉴定完毕!!!

使用特权

评论回复
板凳
小管|  楼主 | 2020-5-14 12:02 | 只看该作者
cdklh1968 发表于 2020-5-14 11:43
大部分是软件设计问题,估计有些突发状态没有考虑到,从系统再仔细想想,鉴定完毕!!! ...

是的,现在也一直在看代码。怀疑是掉在不停喂狗的程序里了,但想不通的是定时中断中的指示灯没反应了

使用特权

评论回复
地板
gx_huang| | 2020-5-14 12:30 | 只看该作者
极有可能是硬件问题,故障出现时,看看MCU电压电流也可以大致判断问题

使用特权

评论回复
5
mmuuss586| | 2020-5-14 12:37 | 只看该作者
程序跑飞了吧;

485最好隔离下

使用特权

评论回复
6
香水城| | 2020-5-14 13:41 | 只看该作者
比较偏向怀疑电源波动或干扰方面的问题,
另外你的看门狗可以配置为硬件启动;
顺便检查下BOOT脚的焊接情况;

使用特权

评论回复
7
小管|  楼主 | 2020-5-14 13:55 | 只看该作者
本帖最后由 小管 于 2020-5-14 14:14 编辑
香水城 发表于 2020-5-14 13:41
比较偏向怀疑电源波动或干扰方面的问题,
另外你的看门狗可以配置为硬件启动;
顺便检查下BOOT脚的焊接情况 ...

BOOT脚是直接接地的,现在是只要断电重启就可以正常,所以我觉得虚焊的可能性不大。也因为设备在外地,没法给复位脚复位,现在只能断电重启,所以也不知道是栓锁效应还是真正死机了。看门狗配置成硬件启动,是不是可以避开上电就被干扰的情况?
另外,代码中喂狗的位置有什么要注意的吗?

使用特权

评论回复
8
香水城| | 2020-5-14 20:12 | 只看该作者
小管 发表于 2020-5-14 13:55
BOOT脚是直接接地的,现在是只要断电重启就可以正常,所以我觉得虚焊的可能性不大。也因为设备在外地,没 ...

硬件开启看门狗可以避免死机,即使受干扰了能复位;

还有 BOOT脚直接接地不可取,强烈建议用个几K~10K的电阻到地 合适点。

下面话题可以参考下。
关于BOOT0脚的连接话题

使用特权

评论回复
9
小管|  楼主 | 2020-5-15 19:10 | 只看该作者
本帖最后由 小管 于 2020-5-15 19:13 编辑
香水城 发表于 2020-5-14 20:12
硬件开启看门狗可以避免死机,即使受干扰了能复位;

还有 BOOT脚直接接地不可取,强烈建议用个几K~10K的 ...

非常感谢版主的回答,我准备把所有用到的产品BOO0脚全部接一个10K电阻到地。F0系列和F1系列都是一样的吧?另外,如果是这个BOOT0脚接地导致进错启动区的话,是不是硬件开启看门狗都失效了?

使用特权

评论回复
10
香水城| | 2020-5-15 19:51 | 只看该作者
本帖最后由 香水城 于 2020-5-15 19:53 编辑
小管 发表于 2020-5-15 19:10
非常感谢版主的回答,我准备把所有用到的产品BOO0脚全部接一个10K电阻到地。F0系列和F1系列都是一样的吧? ...

按理说,如果硬件启动WDG,即使进错地方还是能复位。

使用特权

评论回复
11
小管|  楼主 | 2020-5-15 22:36 | 只看该作者
香水城 发表于 2020-5-15 19:51
按理说,如果硬件启动WDG,即使进错地方还是能复位。

明白,那看来以后就硬件开启WDG了。
顺便问个问题,单片机的RST脚仅仅是接了个0.1uf的电容到地,并没有上拉10K电阻的,不知道有没有什么隐患?

使用特权

评论回复
12
小管|  楼主 | 2020-5-15 23:19 | 只看该作者
本帖最后由 小管 于 2020-5-15 23:21 编辑
香水城 发表于 2020-5-15 19:51
按理说,如果硬件启动WDG,即使进错地方还是能复位。

另外,用软件开启看门狗时我发现一个现象,跟大家分享一下。
我们的程序软件开启看门狗是在各个模块初始化完成后,差不多几百ms了。我不停的上下电时发现有时候死机了。后来把开启看门狗放在最前面,相当于一上电就开启看门狗,就没再出现死机的现象了,但有时发现启动慢了,说明看门狗起作用了(看门狗复位时间设置为4秒左右)。

使用特权

评论回复
13
henglin| | 2020-5-24 22:46 | 只看该作者
这个你要 调试一下,看看 最后程序是不是 在硬件故障 处理函数里面 出不来了
要仔细检查  看看 SP  MSP PC 等等,特别注意 指针操作
另外你看看有没有用RTOS 有没有资源访问 冲突的问题,要做互斥

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

398

帖子

9

粉丝