窗口看門狗是什么?與獨立看門狗有啥區(qū)別?
STM32有兩個看門狗,獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是喂狗的限制時間不同。
窗口看門狗
窗口看門狗,之所以稱為窗口,是因為其喂狗時間是一個有上下限的范圍內(nèi),你可以通過設(shè)定相關(guān)寄存器,設(shè)定其上限時間和下限時間。喂狗的時間不能過早也不能過晚。
圖1 窗口型看門狗
窗口看門狗的上窗口就是配置寄存器WWDG->CFR里設(shè)定的W[6:0];下窗口是固定的0x40;當(dāng)窗口看門狗的計數(shù)器在上窗口值之外,或是低于下窗口值都會產(chǎn)生復(fù)位。
圖2 窗口型看門狗工作原理
上窗口的值可以只有設(shè)定,7位二進(jìn)制數(shù)最大只可以設(shè)定為127(0x7F),最小又必須大于下窗口的0x40,所以其取值范圍為64~127(即:0x40~0x7F);配置寄存器WWDG->CFR中為計數(shù)器設(shè)定時鐘分頻系數(shù),確定這個計數(shù)器可以定時的時間范圍,從而確定窗口的時間范圍。
窗口看門狗的時鐘來自于PCLK1,在時鐘配置中,其頻率為外部時鐘經(jīng)倍頻器后的二分頻時鐘,即為36MHz,根據(jù)手冊可以知道其定時時間計算方法:
與獨立看門狗的對比
獨立看門狗與窗口看門狗的區(qū)別如下:
-
獨立看門狗沒有中斷,窗口看門狗有中斷。
獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制。
獨立看門狗只有下限,窗口看門狗有下限和上限。
獨立看門狗是12位遞減的,窗口看門狗是7位遞減的。
獨立看門狗是用的內(nèi)部大約40KHz的RC振蕩器,窗口看門狗是用的系統(tǒng)時鐘APB1ENR
獨立看門狗沒有中斷功能,只要在計數(shù)器減到0(下限)之前,重新裝載計數(shù)器的值,就不會產(chǎn)生復(fù)位。
窗口看門狗有中斷,這個中斷的作用是在計數(shù)器達(dá)到下限0x40的時候,產(chǎn)生中斷,讓你喂狗;如果你不喂狗,計數(shù)器的值變?yōu)?x3f的時候,將會產(chǎn)生系統(tǒng)復(fù)位;即使是喂狗,也應(yīng)該在中斷里快速喂狗,要不時間長了計數(shù)器減1也會變成0x3f產(chǎn)生復(fù)位。
窗口看門狗還有一個上限值,這個值如果大于計數(shù)器的初始值,那么就沒有任何作用了;這個值小于計數(shù)器初始值的時候,當(dāng)計數(shù)器的值大于上限值時你對計數(shù)器進(jìn)行裝載,將會產(chǎn)生復(fù)位,只有在計數(shù)器減到小于上限值時,你才能重新裝載計數(shù)器。意思就是說只有計數(shù)器的值在上限值和下限值之間你才能裝載計數(shù)器,否則就會產(chǎn)生系統(tǒng)復(fù)位,當(dāng)上限值小于下限值,也沒有意義。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!