snifer

[原创]Blackfin BF542 处理器中看门狗程序的实现

0
阅读(3352)

前面讲到了Blackfin BF542 中看门狗程序的作用和原理,下面就是实现部分哦,花了我几个小时才搞定,内牛满面啊。

 使能WATCHDOG的代码

WATCNT = 8448 * 2;/* 设置看门狗初始值 */
 
WATCON = BIT_WDT_ENABLE | BIT_WDT_RST_ENABLE | BIT_WDT_CLK_SEL |
 
BIT_WDT_PRE_SCALER;/* 打开看门狗 */
 
其中WDT_CLK_SEL和WDT_PRE_SCALER的值如下:
 
#define WDT_CLK_SEL(0X3    <<3)/* 1/128 */
 
#define WDT_PRE_SCALER ((PCLK/1000000-1)   <<8)/* 255    */
 
看门狗定时器的时钟周期为(工作主频为60MHZ)
 
  t_watchdog = 1/[ PCLK / ((PCLK/1000000-1) + 1) / 128 ] = 0.000128 s;
 
将WDTCNT设置为0x1000,其超时时间为
 
  t = 8448 ×2 ×t_watchdog ≈2.16 s
 
  
喂狗
       

 

使用程序定期的设置WTCNT寄存器,俗称“喂狗
 
继续修改上一次实验的程序,在TICK中断中每秒重置一次WDTCNT的值(使用同一个值
0X1000),检查是否有复位发生
 
WATCNT = 8448 * 2; /* 重新设置看门狗时间值 */
 
在TICK中断中每3秒重置一次WDTCNT的值(使用同一个值0X1000),检查是否有复位发生
 
if(tick_index%3==0)
 
WATCNT = 8448 * 2;/* 重新设置看门狗时间值 */
 
ok,大功告成,今天一下午都在实验室搞这个东西,期待新的收获,谢谢大家