在乙個專案中需要用到看門狗和軟體重啟,但是在工作過程中發現存在一種情況會導致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軟體不重啟,程式宕機不執行。
直接剪掉復位管腳。(很粗暴)
STM32 緩上電導致宕機的問題分析
3.解決方法 在一些供電比較特殊的場合,如太陽能供電,電池供電等,可能會導致穩壓晶元輸出的3.3v 上公升緩慢。在這種供電情況下,會導致mcu宕機,讓人感覺的程式沒有跑起來。在此情況下,mcu 為什麼跑不起來呢,筆者以stm32l072 晶元為例,具體的分析一下。我們先了解 stm32電源控制中有三...
STM32突然宕機以及莫名奇妙錯誤的解決
在stm32程式開發過程中,原本 正常,為了實現接下來的功能,增加了乙個結構體陣列後,除錯過程中遇到32宕機的情況。後來通過逐步排查發現注釋了結構體陣列,程式執行正常,於是將結構體陣列換成若干個陣列替代,發現又出現了問題,這次是在串列埠除錯過程中,顯示了莫名其妙的結果。我們結構體及結構體定義陣列定義...
STM32中NVIC Init導致的上電程式不執行
最近使用在stm32上使用ucosii的執行多工時候遇到乙個奇怪問題,我用到了4個串列埠,隨著程式增大,出現了上電後不執行的情況,我用乙個led閃爍指示執行,使用stlink進行debug沒有問題,但重新上電執行就不行,硬體復位了也不行,排除了硬體問題 指標跑飛 任務堆疊溢位 卡死在某死迴圈 等可能...