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

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

3天内不再提示

看门狗定时中断功能的运行情况分析

h1654155282.3538 来源:老马识途单片机 作者:老马识途单片机 2021-05-01 16:08 次阅读

1、看门狗时钟

讲解下看门狗的定时中断功能。既然提到了定时功能,那就需要先介绍下看门狗的时钟系统。

看门狗定时器模块使用两个时钟:PCLK和WDCLK。PCLK由系统时钟生成,供APB 访问看门狗寄存器使用。WDCLK由看门狗时钟振荡器中的wdt_clk生成,供看门狗定时器计数使用。wdt_clk时钟可以从IRC和看门狗振荡器中选择一个作为时钟源。

这两个时钟源之间存在一些同步逻辑。当MOD和TC寄存器通过APB操作更新时,新的值将由WDCLK时钟设定并生效。当看门狗定时器处于WDCLK时钟周期时,同步逻辑会先锁定WDCLK上计数器的值,然后使其与PCLK同步,以作为TV寄存器的值供 CPU 读取。

2、看门狗中断

首先介绍下看门狗警告中断比较值寄存器(WDWARNINT寄存器),它决定产生看门狗警告中断的看门狗定时器值。当计数器的低10位与WARNINT的10位具有相同值,且计数器其余高位均为0时,便触发看门狗警告中断。如例图所示,设置看门狗中断比较值寄存器的定时值位0x3FF,当看门狗计数器到03FF时,看门狗中断触发。

o4YBAGB5RkSADT-pAACp82p43B4151.png

图1 看门狗中断

除了看门狗警告中断之外,还有看门狗超时中断。这个是通过看门狗模式寄存器的WDRESET位置1,来选择看门狗超时引发中断。模式寄存器的WDTOF位就是看门狗超时标志位。在看门狗超时、发生喂狗错误或当 WDPROTECT=1 且尝试向 WDTC 寄存器写入时,便会设置看门狗超时标志。通过软件向此位写入 0 可将该标志清零。 WDTOF 位置 1,都可以触发中断。在任何情况下,非看门狗超时引起的看门狗超时标志置位都不会触发系统复位。

3、看门狗中断例程

接下来写个小例程来测试下看门狗定时中断功能的运行情况,程序源码如下。

int main(void)

{

//初始化串口

PA_2_INIT(PA_2_TX0);

UART_Open(UART0,9600,UART_NO_PARITY,0);

UART_PutString(UART0,“System Reset.。。”);//Send System Inital String

WDT_Init ();//看门狗初始化

WDT_SetIntervalinMiliSec(4000);//设置看门狗超时时间4秒

WDT-》WARNINT_b.WARNINT = 0x3FF;//警告中断定时值设置为最大值,方便演示

NVIC_EnableIRQ(WDT_IRQn);//设置看门狗NVIC中断

WDT_Enable_Timer;//启动看门狗

WDT_Feed();//喂狗

while(1);

}

void WDT_IRQHandler(void)//看门狗中断服务子程序

