Other Parts Discussed in Thread:SYSBIOS
大家好 我sysbios下gpio中断进不了中断服务
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(¶ms);
params.eventId = eventId;
params.arg = 6;
params.enableInt = TRUE;
Hwi_create(6, &CpIntc_dispatch, ¶ms, &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是新器件
只不过资料没更新
TI中文支持网

