實驗步驟:
1、取消寫保護和設置預分頻係數以及重裝載值
2、啓動看門狗(向 向 IWDG_KR 寫入 0XCCCC)
3、重載計數值餵狗(向 IWDG_KR 寫入 0XAAAA )
看門狗電路在達到預置的時間週期時,會產生一個 MCU 復位
即:如果不及時餵狗(重載計數值)會導致stm32復位
IWDG 有自己獨立的 32Khz 時鐘,獨立看門狗的時鐘是一個內部RC時鐘,所以並不是準確的32Khz,
1、取消寫保護和設置預分頻係數以及重裝載值在 HAL 庫中是通過函數 HAL_IWDG_Init 實現的
IWDG_HandleTypeDef IWDG_HandleStruct; //看門狗結構體
IWDG_HandleStruct.Instance = IWDG; // IWDG 地址
IWDG_HandleStruct.Init.Prescaler = IWDG_PRESCALER_32; //選擇32分頻,大概爲1kHz
IWDG_HandleStruct.Init.Reload = 2000; //2000<0xfff=4095,2000*1ms=2s
HAL_IWDG_Init(&IWDG_HandleStruct);
2、啓動看門狗(向 向 IWDG_KR 寫入 0XCCCC)
HAL_IWDG_Start(&IWDG_HandleStruct);
3、重載計數值餵狗(向 IWDG_KR 寫入 0XAAAA )
HAL_IWDG_Refresh(&IWDG_HandleStruct);