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