我用的是周立功LPC2100模板 外部中断怎么老进不去啊 请大家帮忙看看阿 先谢谢了<br /> <br />#include "config.h"<br /><br />uint16 Fdiv;<br />uint8 p;<br />uint8 flag_ri;<br />uint32 T1temp0,T1temp1,T1diff;<br />uint32 T2temp0,T2temp1,T2diff;<br />uint8 flag_t1,flag_t2;<br />float freqnd1,freqnd2;<br />uint8 end1,end2;<br /><br />void init_ic(void)<br /><br />{<br />//================================IO初始化<br /> PINSEL0=0x800000c5;<br /> PINSEL1=0x15454000;<br /> PINSEL2=0x00000000;<br /> <br />//=======================设置T1用于做时间轴 <br /> T1TC=0;<br /> T1PR=0;<br /> T1MR1=0Xffffffff;<br /> T1MCR=0X00;<br /> T1TCR=0X01;<br /> <br />//=========================串口设置 <br /> U0LCR=0X83;<br /> //U0DLL=0X12;<br />// U0DLM=0X00;<br /> Fdiv = (Fpclk / 16) / 9600; // 设置波特率<br /> U0DLM = Fdiv>>8; <br /> U0DLL = Fdiv&0xff; <br /> U0LCR=0X03;<br /> // U0FCR=0X07;<br /> // U0IER=0x01;<br /> <br /> <br />//======================设置中断向量 <br /> VICIntSelect=0x00000000;<br /> <br /> VICVectCntl1 = 0x2F; // EINT1通道分配到IRQ slot 1,即优先级1<br /> VICVectAddr1 = (uint32)IRQ_Eint1; // 设置EINT1向量地址<br /> VICVectCntl2 = 0x30; // EINT2通道分配到IRQ slot 2,即优先级2<br /> VICVectAddr2 = (uint32)IRQ_Eint2; <br /> <br /><br /> <br />//====================外部中断设置 <br /> EXTMODE = 0x0f; //外部中断边沿触发<br /> EXTPOLAR = 0x00; //下降沿触发 <br /> EXTINT=0x07; //clear INT0, INT1 and INT2 interrupt flag 清外部中断标志 外部中断低电平有效,对其写1是复位<br /> VICIntEnable=0x00018000;//enable INT1 and INT2 interrupt<br /> <br /> <br />}<br /><br />void DelayNS(uint32 dly)<br />{<br /> uint32 i; <br /> for (;dly>0;dly--)<br /> for (i=0;i<50000;i++);<br />}<br /><br /><br />int main (void)<br />{ <br /> end1=0x31;<br /> end2=0x32;<br /> IO1DIR=0x00030000;<br /> IO1SET=0x00030000;<br /> init_ic();<br /><br /> for(;;)<br /> { <br /> if(flag_t1)<br /> <br /> {<br /> freqnd1=12000000.0/T1diff;<br /> if(freqnd1>45 && freqnd1<60)<br /> <br /> {<br /> end1=50;<br /> }<br /> else<br /> end1=100;<br /> } <br /> <br /> <br /> if(flag_t2)<br /> {<br /> IO1SET=0x00020000;<br /> freqnd2=12000000.0/T2diff;<br /> <br /> if(freqnd2>45 && freqnd2<60)<br /> <br /> {<br /> end2=50;<br /> }<br /> else<br /> end2=100;<br /> <br /> }<br /> p=end1;<br />// p=0x31;<br /> U0THR=p;<br /> while( (U0LSR&0x20)==0 );<br /> <br /> DelayNS(50);<br /> <br /> p=end2;<br /> //p=0x32;<br /> U0THR=p;<br /> while( (U0LSR&0x20)==0 );<br /><br /> // return 0;<br />}<br />}<br /><br /><br />void __irq IRQ_UART0(void)<br />{<br /><br /> VICVectAddr=0x00;<br />}<br /><br />void __irq IRQ_Eint1(void)<br />{ <br /> T1temp0=T1temp1;<br /> T1temp1=T1TC;<br /> T1diff=T1temp1-T1temp0;<br /> flag_t1=1;<br /> <br /> /* EXTINT=0x02;<br /> end1=0x33;*/<br /> VICVectAddr=0x00;<br />}<br />void __irq IRQ_Eint2(void)<br />{<br /> <br />/* EXTINT = 0x04; // 清除中断标志 外部中断2 IRQ中断<br /> IO1CLR= 0x00020000;<br /> T2temp0=T2temp1;<br /> T2temp1=T1TC;<br /> <br /> if(T2temp1>T2temp0)<br /> {<br /> flag_t2=1;<br /> T2diff=T2temp1-T2temp0;<br /> <br /> }*/<br /> <br /> EXTINT = 0x04;<br /> end2=0x35;<br /> VICVectAddr=0x00; <br />}<br /><br />可是2100模板还要配置呢?在那里配置?如何配置呢?期待大家的回复阿。。。 |
|