[ZLG-ARM] LPC2148的问题,请高手解答

[复制链接]
3100|8
 楼主| nyf1972 发表于 2008-1-3 13:42 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;我用KEIL&nbsp;3。03A&nbsp;做软仿,程序可以进入所有的中断,但是一旦下载LPC2148内部的时候,就不能够进入中断。<br />&nbsp;&nbsp;&nbsp;可以确定目标板没有问题,我换了多块。用ULINK&nbsp;调试,也是进入不了。<br />&nbsp;&nbsp;&nbsp;拜托帮忙!谢谢!<br /><br />&nbsp;&nbsp;&nbsp;如下是程序部分的描述,有些程序是比较长,我把用一个函数代替,有些用空函数代替。那些代码都与硬件没有关系。<br />&nbsp;&nbsp;&nbsp;做软仿,非常容易进入定时中断,下载后,没有(可看到有个测试灯在定时任务中),用是示波器测试也没有波形。<br />&nbsp;&nbsp;&nbsp;郁闷中!<br />&nbsp;void&nbsp;Timer1Handler&nbsp;(void)&nbsp;__irq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定时器1中断<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//T1IR=0xff;//清除中断<br />&nbsp;&nbsp;&nbsp;&nbsp;T1IR=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;Timer1Pro();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;//&nbsp;这部分程序还没有完善<br />void&nbsp;UartHandler&nbsp;(void&nbsp;)&nbsp;__irq&nbsp;//UartHandler:&nbsp;&nbsp;//串口中断&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />//&nbsp;&nbsp;&nbsp;IENABLE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;handles&nbsp;nested&nbsp;interrupt&nbsp;*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;UartPro();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />void&nbsp;USTrigInHandler&nbsp;(void)&nbsp;__irq&nbsp;&nbsp;//超声输入中断<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT=0X2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;clear&nbsp;EINT1&nbsp;flag&nbsp;*/&nbsp;//如果使用<br />&nbsp;&nbsp;&nbsp;&nbsp;USTrigPro();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />}<br /><br /><br />unsigned&nbsp;int&nbsp;PwmOutFreshData[10];<br /><br />void&nbsp;PWM0Handler&nbsp;(void)&nbsp;__irq&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMIR=PWMIR|0X04;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清除中断寄存器&nbsp;pwm2通道<br />&nbsp;&nbsp;&nbsp;&nbsp;PWM0Pro();<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />void&nbsp;IRHandler&nbsp;(void)&nbsp;__irq&nbsp;&nbsp;//红外输入中断<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT=0X1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;clear&nbsp;EINT0&nbsp;flag&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;IRPro();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />}<br /><br />//***************************Tasks********************************************<br />void&nbsp;Timer0Handler&nbsp;(void)&nbsp;__irq&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0IR&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;clear&nbsp;interrupt&nbsp;flag&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0MR0=cInterVal_100uS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0MCR=0x03;//T0和MR0匹配时候产生中断,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0IR=0;//清除中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0TCR=&nbsp;0x01;//&nbsp;&nbsp;&nbsp;&nbsp;定时器控制寄存器。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0CTCR=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(++Cnt_Task)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:&nbsp;&nbsp;//硬件驱动<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR0=1&lt&ltTestLed;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//喂狗程序<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDMOD=0x03;//WDMOD=0x00;//0x03&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDTC=cWatchDog_10mS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDFEED=0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDFEED=0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2://软件定时器处理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//软件定时器处理&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3:&nbsp;//计算<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4://输出控制<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOSET0=1&lt&ltTestLed;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;5:&nbsp;//显示控制<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;6:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;7:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;8:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cnt_Task=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />//***************************fuctions&nbsp;define**************************************<br /><br />void&nbsp;OSCInit(void)&nbsp;&nbsp;//初始化OSC&nbsp;PLL<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />void&nbsp;InitTimer0(void)//初始化T0<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//用匹配寄存器产生中断<br />&nbsp;&nbsp;&nbsp;&nbsp;T0IR=1;//清除中断<br />&nbsp;&nbsp;&nbsp;&nbsp;T0TCR=&nbsp;0x03;//&nbsp;&nbsp;&nbsp;&nbsp;定时器控制寄存器。使能定时器/计数器&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0PR=0;&nbsp;&nbsp;&nbsp;&nbsp;//预分频率为<br />&nbsp;&nbsp;&nbsp;&nbsp;T0MR0=cInterVal_100uS;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0MCR=0x03;//T0和MR0匹配时候产生中断,同时复位T0<br />&nbsp;&nbsp;&nbsp;&nbsp;T0CTCR=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;//T0TC内部的计数值。<br />&nbsp;&nbsp;&nbsp;&nbsp;T0TCR=&nbsp;0x01;//&nbsp;&nbsp;&nbsp;&nbsp;定时器开始运行<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />void&nbsp;InitAD(void)//初始化AD转换器<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;AD0CR=0x1207702<br />&nbsp;&nbsp;&nbsp;&nbsp;AD0INTEN=0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />void&nbsp;InitUart0(void<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x83;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;8&nbsp;bits,&nbsp;no&nbsp;Parity,&nbsp;1&nbsp;Stop&nbsp;bit&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLM&nbsp;=&nbsp;(&nbsp;22118400&nbsp;/&nbsp;16&nbsp;)&nbsp;/&nbsp;9600&nbsp;/&nbsp;256;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLL&nbsp;=(&nbsp;22118400&nbsp;/&nbsp;16&nbsp;)&nbsp;/&nbsp;9600&nbsp;%&nbsp;256;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x03;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;DLAB&nbsp;=&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />void&nbsp;VICInit(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable=0x1c170;//0x00000010;//全部需要使能<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect=0x00000000;&nbsp;//全部选择为IRQ<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl0=0X00000025;//&nbsp;定时器T1中断<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl1=0X0000002F;//&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl2=0X00000028;//PWM中断<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl3=0X0000002E;//红外中断&nbsp;&nbsp;使用EINT0输入<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl4=0X00000026;//串口中断<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl5=0X00000024;//定时器T0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr0=(unsigned)Timer1Handler;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr1=(unsigned)USTrigInHandler;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr2=(unsigned)PWM0Handler;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr3=(unsigned)IRHandler;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr4=(unsigned)UartHandler;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr5=(unsigned)Timer0Handler;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;<br />void&nbsp;PinInit(void)//设置引脚<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0=0x800080c5;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL1=0x05400001&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL2=0X00000004;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCS=0x02;&nbsp;&nbsp;&nbsp;&nbsp;//P1使用高速控制,P0使用低速控制<br />&nbsp;&nbsp;&nbsp;&nbsp;IODIR0&nbsp;=0xc07e1f74&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//port&nbsp;initialized<br />&nbsp;&nbsp;&nbsp;&nbsp;FIO1DIR2=0xFF;//定义P1.16~P1.23为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />void&nbsp;EintInit(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTWAKE=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTMODE=0x07;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTPOLAR=0x07;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />void&nbsp;PWMInit(void)//使用PWM2输出<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMIR=0x70f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清除所有的PWM中断寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMR2=cPwmPeroid/2;//匹配寄存器赋值<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMR0=cPwmPeroid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PMW周期<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMLER=0x05;//允许最后写入PWM&nbsp;匹配0&nbsp;,匹配2<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMPCR=0x0400;//使能PWM2&nbsp;输出,PWM2选择单边沿控制模式。<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMTCR=0x09;&nbsp;//pwm使能<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMCR=0X00000003;&nbsp;//MR0匹配的时候同步复位&nbsp;开启中断<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMPC=(26-1);//预分频系数为(26/20*25000=32500us)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />void&nbsp;CopyFlashDatatoRam(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />void&nbsp;MoveBmpTempData(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;int32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&lt122;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdRamH=*pBmpDataH;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LcdRamL=*pBmpDataL;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBmpDataH++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pBmpDataL++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />void&nbsp;IAPPro(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />void&nbsp;InitParaData(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;**TimerEn=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;int&nbsp;main(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;PinInit();//设置引脚定义,方向<br />&nbsp;&nbsp;&nbsp;&nbsp;OSCInit();&nbsp;//初始化OSC&nbsp;PLL<br />&nbsp;&nbsp;&nbsp;&nbsp;InitTimer0();//初始化T0<br />&nbsp;&nbsp;&nbsp;&nbsp;InitAD();//初始化AD转换器<br />&nbsp;&nbsp;&nbsp;&nbsp;InitUart0();//初始化串口0<br />&nbsp;&nbsp;&nbsp;&nbsp;EintInit();//红外接受器输入<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMInit();//使用PWM2输出<br />&nbsp;&nbsp;&nbsp;&nbsp;VICInit();//初始化中断系统<br />&nbsp;&nbsp;&nbsp;&nbsp;InitParaData();<br />__asm{MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0x5f&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CopyFlashDatatoRam();<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IAPPro();//IAPSaveEn做完毕后应该清除<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
