打印
[应用相关]

独立看门狗及喂狗时间

[复制链接]
1725|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32的看门狗初始化配置步骤:
1. 先把IWDG_PR 和IWDG_RLR 两个寄存器写操作使能。
2. 配置IWDG预分频值,4到256,最大为256。
3. 设置IWDG重装载寄存器的重装载初值,0x00到0xFFF。
4. 按照IWDG重装载寄存器的值重装载IWDG计数器。
5. 使能IWDG,即打开看门狗。

例如,初始化独立看门狗,并且配置喂狗时间大约3S左右:
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) ;  //使能或者失能对寄存器IWDG_PR 和IWDG_RLR 的写操作
  IWDG_SetPrescaler(IWDG_Prescaler_64);  //设置IWDG 预分频值,取值范围:4,8,16,32,64,128,256,最大为256
  while(IWDG_GetFlagStatus(IWDG_FLAG_PVU) == RESET) ; //预分频器更新中
  IWDG_SetReload(0x753);   //设置IWDG 重装载值   取值范围:0x00~0x0FFF
  IWDG_ReloadCounter();    //按照IWDG 重装载寄存器的值重装载IWDG 计数器
  while(IWDG_GetFlagStatus(IWDG_FLAG_RVU) == RESET) ; //重装载值更新进行中
  IWDG_Enable();     //使能IWDG
  //喂狗时间计算公式,Tout=((4*2^prer)*rlr)/40  单位ms(因为内部RC振荡不稳定,所以计算出来的喂狗时间也是个大概时间,不精确)      Tout:益出时间也就是至少多长时间喂狗一次         prer:分频系数0~7(低3位有效)  rlr:重装载寄存器值(低12位有效)
  //(4*2^prer)是分频系数值,即预分频值
  //如果配置预分频值为64,且3000ms左右喂狗一次,则可以计算出重装载寄存器值:3000=((4*2^4)*rlr)/40=64*rlr/40由此公式可以算出来寄存器值rlr=1875,换算成16进制为0x753

沙发
mmuuss586| | 2014-11-10 19:42 | 只看该作者

谢谢楼主分享;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