snifer

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

0
阅读(3324)

前面讲到了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,大功告成,今天一下午都在实验室搞这个东西,期待新的收获,谢谢大家
Baidu
map