当前位置: 代码迷 >> WinCE >> 初学者提问:2440看门狗定时器
  详细解决方案

初学者提问:2440看门狗定时器

热度:72   发布时间:2016-04-28 13:18:06.0
菜鸟提问:2440看门狗定时器
//看门够计算时间: t=1/[Pclk/(预分频值+1)/分频系数]
void WDTinit()
{
  rWTCON = (255<<8)|(3<<3)|(1);//50M/256/128 配置看门狗
  rWTCNT = 0x3FFF; // rWTCNT 看门狗递减数据寄存器
  rWTCON |= (1<<5); //看门狗定时器使能
}

void WDTfeed()
{
  rWTCNT = 0xFFFF;
}

我没看懂这个的时间是多少?程序里面没有用到t=1/[Pclk/(预分频值+1)/分频系数]这个公式,难道是
配置 rWTCON = (255<<8)|(3<<3)|(1);//50M/256/128 配置这个之后,时间自动计算?
为什么这个程序里面没有用到WTDAT呢?
麻烦大家帮我讲讲,谢谢




------解决方案--------------------
1) 配置 rWTCON = (255<<8)|(3<<3)|(1);之后,
自动完成Pclk/256/128 的计算;
2) WTDAT的内容用于看门狗定时器下溢出后,自动重载WTCNT。
自动重载功能主要用于看门狗定时器作为普通定时器使用时。
作为看门狗使用时,需要人工重载计数器,例如人工重载:rWTCNT = 0x3FFF。
故可以不使用WTDAT。
------解决方案--------------------
看门狗复位的间隔时间就是你说的 WTCNT *t ;
 如果 rWTCNT = 0xFFFF; 则时间间隔太长了, 所以,一般应该是 rWTCNT = 0x3FFF。
 不需要 rWTDAT= 0xFFFF; 理由在1楼说过了