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

电子说

1.3w人已加入

描述

  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时,看门狗中断触发。

  定时中断

  图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秒钟,并且为中断模式。并且使能看门狗中断。在看门狗中断服务程序中,根据触发的中断不同,输出相应的提示信息。

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

  定时中断

  图2 看门狗中断实例1

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

  定时中断

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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分