[STM32F1]

STM32是否需要加硬件看门狗

[复制链接]
2438|13
手机看帖
扫描二维码
随时随地手机跟帖
紫阳真人|  楼主 | 2019-11-27 17:32 | 显示全部楼层 |阅读模式
本帖最后由 紫阳真人 于 2019-11-27 17:35 编辑

单片机:STM32F103CBT6
库:HAL
现象:系统(多设备、多CAN节点,问题板只是其中一部分)上电时,问题板无响应;从新单独给问题板通电,正常。单独给问题板通断电实验未复现。
分析:怀疑系统EMC造成单片机独立看门狗没有正常启动
按照cubemx生成的顺序,把看门狗初始化函数放到以下函数的后面:
  SystemClock_Config();  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_DMA_Init();
  MX_ADC1_Init();
  MX_CAN_Init();
  MX_TIM2_Init();
而这些函数中大多初始化失败就会调用死循环:
void _Error_Handler(char *file, int line)
{
  while(1){}
}
如果初始化失败就会进入死循环,那么看门狗就无法启动。所以把看门狗初始化放到最前面可以解决这个问题。
但是,如果不是进入死循环,而是PC根本没有到看门狗初始化函数就停了,是否只能通过外加硬件看门狗来解决?
问题:是否有必要增加外部硬件看门狗?


使用特权

评论回复
sonicll| | 2019-11-27 18:40 | 显示全部楼层
本帖最后由 sonicll 于 2019-11-27 18:42 编辑

如果真的是EMC问题,也许EMC也会导致外部硬件看门狗失效啊,治标不治本。
还是先从电路硬件方面查找问题吧,示波器观察上电时的VDD供电,NRST信号,看看启动正常和异常时有什么区别。

使用特权

评论回复
紫阳真人|  楼主 | 2019-11-27 21:18 | 显示全部楼层
sonicll 发表于 2019-11-27 18:40
如果真的是EMC问题,也许EMC也会导致外部硬件看门狗失效啊,治标不治本。
还是先从电路硬件方面查找问题吧 ...

难点在于复现不出来,仅仅在客户那里偶尔复现,我在家里无法复现,也无法还原客户使用环境。

使用特权

评论回复
kingkits| | 2019-11-28 09:07 | 显示全部楼层
首先,你应该有个准备,在初始化时,如果不能确定在哪里出问题了,就尝试给个状态灯,程序运行到哪里,都有个简单状态,这样也能看到到底是哪个环节出问题了。
然后再根据实际情况想办法------一般的原则,软件的问题要由软件解决,硬件问题由硬件解决。简单的看门狗应该不是最好的方案。

使用特权

评论回复
紫阳真人|  楼主 | 2019-11-28 10:59 | 显示全部楼层
kingkits 发表于 2019-11-28 09:07
首先,你应该有个准备,在初始化时,如果不能确定在哪里出问题了,就尝试给个状态灯,程序运行到哪里,都有 ...

我的意思是如果在芯片启动时,没有进入看门狗初始化之前就挂了,此时系统时钟以及GPIO都没有初始化,也就很难抓到挂在哪个环节。有没有这种可能?

使用特权

评论回复
sonicll| | 2019-11-28 13:37 | 显示全部楼层
紫阳真人 发表于 2019-11-28 10:59
我的意思是如果在芯片启动时,没有进入看门狗初始化之前就挂了,此时系统时钟以及GPIO都没有初始化,也就 ...

那你可以修改startup.s文件,需要汇编语言编程,在跳转SystemInit函数之前配置看门狗试试

使用特权

评论回复
kingkits| | 2019-11-28 14:40 | 显示全部楼层
你的程序如果在这个时候挂了,大多数是硬件问题。

使用特权

评论回复
zjq985062714| | 2019-11-30 09:38 | 显示全部楼层
这种和硬件有关问题,只靠软件不一定可行~

使用特权

评论回复
八层楼| | 2019-12-11 13:20 | 显示全部楼层
这种问题很不好解决  因为你没有找到问题出在哪里

使用特权

评论回复
晓伍| | 2019-12-11 13:22 | 显示全部楼层
如果着急的话 可以临时加一个外部的看么狗 看以后会不会还出现这种情况

使用特权

评论回复
磨砂| | 2019-12-11 13:25 | 显示全部楼层
总之就是治标不治本

使用特权

评论回复
xiaoqizi| | 2019-12-11 13:28 | 显示全部楼层
真是个棘手的问题

使用特权

评论回复
cainiao518| | 2019-12-11 13:47 | 显示全部楼层
紫阳真人 发表于 2019-11-28 10:59
我的意思是如果在芯片启动时,没有进入看门狗初始化之前就挂了,此时系统时钟以及GPIO都没有初始化,也就 ...

如果初始化过程中挂了,需要用指示灯指示一下或蜂鸣器报警提示

使用特权

评论回复
紫阳真人|  楼主 | 2019-12-13 16:06 | 显示全部楼层
磨砂 发表于 2019-12-11 13:25
总之就是治标不治本

是的

使用特权

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

本版积分规则

个人签名:必须有所突破

75

主题

525

帖子

9

粉丝