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