{

if(WDT-》MOD_b.WDINT == 1)//警告中断

{

WDT_Feed();

UART_PutString(UART0,“WDT Warning Int.。。”);

UART_ByteWrite(UART0,‘\n’);

}

if(WDT-》MOD_b.WDTOF == 1)//超时中断

{

WDT_Feed();

UART_PutString(UART0,“WDT Timeout Int.。。”);

UART_ByteWrite(UART0,‘\n}

WDT_ClearIntFlag();//清除看门狗中断

return;

}

例程首先对串口进行初始化,然后串口输出提示系统复位。随后就是看门狗的初始化。将看门时间设置为4秒钟,并且为中断模式。并且使能看门狗中断。在看门狗中断服务程序中,根据触发的中断不同,输出相应的提示信息

程序编译无误后,便可以下载仿真调试了。首先全速运行,看下串口输出的信息。根据输出的信息我们发现只有看门狗警告中断信息输出,并没有超时中断信息。这是因为在警告中断发生后及时进行了喂狗操作。所以看门狗并不会超时。

pIYBAGB5RkyAfiD_AABOlQ0FzjI048.png

图2 看门狗中断实例1

接下来我们可以把看门狗警告中断的喂狗函数WDT_Feed()屏蔽掉,然后再下载仿真看看效果。这时候我们就会看到看门狗超时中断的信息输出。因为警告中断后没有及时喂狗操作,导致看门狗超时发生。

pIYBAGB5RlKAQ4RoAABeOt6_SXM488.png

图3 看门狗中断实例2
责任编辑人:CC

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

    关注

    10

    文章

    559

    浏览量

    70730
  • 定时中断
    +关注

    关注

    0

    文章

    19

    浏览量

    8547
收藏 人收藏

    评论

    相关推荐

    STM32中的独立看门狗和窗口看门狗是什么

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗功能。但是
    的头像 发表于 02-20 17:47 2661次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>是什么

    STM32看门狗定时器的工作原理和作用 看门狗定时器的特性

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般来说都是向下计数的,给看门狗一个数字,程序开始运行
    的头像 发表于 07-27 16:30 5812次阅读
    STM32<b class='flag-5'>看门狗</b><b class='flag-5'>定时</b>器的工作原理和作用 <b class='flag-5'>看门狗</b><b class='flag-5'>定时</b>器的特性

    看门狗定时器的设计、工作原理及看门狗定时器的操作

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行看门狗
    发表于 05-23 09:14 7624次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时</b>器的设计、工作原理及<b class='flag-5'>看门狗</b><b class='flag-5'>定时</b>器的操作

    看门狗喂狗时间及程序

    什么是看门狗定时看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字
    发表于 10-16 09:19 1.8w次阅读

    看门狗定时器的作用

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行看门狗
    发表于 10-20 14:41 6668次阅读

    STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

    stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个
    发表于 11-09 17:17 8410次阅读
    STM32<b class='flag-5'>看门狗</b>配置(独立<b class='flag-5'>看门狗</b>IWDG和窗口<b class='flag-5'>看门狗</b>WWDG)

    基于VxWorks的看门狗定高效定时机制设计实现

    VxWorks提供了一个看门狗定时器(watchDog timer),它由以下四个函数维护: wdCreate( ) 创建并初始化一个看门狗定时器;wdDelete( ) 终止并
    发表于 03-06 09:22 4754次阅读
    基于VxWorks的<b class='flag-5'>看门狗</b>定高效<b class='flag-5'>定时</b>机制设计实现

    软件看门狗和硬件看门狗的作用和区别

    。  工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而
    的头像 发表于 10-15 17:29 3.9w次阅读

    看门狗定时器的相关问题和实验说明

    进入中断。在定时中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择
    的头像 发表于 10-06 12:59 4480次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时</b>器的相关问题和实验说明

    arduino看门狗

    简介  看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。看门狗定时器(WDT,Watch Dog Timer
    发表于 11-15 19:06 18次下载
    arduino<b class='flag-5'>看门狗</b>

    arduino看门狗的使用

    简介  看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。  看门狗定时器(WDT,Watch Dog Tim
    发表于 12-09 09:36 7次下载
    arduino<b class='flag-5'>看门狗</b>的使用

    STM32中的独立看门狗和窗口看门狗

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗功能
    的头像 发表于 12-22 16:58 2051次阅读

    STM32中的独立看门狗和窗口看门狗

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗功能。但是
    的头像 发表于 01-30 14:38 1320次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>

    MCU如何集成看门狗功能

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗功能
    的头像 发表于 06-22 09:09 1682次阅读
    MCU如何集成<b class='flag-5'>看门狗</b>的<b class='flag-5'>功能</b>

    什么是看门狗,工业路由器看门狗技术的功能优势

    工业路由器大多都会配备看门狗技术,它是保证工业路由器传输过程中连续24小时不宕机的重要保护技术,那么,什么是看门狗呢?▍看门狗功能看门狗,又叫watchdog,从本质上来说就是一个
    的头像 发表于 03-27 10:16 1762次阅读
    什么是<b class='flag-5'>看门狗</b>,工业路由器<b class='flag-5'>看门狗</b>技术的<b class='flag-5'>功能</b>优势