STM8S_库函数_窗口看门狗使用方法

大家好,我是单片机爱好者-MCU起航。这里说下使用库函数方式控制STM8S103F3P6实现窗口看门狗定时复位的功能。

上一节刚刚说过了独立看门狗,这一节又有了窗口看门狗,这两者都有什么关系吗?

首先,两者都是看门狗,都是单片机运行的保护机制。区别主要有两点:

1、喂狗时间

2、时钟源

先说喂狗时间,独立看门狗,启动以后,复位以前,都可以喂狗。

窗口看门狗,启动以后,不能立刻喂狗。需要等到看门狗计数器的指小于你设定的一个值以后,同时大于0x3F,才能喂狗。否则,会发生复位。

所以,它像一扇窗户一样,左边有一个限制,右边有一个限制,只有在这扇窗户中间,才能喂狗。

时钟源有什么区别?我直接放两个图,第一个是独立看门狗的时钟部分的功能框图:

它使用的是单片机内部自带的128KHZ的低速时钟。

然后是窗口看门狗,它的时钟部分功能框图如下:

从框图可以看到,窗口看门狗的时钟源来自CPU的主时钟。STM8S103F3P6单片机出厂时,时钟默认设置为2MHZ。然后做了一个12288的分频,得到一个162HZ左右的时钟。

这里主要用到两个寄存器:窗口寄存器(WWDG_WR)和控制寄存器(WWDG_CR)。窗口寄存器里存的是喂狗的上限,小于这个值才能喂狗;下限是0x3f,不能小于这个值。

窗口看门狗一旦启动,控制寄存器里的值会每过一个时钟自动减一。如果低七位的值从0x40变到0x3f,将会产生一个看门狗复位。

库函数的使用方法如下:

1、判断之前是否出现了窗口看门狗复位,如果有,清除相关标志

2、设置7位计数器的值

3、设置刷新窗口值

接下来通过代码演示如何使用窗口看门狗:

/* Includes ------------------------------------------------------------------*/
#include "stm8s.h"

/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

void Init_WWDG(void) //初始化窗口看门狗  
{  
    //窗口看门狗在计数值降到0x3F时产生复位,而且不能在大于窗口值时喂狗,否则复位  
  RST_ClearFlag(RST_FLAG_WWDGF); 
  WWDG_Init(0x7F, 0x50);
   //2Mhz 主频,计数值0x7F 最大延长时间为 (64 * (12288 / 2000000)) = 392ms  
}  

//喂狗
void Free_WWDG(void)  
{  
  u8 u8_value;
  u8_value = WWDG_GetCounter();
  if ((u8_value & 0x7F) < 0x50) //小于窗口值才能喂狗  
        WWDG_SetCounter(0x7f); //重新喂狗  
} 

void Delay(uint16_t nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {   
    nCount--;
  }
}
void main(void)
{
  GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_SLOW);
  GPIO_WriteLow(GPIOB, GPIO_PIN_4);
  Delay(40000);
  GPIO_WriteHigh(GPIOB, GPIO_PIN_4);
  Delay(40000);
  Init_WWDG();
  while (1)
  {
   // Free_WWDG();
  }
  
}

和独立看门狗类似,先进行看门狗初始化。然后在喂狗函数里判断是否符合喂狗条件,如果满足,则喂狗,不满足,退出。

主函数里面,喂狗函数(Free_WWDG();)被注释掉了。这种情况下,看到的实验现象是,LED每隔一小段时间闪烁一下。因为没有喂狗,所以单片机复位。

如果不注释,看到的实验现象是,上电后LED闪烁一次,然后就再也没反应了。因为后面会在合适的时候进行喂狗操作,无法发生复位。

很简单,打完收工!

要获取该程序完整的工程文件,可以关注公众号:单片机爱好者,然后回复关键词:STM8S。可以获取完整的下载链接,里面包含工程文件、视频、PPT、数据手册等所有相关资料。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据