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.
在示例 C:\ti\c2000Ware_1_00_06_00\device_support\f28066\examples\c28\external_interrupt 中
在某个部分中、它们"使用中断4和5将 XINT1和 XINT2连接到组1"。 由于有96个可用的中断源、我知道这些中断源应该被多路复用为12个可用的 CPU 中断。
每个 CPU 中断都是一个由八个中断组成的"组"。 但是 XINT1和 XINT2如何连接到组1 INT4和 INT5 (它们刚刚被启用)? 为什么 XINT1和 XINT PieVectTables 直接连接到中断函数?
我无法使用相应的代码完全跟踪该案例? 示例中似乎缺少了一些代码、因此真正有意义?提前感谢您。
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的 PieVectTable.XINT1 =&XINT1_ISR; PieVectTable.XINT2 =&XINT2_ISR; EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的
// //在 PIE 中启用 XINT1和 XINT2:组1中断4和5 //启用连接到 WAKEINT 的 INT1 // PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //启用 PIE 块 PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //启用 PIE 组1 int4 PieCtrlRegs.PIEIER1.bit.INTx5 = 1; //启用 PIE 组1 INT5 IER |= M_INT1; //启用 CPU INT1 EINT;
我认为您已正确理解、代码正确。
在 C28x 上、中断源硬连线到特定的 PIE 中断。 对于 F2806x、来自 XINT1和 XINT2的中断分别出现在 PIE 组1上;INT1.4和 INT1.5上。 这些行启用 PIE 级别的中断:
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
PieCtrlRegs.PIEIER1.bit.INTx5 = 1;
...然后此行启用内核级中断:
IER |= M_INT1;
这将启用全局中断屏蔽:
EINT;
当内核产生中断时、PC 分支到 RAM 中 PIE 矢量表中包含的地址。 这个表被载入"PieVectTable"结构中的地址;并且这两个中断的 ISR 地址被载入以下行中:
PieVectTable.XINT1 =&XINT1_ISR;
PieVectTable.XINT2 =&XINT2_ISR;
该结构位于文件 F2806x_PieVect.h 中、并在器件配置期间加载默认地址。 以上两行将覆盖用户 ISR 的默认地址。
您只需在该器件上配置 XINT 中断即可。 随附的幻灯片摘自 F2806x 多日技术讲座、可能会有所帮助。
此致、
Richard