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