|
今天用mini2440裸奔,想调看门狗定时器中断,怎么发现进入看门狗定时器超时中断的时候进入了两次。
中断代码,和初始化代码如下,求高人回答,谢谢!
void __irq WDT()
{
rSUBSRCPND
delay(1000);
//if( rSUBSRCPND&(1<<13) )
{
rSRCPND |= (1<<9);
rSUBSRCPND |= 1<<13;
rINTPND |= 1<<9;
//rINTSUBMSK &= ~(1<<13);
//rINTMSK &= ~(1<<9);
printf("进入看门狗定时器中断!\r\n");
}
}
void Init_WDT()
{
rINTMSK = BIT_ALLMSK;
rINTSUBMSK = BIT_SUB_ALLMSK;
ClearPending(BIT_ALLMSK);
rSUBSRCPND |= BIT_SUB_ALLMSK;
pISR_WDT_AC97 = (int)WDT;
rSRCPND |= (1<<9);
rSUBSRCPND |= 1<<13;
rINTPND |= 1<<9;
rINTSUBMSK &= ~(1<<13);
rINTMSK &= ~(1<<9);
rWTCON = (255<<8)|(3<<3)|(1<<2);//8250hz,中断有效,看门狗无效
//rWTCON |= 1; //看门狗复位使能
rWTDAT = 8286; //4S定时
rWTCNT = 8286;
rWTCON |= 1<<5; //使能看门狗
printf("初始化看门狗完毕!\n");
}
如果不把if语句注释掉,串口收到的信息是;
进入看门狗定时器中断!
进入看门狗定时器中断!
每次进入都输出两遍,不知道是怎么回事。
初始化的时候,只开了WDT子中断,AC97子中断没有打开,WDT和AC97是公用一个总中断源的。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|