This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP3530上的中断程序

Other Parts Discussed in Thread: OMAP3530, SYSCONFIG

师傅,您好;我是上次那个问GPIO配置中断的,我按照您上次提示的写了个配置GPIO来响应中断的例子,在OMAP3530上跑了,但是我发现我的中断处理函数没有被调用,这是怎么回事呢,我的中断调用函数的特征就是看我那个interruptnum  这个变量变化后能被我看到,证明被中断处理函数调用了,但是上板后发现没有调用 程序如下:

global.h文件

#ifndef GLOBAL_H_
#define GLOBAL_H_
#define CONTROL_PADCONF_CAM_D5 0x48002122 //gpio105 低地址 0x48002120
#define GPIO_OE            0x49054034    //GPIO OE寄存器
#define GPIO_IRQENABLE2     0x4905402C //GPIO4 中断使能,隶属于GPIO4
#define GPIO_RISINGDETECT   0x49054048  //中断引脚的中断探测 隶属于GPIO4
#define GPIO_SYSCONFIG      0x49054010       //SYSCONFIG起始重置,belong to GPIO4 。
#define GPIO_LEVELDETECT0   0x49054040 //使用低电平探测 隶属于GPIO4 上升沿触发
#define GPIO_LEVELDETECT1   0x49054044  //使用高电平探测,隶属于GPIO4 下降沿触发

int  interrupt=0

#endif /*GLOBAL_H_*/

 

main 文件

 

#include<std.h>
#include<tistdtypes.h>
#include<hwi.h>
#include<gio.h>
#include "global.h"
#define EVENT_IVA_BANK_4 76//IVA2_IRQ[31]中断对应的事件是76
#define HW_INT_BANK4 7 //使用的硬中断,中断向量是7号

#define LEVELDETECT0     0x00000001  //低电平检测,上升沿有效
#define LEVELDETECT1     0x00000000


#define MUX_MODE_4   (1<<2)   //设置模式为4
#define INPUT_ENABLE (1<<8)   // 查看笔记本焊版配置关键字
#define PULL_UP      (3<<3)   // 设置上拉电位

#define SOFTRESET    0x00000002  // 为sysconfig设置为SOFTRESET


interrupt  void hwi7_isr(void)
{

   interruptnum++;
    interruptnum++;
   
}

void main(void)
{
 
 *( volatile unsigned int* ) GPIO_SYSCONFIG=SOFTRESET;
 *( volatile unsigned int* ) CONTROL_PADCONF_CAM_D5=(MUX_MODE_4|INPUT_ENABLE|PULL_UP);
 *( volatile unsigned int* ) GPIO_OE=IRQ_REQUEST;
 *( volatile unsigned int* ) GPIO_RISINGDETECT=IRQ_REQUEST;//SCHEDULE_REQUEST|COLLECTION_DONE ;
 *( volatile unsigned int* ) GPIO_IRQENABLE2=IRQ_REQUEST ;
 *( volatile unsigned int* ) GPIO_LEVELDETECT0=IRQ_REQUEST;
    
 HWI_enable();
 HWI_enableWugen(EVENT_IVA_BANK_4); //GPIO1_IVA2_IRQ **IVA2_IRQ[31]
 HWI_eventMap(HW_INT_BANK4,EVENT_IVA_BANK_4);
 HWI_dispatchPlug(HW_INT_BANK4,(Fxn)&hwi7_isr,-1,NULL);
}

我能够保证所有的寄存器地址没有问题,麻烦高人指点下还有哪里存在问题?没办法,焦急啊。