STM32 IWDG設(shè)置
STM32 內(nèi)部看門狗的設(shè)置
STM32 有兩個(gè)看門狗,這里介紹的是IWDG內(nèi)部看門狗。
時(shí)鐘來源: 內(nèi)部的40KHz的時(shí)鐘,與系統(tǒng)時(shí)鐘無關(guān)!
如下所示:
這里的fsoc才是IWDG真正的時(shí)鐘?。↖WDG_Prescaler_XX指的是XX分頻)。
IWDG的重載值寄存器:RLR 是一個(gè)16位的寄存器,只有低12bit可以使用,其他的保留!所以重載值最大是0xFFF
也就是從IWDG最大從0xFFF減到0 然后如果沒有喂狗就會(huì)引起系統(tǒng)軟件復(fù)位!
所以定時(shí)時(shí)間Time可以如下計(jì)算:
Time = (XX /(40*10^3))*Val(RLR) (s)
XX表示40KHz的分頻!
設(shè)置2s的IWDG如下:
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//允許寫IWDG
IWDG_SetPrescaler(IWDG_Prescaler_64);//設(shè)置分頻
IWDG_SetReload(1250);//設(shè)置Reload
IWDG_ReloadCounter();//重載值
IWDG_Enable();//時(shí)能IDWG
Time = (64/(40*10^3))*1250 =2s
注意在程序里面要手動(dòng)喂狗!喂狗代碼如下:
IWDG_ReloadCounter();
如果大于2S不喂狗就會(huì)復(fù)位了!