TI中文支持网
TI专业的中文技术问题搜集分享网站

OMAP3530上的中断程序

师傅,您好;我是上次那个问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);
}

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

jia xiaobo:

我用示波器查看了 有来自外界稳定的中断源 方波型中断  通过导线连在GPIO105号线上

BlackSword(三寸丁):

你是在做DSP下面的测试吗?

IRQ_REQUEST是多少呢? 还有绑定的中断号,怎么看怎么不对!

jia xiaobo:

回复 BlackSword(三寸丁):

是在DSP下测试,但是环境不是CCS  是linux 下,忘了条语句:#define GPIO_PIN   (1<<9)  #define IRQ_REQUEST GPIO_PIN    

IRQ_REQUEST就是 是(1<<9)   因为我想105=32*3+9

jia xiaobo:

回复 BlackSword(三寸丁):

是在DSP下测试,但是环境不是CCS  是linux 下,忘了条语句:#define GPIO_PIN   (1<<9)  #define IRQ_REQUEST GPIO_PIN    

IRQ_REQUEST就是 是(1<<9)   因为我想105=32*3+9

jia xiaobo:

回复 jia xiaobo:

绑定的中断号就是7  请问不对在什么地方?

BlackSword(三寸丁):

回复 jia xiaobo:

请问你的中断号7是怎么算出来的?

jia xiaobo:

回复 BlackSword(三寸丁):

我看中断4-7都可以做中断号,我的中断事件是76号 看表,请问这个可以计算么?

BlackSword(三寸丁):

回复 jia xiaobo:

每一个系统上每一个引脚能发生的中断的中断号都是固定的。除非是你自己做的中断映射表。可不可以把你说的表贴出来看一下。

jia xiaobo:

回复 BlackSword(三寸丁):

师傅,我这个没有看中断映射表,我自己也没有做,是中断向量表么?

jia xiaobo:

回复 jia xiaobo:

师傅 这样联系太麻烦,你可以给我扣扣,或者加我扣扣么,方便些。447219661

赞(0)
未经允许不得转载:TI中文支持网 » OMAP3530上的中断程序
分享到: 更多 (0)