刚整了个简单的定时器中断程序,却发现程序下载后运行的结果怪怪的。<br />主程序很简单,如下:<br />void Main(void)<br />{<br />MMU_Init();<br /> ChangeClockDivider(1,1); <br /> ChangeMPllValue(0xa1,0x3,0x1); <br /> Isr_Init();<br /> Port_Init();<br /> Timer1_init();<br /> Timer1INT_Init(); <br /> ledflash();//流水灯程序,死循环。<br />}<br />定时器1中断子程序如下:<br />void __irq Timer1_ISR( void )<br />{ <br /> ledflash();<br />}<br />定时器中断初始化程序:<br />void Timer1INT_Init(void) <br />{<br /> if ((rINTPND & BIT_TIMER1)) <br /> {<br /> rSRCPND |= BIT_TIMER1;<br /> }<br /> pISR_TIMER1 = (int) Timer1_ISR<br /> rINTMSK &= ~(BIT_TIMER1); //开中断; <br />}<br />也就是说不管有没有进入定时器1中断,程序都应该是执行流水灯程序。<br />结果却是流水灯程序运行了一段时间就停止了。<br />这是什么问题呢?难道是程序进入了别的中断?但是我试过改定时器1的装载时间,它对流水灯停止的时间是对应的,但却不是进入定时器1中断。这种现象怎么解释呢?<br /> |
|