|
stm32的看門(mén)狗初始化配置步驟:
1. 先把IWDG_PR 和IWDG_RLR 兩個(gè)寄存器寫(xiě)操作使能。
2. 配置IWDG預(yù)分頻值,4到256,最大為256。
3. 設(shè)置IWDG重裝載寄存器的重裝載初值,0x00到0xFFF。
4. 按照IWDG重裝載寄存器的值重裝載IWDG計(jì)數(shù)器。
5. 使能IWDG,即打開(kāi)看門(mén)狗。
例如,初始化獨(dú)立看門(mén)狗,并且配置喂狗時(shí)間大約3S左右:
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) ; //使能或者失能對(duì)寄存器IWDG_PR 和IWDG_RLR 的寫(xiě)操作
IWDG_SetPrescaler(IWDG_Prescaler_64); //設(shè)置IWDG 預(yù)分頻值,取值范圍:4,8,16,32,64,128,256,最大為256
while(IWDG_GetFlagStatus(IWDG_FLAG_PVU) == RESET) ; //預(yù)分頻器更新中
IWDG_SetReload(0x753); //設(shè)置IWDG 重裝載值 取值范圍:0x00~0x0FFF
IWDG_ReloadCounter(); //按照IWDG 重裝載寄存器的值重裝載IWDG 計(jì)數(shù)器
while(IWDG_GetFlagStatus(IWDG_FLAG_RVU) == RESET) ; //重裝載值更新進(jìn)行中
IWDG_Enable(); //使能IWDG
//喂狗時(shí)間計(jì)算公式,Tout=((4*2^prer)*rlr)/40 單位ms(因?yàn)閮?nèi)部RC振蕩不穩(wěn)定,所以計(jì)算出來(lái)的喂狗時(shí)間也是個(gè)大概時(shí)間,不精確) Tout:益出時(shí)間也就是至少多長(zhǎng)時(shí)間喂狗一次 prer:分頻系數(shù)0~7(低3位有效) rlr:重裝載寄存器值(低12位有效)
//(4*2^prer)是分頻系數(shù)值,即預(yù)分頻值
//如果配置預(yù)分頻值為64,且3000ms左右喂狗一次,則可以計(jì)算出重裝載寄存器值:3000=((4*2^4)*rlr)/40=64*rlr/40由此公式可以算出來(lái)寄存器值rlr=1875,換算成16進(jìn)制為0x753
|
|