×
单片机 > 单片机程序设计 > 详情

ARM开发(7)基于STM32的独立看门狗

发布时间:2020-06-02 发布时间:
|

一 独立看门狗原理:


1.1 本实验实现STM32的独立看门狗

1.2 实验思路:理解STM32独立看门狗原理,根据其原理写驱动。

1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 


二 实验步骤: 

2.1 wdg.h代码:


#ifndef __WDG_H

#define __WDG_H

#include "sys.h"

void IWDG_Init(u8 prer,u16 rlr); //独立看门狗初始化

void IWDG_Feed(void);  //喂狗

#endif


2.2 wdg.c代码(独立看门狗初始化与喂狗):


 #include "wdg.h"

/*初始化独立看门狗

prer:分频数:0~7(只有低3位有效!)

分频因子=4*2^prer.但最大值只能是256!

rlr:重装载寄存器值:低11位有效.

时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms).

*/

void IWDG_Init(u8 prer,u16 rlr) 

{   

    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器IWDG_PR和IWDG_RLR的写操作

    IWDG_SetPrescaler(prer);  //设置IWDG预分频值;

    IWDG_SetReload(rlr);  //设置IWDG重装载值

    IWDG_ReloadCounter();  //按照IWDG重装载寄存器的值重装载IWDG计数器

    IWDG_Enable();  //使能IWDG

}

//喂独立看门狗

void IWDG_Feed(void)

{   

    IWDG_ReloadCounter();//reload                                          

}


2.2 main.c代码(实现独立看门狗,蜂鸣器检测效果):


#include "beep.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "usart.h"

#include "wdg.h"

 int main(void)

 {      

    delay_init();            // 延时 

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2 

    BEEP_Init();//蜂鸣器初始化

    KEY_Init(); //按键初始化

    delay_ms(500);       //延时

    IWDG_Init(4,625);    //  读立看门狗设置 

    BEEP =1;             //蜂鸣器响

    while(1)

    {

        if(KEY_Scan()==8)

        {

            IWDG_Feed();//当矩阵键盘按键8时,不会产生复位

        }

        delay_ms(10);

    };   

}


三 接线测试:


3.1 与板子接线测试效果良好,独立看门狗效果良好。


关键字:ARM  STM32  独立看门狗

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

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项