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.

[参考译文] TMS320F28379D:启用 IPC 中断

Guru**** 2350610 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/595186/tms320f28379d-ipc-interupt-enabling

器件型号:TMS320F28379D

大家好、我在从 IPC0生成中断时遇到问题。 我的其他中断工作正常、因此我对这个问题有一点不确定。 我还参考了控制套件中的示例、但未能看到我的错误所在。

我在 CPU1中设置 IPC0,在 CPU2中,我可以看到它通过以下方式进行设置:

'IpcRegs.IPCSTS.bit.IPC0'设置为1、使该端正常工作。

这是来自 CPU2的一些代码。

_interrupt void IPC0_ISR (void);

//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
//
Dint;

//
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//此函数位于 F2837xD_PIECTRL.c 文件中。
//
InitPieCtrl();

//
//禁用 CPU 中断并清除所有 CPU 中断标志:
//
IER = 0x0000;
IFR = 0x0000;

//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。 这对于调试很有用。
//可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xD_PieVect.c 中找到
//
InitPieVectTable();

//
//注册 EPWM1的 EPWM 中断处理程序
//
EALLOW;
PieVectTable.ADCD1_INT =&epwm1_ISR;// ADCC 中断1的函数
PieVectTable.IPC0_INT =&IPC0_ISR;// ADCC 中断1的函数
EDIS;

//
//启用连接到 IPC0 INT 的 CPU INT1:
//
IER |= M_INT1;

//
//在 PIE 中启用 ePWM INTn:组1中断6
//
PieCtrlRegs.PIEIER1.bit.INTx6=1;
PieCtrlRegs.PIEIER1.bit.INTx13=1;
//
//启用全局中断和更高优先级的实时调试事件:
//
EINT;//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找到了答案:诀窍是设置一个握手、正如上一个问题中解释的那样、这几乎是相同的

    e2e.ti.com/.../449916
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供了一个链接、指向您为问题找到的答案。 我将认为该线程已关闭。

    肖恩