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

C6657的GPIO中断服务函数进不去

专家您好,
我在写一个GPIO中断的驱动,设置GPIO 15 引脚为中断引脚,方向为输出,然后软件触发中断,可以读到CSL_GPIO_getInterruptStatus (hGpio, pinNum15)不为0(说明产生了中断),但进不了中断服务函数。
我怀疑是我的中断mapping有问题,请专家帮我看下我的map代码哪里出了故障?主要是下面有注释的几行代码的变量赋值不知是否匹配:
/***************************************
** 设置GPIO 15 引脚为中断引脚, 代码略
***************************************/

extern void GPIO_ISR();
CSL_IntcContext intcContext;
CSL_IntcEventHandlerRecord EventHandler[10];
CSL_IntcObj     intcObjMsi;
CSL_IntcHandle  hMsiTest;
CSL_Status        intStat;
CSL_IntcGlobalEnableState state;
CSL_IntcEventHandlerRecord  EventRecord;

void CPINTC_config()
{
    int CICn = 1;   // CIC1
    int eventID = 7;// //查C6657手册表7-35得知 GPINT15
    int channel = 9;// 通道我随便选了一个
    
    CSL_CPINTC_Handle hnd = 0;
    
    hnd = CSL_CPINTC_open(CICn);
    if (hnd == 0) {
        return;
    }
    
    CSL_CPINTC_disableAllHostInterrupt(hnd);
    CSL_CPINTC_mapSystemIntrToChannel (hnd, eventID , channel);
    CSL_CPINTC_clearSysInterrupt (hnd, eventID);
    CSL_CPINTC_enableSysInterrupt (hnd, eventID);
    CSL_CPINTC_enableHostInterrupt (hnd, channel);
    CSL_CPINTC_enableAllHostInterrupt(hnd);
    
}
void intc_config()
{
    int vectIdMsi = CSL_INTC_VECTID_4;// 4~15任选一个
    int event = 89;//查C6657手册表7-33得知 GPINT15
    
    intcContext.eventhandlerRecord = EventHandler;
    intcContext.numEvtEntries      = 10;
    
    CSL_intcInit(&intcContext);
    CSL_intcGlobalNmiEnable();
    CSL_intcGlobalEnable(&state);
    hMsiTest = CSL_intcOpen (&intcObjMsi, event, &vectIdMsi, &intStat);

    EventRecord.handler = &GPIO_ISR;
    EventRecord.arg = (void*)hMsiTest;
    CSL_intcPlugEventHandler(hMsiTest,&EventRecord);

    CSL_intcHwControl(hMsiTest,CSL_INTC_CMD_EVTENABLE, NULL);
}

Peishu Yan:

你好 请问您的参考例程是哪个呢?方便提供一下吗,您的这些库函数是从哪里获取的呢??希望能得到您的回复!

赞(0)
未经允许不得转载:TI中文支持网 » C6657的GPIO中断服务函数进不去
分享到: 更多 (0)