0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F103系列单片机最实用看门狗的详细资料概述

2oON_changxuemc 来源:未知 作者:易水寒 2018-07-05 10:16 次阅读

为什么使用看门狗

事情很简单先前做的一款采集数据的产品不知道为何异常,陷入死循环然后“死机”,分析了很多次,没发现原因,但是每次重新上点后就能正常采集到数据。后来找到了解决方法:看门狗!目的是当程序走入死循环或者硬件异常时,可以自动复位,这样就可以得到跟重新上电后差不多的效果了。

使用的平台:stm32f103系列单片机

使用的烧写调试模式:Jlink SWD 模式。

使用STM32官方模板库。

ST系列单片机看门狗分为两种:

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

独立看门狗:

可参看RM(reference Manual)的Independent watchdog (IWDG)

当然,只是简要查看下RM中的介绍(至于寄存器的操作,我们可以略过,因为我们使用库的开发,但是基本流程一定要了解!)。

在这里我们要抓住几个关键点:

a、stm32f10x系列有两个看门狗,看门狗主要用于检测由于软件出错的问题,并触发系统自动复位,或者触发一个中断(窗口看门狗才有)。

b、独立看门狗的时钟源为LSI,尽管主时钟出错,它还是能保持激活状态。窗口看门狗的时钟源为APB1时钟,并且可以修改分频值。

c、独立看门狗:有独立时钟(内部低速时钟LSI),所以不受系统硬件影响的系统故障探测器。主要用于监视硬件错误。精确度要求比较低。

d、窗口看门狗:时钟与系统相同。如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。精确度要求更高。

看门狗原理简介:有某个寄存器按照时钟源不断的递减(有只狗,不断的消耗能量),当该寄存器为0时则会触发系统复位(狗会叫),为了不使得寄存器为0,我们就要按时的重新设置寄存器的值(喂狗),这样当软件正常工作时(正常喂狗,狗就不会叫)不断的重设寄存器就不会导致复位。当万一软件陷入死循环,不再重设寄存器(没有喂狗,狗就会叫)。这样就会产生复位了。

因此,假设我们有个软件有时候会内存出错,或者陷入死循环,那么我们就可以通过独立看门狗来使得该器件复位。

废话少说:

代码示例:伸手党快来!

//----------------------

void IWDG_Init()

{

//Enable write access to IWDG_PR and IWDG_RLR registers

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

//Configure the IWDG prescaler

IWDG_SetPrescaler(IWDG_Prescaler_16); //10k

//Configure the IWDG counter value

IWDG_SetReload(2500); // Bits11:0 RL[11:0]: Watchdog counter reload value ~ Only 12bit ~max value = 4096

IWDG_ReloadCounter();

IWDG_Enable();

}

//----------------------

What?这代码是怎么写出来的,Don't worry,Let me tell you !

由于我们使用的是ST官方的库,因此有很多文档说明!看看注释就知道啦!如下:

首先,打开官方库的任一template:使用keil MDK 打开如下目录

stsw-stm32062.zip\STM32F2xx_StdPeriph_Lib_V1.1.0\Project\STM32F2xx_StdPeriph_Template\MDK-ARM

这样你就会在左手边看到一个如下图一样的文件。简要查看下,我们所要使用的是IWDG这个功能。因此肯定是stm32f2xx_iwdg.c这个文件啦!(f2xx系列的库才有注释,10x的没有。。不过差不多,可能10x的教程相对较多。

打开后就有相关的详细介绍了!

* ===================================================================

* How to use this driver

* ===================================================================

* 1. Enable write access to IWDG_PR and IWDG_RLR registers using

* IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) function

*

* 2. Configure the IWDG prescaler using IWDG_SetPrescaler() function

*

* 3. Configure the IWDG counter value using IWDG_SetReload() function.

* This value will be loaded in the IWDG counter each time the counter

* is reloaded, then the IWDG will start counting down from this value.

*

* 4. Start the IWDG using IWDG_Enable() function, when the IWDG is used

* in software mode (no need to enable the LSI, it will be enabled

* by hardware)

*

* 5. Then the application program must reload the IWDG counter at regular

* intervals during normal operation to prevent an MCU reset, using

* IWDG_ReloadCounter() function.

别说看不懂哈!

如下验证整个看门狗的过程:

IWDG_Init();

IWDG_ReloadCounter();

printf("SysInit\r\n");

while(1)

{

Delay_us(1000);

IWDG_ReloadCounter();

printf("1000 \r\n");

Delay_us(10000);

IWDG_ReloadCounter();

printf("10000 \r\n");

Delay_us(100000);

IWDG_ReloadCounter();

printf("100000 \r\n");

Delay_us(200000);

IWDG_ReloadCounter();

printf("200000 \r\n");

Delay_us(300000);

IWDG_ReloadCounter();

printf("200000 \r\n");

Delay_us(400000);

IWDG_ReloadCounter();

printf("400000 \r\n");

Delay_us(500000);

IWDG_ReloadCounter();

printf("500000 \r\n");

Delay_us(600000);

IWDG_ReloadCounter();

printf("600000 \r\n");

Delay_us(700000);

IWDG_ReloadCounter();

printf("700000 \r\n");

Delay_us(800000);

IWDG_ReloadCounter();

printf("800000 \r\n");

Delay_us(900000);

IWDG_ReloadCounter();

printf("900000 \r\n");

Delay_us(1000000);

IWDG_ReloadCounter();

printf("1000000 \r\n");

IWDG_ReloadCounter();

Delay_us(2000000);

printf("2000000\r\n");

}