zlgmcu 发表于 2008-1-3 20:27 | 显示全部楼层

可能是外部中断2出问题

“VICIntEnable=0x1c170;”这一句使能了EXTINT2,但是没有设置中断,也没有处理函数。应该改为&quot;VICIntEnable=0x0c170;”<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zlgARM_ldj
 楼主| nyf1972 发表于 2008-1-3 23:54 | 显示全部楼层

RE:ZLGMCU

&nbsp;&nbsp;&nbsp;VICIntEnable=0x1c170;&nbsp;&nbsp;&gt&gtVICIntEnable=0x0c170;<br />结果还是一样的。<br />&nbsp;&nbsp;&nbsp;是否于启动代码有关?还是与FIQ有关,我没有FIQ
zlgmcu 发表于 2008-1-4 12:44 | 显示全部楼层

先弄一个小的例程把中断调出来

我们公司网站上有一个例程,你试试看<br />http://www.zlgmcu.com/tools/kaifaban/EasyARM2100/VICVect1.zip<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;&nbsp;zlgARM_ldj
 楼主| nyf1972 发表于 2008-1-4 22:08 | 显示全部楼层

没准是LPC214X的BUG!!!

我找了一些熟手,好像也搞不定!原因我们也在查!真是奇怪了。
NYF1972 发表于 2008-1-7 14:05 | 显示全部楼层

