关于中断问题!

ivanband   2010-4-25 00:00 楼主
开发板 2410 做触摸屏启动
想问下,在vxworks中。怎么样帮外部中断源和中断服务程序连接起来!我知道的是inconnect函数帮中断向量和中断服务程序可以连接起来!中断号和中断向量可以通过宏定义INUM_TO_INT_VEC转换!现在问题就是,我怎么样才能帮中断源(外部硬件产生的中断)和中断号一一对应起来~这个实现应该在哪里实现?
在BSP中看到一连串的宏定义(0~31都有定义)
#define INT_LVL_EINT_0                0
#define INT_LVL_EINT_1                1
#define INT_LVL_EINT_2                2
#define INT_LVL_EINT_3                3
#define INT_LVL_EINT_4_7        4
#define INT_LVL_EINT_8_23        5
/* Reserved 6 */
#define INT_LVL_nBATT_FLT        7
#define INT_LVL_TICK                8
#define INT_LVL_WDT                9
。。。。。。。
#define INT_LVL_RTC                30
#define INT_LVL_ADC                31

#define SUBINT_LVL_RXD0                0
#define SUBINT_LVL_TXD0                1
#define SUBINT_LVL_ERR0                2
#define SUBINT_LVL_RXD1                3
#define SUBINT_LVL_TXD1                4
#define SUBINT_LVL_ERR1                5
#define SUBINT_LVL_RXD2                6
#define SUBINT_LVL_TXD2                7
#define SUBINT_LVL_ERR2                8
#define SUBINT_LVL_TC                9
#define SUBINT_LVL_ADC                10

/* interrupt vectors */

#define INT_VEC_EINT_0                IVEC_TO_INUM(INT_LVL_EINT_0)
#define INT_VEC_EINT_1                IVEC_TO_INUM(INT_LVL_EINT_1)
#define INT_VEC_EINT_2                IVEC_TO_INUM(INT_LVL_EINT_2)

。。。。
#define INT_VEC_ADC                IVEC_TO_INUM(INT_LVL_ADC)
等这个就是帮中断INT_ADC和31中断源连接起来么?但是如果是这样的话,那么子中断我看定义成#define SUBINT_LVL_TC 定义成9 明显和前面定义的冲突了!所以在给子中断的时候不知道该怎么给。这个问题困扰了我3个星期了。感觉寄存器的配置是没有问题的,可是现在中断一给 打印出一个i出来,然后就死了中断服务程序中的logmsg美打印出来,
但是中断Eenable和intconnect好像都没有错误。估计可能是connect错误了!还有那个中断向量那里。怎么是IVEC_TO_INUM呢?感觉应该是INUM_TO_IVEC啊!太多不明白了。望高手指点一下~
可能对硬件了解不够,望大家帮个忙。先行谢过!

回复评论 (3)

mark
点赞  2010-4-25 14:35
让硬件工程师确定一下触摸屏的中断。
或者自己查一下电路图
点赞  2010-4-28 20:30
在vxWorks中,硬件中断源对应的中断号(IRQ0~IRQ7)为32+irq,比如使用irq5,挂中断时代码为:
intConnect(INUM_TO_IVEC(37),...);
点赞  2010-5-7 15:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复