欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

STM32使用IWDG死机

程序员文章站 2022-03-11 15:19:07
STM32使用IWDG死机嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息:The processor has escalated a configurable-priority exception to HardFault.An instruction executed with an invalid EPSR.T or EPSR.IT field (CFSR.INVSTATE).Exception occured at PC = 0x0, LR = 0x0现象是有时会死机有时又...

STM32使用IWDG死机

嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息:
The processor has escalated a configurable-priority exception to HardFault.
An instruction executed with an invalid EPSR.T or EPSR.IT field (CFSR.INVSTATE).
Exception occured at PC = 0x0, LR = 0x0

现象是有时会死机有时又确实重启了;

跑的FreeRTOS,芯片是STM32F205ZE;看门狗代码配置如下:

static void MX_IWDG_Init(void)
{

  /* USER CODE BEGIN IWDG_Init 0 */

  /* USER CODE END IWDG_Init 0 */

  /* USER CODE BEGIN IWDG_Init 1 */

  /* USER CODE END IWDG_Init 1 */
  hiwdg.Instance = IWDG;
  hiwdg.Init.Prescaler = IWDG_PRESCALER_4;
  hiwdg.Init.Reload = 4095;
  if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN IWDG_Init 2 */

  /* USER CODE END IWDG_Init 2 */

}

然后延长看门狗时间,就是把预分频改为IWDG_PRESCALER_32,看门狗不去重启,死机问题自然也不会发生了,,只是这个死机的原因任然不得而知@STM32官方

PS:有遇到这个问题的小伙伴吗?

后续:

  • 死机的原因不是看门狗,而是所有复位操作都会导致死机,具体原因也不清楚,猜测是在晶振和复位引脚这一块,可能是复位信号与晶振引脚之间没清理干净,复位的时候让晶振停振了。因为我就把板子的晶振引脚和复位引脚用镊子戳了戳就莫名奇妙的好了。。。

  • 要不是焊了三块样机,我估计要找好几天软件的bug。。。所以说样机焊一块是不够的,,不然某个奇葩问题可能会让你怀疑人生;

本文地址:https://blog.csdn.net/qq_18628523/article/details/107929858