11.STM32独立看门狗

1.为什么要看门狗

理由
单片机在工作的时候,经常会受到很多外界的干扰,例如外界的电磁场,程序失误等待,陷入死循环,单片机控制的系统无法继续工作,发生严重的后果,所以对于运行状态进行实时检测的考虑,便产生了一种用于检测单片机程序运行状态的模块或芯片。就想看门的一样,就叫看门狗。
解决的问题
在程序异常的时候,程序让系统复位

2.STM32的看门狗

STM32有两个看门狗
1.独立看门狗
由专门的低速时钟(LSI)驱动,即使主时钟发生故障,仍然有效
独立看门狗适合用于需要看门狗作为一个主程序之外能够完全独立工作,并且时间精度要求低的场合
2.窗口看门狗
由APB1时钟分频后得到的时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早
窗口看门狗适合那些要求看门狗在精确记时窗口期作用的程序

3.看门狗寄存器与功能运作

请添加图片描述
就是有一个寄存器IWDG_KR在从一个值不断的减1,我们在任何时候在IWDG_KR寄存器写入0XAAAA,那么它会从IWDG_RLRL自动重装寄存器写入值,重新开始计数。如果我们没有喂狗,一直减一减到了0,就会产生复位信号,IWDG_ RESET,系统复位。

4.独立看门狗系统框图

请添加图片描述
1.键值寄存器IWDG_KP:0-15位有效
2.预分频寄存器IWDG_PR:0-2位有效
3.重装寄存器IWDG_RLR:0-11位有效
4.状态寄存器IWDG_SR:0-1位有效
预分频寄存器IWDG_PR与3.重装寄存器IWDG_RLR有写保护功能,写的时候写取消写保护
1.键值寄存器IWDG_KP:0-15位有效
请添加图片描述
写入0x5555表示取消写保护
0xcccc表示启动看门狗
0xaaaa表示重装载值
2.预分频寄存器IWDG_PR:0-2位有效
请添加图片描述
对LSI时钟信号进行分频在给看门狗时钟

3.重装寄存器IWDG_RLR:0-11位有效
请添加图片描述
写入喂狗时重装载的值。
4.状态寄存器IWDG_SR:0-1位有效
请添加图片描述
比较少管

5.独立看门狗超时时间

请添加图片描述
prer分频系数
rlr装载值

6.独立看门狗HAL库函数

请添加图片描述HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg); //看门狗初始化函数
HAL_IWDG_Start(IWDG_HandleTypeDef *hiwdg) ; //看门狗启动函数
HAL_IWDG_MspInit(IWDG_HandleTypeDef *hiwdg) //看门狗回调函数
HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg) //看门狗喂狗函数
HAL_IWDG_GetState(IWDG_HandleTypeDef *hiwdg) //获取看门狗的状态

7.独立看门狗的操作步骤

请添加图片描述

8.独立看门狗的代码

看门狗没有及时喂狗就会给串口反馈

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "iwdg.h"



int main(void)
{
    HAL_Init();                    	 	//初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   	//设置时钟,180Mhz
    delay_init(180);                	//初始化延时函数
    uart_init(115200);              	//初始化USART
    LED_Init();                     	//初始化LED 
    KEY_Init();                     	//初始化按键
    delay_ms(100);                  	//延时100ms再初始化看门狗,LED0的变化"可见"
    IWDG_Init(IWDG_PRESCALER_64,500);  	//分频数为64,重载值为500,溢出时间为1s	
    LED0=0;
    while(1)
    {
        if(KEY_Scan(0)==WKUP_PRES)  //如果WK_UP按下,喂狗
        {
            IWDG_Feed();    //喂狗
        }
        delay_ms(10);  
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值