STM32有兩個看門狗,獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是餵狗的限制時間不同。
窗口看門狗,之所以稱為窗口,是因為其餵狗時間是一個有上下限的範圍內,你可以通過設定相關寄存器,設定其上限時間和下限時間。餵狗的時間不能過早也不能過晚。
圖1 窗口型看門狗
窗口看門狗的上窗口就是配置寄存器WWDG->CFR裡設定的W[6:0];下窗口是固定的0x40;當窗口看門狗的計數器在上窗口值之外,或是低於下窗口值都會產生復位。
圖2 窗口型看門狗工作原理
上窗口的值可以只有設定,7位二進位數最大只可以設定為127(0x7F),最小又必須大於下窗口的0x40,所以其取值範圍為64~127(即:0x40~0x7F);配置寄存器WWDG->CFR中為計數器設定時鐘分頻係數,確定這個計數器可以定時的時間範圍,從而確定窗口的時間範圍。
窗口看門狗的時鐘來自於PCLK1,在時鐘配置中,其頻率為外部時鐘經倍頻器後的二分頻時鐘,即為36MHz,根據手冊可以知道其定時時間計算方法:
獨立看門狗有硬體軟體之分,窗口看門狗只能軟體控制。
獨立看門狗只有下限,窗口看門狗有下限和上限。
獨立看門狗是12位遞減的,窗口看門狗是7位遞減的。
獨立看門狗是用的內部大約40KHz的RC振蕩器,窗口看門狗是用的系統時鐘APB1ENR
獨立看門狗沒有中斷功能,只要在計數器減到0(下限)之前,重新裝載計數器的值,就不會產生復位。
窗口看門狗有中斷,這個中斷的作用是在計數器達到下限0x40的時候,產生中斷,讓你餵狗;如果你不餵狗,計數器的值變為0x3f的時候,將會產生系統復位;即使是餵狗,也應該在中斷裡快速餵狗,要不時間長了計數器減1也會變成0x3f產生復位。
窗口看門狗還有一個上限值,這個值如果大於計數器的初始值,那麼就沒有任何作用了;這個值小於計數器初始值的時候,當計數器的值大於上限值時你對計數器進行裝載,將會產生復位,只有在計數器減到小於上限值時,你才能重新裝載計數器。意思就是說只有計數器的值在上限值和下限值之間你才能裝載計數器,否則就會產生系統復位,當上限值小於下限值,也沒有意義。
免責聲明:本文系網絡轉載,版權歸原作者所有。如有問題,請聯繫我們,謝謝!