首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2012-03-11 
菜鸟提问:2440看门狗定时器//看门够计算时间: t1/[Pclk/(预分频值+1)/分频系数]void WDTinit(){rWTCON

菜鸟提问: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楼说过了

热点排行