STM32
直播中

哈哈哈

9年用户 839经验值
擅长:可编程逻辑
私信 关注
[问答]

怎样去计算STM32独立看门狗的溢出时间

看门狗的功能是什么?如何去编写看门狗的代码?
怎样去计算STM32独立看门狗的溢出时间?

回帖(1)

池峙焯

2021-8-17 17:16:09
  看门狗简介
  看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。因此要不断进行喂狗,防止系统复位。
  STM32看门狗
  STM32的独立看门狗由内部专门的40Khz时钟驱动。但这是一个内部的RC时钟,所以不是准确的40Khz。但看门狗对时间的要求不是特别精确,所以可以接受。
  溢出时间的计算
  看门狗由 IWDG-》PR 寄存器设置预分配值, 由IDWG-》RLR设置重装载值。
  如果设置预分频值为 64 ,
  那么时钟有40 000hz / 64 = 625,
  代表每秒计数625次,即每毫秒计数0.625次,0.625 / ms
  那么记一次数的时间为 1 / 0.625 ms
  如果重装载值设置为 1250, 那么溢出时间为 1250 * 1 / 0.625 = 2000ms
  意思就是如果超过2000ms不进行喂狗,那么系统就会复位。
  但是上面说过内部RC时钟不是准确的40Khz,所以尽快喂狗为好。
  看门狗代码实现
  / //解除对IWDG_PR和IWDG_RLR寄存器写操作限制
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  IWDG_SetPrescaler(pre); //设置IWDG预分频值为pre
  IWDG_SetReload(rlr); //设置IWDG重装载值为rlr
  IWDG_ReloadCounter(); //将重装载寄存器的值装载进IWDG计数器
  IWDG_Enable(); //使能看门狗
  喂狗代码
  IWDG_ReloadCounter();//定时喂狗就好
举报

更多回帖

发帖
×
20
完善资料,
赚取积分