独立看门狗

看门狗电路

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。

看门狗就是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号的电路。看门狗命令在程序的中断中拥有最高的优先级。

STM32F103看门狗简介

  1. 键值寄存器 (IWDG_KR)

    • 32位寄存器,高16位为保留位,低16位为键值,是只写寄存器读出值为0X0000
    • 必须以一定的时间间隔写入0XAAAA,否则计数器清零时会产生一个复位信号(IWDG_RESET)。写入0XAAAA时重装载寄存器(IWDG_RLR)中的值写入计数器
    • 被写入0xCCCC时,独立看门狗开始被启用,计数器从其复位值0xFFF递减计数
  2. 状态寄存器(IWDG_SR)

    • 32位寄存器,只有低两位为有效位

    • 位0(PVU):为预分频器寄存器的值更新标志位

      此位由硬件置’1’用来指示预分频值的更新正在进行中。当在VDD域中的预分频值更新结束后,此位由硬件清’0’(最多需5个40kHz的RC周期)。预分频值只有在PVU位被清’0’后才可更新。

    • 位1(RVU):为计数器重载值更新标志

      此位由硬件置’1’用来指示重装载值的更新正在进行中。当在VDD域中的重装载更新结束后,此位由硬件清’0’(最多需5个40kHz的RC周期)。重装载值只有在RVU位被清’0’后才可更新。

  3. 预分频寄存器(IWDG_PR)

    • 具有写保护功能,要修改其中的值必须先向键值寄存器中写入0x5555,否则无论进行何种操作,预分频寄存器都将被写保护
    • 32位寄存器,只用低三位
    • 操作依靠PVU状态
  4. 重装载寄存器(IWDG_RLR)

    • 32位寄存器,低12位有效
    • 操作依靠RUV状态
    • 写入0XAAAA时重装载寄存器(IWDG_RLR)中的值写入计数器
  5. 操作步骤概要

    1. 向 IWDG_KR写入 0X5555

      • 取消写保护
      • 设置分频系数以及计数器重装载值
      • Tout=((4×2^prer) ×rlr) /40,此为喂狗时间计算公式,prer为分频值,rlr为重装载值(ms)
      • 在溢出前不喂狗就复位
    2. 向 IWDG_KR写入 0XAAAA

      • 喂狗
    3. 向 IWDG_KR写入 0XCCCC(开狗门)

       
       
       
      x
       
       
       
       
      void IWDG_Init(u8 prer,u16 rlr) 
      {
      IWDG->KR=0X5555;//ʹÄܶÔIWDG->PRºÍIWDG->RLRµÄд   
        IWDG->PR=prer;   
        IWDG->RLR=rlr;  
      IWDG->KR=0XAAAA;//reload
        IWDG->KR=0XCCCC;//open
      }
      void IWDG_Feed(void)
      {
      IWDG->KR=0XAAAA;//reload   
      }
       

      参考资料 :百度百科

      ​STM32中文参考手册

      ​正点原子STM32开发指南寄存器版本

猜你喜欢

转载自www.cnblogs.com/Socthinking/p/10300947.html