这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » LPC2210,IO LPC2210的捕获计数IO口要接什么上拉电阻之类的外围吗

共2条 1/1 1 跳转至

LPC2210,IO LPC2210的捕获计数IO口要接什么上拉电阻之类的外围吗?

院士
2006-09-17 18:14:16     打赏
LPC2210,IO LPC2210的捕获计数IO口要接什么上拉电阻之类的外围吗?



关键词: LPC2210     捕获     计数     什么     电阻     之类     外围    

院士
2006-12-22 22:43:00     打赏
2楼
问 小弟初学ARM,这几天要用LPC的P0.27口的定时器捕获来计数外部脉冲,可是总是不能进入中断服务程序。
我用信号发生器产生方波后接P0.27,今天用示波器看P0.27口的输入,发现总是低电平,也就是说根本就没有脉冲输入了。下午接了一个上拉电阻还是没用。所以想请教各位达人这个LPC芯片的输入和51单片机的输入还不一样吗?
用51计数没见过这种问题啊。
我这两天把lpc2210的资料翻烂了也没见着有详细说明的,还望知道的网友交流一下:) 1: 如果你确认你的信号发生器有输出的话,那么就是IO没配置好了 2: 我的程序,IO配置要做什么修改吗?下面是我的程序,哪里有问题吗?

/********************************************************************
* 名称:IRQ_Timer0(void)
* 功能:定时器0中断服务程序
* 入口参数:
* 出口参数:无
********************************************************************/
void  __irq IRQ_Timer0(void)     
{
    T0IR = 0x20;
    T0TC=0;

    counter++;
    VICVectAddr  = 0x00000000;               
}
        
/********************************************************************
* 名称:Timer0_Init()
* 功能:定时器0初始化
* 入口参数:
* 出口参数:无
********************************************************************/
void Timer0_Init (void)
{
    //捕获通道设置
    PINSEL1 = PINSEL1 | 0x00800000;           //设P0.27为CAP0.1

    T0CCR = T0CCR | 0x0030;    //设置cap0.1为下降沿捕获/引发中断

    T0PR  = 99;                           
    
/* 设置定时器0中断IRQ */
    VICIntSelect = 0x00;    // 所有中断通道设置为IRQ中断
    VICVectCntl0 = 0x24;    // 定时器0中断通道分配优先级0
    VICVectAddr0 = (uint32)IRQ_Timer0; // 设置中断服务程序地址向量
    VICIntEnable = 0x00000010;    // 使能定时器0中断
}
/*******************************************************************
* 名称:main()
* 功能:主程序
********************************************************************/
int  main(void)
{  
    Timer0_Init();        
    T0TCR=0x01;     //启动定时器0

    while(1);
    return(0);
} 3: 定时器初始化改一下试试:    //捕获通道设置
    PINSEL1 = PINSEL1 | 0x00800000;           //设P0.27为CAP0.1  
    PINSEL1 &= (~0x00400000);   //增加这句 4: 添加中断句柄   在IRQ文件中添加,Timer0的中断句柄
   再查看startup文件中总中断允许开了没有 5: 谢谢圈圈,解决了加了那句后就好了
有点明白了,我原来的设置有bug
不过(~0x00400000)的用法是有其他意思,还是个人习惯呢?用0xffbfffff一样吧 6: 一样。个人习惯而已。计算0xFFBFFFFF有点麻烦写成~0x00400000更快。

另外有个稍微不一样的地方在于,~0,表示的意思却可能不一样。

例如8位的时候,它是0xFF,而16位时,就变成了0xFFFF了。如果直接写0xFF,那么它始终是这个。
所以在不同的MCU之间移植时,用~可能会省掉一些事。看具体场合了。 7: 是个好习惯,学习了:)谢谢圈圈指点。
看似简单的东西也是有深意滴
最近我做的程序要求可移植性好,看来可以用上啦,哈哈

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]