这样,设置的看门狗必须为每1s喂狗一次,因此,到最后的延时2s的打印函数是不会被打印出来的,直接又一次复位了.

另外,需要注意的是:

独立看门狗的ReloadCounter寄存器只有12位~!意思就是,最大值为2的12次方 = 4096,千万不能超出!

STM32F103系列单片机最实用看门狗的详细资料概述

独立看门狗的时钟如上图为40khz.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43990

    浏览量

    620948
  • 看门狗
    +关注

    关注

    10

    文章

    541

    浏览量

    70261
  • STM32F103
    +关注

    关注

    33

    文章

    474

    浏览量

    62626

原文标题:stm32看门狗的使用

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机STM32F107独立看门狗单片机不断复位

    目前有一问题,一直受困,请大家帮帮忙!使用单片机STM32F107,目前使用功能独立看门狗,串口,问题如下1. 有独立看门狗时,正常运行下,串口可以发送数据,但是
    发表于 03-18 08:03

    STM32F0xx_看门狗(独立+窗口)配置详细过程 精选资料推荐

    Ⅰ、概述对于看门狗,我觉得做单片机或者嵌入式开发的人员来说并不陌生,今天总结STM32F0看门狗的功能,
    发表于 07-22 09:10

    独立看门狗概述

    看门狗部分,之前讲软件复位的时候提到,接下来详细看一下。一、独立看门狗概述1、为什么要看门狗在由单片机
    发表于 07-30 07:03

    独立看门狗概述

    记录一下,方便以后翻阅~主要内容:1)独立看门狗概述;2)常用寄存器和库函数配置;3)独立看门狗实验代码解读。官方资料:《STM32中文参考
    发表于 07-30 08:25

    看门狗是什么 看门狗的功能

    STM32的独立看门狗概述看门狗是什么看门狗的功能独立看门狗所需的环境独立
    发表于 07-30 08:07

    独立看门狗的优缺点

    一、使用背景它的主要功能是在发生软件故障时, 将单片机复位重启。STM32F103 内置独立看门狗和窗口看门狗两类看门狗。二、独立
    发表于 08-02 07:34

    Stm32F103看门狗分为哪几种

    目录概述独立看门狗窗口看门狗概述Stm32F103看门狗分为两种:独立
    发表于 08-02 07:19

    STM32】独立看门狗概述、寄存器、库函数(IWDG一般步骤)精选资料分享

    STM32F1xx官方资料:《STM32中文参考手册V10》-第17章 独立看门狗 独立看门狗概述
    发表于 08-02 06:19

    总结STM32F103 WDG看门狗

    推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!前言今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗
    发表于 08-02 10:19

    如何去使用Stm32F103的窗口看门狗WWDG

    Stm32F103看门狗分为哪几种?独立看门狗IWDG的主要性能有哪些?窗口看门狗WWDG的主要特性有哪些?如何去使用窗口看门狗WWDG?
    发表于 08-19 06:46

    怎样让stm32f103可以进入低功耗又可以使用看门狗

    为什么stm32f103一旦开启看门狗就关不了呢?怎样让stm32f103可以进入低功耗又可以使用看门狗呢?
    发表于 08-23 07:43

    如何基于STM32F103对4路ADCDMA进行改进的详细资料概述

    本文的主要内容详细介绍了基于STM32F103的4路ADC采集用的DMA进行改进的详细资料概述
    发表于 06-04 10:00 12次下载

    基于STM32F103系列单片机的11个定时器解析

    STM32F103系列单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1个系统嘀嗒定时器
    发表于 10-23 15:54 6593次阅读
    基于<b class='flag-5'>STM32F103</b><b class='flag-5'>系列</b><b class='flag-5'>单片机</b>的11个定时器解析

    STM32F103系列单片机详细资料合集

    本文档的主要内容详细介绍的是STM32F103系列单片机详细资料合集包括了:原理图和PCB图,数据手册,核心板测试程序,使用参考例程。
    发表于 03-27 08:00 45次下载
    <b class='flag-5'>STM32F103</b><b class='flag-5'>系列</b><b class='flag-5'>单片机</b>的<b class='flag-5'>详细资料</b>合集

    使用STM32F103单片机实现定时器实验的详细资料说明

    本文档的主要内容详细介绍的是使用STM32F103单片机实现定时器实验的详细资料说明。
    发表于 04-07 08:00 5次下载
    使用<b class='flag-5'>STM32F103</b><b class='flag-5'>单片机</b>实现定时器实验的<b class='flag-5'>详细资料</b>说明