|
我先試著搜了搜,看到了一位大佬的精辟講解,哈哈哈,謝謝大佬這里引用一下:
看門狗其實(shí)就是這么回事:
比如說你正在繞著一座小山裸奔。——程序按預(yù)定流程執(zhí)行。
每次經(jīng)過山腳下的某個(gè)地方,你都給一條大狼狗一根肉骨頭。——喂狗。
奔著奔著,你奔叉了道,跑到了不該去的山頂。——程序跑飛了。
或者,你在裸奔的途中睡著了。——程序死機(jī)。
這時(shí),那條大狼狗,由于一直得不到喂食,餓瘋了,掙脫鎖鏈來追你。——看門狗定時(shí)器溢出。
你被它一嚇,腳底一軟,從山上咕嚕咕嚕滾下來。起來一看,靠,又回到了出發(fā)地點(diǎn)。于是只好又從頭開始裸奔。——程序復(fù)位。 |
下面我也借鑒了一下搜狗的知識:
看門狗,又叫 watchdog timer,是一個(gè)定時(shí)器電路, 一般有一個(gè)輸入,叫喂狗,一個(gè)輸出到mcu的rst端,mcu正常工作的時(shí)候,每隔一端時(shí)間輸出一個(gè)信號到喂狗端,給 wdt 清零,如果超過規(guī)定的時(shí)間不喂狗,(一般在程序跑飛時(shí)),wdt 定時(shí)超過,就回給出一個(gè)復(fù)位信號到mcu,是mcu復(fù)位. 防止mcu死機(jī). 看門狗的作用就是防止程序發(fā)生死循環(huán),或者說程序跑飛。(這個(gè)講解就更加專業(yè)一些,也讓我理解更加深刻了)
(我在我目前正在學(xué)習(xí)的中微的芯片數(shù)據(jù)手冊上看到的,希望之后的實(shí)踐中會加深理解)
注: 1. 若使用 WDT 功能,一定要在程序的某些地方放置“CLRWDT”指令,以保證在 WDT 溢出前能被清 零。否則會使芯片不停的復(fù)位,造成系統(tǒng)無法正常工作。
2. 不能在中斷程序中對 WDT 進(jìn)行清零,否則無法偵測到主程序“跑飛”的情況。
3. 程序中應(yīng)在主程序中有一次清 WDT 的操作,盡量不要在多個(gè)分支中清零 WDT,這種架構(gòu)能最大限度 發(fā)揮看門狗計(jì)數(shù)器的保護(hù)功能。
4. 看門狗計(jì)數(shù)器不同芯片的溢出時(shí)間有一定差異,所以設(shè)置清 WDT 時(shí)間時(shí),應(yīng)與 WDT 的溢出時(shí)間有較 大的冗余,以避免出現(xiàn)不必要的 WDT 復(fù)位。
|
評分
-
查看全部評分
|