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

关于GPIO0设置为中断的问题

平台:C6678

板子:公司自己的板子

问题:

硬件工程师说,他们将GPIO0的电压拉低后,应该C6678就要收到中断。

软件这边进行这样的设置:

1.设置GPIO的中断使能位为1,代码为*(UInt*)(0x2320008)= 0x1;

2.创建HWI,代码为:

/* 初始化硬件中断参数 */
Hwi_Params_init(&hwiParams);
hwiParams.eventId = DDSP_SEM_INTC_EVENT_ID;
hwiParams.maskSetting = Hwi_MaskingOption_SELF;

/* 创建硬件中断 */

hwiParams.eventId = 4;
hwiHandle = Hwi_create(4,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 5;
hwiHandle = Hwi_create(5,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 6;
hwiHandle = Hwi_create(6,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 7;
hwiHandle = Hwi_create(7,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 8;
hwiHandle = Hwi_create(8,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 9;
hwiHandle = Hwi_create(9,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 11;
hwiHandle = Hwi_create(11,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 12;
hwiHandle = Hwi_create(12,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 13;
hwiHandle = Hwi_create(13,hostIsrHandler,&hwiParams,NULL);
hwiParams.eventId = 15;
hwiHandle = Hwi_create(15,hostIsrHandler,&hwiParams,NULL);

在hostIsrHandler中添加打印,并有断点,hostIsrHandler没有被调用。

请问,还有什么没有完成初始化嘛?为什么中断没有进来?谢谢,在出差很急坐等。谢谢。

yu mo:

回复 King Wang1:

关于第1项,我先前是没有使能的,因为不知道。更具你说的,我调用了下列接口。

/*初始化GPIO*/ gpioInit();

/*设置GPIO0为输入模式*/ gpioSetDirection(0,GPIO_IN);

/*设置GPIO0为下降沿触发中的*/ gpioSetFallingEdgeInterrupt(0);

/*使能GPIO全局中的*/ gpioEnableGlobalInterrupt();

上述接口在evml6678的板级支持包中有。

关于第2项。硬件接的是0号GPIO,查看手册对应的事件号应该为0,然后我把0号事件创建在4号中断上面:

/* 初始化硬件中断参数 */ Hwi_Params_init(&hwiParams);

/* 创建硬件中断 */ hwiParams.eventId = 0; hwiHandle = Hwi_create(4,myhandle,&hwiParams,NULL);

myhandle为:

void myhandle(){ *(int*)(0x80800000) =i; i++;}

在初始化完成后,会进入一次此中断处理函数,据硬件工程师说,GPIO0的上电输入为低电压,所以会产生一次中断。

后面GPIO0的输入电压被拉高,然后被拉低,此时应该产生中断,但是中断处理函数没有执行。

请问,软件这边还有什么初始化没有做吗?

yu mo:

回复 King Wang1:

你好,问题已经解决,谢谢您的回复。

原来是我再中断处理中没有清理掉FGPA中中断控制的状态位。

user4491961:

回复 yu mo:

Dear sir:

我现在这边也使用了c6678的芯片,也是通过FPGA实现看门狗功能,当看门狗超时的时候,会发送一个中断信号给DSP,低电平触发中断,fpga和DSP之间是通过GPIO15进行连接,是DSP的GPIO15,现在遇到的问题是,当看门狗超时的时候,有中断过来,会导致DSP死掉,不清楚是什么原因导致DSP死掉,您能把您的关于GPIO的中断的代码发给我看一下吗?现在中断处理函数一直没有运行,挂中断一直挂不上,非常着急,能否帮小弟一个忙呢,不胜感激。

赞(0)
未经允许不得转载:TI中文支持网 » 关于GPIO0设置为中断的问题
分享到: 更多 (0)