stm8 窗口看门狗应用

手册说明:
  • 窗口看门狗WWDG的主要功能
    ●可编程的自由运行递减计数器
    ●有条件的复位
    ─如果开启了看门狗,当递减计数器的数值小于0x40时产生复位
    ─如果开启了看门狗,当在指定的时间窗口之外重加载递减计数器的数值(见图27)时产生复位
    ●硬件或软件启动看门狗(由选择字节指定)
    ●可在HALT指令时产生复位(由选择字节配置)
  • WWDG功能说明 
    如果开启了看门狗(设置了WDGA=1),当7位的递减计数器(T[6:0]位)从0x40变为0x3F时(即T6变为0),看门狗产生一个复位信号并把复位引脚拉低。如果软件刷新计数器时,计数器的数值大于窗口寄存器中的数值,同样会产生复位。

stm8 窗口看门狗应用_第1张图片
(图25:STM8窗口看门狗框图)

在正常的操作期间,应用程序必须定期地写入WDGCR寄存器,以避免产生复位;这个写的动作必须在计数器的数值小于窗口寄存器的数值时进行。写入WDGCR寄存器的数值必须是介于0xFF和0xC0之间(见图26):

  • 开启看门狗: 
    如果(通过选择字节)选择了软件看门狗,在系统复位后看门狗处于关闭状态。设置WDGCR寄存
    器中的WDGA位将开启看门狗,随后在下次复位之前将不能关闭看门狗。
    如果(通过选择字节)选择了硬件看门狗,看门狗将始终开启,而WDGA位将不起作用。 
  • 控制递减计数器: 
    递减计数器是自由运行计数器:即使未开启看门狗,它依然不断地递减计数。当开启看门狗
    时,必须设置T6位以避免立刻产生复位。T[5:0]位中包含了看门狗产生复位前允许的时间延迟(见图26);因为写入WDGCR寄存器时,预分频器的状态是不可知的(见图27),所以这个时间延迟介于一个最小和最大数值之间。
    窗口寄存器(WDGWR)的数值是指定窗口的高限:为防止复位,必须在递减计数器的数值小于窗口寄存器的数值并大于0x3F时刷新递减计数器。图27描述了窗口看门狗操作过程。
    注意:T6位可以用于产生一个软件复位(即设置WDGA位同时清除T6位)
  • 在停止时产生看门狗复位
    如果开启了看门狗,并且选择了停止时产生看门狗复位的选项,则执行HALT指令将产生复位。
  • 在停止模式下使用WWDG
    如果在选择字节中使能了停止模式下的看门狗(HALT指令不产生看门狗复位),建议在执行HALT指令前先刷新看门狗计数器,以避免在唤醒微控制器后立刻进入不希望的看门狗复位。
  • 如何设置看门狗的超时
    下图显示了看门狗计数器(CNT)中的6位数值,与以毫秒为单位的超时时间的线性关系,这个表可以在不考虑时序变化时作为一个快速的粗略计算参考,如果需要更精确的计算,请使用图27的公式。
    ---------------------------------------------------------------------------------------------------------------------------
    警告:每次写入WDGCR寄存器时,首先要置T6位为'1',以避免立刻产生看门狗复位。
理论看似复杂 实际应用很简单


void main(void)

{
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);  //系统运行时钟
  INIT_Config();                //初始化函数 
  WWDG_Init(0x7F, 0x7F);        //初始化窗口看门狗 
  while (1)
  {

        App();

        WWDG_SetCounter(0x7E);    //在窗口时间范围内喂狗 系统正常运行 低于窗口范围 系统复位

  }

}

 亲测 stm8s与stm8L通用0






你可能感兴趣的:(stm8 窗口看门狗应用)