基本概念

看门狗解决的问题是什么?

在系统跑飞(程序异常执行)的情况,是系统复位,程序重新执行。

独立看门狗适应用于需要看门狗作为一个在主程序之外能够完全独立工作,并且对时间精度要求低的场合。

工作原理

在键值寄存器中写入0xCCCC,开始启用独立看门狗,此时计数器开始从其复位值递减,当计数器值计数到0时会产生一个复位信号。
无论何时,只要在键值寄存器中写入0xAAAA,重装载寄存器的值就会重新加载到计数器,从而避免计数器到0,产生复位信号。如果程序异常,就无法往键值寄存器中写入0xAAAA,重装载寄存器的值无法加载到计数器中,计数器会减到0,从而产生一个系统复位信号。

独立看门狗寄存器
  • IWDG_KR:键值寄存器,0~15位有效
  • IWDG_PR:预分频寄存器,0-2位有效
  • IWDG_RLR:重装载寄存器,0~11位有效
  • IWDG_SR:状态寄存器,0~1位有效
独立看门狗超时时间

Tout = ((4*2prer)rlr)/32

Tout:看门狗溢出时间,单位为ms
prer:预分频值IWDG_PR
rlr:重装载值(IWDG_RLR)

独立看门狗操作步骤

  1. 初始化看门狗:预分频系数,重装载值
HAL_IWDG_Init();
  1. 启用看门狗
HAL_IWDG_Start();
  1. 喂狗
HAL_IWDG_Refresh();

具体代码

  1. 初始化看门狗:预分频系数,重装载值
IWDG_HandleTypeDef iwdg_handler;
void iwdg_init(void)
{iwdg_handler.Instance = IWDG;iwdg_handler.Init.Prescaler = IWDG_PRESCALER_64; //设置预分频寄存器 IWDG_PRiwdg_handler.Init.Reload = 500;                     //设置重装载寄存器IWDG_RLRHAL_IWDG_Init(&iwdg_handler);HAL_IWDG_Start(&iwdg_handler);                       //启用看门狗
}

Prescaler = IWDG_PRESCALER_64;设置的是4*2^prer=64,Reload = 500设置的是rlr,注意IWDG_RLR重装载寄存器,只有0~11位有效,不能超过寄存器存储范围。

  1. 启用看门狗,在第一步实现了
  2. 喂狗,在main函数实现了
int main(void)
{// u8 key;HAL_Init();                     //初始化HAL库   Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhzdelay_init(180);                //初始化延时函数uart_init(115200);              //初始化USARTLED_Init();                     //初始化LED KEY_Init();                     //初始化按键delay_ms(100);iwdg_init();//HAL_IWDG_Start(&iwdg_handler);                       //启用看门狗LED0 = 0;while(1){if(KEY_Scan(0)==KEY0_PRES){HAL_IWDG_Refresh(&iwdg_handler);//LED1 = !LED1;delay_ms(10);}}
}

独立看门狗---STM32----HAL相关推荐

  1. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  2. stm32f0独立看门狗配置

    独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间 (也就是看门狗溢 ...

  3. 独立看门狗/窗口看门狗

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  4. 【STM32】HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)

    前言:   今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,窗口看门狗的使 ...

  5. cubeIDE开发, stm32独立看门狗IWDG的CubeMX配置及HAL库底层实现分析

    一.STM32 的IWDG简介 2.1 看门狗原理 看门狗本质上就是一种计数器,和我们现实生活中一炷香现象.沙漏现象等是同理的,计数器一般有两种做法,一种是递增,超过固定阀值报警:一种是递减,通常值降 ...

  6. stm32看门狗_「正点原子NANO STM32开发板资料连载」第十一章 独立看门狗实验

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十一章 独 ...

  7. STM32F4 HAL库开发 -- 独立看门狗(IWDG)

    之前讲过看门狗,参看:STM32开发 – 看门狗详解 一.HAL库配置独立看门狗步骤 1.取消寄存器写保护,设置看门狗预分频系数和重装载值. 首先我们必须取消 IWDG_PR和 IWDG_RLR寄存器 ...

  8. 从零实现 独立看门狗IWDG STM32的待机与唤醒,在待机过程中如何喂狗

    欢迎大家留言交流~ 前言: 最近在学习原子的阿波罗,进行到待机实验,实验目的是摁下KEY_UP的时候就可以让MCU从待机模式唤醒了.而KEY1在按下的时候进入休眠.(验证过程比较繁琐,只看结论的小伙伴 ...

  9. proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)

    继续更新学习STM32的历程,今天学习看门狗. 在单片机构成的微型计算机系统中,单片机的工作时常收到外界电磁场的干扰,导致程序跑飞,陷入死循环.为了解决这个问题,产生了一种用于监测单片机程序运行状态的 ...

  10. stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗

    点击上方蓝色字体,关注我们 本博文简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器.基本定时 ...

最新文章

  1. mysql并发提交事务_Mysql事务并发问题解决方案
  2. python foreach用法_使用foreach rdd和foreach在pysp中迭代rdd
  3. android tv 源代码,android_tv_metro
  4. MySQL查询语句中的IN 和Exists 对比分析
  5. .net core 实现简单爬虫—抓取博客园的博文列表
  6. 常见三种字符编码的区别:ASCII、Unicode、UTF-8
  7. 为什么 Linux 默认页大小是 4KB
  8. php 返回object,深入分析使用mysql_fetch_object()以对象的形式返回查询结果
  9. listctrl 优化_上海SEO整站优化公司_新站整站快速排名优化
  10. C++ BigEndian::FromLocal(uint_16)
  11. Electron —— Cannot find module ‘index.js’
  12. 使用原生Java代码生成可执行Jar包
  13. Merkle Tree与区块链
  14. 疑犯追踪第五季/全集Person of Interest迅雷下载
  15. 苹果笔记本没有计算机管理员,Mac管理员账户丢失怎么办
  16. oom 如何避免 高并发_高并发下的内存管理技巧
  17. 商务云PHP网络验证系统,易如意PHP网络验证系统1.3【开源】+调用模块源码
  18. TSL1.0升级到TSL1.2遇到的问题
  19. 使用file.delete删除文件不起作用解决办法
  20. python二进制写入文件_python读写二进制文件的方法

热门文章

  1. JSON 使用 教程
  2. js-js的全局变量和局部变量
  3. 基于Vue开发一个日历组件
  4. css未知尺寸的图片的水平和垂直居中
  5. Python萌新笔记
  6. SpringBoot项目中,获取配置文件信息
  7. docker集群管理
  8. 【CV论文阅读】Rank Pooling for Action Recognition
  9. Effective Modern C++翻译(3)-条款2:明白auto类型推导
  10. BCD码与十进制的相互转换