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

sysbios下gpio中断进不了中断服务

Other Parts Discussed in Thread:SYSBIOS

 大家好 我sysbios下gpio中断进不了中断服务

gpio初始化如下:

HWREG(SOC_DSC_BASE_REGS + SOC_DSC_KICK0) = 0x83e70b13;
HWREG(SOC_DSC_BASE_REGS + SOC_DSC_KICK1) = 0x95a4f1e0;
 
//19脚做GPIO
GPIOPinMuxSet(SOC_DSC_BASE_REGS + SOC_DSC_PIN_CONTROL_0, GPIO19_TIMO1,    GPIO_NORMAL_ENABLED);
 
HWREG(SOC_DSC_BASE_REGS + SOC_DSC_KICK0) =0x00000001;
HWREG(SOC_DSC_BASE_REGS + SOC_DSC_KICK1) =0x00000001;
 
//GPIO19设为输入 
GPIODirModeSet(SOC_GPIO_0_REGS, GPIO19_TIMO1,    GPIO_DIR_INPUT);
//下降沿触发
GPIOIntTypeSet(SOC_GPIO_0_REGS, GPIO19_TIMO1,    GPIO_INT_TYPE_FALLEDGE);
//使能 GPIO中断
GPIOBankIntEnable(SOC_GPIO_0_REGS); 
 
GPIO中断映射如下:

Void GPIOIntRegister(UArg a0, UArg a1)
{
 Int eventId;
 Hwi_Params params;

 Error_Block eb;
 Error_init(&eb);

//GPIO中断
CpIntc_mapSysIntToHostInt(0, 3, 6);                //3是GPINT19对应的CIC0 INPUT EVENT 6是CIC0_OUT
CpIntc_dispatchPlug(3, &GPIOISR, 3, TRUE);
CpIntc_enableHostInt(0, 6);
eventId = CpIntc_getEventId(6);
Hwi_Params_init(&params);
params.eventId = eventId;
params.arg = 6;
params.enableInt = TRUE;
Hwi_create(6, &CpIntc_dispatch, &params, &eb);//这里的6是Core0系统interrupt 6 
Hwi_enable();
}

这个映射关系应该不会有错 因为用这种方法调试过uart mcbsp都是没问题的  

uart mcbsp gpio的中断都是需要通过CIC0映射到系统的

并且用裸机程序测过 gpio中断可以进入中断服务 说明硬件没有问题

 

应该是程序那块还有问题???

https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/p/131536/621936#621936

遇到的和我的问题是一样的!

谢谢大家了!
 

Shine:

请问使用的也是C6657? 先检查一下中断标志位有没有置1,总中断使能位有没有置1?

,

skysteed:

你好  用的是6657 问题解决了 可能是器件有bug 或者GPIO的资料有问题 gpio的中断使能要求如下:

实际上 在STK_C6657裸机程序里 使能如下:

/*enable interrupt*/ gpGPIO_regs->BINTEN= 0x3;

在sysbios里 GPIOBankIntEnable(SOC_GPIO_0_REGS);设置后寄存器的值是0x1 所以老是进不了中断

,

skysteed:

你好  用的是6657 问题解决了 可能是器件有bug 或者GPIO的资料有问题 gpio的中断使能要求如下:

实际上 在STK_C6657裸机程序里 使能如下:

/*enable interrupt*/gpGPIO_regs->BINTEN= 0x3;

在sysbios里 GPIOBankIntEnable(SOC_GPIO_0_REGS);设置后寄存器的值是0x1 所以老是进不了中断

,

Shine:

感谢分享,裸机配置没问题的话,可能是bios GPIO驱动里的bug。

,

skysteed:

你好 不是bios GPIO驱动有bug
是PDF资料有bug pdf说是使能最低位 实际需要使能最低两位

,

Shine:

请问是哪个pdf资料?

,

skysteed:

General-Purpose Input_Output (GPIO) forKeyStone Devices User's Guide

,

Shine:

查看了一下,确实是user guide的bug。
user guide上的BITEN寄存器的定义需要更新。bit0用来使能GPIO15:0, bit1用来使能GPIO31:16。

,

skysteed:

我猜测也是这样

0-15是老器件

16-31是新器件

只不过资料没更新

赞(0)
未经允许不得转载:TI中文支持网 » sysbios下gpio中断进不了中断服务
分享到: 更多 (0)