用EasyArm2200开发板上的pack的p0.11对外部频率计数,外部频率为10M.<br />用的是LPC2200 for ARM的模板,<br />其中,我已经LPC2294.h中加入了:<br /> #define T0CTCR 0xE0004070<br /> #define T1CTCR 0xE0008070<br />而且,已经将Fpck改为:#define Fpclk (Fcclk / 4) * 2<br />问题如下:<br />写的程序意思是,设置T1为计数模式,让T1的Cap1.1对外部频率计数,设置MR1=100,那么,当计数到100时,使蜂鸣器连续响2次。<br /> 但是,当我接10M的信号输入时,没有响,而且我发现根本没有进入中断。<br /> 于是,我改了一下程序,对150K的测频率,且改为查询方式,但是程序编译通过,但就是查寻不到中断标志置位,也即根本没有测频,不知道原因,<br />请教周工和各位高手。<br />程序如下:<br />#include "config.h"<br /><br />#define BEEPCON 0x00000080<br /><br />void DelayNS(uint32 dly)<br />{<br /> uint32 i;<br /> for(;dly>0;dly--)<br /> for(i=0;i<5000;i++);<br />} <br /><br />/*void __irq IRQ_Time1(void)<br /> {<br /> uint32 i=2;<br /> for(i=0;i<2;i++)<br /> {<br /> IO0CLR=BEEPCON;<br /> DelayNS(10);<br /> IO0SET=BEEPCON;<br /> DelayNS(10);<br /> }<br /> <br /> T1IR=0x01;<br /> VICVectAddr=0x00;<br /> } */<br /> <br />void Time1_Ini(void)<br />{<br /> <br /> T1PR=0;<br /> T1MR1=100;<br /> T1MCR=0x14;//匹配中断并产生复位<br /> T1CTCR=0x05;<br /> <br /> T1TCR=0x03;<br /> T1TCR=0x01;<br /> <br /> //设置定时器T0中断IRQ<br /> <br />/* VICIntSelect=0x00;<br /> VICVectCntl0=0x25;<br /> VICVectAddr0=(uint32)IRQ_Time1;<br /> VICIntEnable=0x00000020;*/<br /> <br />} <br /> <br /> int main (void)<br />{ <br /> uint32 i=2;<br /> PINSEL0=0x00800000;<br /> IO0DIR=BEEPCON;<br /> IO0SET=BEEPCON;<br /> Time1_Ini();<br /> while(1)<br /> {<br /> while((T1IR&0x02)==0);<br /> <br /> for(i=0;i<2;i++)<br /> {<br /> IO0CLR=BEEPCON;<br /> DelayNS(10);<br /> IO0SET=BEEPCON;<br /> DelayNS(10);<br /> }<br /> T1IR=0x02;<br /> }<br /> <br /> return 0;<br />}<br /><br />/*********************************************************************************************************<br />** End Of File<br />********************************************************************************************************/<br /><br /><br /><br /> |
|