周工及各位前辈,我在使用arm2100实验板做向量中断实验是,出现了下面的一个症状,如果将主程序的while(1);这句里面加一条别的语句,例如while(1){IO0SET=0x03c00000;};结果就不能跳转到相应的中断处理程序,请众位帮忙。具体的程序如下:<br /><br />#include "config.h"<br /> <br /><br />#define LED1CON (1<<22) <br />#define LED4CON (1<<25) <br /><br /><br />void __irq IRQ_Eint0(void)<br />{ uint32 i;<br /><br /> i = IO0SET; <br /> if( (i&LED1CON)==0 ) <br /> { IO0SET = LED1CON;<br /> }<br /> else<br /> { IO0CLR = LED1CON;<br /> }<br /> <br /> EXTINT = 0x01; <br /> <br /> VICVectAddr = 0x00; <br />} <br /><br /><br /><br /><br />void __irq IRQ_Eint3(void)<br />{ uint32 i;<br /><br /> i = IO0SET; <br /><br /> if( (i&LED4CON)==0 ) <br /> { IO0SET = LED4CON;<br /> }<br /> else<br /> { IO0CLR = LED4CON;<br /> }<br /> <br /> EXTINT = 0x08; <br /> VICVectAddr = 0x00;<br />}<br /> <br /><br />/<br /><br />int main(void)<br />{ PINSEL0 = 0x00000000; <br /> PINSEL1 = 0x00000301; <br /><br /><br /> IO0DIR = LED1CON|LED4CON|0x03c00000; <br /><br /><br /> <br /> EXTMODE = 0x0F; <br /> EXTPOLAR = 0x00; <br /> <br /> <br /> VICIntSelect = 0x00000000; <br /> VICVectCntl0 = 0x20|14; <br /> VICVectAddr0 = (int)IRQ_Eint0; <br /> VICVectCntl1 = 0x20|17; <br /> VICVectAddr1 = (int)IRQ_Eint3; <br /> EXTINT = 0x09; <br /> <br /> VICIntEnable = (1<<14)|(1<<17); <br /> <br /> while(1);<br /> {IO0CLR=0x03c00000;}; //问题就出在这里 <br /><br /> return(0);<br />} |
|