天天看點

STM32 軟體重新開機導緻當機的情況分析

一、背景

在一個項目中需要用到看門狗和軟體重新開機,但是在工作過程中發現存在一種情況會導緻STM32當機,經過分析是軟體重新開機過程中複位信号被外部電路強制拉高,無法在複位後4個時鐘拉低複位管腳,是以,将該複位引腳斷開和外部連接配接即可正常運作。現将該調試記錄如下。

二、測試情況

看門狗喂狗周期初始化為10s。測試了四種情況:

  1. 1:Reset_Pin = NONE  啟用IWDG,無IWDG_FeedDog(),程式10s後重新開機正常運作;
  2. 2:Reset_Pin = 3.3V     啟用IWDG,無IWDG_FeedDog(),程式10s後不重新開機但一直運作;
  3. 3:Reset_Pin = 3.3V     啟用IWDG,無IWDG_FeedDog(),第12s調用SoftReset(),程式10s後不重新開機,第12s軟體不重新開機,程式當機不運作。
  4. 4:Reset_Pin = 3.3V     啟用IWDG,有IWDG_FeedDog(),第12s調用SoftReset(),程式10s後不重新開機,第12s軟體不重新開機,程式當機不運作。

三、分析

  • 外部Reset_Pin上拉4.7k、1k電阻後看門狗和軟體重新開機都正常運作。
  • 外部Reset_Pin強上拉後,看門狗無法重新開機但程式正常運作,軟體重新開機直接會讓程式當機。

四、解決辦法

直接剪掉複位管腳。(很粗暴)