ZLGARM是否可以帮我?

中断还是搞不定!真的,奇怪了。&nbsp;
zlgarm 发表于 2008-1-7 17:13 | 显示全部楼层

nyf1972,您好!

有两个地方您能否再检查一下:<br />1.OSCInit初始化是否正确?此处关系到整个系统的运行。<br />2.请先将喂狗程序删除,然后再试试。<br /><br />由于您的程序太长,一下子很难找到问题所在,建议化整为零,一部分一部分查找问题。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_zxm
zlgarm 发表于 2008-1-7 19:34 | 显示全部楼层

中断

nyf1972&nbsp;您好;<br /><br />似乎你没有使能内核中的IRQ中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;&nbsp;zlgarm_zhp
 楼主| nyf1972 发表于 2008-1-7 22:10 | 显示全部楼层

RE:ZLGARM

IRQ已经使能!还是不行(软仿可以,硬件不行)。晕啊!!!<br />&nbsp;&nbsp;&nbsp;我用别人的STARTUP,把我的程序拷入。<br />&nbsp;&nbsp;&nbsp;测试结果如下:<br />&nbsp;&nbsp;&nbsp;如果不加入EINT1中断,能够进入T0,T1中断,但是我的STARTUP就不行。<br />&nbsp;&nbsp;&nbsp;一旦加入EINT1中断,就有问题。如下是EINT1的代码:<br /><br />void&nbsp;USTrigInHandler&nbsp;(void)&nbsp;__irq&nbsp;&nbsp;//超声输入中断<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT=0X2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;clear&nbsp;EINT1&nbsp;flag&nbsp;*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PluseReturnTimer1=T1TC;//&nbsp;读取定时器&nbsp;&nbsp;以20M为基础<br />&nbsp;&nbsp;&nbsp;&nbsp;USTimerDataFresh=1;//设置刷新标志&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PluseReturnFlag=1;&nbsp;&nbsp;&nbsp;&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Acknowledge&nbsp;Interrupt&nbsp;*/<br />}<br /><br />难道与读取T1TC有问题吗?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;调试中也发现如下的问题,希望得到指点:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;另外用下面两语句测试(TrigOut为P0.11,TestLed;p0.31,Alarm1Port:P0.9):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR0=1&lt&ltTestLed|1&lt&ltTrigOut|1&lt&ltAlarm1Port;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOSET0=1&lt&ltTestLed|1&lt&ltTrigOut|1&lt&ltAlarm1Port;<br />&nbsp;&nbsp;&nbsp;&nbsp;结果发现&nbsp;TrigOut&nbsp;无输出,其他端口没有问题,正常输出。<br />&nbsp;&nbsp;&nbsp;&nbsp;我的初始化代码为:<br />void&nbsp;PinInit(void)//设置引脚<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0=0x800080c5;//0B1000&nbsp;0000&nbsp;0000&nbsp;0000&nbsp;1000&nbsp;0000&nbsp;1100&nbsp;0101;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL1=0x05400001;//0b0000&nbsp;0101&nbsp;0100&nbsp;0000&nbsp;0000&nbsp;0000&nbsp;0000&nbsp;0001;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL2=0X00000004;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCS=0x02;&nbsp;&nbsp;&nbsp;&nbsp;//P1使用高速控制,P0使用低速控制<br />&nbsp;&nbsp;&nbsp;&nbsp;IODIR0&nbsp;=0xc07e3f74;//0B1100&nbsp;0000&nbsp;0111&nbsp;1110&nbsp;0011&nbsp;1111&nbsp;0111&nbsp;0100;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//port&nbsp;initialized<br />&nbsp;&nbsp;&nbsp;&nbsp;FIO1DIR2=0xFF;//定义P1.16~P1.23为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有,我已经屏蔽掉看门狗,硬件全速运行的时候是否看门狗会起作用?我的程序老是在4秒左右就死了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有些怀疑是看门狗。如果是的话如何处理才能够完全关闭看门狗?如果不是看门狗的问题,如何跟踪出问题的地方?<br />&nbsp;&nbsp;&nbsp;<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

107

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部