STM32有2個(gè)看門(mén)狗:獨(dú)立看門(mén)狗和窗口看門(mén)狗。
獨(dú)立看門(mén)狗IWDG--獨(dú)立于系統(tǒng)之外,因?yàn)橛歇?dú)立時(shí)鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測(cè)器,主要用于監(jiān)視硬件錯(cuò)誤。
窗口看門(mén)狗WWDG----系統(tǒng)內(nèi)部的故障探測(cè)器,時(shí)鐘與系統(tǒng)相同。如果系統(tǒng)時(shí)鐘不走了,這個(gè)狗也就失去了作用了,主要用于監(jiān)視軟件錯(cuò)誤。
簡(jiǎn)單的講,看門(mén)狗就是檢測(cè)系統(tǒng)故障的,如果因?yàn)橄到y(tǒng)故障而沒(méi)有及時(shí)喂狗,則引發(fā)復(fù)位重啟。
對(duì)于一般的看門(mén)狗,程序可以在它產(chǎn)生復(fù)位前的任意時(shí)刻刷新看門(mén)狗,但是這樣有一個(gè)隱患,有可能程序跑亂了又跑回正常的地方,或者跑亂的程序正好執(zhí)行了刷新看門(mén)狗操作,這樣的情況下一按的看門(mén)狗就檢測(cè)不出來(lái)故障了;但是如果使用窗口看門(mén)狗,程序員可以根據(jù)程序正常執(zhí)行的時(shí)間設(shè)置刷新看門(mén)狗的一個(gè)時(shí)間窗口,保證不會(huì)提前刷新看門(mén)狗,也不會(huì)滯后刷新看門(mén)狗,這樣可以檢測(cè)出程序沒(méi)有按照正常的路徑運(yùn)行,非正常地跳過(guò)了某些程序段的情況。
WWDG與IWDG的主要區(qū)別是有一個(gè)窗口控制,WWDG的中斷不是用于日常喂狗的,如果用于日常喂狗動(dòng)作,那WWDG的相對(duì)于IWDG,功能也就沒(méi)什么特別了。WWDG的中斷是給程序員最后一次喂狗的機(jī)會(huì),一般進(jìn)入這個(gè)中斷時(shí),表示你在其他地方安排的喂狗操不能湊效了,而發(fā)生這種現(xiàn)象時(shí),肯定是系統(tǒng)有問(wèn)題了,或者程序有Bug或者干擾,在這種情況下,這個(gè)中斷時(shí)為了讓你的程序在發(fā)生真正的看門(mén)狗復(fù)位前,有一個(gè)緊急處理的機(jī)會(huì),如保存重要數(shù)據(jù),或者系統(tǒng)剎車(chē),說(shuō)白了,就是讓CPU寫(xiě)“遺囑”;
由此看出,簡(jiǎn)單的再WWDG中斷中喂狗,既沒(méi)有發(fā)揮WWDG相對(duì)于IWDG的優(yōu)勢(shì),又因?yàn)樵谥袛嘀形构?,而為以后?a target="_blank">產(chǎn)品留下了隱患。
-
看門(mén)狗
+關(guān)注
關(guān)注
10文章
558瀏覽量
70707 -
STM32
+關(guān)注
關(guān)注
2264文章
10854瀏覽量
354291
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論