找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6157|回复: 0
收起左侧

独立看门狗及喂狗时间

[复制链接]
ID:262 发表于 2014-10-24 14:03 | 显示全部楼层 |阅读模式
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




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表