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.

F28377D IPC如何产生中断

Other Parts Discussed in Thread: CONTROLSUITE

在cpu2配置ipc0-3中断后,在cpu1设置IpcRegs.IPCSET.bit.IPC0 = 1;后,为什么cpu2上相应的PIE中断标志并未被置位?IPC中的4个中断是如何产生的?

cpu2上中断配置如下:

DINT;

InitPieCtrl();

IER = 0x0000;
IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt Service Routines (ISR).
InitPieVectTable();

EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.IPC0_INT = &IPC0_ISR;
PieVectTable.IPC1_INT = &IPC1_ISR;
PieVectTable.IPC2_INT = &IPC2_ISR;
PieVectTable.IPC3_INT = &IPC3_ISR;
EDIS; // This is needed to disable write to EALLOW protected registers

IER |= M_INT1;

PieCtrlRegs.PIEIER1.bit.INTx13 = 1;
PieCtrlRegs.PIEIER1.bit.INTx14 = 1;
PieCtrlRegs.PIEIER1.bit.INTx15 = 1;
PieCtrlRegs.PIEIER1.bit.INTx16 = 1;

InitIpc();

EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM

  • 参考一下这个例程:

    C:\ti\controlSUITE\device_support\f28m35x\v208\F28M35x_examples_Dual\ctom_ipcdrivers

    初始化IPC后,在置为IPC后,你先查看一下CPU1上的IPC标志位有没置1.

    IER |= M_INT1;  这里应该错了。是M_INT11.

    ERIC

  • 在置位IPC相应位后,对应的标志位也被置位,同时另一个cpu状态为也被置位,

    唯独PIE中的中断标志位没有被置位,在PIE寄存器中对应的PIEIER位已经使能,为何在IPC置位后,另一个cpu的PIE模块的中断标志位没有置位,

    按理说只要是cpu1中IPC0-3位在IPCSET设置后,cpu2PIE模块中的中断标志应该被置位。

    ipc中断在中断表中的第一组,我把IER |= M_INT1改为IER |=0xffff后仍没有变化,请指点一二。

  • 你好,

             TI官方并没有给28377D  IPC中断的例子,哪里可以找到,谢谢!

  • 您好,我遇上了同样的问题,cpu2 给 cpu1 发ipc0 事件,可以触发cpu1的里中断,而cpu1给cpu2发ipc事件,cpu2 没有响应,我和你配置的一样,请问后来解决了吗?