STM32有2個(gè)看門狗:獨(dú)立看門狗和窗口看門狗。
獨(dú)立看門狗IWDG:獨(dú)立于系統(tǒng)之外,因?yàn)橛歇?dú)立時(shí)鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測(cè)器,主要用于監(jiān)視硬件錯(cuò)誤。
窗口看門狗WWDG:系統(tǒng)內(nèi)部的故障探測(cè)器,時(shí)鐘與系統(tǒng)相同。如果系統(tǒng)時(shí)鐘不走了,這個(gè)狗也就失去了作用了,主要用于監(jiān)視軟件錯(cuò)誤。
簡(jiǎn)單的講,看門狗就是檢測(cè)系統(tǒng)故障的,如果因?yàn)橄到y(tǒng)故障而沒(méi)有及時(shí)喂狗,則引發(fā)復(fù)位重啟。
對(duì)于一般的獨(dú)立看門狗,程序可以在它產(chǎn)生復(fù)位前的任意時(shí)刻刷新看門狗,但是這樣有一個(gè)隱患,有可能程序跑亂了又跑回正常的地方,或者跑亂的程序正好執(zhí)行了刷新看門狗操作,這樣的情況下一按的看門狗就檢測(cè)不出來(lái)故障了;但是如果使用窗口看門狗,程序員可以根據(jù)程序正常執(zhí)行的時(shí)間設(shè)置刷新看門狗的一個(gè)時(shí)間窗口,保證不會(huì)提前刷新看門狗,也不會(huì)滯后刷新看門狗,這樣可以檢測(cè)出程序沒(méi)有按照正常的路徑運(yùn)行,非正常地跳過(guò)了某些程序段的情況。
1)獨(dú)立看門狗沒(méi)有中斷,窗口看門狗有中斷;
2)獨(dú)立看門狗有硬件軟件之分,窗口看門狗只能軟件控制;
3)獨(dú)立看門狗只有下限,窗口看門狗又下限和上限;
4)獨(dú)立看門狗是12位遞減的。窗口看門狗是7位遞減的;
5)獨(dú)立看門狗是用的內(nèi)部的大約40KHZ RC振蕩器,窗口看門狗是用的系統(tǒng)時(shí)鐘APB1ENR。
獨(dú)立看門狗沒(méi)有中斷功能,只要在計(jì)數(shù)器減到0(下限)之前,重新裝載計(jì)數(shù)器的值,就不會(huì)產(chǎn)生復(fù)位,獨(dú)立看門夠有硬件和軟件之分,硬件是通過(guò)燒寫器的“設(shè)定選項(xiàng)幾節(jié)等”配置,一旦開(kāi)啟了硬件看門狗,那么就停不下來(lái)了,只能在重新配置“設(shè)定選項(xiàng)幾節(jié)等”才能關(guān)掉硬件看門狗,軟件看門狗只需要設(shè)置IWDG->KR=0XCCCC;就可以啟動(dòng)看門狗了,軟件狗可以在系統(tǒng)復(fù)位時(shí)關(guān)掉,如果在在初始化里開(kāi)啟軟件看門狗,那就開(kāi)啟了軟件看門狗,獨(dú)立看門狗是12位遞減的寄存器,使用片子內(nèi)部的RC振蕩器,這個(gè)振蕩器是關(guān)不掉的。
窗口看門狗有中斷,這個(gè)中斷的作用是在計(jì)數(shù)器達(dá)到下限0x40的時(shí)候,產(chǎn)生中斷,讓你喂狗,如果你不喂狗,計(jì)數(shù)器的值變?yōu)?x3f的時(shí)候,將會(huì)產(chǎn)生系統(tǒng)復(fù)位,即使是喂狗,也應(yīng)該在中斷里快速喂狗,要不時(shí)間長(zhǎng)了計(jì)數(shù)器減一也會(huì)變成0x3f產(chǎn)生復(fù)位,這個(gè)時(shí)間根據(jù)芯片手冊(cè)的公式進(jìn)行計(jì)算即可得到,窗口看門狗只有軟件開(kāi)啟方式,還有一個(gè)上限值,這個(gè)值如果大于計(jì)數(shù)器的初始值,那么就沒(méi)有任何作用了,這個(gè)值小于計(jì)數(shù)器的初始值得時(shí)候,當(dāng)計(jì)數(shù)器的值大于上限值時(shí)你對(duì)計(jì)數(shù)器進(jìn)行裝載,將會(huì)產(chǎn)生復(fù)位,只有在計(jì)數(shù)器減到小于上限值時(shí),你才能重新裝載計(jì)數(shù)器,意思就是說(shuō)只有計(jì)數(shù)器的值在上限值和下限值之間你才能裝載計(jì)數(shù)器,否則就會(huì)產(chǎn)生系統(tǒng)復(fù)位,當(dāng)上限值小于下限值,也沒(méi)有意義。
獨(dú)立看門狗IWDG——我的理解是獨(dú)立于系統(tǒng)之外,因?yàn)橛歇?dú)立時(shí)鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測(cè)器。主要用于監(jiān)視硬件錯(cuò)誤。
窗口看門狗WWDG——我的理解是系統(tǒng)內(nèi)部的故障探測(cè)器,時(shí)鐘與系統(tǒng)相同。如果系統(tǒng)時(shí)鐘不走了,這個(gè)狗也就失去作用了。主要用于監(jiān)視軟件錯(cuò)誤。