• stm8的独立看门狗与窗口看门狗


    STM8拥有两个硬件看门狗,分别叫做独立看门狗和窗口看门狗

    独立看门狗的框图如下


    我们可以看到,独立看门狗的时钟来自于LSI内部低速振荡器,经过二分频到达看门狗外设单元,在经过一个七位的预分频到达计数器,这个七位的分频由PR控制,看门狗内部使用一个八位的向下计数计数器来计数,计数到0的时候发出看门狗复位信号,同时有一个RLR可以存放看门狗的初始化值,但对KR操作的时候看门狗计数器重载RLR的数据,达到喂狗目的

    所以,对看门狗的处理应该分为以下步骤

    1.      关闭看门狗

    2.      启动LSI系统低速时钟

    3.      设置时钟的分频系数

    4.      设置看门狗重载的值

    5.      在没有复位之前喂狗,重新计数

    相关寄存器如下


    使用方法见以下代码

     

    #ifndef __IWDG_H_
    #define __IWDG_H_
    #include "stm8s.h"
    
    
    void IWDGInit(void);//默认计数时间一s
    
    void IWDGFeed(void);
    
    
    
    #endif
    
    
    
    
    
    

    #include "iwdg.h"
    
    
    void IWDGInit(void) //默认计数时间一分钟
    {
        //首先打开LSI时钟
        CLK->ICKR |= (1<<3);
        while((CLK->ICKR&(1<<4)) == 0);//等待时钟稳定
        IWDG->KR = 0x55;//写入解锁
        IWDG->PR = 0x06;//分频64K /256 = 250
        IWDG->RLR = 250;//计数值250 1复位
        IWDG->KR = 0xaa;//锁定并刷新分频器
        IWDG->KR = 0xcc;//启动独立看门狗
        
    }
    
    void IWDGFeed(void)
    {
        IWDG->KR = 0xaa;//锁定并刷新分频器
    }
    
    
    
    

    窗口看门狗这是另一种模式,芯片定义了一个下线,低于0x40的时候产生复位,同时定义了一个上限,高于上限的时候喂狗同样产生复位

      窗口看门狗的时钟来自于cpu时钟,分频数为12288,使用看门狗过程如下

    1设置窗口值

    2设置当前计数值

    3启动看门狗

    窗口看门狗一旦启动无法关闭,除非发生复位系统自动关闭,具体使用查看代码

    #ifndef __WWDG_H_
    #define __WWDG_H_
    #include "stm8s.h"
    
    
    void WWDGInit(void);
    
    void WWDGFeed(void);
    
    
    
    #endif
    
    
    
    

    #include "wwdg.h"
    
    void WWDGInit(void)
    {
        if((WWDG->CR&0x80) == 1)
        {
            return;
        }
        else
        {
            WWDG->WR = 0x60;
            WWDG->CR = 0xff;
        }
    }
    
    void WWDGFeed(void)
    {
        u8 windows = WWDG->WR ;
        if((WWDG->CR&0x7f)>=windows)
            return;
        else
             WWDG->CR |= 0x7f;
    }
    
    



  • 相关阅读:
    算法详解(LCA&RMQ&tarjan)补坑啦!完结撒花(。◕ˇ∀ˇ◕)
    借教室(NOIP2012)
    同余方程(NOIP2012)
    开车旅行(NOIP2012)
    剑指offer-int类型负数补码中1的个数-位操作
    直接插入排序的再再改进
    剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组
    递归的再一次理解-斐波那契数列
    剑指offer-顺时针打印矩阵-二维数组
    剑指offer-第一个只出现一次的字符-字符串和数组
  • 原文地址:https://www.cnblogs.com/dengxiaojun/p/4279396.html
Copyright © 2020-2023  润新知