watchdog

看门狗实质上和其他的定时器功能相似,只是看门狗多了一个时间到就复位的功能,只要将WTCON的【0】设置成0就成了普通的中断,将进入中断处理程序中,如果设置成了1将复位。这样的话,我们可以使用看门狗来实现对程序的监视,定时的去喂狗也就是定时去给WTCNT复制,如果程序跑飞了话就不能定时去喂狗,系统将重启。

下面的程序中我使用了一个中断处理函数,中断处理程序中使蜂窝器响一下,如果开启了喂狗程序的话不会引发中断,

下面是测试程序:(特别注意延时的时间,否则不能正常工作)

  1. #include "watchdog.h"  
  2. #include "def.h"  
  3. #include "2440addr.h"  
  4. #include "uart.h"   
  5.   
  6. void __irq watchdog_isr(void)   //__irq是把中断现场保存和恢复工作交由编译器自动完成,如果碰到中断嵌套,则__irq容易引起混乱
  7. {   
  8.   
  9.       uart_printf("Enter interrupt!\n");   
  10.       Beep(2000, 100);   
  11.        //清中断标志位   
  12.        rSRCPND = 0x1<<9;   
  13.        rSUBSRCPND = 0x1<<13;   
  14.        rINTPND = 0x1<<9;   
  15.   
  16. }   
  17.   
  18.   
  19.   
  20. void watchdog_test()   
  21. {   
  22.        
  23.     // freq=PCLK / (Prescaler value + 1) / Division_factor   
  24.     prescaler =249  division factor = 16 freq = 12.5kHZ 如果[0]为1,但中断发生时将引起复位,   
  25.     //这里设置成了普通的中断,中断发生时会进入中断处理程序   
  26.     rWTCON = (249<<8) | (0<<3) |(0);  //   
  27.     rWTDAT = 50000;  //看门狗计数4秒(4/(1/12500)   
  28.     rWTCNT = 50000;   //这两个值必须初始化   
  29.        
  30.     rWTCON |=(1<<5) |(1<<2);  //开看门狗中断   
  31.        
  32.     rSRCPND = 1<<9;   
  33.     rSUBSRCPND =1<<13;   
  34.     rINTPND =1<<9;   
  35.     rINTSUBMSK = ~(1<<13);   //开中断子屏蔽   
  36.     rINTMSK =~(1<<9);   
  37.        
  38.     pISR_WDT_AC97 = (U32)watchdog_isr;  //安装中断处理句柄   
  39.        
  40.    Delay(1000);   
  41.   
  42.        while(1)   
  43.   
  44.        {   
  45.   
  46.                      Delay(1000);   
  47.   
  48.              // rWTCNT = 50000;         //喂狗,重新赋值,防止中断,果         
  49.                          //把这条语句打开的话,将进行喂狗,不会进入中断   
  50.   
  51.                      Delay(1000);   
  52.   
  53.          }   
  54.   
  55. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值