linalinb 发表于 2018-8-27 08:40:16

STM32死机,内部硬件看门狗也不复位

我做了几十套通讯板,采用的是单片机型号是stm32f103c8t6,用上了UART1和UART2两个通讯口,并使用了内部硬件看门狗,喂狗语句只在主循环里有一条,按理说如果死机的话,肯定会复位的。实际使用中还是会出现死机现象,要断电重启才能正常,请问是什么原因导致的?谢谢!

wenyangzeng 发表于 2018-8-27 13:26:43

linalinb 发表于 2018-8-27 11:09
有道理,不过设短了就要在其它地方再加喂狗指令了,我担心在其它地方加多了喂狗指令,如果跑飞会更容易被 ...

其实喂狗只放在主循环并不很安全。在所有do{}while()都要放。你不能保证这些do{}while()里会出现何种意外。

chifen 发表于 2018-8-27 08:54:22

你有没有测试 ,不喂狗时会不会复位

toofree 发表于 2018-8-27 09:07:43

本帖最后由 toofree 于 2018-8-27 09:09 编辑

这么成熟的片子,不至于有这问题,项目中用过stm32f103看门狗,一直未出问题。
单独测试喂狗吧。看看不喂狗的话,会不会复位重启。
初始化看门狗,需要打开看门狗,并喂狗,当然还有一些其它设置,时钟源、喂猪周期等。请使用单独看门狗。窗口看门狗不要使用了,对你来说窗口看门狗更不好搞,需要在“窗口”内喂狗。

linalinb 发表于 2018-8-27 09:17:17

chifen 发表于 2018-8-27 08:54
你有没有测试 ,不喂狗时会不会复位

实验测试不喂狗可以复位,而且在我们实验长期测试也没出现过死机的现象,但在车间使用中就偶尔出现死机的问题了,板子是装在设备上的,车间环境比较恶劣,干扰也比较大

wenyangzeng 发表于 2018-8-27 09:24:02

本帖最后由 wenyangzeng 于 2018-8-27 09:25 编辑

楼主只要在主循环里不喂狗,就能知道看门狗配置是否正确。顺便知道喂一次够多长时间比较合适。

linalinb 发表于 2018-8-27 09:31:44

本帖最后由 linalinb 于 2018-8-27 10:05 编辑

toofree 发表于 2018-8-27 09:07
这么成熟的片子,不至于有这问题,项目中用过stm32f103看门狗,一直未出问题。
单独测试喂狗吧。看看不喂狗 ...
我现在没使用窗口看门狗,只使用了内部硬件看门狗,而且就只在主循环里只用了一条喂狗指令,长期实验测试都没问题,用在设备上,在车间长期使用过程中就有偶尔出现死机现象,需要断电重启。在车间工作是24小时不间断的,会不会与UART1和UART2中断冲突有关呢?

linalinb 发表于 2018-8-27 09:37:32

wenyangzeng 发表于 2018-8-27 09:24
楼主只要在主循环里不喂狗,就能知道看门狗配置是否正确。顺便知道喂一次够多长时间比较合适。 ...

是个好办法,我也想干脆去掉喂狗指令,每运行6秒就复位一次(看门狗设置溢出周期为6秒),但是这样一些通讯数据就可能会出现错乱。不过可以这样试试。

海迹天涯 发表于 2018-8-27 09:37:42

linalinb 发表于 2018-8-27 09:17
实验测试不喂狗可以复位,而且在我们实验长期测试也没出现过死机的现象,但在车间使用中就偶尔出现死机的 ...

去年做了一款产品,STM32F051R8,是13.56M赫兹的无线通信产品,偶尔也会出现你说的这种情况,因为只有某些客户的现场才会出现这种现象,自己公司测几个月都没问题,客户拍了视频我看了,确实死机了。结果也一直没找到原因,请问你找到了吗?

linalinb 发表于 2018-8-27 09:41:12

海迹天涯 发表于 2018-8-27 09:37
去年做了一款产品,STM32F051R8,是13.56M赫兹的无线通信产品,偶尔也会出现你说的这种情况,因为只有某 ...

就是没找到原因,所以来这里请教大家,这问题很头痛。早知道会出现这种问题的话,加外部看门狗芯片可能就好。

linalinb 发表于 2018-8-27 09:50:15

wenyangzeng 发表于 2018-8-27 09:24
楼主只要在主循环里不喂狗,就能知道看门狗配置是否正确。顺便知道喂一次够多长时间比较合适。 ...

实验测试不喂狗是可以正常复位,说明配置应该是正确的,我配置的是6秒次溢出,但在车间使用是还会偶尔出现死机的情况,必须要断电重启才行。
页: [1] 2 3 4
查看完整版本: STM32死机,内部硬件看门狗也不复位