1)獨立看門狗沒有中斷,窗口看門狗有中斷
2)獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制
3)獨立看門狗只有下限,窗口看門狗又下限和上限
4)獨立看門狗是12位遞減的。窗口看門狗是7位遞減的
5)獨立看門狗是用的內(nèi)部的大約40KHZ RC振蕩器,窗口看門狗是用的系統(tǒng)時鐘APB1ENR
以上是我總結(jié)的
接下來我們介紹一下獨立看門狗和窗口看門狗,這里我們就不講解程序了,很簡單的,配置一下寄存器就可以使用了。
獨立看門狗沒有中斷功能,只要在計數(shù)器減到0(下限)之前,重新裝載計數(shù)器的值,就不會產(chǎn)生復位,獨立看門夠有硬件和軟件之分,硬件是通過燒寫器的“設(shè)定選項幾節(jié)等”配置,一旦開啟了硬件看門狗,那么就停不下來了,只能在重新配置“設(shè)定選項幾節(jié)等”才能關(guān)掉硬件看門狗,軟件看門狗只需要設(shè)置IWDG->KR=0XCCCC;就可以啟動看門狗了,軟件狗可以在系統(tǒng)復位時關(guān)掉,如果在在初始化里開啟軟件看門狗,那就開啟了軟件看門狗,
獨立看門狗是12位遞減的寄存器,使用片子內(nèi)部的RC振蕩器,這個振蕩器是關(guān)不掉的。
窗口看門狗有中斷,這個中斷的作用是在計數(shù)器達到下限0x40的時候,產(chǎn)生中斷,讓你喂狗,如果你不喂狗,計數(shù)器的值變?yōu)?x3f的時候,將會產(chǎn)生系統(tǒng)復位,即使是喂狗,也應(yīng)該在中斷里快速喂狗,要不時間長了計數(shù)器減一也會變成0x3f產(chǎn)生復位,這個時間根據(jù)芯片手冊的公式進行計算即可得到,窗口看門狗只有軟件開啟方式,還有一個上限值,這個值如果大于計數(shù)器的初始值,那么就沒有任何作用了,這個值小于計數(shù)器的初始值得時候,當計數(shù)器的值大于上限值時你對計數(shù)器進行裝載,將會產(chǎn)生復位,只有在計數(shù)器減到小于上限值時,你才能重新裝載計數(shù)器,意思就是說只有計數(shù)器的值在上限值和下限值之間你才能裝載計數(shù)器,否則就會產(chǎn)生系統(tǒng)復位,當上限值小于下限值,也沒有意義。
獨立看門狗Iwdg——我的理解是獨立于系統(tǒng)之外,因為有獨立時鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測器。主要用于監(jiān)視硬件錯誤。
窗口看門狗wwdg——我的理解是系統(tǒng)內(nèi)部的故障探測器,時鐘與系統(tǒng)相同。如果系統(tǒng)時鐘不走了,這個狗也就失去作用了。主要用于監(jiān)視軟件錯誤。
以下是經(jīng)過測試發(fā)現(xiàn)的:
//發(fā)現(xiàn)1:當窗口值大于等于計數(shù)器的值,無論怎么更改配置的順序,都是正確的運行結(jié)果
//發(fā)現(xiàn)2:當窗口值小于計數(shù)器的值,順序一旦改變就運行錯誤
經(jīng)過測試發(fā)現(xiàn),當初始化的順序不是正常順序的話,就會把WWDG->SR置一,為什么我也不知道,誰知道片子里面怎么搞的
你在開啟中斷就進入中斷的,這時你又進行喂狗,就會復位的,因為這時計數(shù)器的值>上限窗口的值,所以會復位,所以就會一直出錯下去
解決辦法是,初始話的時候最后兩句是先清除中斷標志然后在開啟中斷,如果你不這么干,那么在初始化的時候很可能把WWDG->SR
置位,那么你在開啟中斷,就會毫不猶豫的進入中斷,你在中斷重裝計數(shù)器值得時候,就會產(chǎn)生復位