1. 程式人生 > >STM32 IWDG設定

STM32 IWDG設定

STM32 內部看門狗的設定 STM32 有兩個看門狗,這裡介紹的是IWDG內部看門狗。 時鐘來源: 內部的40KHz的時鐘,與系統時鐘無關! 如下所示: 這裡的fsoc才是IWDG真正的時鐘!(IWDG_Prescaler_XX指的是XX分頻)。 IWDG的過載值暫存器:RLR 是一個16位的暫存器,只有低12bit可以使用,其他的保留!所以過載值最大是0xFFF
也就是從IWDG最大從0xFFF減到0 然後如果沒有喂狗就會引起系統軟體復位! 所以定時時間Time可以如下計算: Time = (XX /(40*10^3))*Val(RLR) (s) XX表示40KHz的分頻! 設定2s的IWDG如下:
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);    //允許寫IWDG
  IWDG_SetPrescaler(IWDG_Prescaler_64);    //設定分頻
  IWDG_SetReload(1250);       //設定Reload
  IWDG_ReloadCounter();//過載值
  IWDG_Enable();//時能IDWG
 Time = (64/(40*10^3))*1250 =2s

注意在程式裡面要手動喂狗!喂狗程式碼如下: IWDG_ReloadCounter(); 如果大於2S不喂狗就會復位了!