總結(jié)獨(dú)立看門狗和窗口看門狗的區(qū)別
STM32有兩個(gè)看門狗,獨(dú)立看門狗和窗口看門狗。其實(shí)兩者的功能是類似的,只是喂狗的限制時(shí)間不同。
獨(dú)立看門狗(Independent watchdog)和窗口看門狗(Window watchdog)是用于系統(tǒng)監(jiān)控和保護(hù)的兩種不同類型的硬件或軟件機(jī)制。
1. 獨(dú)立看門狗:
- 用于監(jiān)視整個(gè)系統(tǒng)的運(yùn)行狀態(tài)。
- 當(dāng)系統(tǒng)出現(xiàn)故障或停滯時(shí),獨(dú)立看門狗會(huì)觸發(fā)并重新啟動(dòng)系統(tǒng),以避免系統(tǒng)永久停止或陷入無限循環(huán)。
- 獨(dú)立看門狗通常是一個(gè)獨(dú)立的硬件模塊,其操作不受主處理器的控制,因此即使主處理器出現(xiàn)故障,獨(dú)立看門狗仍然能夠觸發(fā)系統(tǒng)的重啟。
2. 窗口看門狗:
- 也稱為軟件看門狗(Software watchdog)。
- 與獨(dú)立看門狗不同,窗口看門狗通常是通過軟件實(shí)現(xiàn)的一種監(jiān)控機(jī)制。
- 窗口看門狗監(jiān)視特定的軟件進(jìn)程或任務(wù),并在該任務(wù)的運(yùn)行時(shí)間超出了預(yù)設(shè)的時(shí)間窗口時(shí),重啟或采取其他預(yù)定義的應(yīng)對(duì)措施。
- 如果需要對(duì)整個(gè)系統(tǒng)進(jìn)行監(jiān)控和保護(hù),并且希望即使主處理器出現(xiàn)故障也能夠進(jìn)行系統(tǒng)的重啟,那么可以選擇獨(dú)立看門狗。
- 如果只需要監(jiān)視特定的軟件進(jìn)程或任務(wù),并在其運(yùn)行超時(shí)時(shí)采取措施,那么可以選擇窗口看門狗。
什么時(shí)候用不同的狗?
1. 獨(dú)立看門狗:
- 實(shí)時(shí)控制系統(tǒng):例如工業(yè)自動(dòng)化系統(tǒng)、嵌入式控制系統(tǒng)等,對(duì)實(shí)時(shí)性要求較高的應(yīng)用場(chǎng)景。
- 嵌入式系統(tǒng):例如用于汽車電子、家電控制、醫(yī)療設(shè)備等領(lǐng)域,需要保證系統(tǒng)穩(wěn)定性和可靠性的應(yīng)用。
- 遙測(cè)設(shè)備:例如遠(yuǎn)程監(jiān)控、傳感器網(wǎng)絡(luò)等,需要長(zhǎng)時(shí)間運(yùn)行且自動(dòng)化程度較高的項(xiàng)目。
2. 窗口看門狗:
- 嵌入式軟件開發(fā):對(duì)于需要在單片機(jī)上運(yùn)行的軟件,可以使用窗口看門狗來監(jiān)視軟件的運(yùn)行情況,確保軟件不會(huì)陷入死循環(huán)或其他異常情況。
- 通信系統(tǒng):例如通過串口或網(wǎng)絡(luò)進(jìn)行通信的項(xiàng)目,可以使用窗口看門狗監(jiān)視通信任務(wù)的執(zhí)行情況,避免通信超時(shí)或死鎖等問題。
- 數(shù)據(jù)采集與處理:對(duì)于需要定時(shí)采集數(shù)據(jù)并進(jìn)行處理的項(xiàng)目,可以使用窗口看門狗監(jiān)視數(shù)據(jù)采集和處理任務(wù),確保任務(wù)能夠在預(yù)定時(shí)間內(nèi)完成。
窗口看門狗
窗口看門狗,之所以稱為窗口,是因?yàn)槠湮构窌r(shí)間是一個(gè)有上下限的范圍內(nèi),你可以通過設(shè)定相關(guān)寄存器,設(shè)定其上限時(shí)間和下限時(shí)間。喂狗的時(shí)間不能過早也不能過晚。
圖1 窗口型看門狗
窗口看門狗的上窗口就是配置寄存器WWDG->CFR里設(shè)定的W[6:0];下窗口是固定的0x40;當(dāng)窗口看門狗的計(jì)數(shù)器在上窗口值之外,或是低于下窗口值都會(huì)產(chǎn)生復(fù)位。
圖2 窗口型看門狗工作原理
上窗口的值可以只有設(shè)定,7位二進(jìn)制數(shù)最大只可以設(shè)定為127(0x7F),最小又必須大于下窗口的0x40,所以其取值范圍為64~127(即:0x40~0x7F);配置寄存器WWDG->CFR中為計(jì)數(shù)器設(shè)定時(shí)鐘分頻系數(shù),確定這個(gè)計(jì)數(shù)器可以定時(shí)的時(shí)間范圍,從而確定窗口的時(shí)間范圍。
窗口看門狗的時(shí)鐘來自于PCLK1,在時(shí)鐘配置中,其頻率為外部時(shí)鐘經(jīng)倍頻器后的二分頻時(shí)鐘,即為36MHz,根據(jù)手冊(cè)可以知道其定時(shí)時(shí)間計(jì)算方法:
與獨(dú)立看門狗的對(duì)比
1
使用條件對(duì)比
2
特點(diǎn)對(duì)比
3
兩者的區(qū)別
獨(dú)立看門狗與窗口看門狗的區(qū)別如下:
獨(dú)立看門狗沒有中斷,窗口看門狗有中斷。
獨(dú)立看門狗有硬件軟件之分,窗口看門狗只能軟件控制。
獨(dú)立看門狗只有下限,窗口看門狗有下限和上限。
獨(dú)立看門狗是12位遞減的, 窗口看門狗是7位遞減的。
獨(dú)立看門狗是用的內(nèi)部大約40KHz的RC振蕩器,窗口看門狗是用的系統(tǒng)時(shí)鐘APB1ENR
獨(dú)立看門狗沒有中斷功能,只要在計(jì)數(shù)器減到0(下限)之前,重新裝載計(jì)數(shù)器的值,就不會(huì)產(chǎn)生復(fù)位。
窗口看門狗有中斷,這個(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ù)器減1也會(huì)變成0x3f產(chǎn)生復(fù)位。
窗口看門狗還有一個(gè)上限值,這個(gè)值如果大于計(jì)數(shù)器的初始值,那么就沒有任何作用了;這個(gè)值小于計(jì)數(shù)器初始值的時(shí)候,當(dāng)計(jì)數(shù)器的值大于上限值時(shí)你對(duì)計(jì)數(shù)器進(jìn)行裝載,將會(huì)產(chǎn)生復(fù)位,只有在計(jì)數(shù)器減到小于上限值時(shí),你才能重新裝載計(jì)數(shù)器。意思就是說只有計(jì)數(shù)器的值在上限值和下限值之間你才能裝載計(jì)數(shù)器,否則就會(huì)產(chǎn)生系統(tǒng)復(fù)位,當(dāng)上限值小于下限值,也沒有意義。