我用的是C6455,属于C64x+,首先初始化中断配置,进入中断后,TSR寄存器里的值能复制到ITSR寄存器里,但是中断结束出来后,ITSR的值没有自动复制给TSR,导致TSR的GIE还是为0,也就使CSR的GIE仍为0,跳出中断后没有自动使能,请问这是为什么,是什么原因导致这样?应该是出来后自动使能的,谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用的是C6455,属于C64x+,首先初始化中断配置,进入中断后,TSR寄存器里的值能复制到ITSR寄存器里,但是中断结束出来后,ITSR的值没有自动复制给TSR,导致TSR的GIE还是为0,也就使CSR的GIE仍为0,跳出中断后没有自动使能,请问这是为什么,是什么原因导致这样?应该是出来后自动使能的,谢谢
void Hwi_Fpga_Sig()
{
doorbellinf = *(Uint32 *)DOORBELL0_ICSR;
CSL_intcEventClear(gsIntcHdlFpgaSig->eventId);
Unit16 *sss = (Unit16 *)DOORBELL0_ICCR;
*sss |= 0xFFFF;
*(Uint16 *)INTDST4_RATE_CNTL = 0;
fpgaSigIsrCnt++;
SEM_post(&sem0);
}
我把初始化的函数也贴出来吧
void f_IntcInit()
{
CSL_Status liStatus;
CSL_IntcParam leVectId;
gsIntcContext.eventhandlerRecord = gsRecord;
gsIntcContext.numEvtEntries = 128;
CSL_intcInit(&gsIntcContext);
CSL_intcGlobalNmiEnable();
CSL_intcGlobalEnable();
leVectId = CSL_INTC_VECTID_7;
gsIntcHdlFpgaSig = CSL_intcOpen(&gsIntcObjFpgaSig,CSL_INTC_EVENTID__RIOINT4,&leVectId, NULL);
lsEventRecord.handler = &Hwi_Fpga_Sig;
lsEventRecord.arg = gsIntcHdlFpgaSig;
CSL_intcPlugEventHandler(gsIntcHdlFpgaSig,&lsEventRecord);
CSL_intcHwControl(gsIntcHdlFpgaSig,CSL_INTC_CMD_EVTENABLE,NULL);
}