打印
[ZLG-ARM]

用Easyarm2200开发板上pack测频,程序如下:

[复制链接]
1211|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leon0001|  楼主 | 2007-10-18 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用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
********************************************************************************************************/



相关帖子

沙发
leon0001|  楼主 | 2007-10-18 11:09 | 只看该作者

T1MCR=0x18

呵呵,写错啦
又试了一下,是采用的查询方式,蜂鸣器可以响,不过好像是定时而不是计数
晕。
EasyArm2200开发板上面的cpu是LPC2220,它是可以对外部频率进行计数的,
周工呢,出来一下啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

139

帖子

0

粉丝