天天看點

STM32獨立看門狗(IWDG)和視窗看門狗(WWDG)的差別【轉】

來自:https://blog.csdn.net/lyh290188/article/details/104371270

1.看門狗介紹

  看門狗這東西雖然簡單,但我相信絕大多程式員沒有足夠重視它。使用看門狗保證系統正常地運作是非常有必要的。我們在設計産品時,代碼以及硬體設計缺陷或是外界電磁幹擾都有可能使系統當機,如果不能正常對其進行複位,系統的可靠性将大打折扣。看門狗分為軟體看門狗和硬體看門狗兩類,其原理都是使用一個獨立定時器來計時,超出時間就會産生複位信号,主要差別看是否具有獨立的硬體結構,如果有,就是硬體看門狗,如果是一個普通定時器實作的那麼就是軟體看門狗。STM32片内有兩個看門狗:獨立看門狗IWDG以及視窗看門狗WWDG。

2.兩個狗的差別

  • 獨立看門狗沒有中斷,視窗看門狗有中斷
  • 獨立看門狗有硬體軟體之分,視窗看門狗隻能軟體控制
  • 獨立看門狗隻有下限,視窗看門狗有下限和上限
  • 獨立看門狗是12位遞減的。視窗看門狗是7位遞減的
  • 獨立看門狗是用的内部的大約40KHZ RC振蕩器,視窗看門狗是用的系統時鐘APB1ENR

獨立看門狗(IWDG)沒有中斷功能,隻要在計數器減到0(下限)之前,重新裝載計數器的值,就不會産生複位,獨立看門夠有硬體和軟體之分,硬體是通過燒寫器的“設定選項幾節等”配置,一旦開啟了硬體看門狗,那麼就停不下來了,隻能在重新配置“設定選項幾節等”才能關掉硬體看門狗,軟體看門狗隻需要設定IWDG->KR=0XCCCC;就可以啟動看門狗了,軟體狗可以在系統複位時關掉,如果在在初始化裡開啟軟體看門狗,那就開啟了軟體看門狗,

獨立看門狗是12位遞減的寄存器,使用片子内部的RC振蕩器,這個振蕩器是關不掉的。

視窗看門狗(WWDG)有中斷,這個中斷的作用是在計數器達到下限0x40的時候,産生中斷,讓你喂狗,如果你不喂狗,計數器的值變為0x3f的時候,将會産生系統複位,即使是喂狗,也應該在中斷裡快速喂狗,要不時間長了計數器減一也會變成0x3f産生複位,這個時間根據晶片手冊的公式進行計算即可得到,視窗看門狗隻有軟體開啟方式,還有一個上限值,這個值如果大于計數器的初始值,那麼就沒有任何作用了,這個值小于計數器的初始值得時候,當計數器的值大于上限值時你對計數器進行裝載,将會産生複位,隻有在計數器減到小于上限值時,你才能重新裝載計數器,意思就是說隻有計數器的值在上限值和下限值之間你才能裝載計數器,否則就會産生系統複位,當上限值小于下限值,也沒有意義。

獨立看門狗(IWDG)是獨立于系統之外,因為有獨立時鐘,是以不受系統影響的系統故障探測器。主要用于監視硬體錯誤。

視窗看門狗(WWDG)是系統内部的故障探測器,時鐘與系統相同。如果系統時鐘不走了,這個狗也就失去作用了。主要用于監視軟體錯誤。