一、背景
在一個項目中需要用到看門狗和軟體重新開機,但是在工作過程中發現存在一種情況會導緻STM32當機,經過分析是軟體重新開機過程中複位信号被外部電路強制拉高,無法在複位後4個時鐘拉低複位管腳,是以,将該複位引腳斷開和外部連接配接即可正常運作。現将該調試記錄如下。
二、測試情況
看門狗喂狗周期初始化為10s。測試了四種情況:
- 1:Reset_Pin = NONE 啟用IWDG,無IWDG_FeedDog(),程式10s後重新開機正常運作;
- 2:Reset_Pin = 3.3V 啟用IWDG,無IWDG_FeedDog(),程式10s後不重新開機但一直運作;
- 3:Reset_Pin = 3.3V 啟用IWDG,無IWDG_FeedDog(),第12s調用SoftReset(),程式10s後不重新開機,第12s軟體不重新開機,程式當機不運作。
- 4:Reset_Pin = 3.3V 啟用IWDG,有IWDG_FeedDog(),第12s調用SoftReset(),程式10s後不重新開機,第12s軟體不重新開機,程式當機不運作。
三、分析
- 外部Reset_Pin上拉4.7k、1k電阻後看門狗和軟體重新開機都正常運作。
- 外部Reset_Pin強上拉後,看門狗無法重新開機但程式正常運作,軟體重新開機直接會讓程式當機。
四、解決辦法
直接剪掉複位管腳。(很粗暴)