×
嵌入式 > 技术百科 > 详情

stm8 窗口看门狗应用

发布时间:2022-03-18 发布时间:
|

手册说明:

窗口看门狗WWDG的主要功能

●可编程的自由运行递减计数器

●有条件的复位

─如果开启了看门狗,当递减计数器的数值小于0x40时产生复位

─如果开启了看门狗,当在指定的时间窗口之外重加载递减计数器的数值(见图27)时产生复位

●硬件或软件启动看门狗(由选择字节指定)

●可在HALT指令时产生复位(由选择字节配置)


WWDG功能说明 

如果开启了看门狗(设置了WDGA=1),当7位的递减计数器(T[6:0]位)从0x40变为0x3F时(即T6变为0),看门狗产生一个复位信号并把复位引脚拉低。如果软件刷新计数器时,计数器的数值大于窗口寄存器中的数值,同样会产生复位。

(图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

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
激光跟踪仪市场2023年有望达5.216亿美元