看門狗的配置有2部分:看門狗的初始化和喂狗。下面看一下STM32是怎么初始化看門狗和喂狗的。
本文引用地址:http://2s4d.com/article/201611/322085.htm看門狗初始化步驟:
1.IWDG_PR和IWDG_RLR寄存器具有寫保護功能。要修改這兩個寄存器的值,必須先向
IWDG_KR寄存器中寫入0x5555。
2.設置預分頻因子 (Prescaler divider)PR[2:0] 。
3.設置看門狗計數器重裝載值。RLR[11:0]。
4.重新裝載看門狗的計數值,只要在鍵寄存器IWDG_KR中寫入0xAAAA。
5.在鍵寄存器(IWDG_KR)中寫入0xCCCC,開始啟用獨立看門狗。
void Wdt_Init(void)
{
// Enable write access to IWDG_PR and IWDG_RLR registers
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//IWDG->KR =0x5555
// IWDG counter clock: 40KHz(LSI) / 64 = 0.625 KHz
IWDG_SetPrescaler(IWDG_Prescaler_256);//IWDG->PR =0x06;
// Set counter reload value to 1250
IWDG_SetReload(0xfff);//IWDG->RLR =0xFFF
Red IWDG counter
IWDG_ReloadCounter();//IWDG->KR =0xAAAA
/ Enable IWDG (the LSI oscillator will be enabled by hardware)
IWDG_Enable();//IWDG->KR =0xCCCC
}
//喂狗
void Kick_Dog(void)
{
//Reload IWDG counter
IWDG_ReloadCounter();//IWDG->KR =0xAAAA
}
上面這個看門狗有 /25626214.4 ms。即2s多一點時間沒有喂狗就復位。
LSI不穩(wěn)定,官方手冊有下面這么一個說法:

評論