視窗看門狗的真正作用
STM32有2個看門狗:獨立看門狗和視窗看門狗。
獨立看門狗IWDG--獨立於系統之外,因為有獨立時鐘,所以不受系統影響的系統故障探測器,主要用於監視硬體錯誤。
視窗看門狗WWDG----系統內部的故障探測器,時鐘與系統相同。如果系統時鐘不走了,這個狗也就失去了作用了,主要用於監視軟體錯誤。
簡單的講,看門狗就是檢測系統故障的,如果因為系統故障而沒有及時喂狗,則引發復位重啟。
對於一般的看門狗,程式可以在它產生復位前的任意時刻重新整理看門狗,但是這樣有一個隱患,有可能程式跑亂了又跑回正常的地方,或者跑亂的程式正好執行了重新整理看門狗操作,這樣的情況下一按的看門狗就檢測不出來故障了;但是如果使用視窗看門狗,程式設計師可以根據程式正常執行的時間設定重新整理看門狗的一個時間視窗,保證不會提前重新整理看門狗,也不會滯後重新整理看門狗,這樣可以檢測出程式沒有按照正常的路徑執行,非正常地跳過了某些程式段的情況。
WWDG與IWDG的主要區別是有一個視窗控制,WWDG的中斷不是用於日常喂狗的,如果用於日常喂狗動作,那WWDG的相對於IWDG,功能也就沒什麼特別了。WWDG的中斷是給程式設計師最後一次喂狗的機會,一般進入這個中斷時,表示你在其他地方安排的喂狗操不能湊效了,而發生這種現象時,肯定是系統有問題了,或者程式有Bug或者干擾,在這種情況下,這個中斷時為了讓你的程式在發生真正的看門狗復位前,有一個緊急處理的機會,如儲存重要資料,或者系統剎車,說白了,就是讓CPU寫“遺囑”;
由此看出,簡單的再WWDG中斷中喂狗,既沒有發揮WWDG相對於IWDG的優勢,又因為在中斷中喂狗,而為以後的產品留下了隱患。
---------------------
作者:豬哥-嵌入式
來源:CSDN
原文:https://blog.csdn.net/u012351051/article/details/50385074?utm_source=copy
版權宣告:本文為博主原創文章,轉載請附上博文連結!