標(biāo)題: 獨(dú)立看門狗及喂狗時(shí)間 [打印本頁]

作者: heicad    時(shí)間: 2014-10-24 14:03
標(biāo)題: 獨(dú)立看門狗及喂狗時(shí)間
stm32的看門狗初始化配置步驟:
1. 先把IWDG_PR 和IWDG_RLR 兩個(gè)寄存器寫操作使能。
2. 配置IWDG預(yù)分頻值,4到256,最大為256。
3. 設(shè)置IWDG重裝載寄存器的重裝載初值,0x00到0xFFF。
4. 按照IWDG重裝載寄存器的值重裝載IWDG計(jì)數(shù)器。
5. 使能IWDG,即打開看門狗。

例如,初始化獨(dú)立看門狗,并且配置喂狗時(shí)間大約3S左右:
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) ;  //使能或者失能對(duì)寄存器IWDG_PR 和IWDG_RLR 的寫操作
  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ì)算出來的喂狗時(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由此公式可以算出來寄存器值rlr=1875,換算成16進(jìn)制為0x753









歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1