zoukankan      html  css  js  c++  java
  • STM32F407 独立看门狗 个人笔记

    什么是看门狗

    如果程序跑飞了怎么办?
    可以用看门狗来监控。
    看门狗是:
    一个递减的计数器,如果不按时给计数器赋值,计数器的值减到一定程度,就会使系统复位。
    也就是说如果程序运行异常,无法正常给计数器赋值(喂狗),系统会自动复位。
    STM32F407有两种看门狗:

    1. 独立看门狗
    2. 窗口看门狗

    独立看门狗

    • 在键值寄存器(IWDG_KR)中写入0xCCCC:开始启用独立看门狗。
    • 此时计数器开始递减
    • 当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。
    • 无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗),
    • 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。
    • 如果程序异常,就无法正常喂狗,从而系统复位。

    独立看门狗时钟接线图

    • 时钟源是频率为32K的LSI(low speed internal 时钟),经过预分频寄存器的值分频后,即为独立看门狗的计数器的频率。
    • 预分频寄存器IWDG_PR和键值寄存器IWDG_KR都有写保护功能,要操作他们需要先取消写保护。

    独立看门狗时间计算

    如何计算超时时间,即独立看门狗多久不喂会复位?
    下图适用与M4:


    由图可知
    分频系数 = (2^PR寄存器的值)×4

    ∴超时时间= 周期×初值
    =(分频系数/32K)× rlr
    =(2^PR寄存器的值)×4 ×rlr

    独立看门狗适用场合

    • 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它仍有效。
    • 独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。

    独立看门狗代码写法

    #include "iwdg.h"
    	  
    ////////////////////////////////////////////////////////////////////////////////// 
    
    //初始化独立看门狗
    //prer:分频数:0~7(只有低3位有效!)
    //rlr:自动重装载值,0~0XFFF.
    //分频因子=4*2^prer.但最大值只能是256!
    //rlr:重装载寄存器值:低11位有效.
    //时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).
    void IWDG_Init(u8 prer,u16 rlr)
    {
    	//1.取消寄存器写保护:0x5555使能
    	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR IWDG->RLR的写
    	
    	//2. 设置IWDG分频系数:写PR
    	IWDG_SetPrescaler(prer); 
    	
    	//3. 设置IWDG装载值
    	IWDG_SetReload(rlr);   
    
    	//4. 喂狗:写0xAAAA到KR,赋初值
    	IWDG_ReloadCounter(); //reload
    	
    	//5. 使能看门狗:写0xCCCC到KR
    	IWDG_Enable();       
    }
    
    //喂独立看门狗
    void IWDG_Feed(void)
    {
    	IWDG_ReloadCounter();//喂狗:写0xAAAA到KR
    }
    
  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/YuQiao0303/p/10064757.html
Copyright © 2011-2022 走看看