看門狗:watch dog timer看門狗計時器(WDT)
是單片機的一個組成部分,它實際上是一個計數器,一般給看門狗一個數字,程序開始運行后看門狗開始計數。如果程序運行正常,過一段時間CPU應發出指令讓看門狗置零(喂狗),重新開始計數。如果看門狗增加到設定值就認為程序沒有正常工作,強制整個系統復位。
目的是防止程序代碼溢出。工作機制是:通過計數器不斷的計數,一個機器周期計一個數,如果溢出程序就復位,又從頭開始運行。
喂狗是防止溢出,每隔一段時間給看門狗重新賦一個初值,保證不溢出。穩定持續不斷的喂狗,這樣的話保證代碼是正常運行的。
如果有異常它就無法進行喂狗,系統就會復位。這就是看門狗的作用。
如果我們選擇12兆晶振,機器周期就是一微秒,一微秒16位的計數器是65536,大概是65毫秒,只要小於65毫秒去進行喂狗,就能保證看門狗不會溢出。
一般用於無人值守的設備中安裝,當程序異常時,看門狗溢出,系統自動復位,重新開始運行。程序正常運行時,程序正常恰時喂狗,看門狗正常運行。
看門狗是一定時器電路:
輸入端:喂狗
輸出端:輸出到MCU的RST端
MCU正常工作時,每隔一段時間輸出喂狗: WDT=0
當程序跑飛時,WDT溢出,輸出端給MCU復位信號