维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
 
IC供应
IC求购
非IC供应
非IC求购
电子资讯
技术资料
商人论坛
 
技术文章 PDF资料 IC价格 引脚说明 电路图 IC替换 IC厂商 电子辞典
作者 主题 内容
采购元器件好去处--维库电子市场网推荐
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

请教关于外部中断边沿触发的问题

来源:21ic 作者:paul_cao 栏目:ARM技术
请教关于外部中断边沿触发的问题
我用外部中断做计数器,用的是LPC2210,为什么用电平触发可以,但用下降沿触发不可以,请帮忙看看,谢谢了!
程序如下:
#define IN_EINT3
#include "config.h"

static OS_EVENT *EINT3Sem;
static uint16 Pulse_Number;

      uint8 EINT3Init(void)
{
    
    PINSEL1 = (PINSEL1 & 0xfffffcff) | 0x00000300;    /* 选择管脚为EINT3 */
    
        
    //EXTMODE = EXTMODE|0x08;                            /*EINT3中断使用边沿触发 */
    //EXTPOLAR = EXTPOLAR&0x07;                        /*EINT3中断使用下边沿触发 */

    EXTINT = 0x08;
    
        
    T1TC = 0;            //定时器1设置为0
    T1PR = 0;            //定时器1不分频


    EINT3Sem = OSSemCreate(0);
    if (EINT3Sem != NULL)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }

}


      uint32 EINT3_Getfreq(uint16 Data)
{
    uint32 time;
    uint8 err;

    Pulse_Number = Data;
    T1TCR = 0x03;                    //复位定时器1

    VICIntEnable = 1<<17;            //使能EINT3中断

    OSSemPend(EINT3Sem,0,&err);    //等待闸门时间结束

    VICIntEnClr = 1<<17;                //禁能EINT3中断

    time = T1TC;                    //读取定时器1

    return time;


}

        void EINT3_Exception(void)
{
   
    OS_ENTER_CRITICAL();

    T1TCR = 0x01;               //启动定时器1

    if(Pulse_Number==0)
    {
        T1TCR = 0x00;                //定时器1停止计数
        OSSemPost(EINT3Sem);
        VICIntEnClr = 1<<17;                //禁能EINT3中断

    }
    Pulse_Number--;
    
    while((EXTINT&0x08)!=0)
    EXTINT = 0x08;                //清除INT3中断标志位
    
    VICVectAddr = 0;            // 通知中断控制器中断结束
    OS_EXIT_CRITICAL();
}


1楼: >>参与讨论
pubstar
看一下勘误表吧,EXTMODE能引起系统挂起,上菲利普网站看看
 
2楼: >>参与讨论
paul_cao
谢谢pubstar
我看了一下勘误表,但我的VPBDIV = 0,应该不是这个问题;今天再调试了一下,发现了一个问题,去掉OS_ENTER_CRITICAL();和OS_EXIT_CRITICAL();后就可以了,不过计数精度和理论值差一个数量级


参与讨论
昵称:
讨论内容:
 
 
相关帖子
IODIR自己怎么变了?
自己做的2104的板子,p0.14_p44不管是否接地都可下载flash
求教一个中断优先级的问题
程序在__main中跳到数据中止,是我的程序错了吗?
问,不用remap,为什么上电后reset也能从0x40000000开始跑?


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号