请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28379D 工具/软件:Code Composer Studio
我想使用一个接收中断来执行 example_2837xDSCi_Echoback.c。
我尝试了以下设置
InitPieCtrl(); // 禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志: // IER = 0x0000; IFR = 0x0000; // 使用指向 shell 中断 //服务例程(ISR)的指针初始化 PIE 矢量表。 //这将填充整个表,即使在 本示例中未使用__interrupt //也是如此。 这对于调试很有用。 //可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程 InitPieVectTable(); EALLOW; PieVectTable.SCIA_RX_INT =&sciaRxFifoIsr; EDIS; scia_fifo_init(); //初始化 SCI FIFO scia_echoback_init ();//初始化用于 echoback PieCtrlRegs.PIECTRL.bit.ENPIE 的 SCI = 1;//启用 PIE 块 PieCtrlRegs.PIEIER9.bit.INTx1 = 1;// PIE 组9、INT1 PieIER9 = 0x100;// PIE 组9 = 0x2 INIER9;PIE 组= 1 //启用 CPU INT ; void scia_echoback_init () { SciaRegs.SCICCR.all = 0x0007; SciaRegs.SCICTL1.all = 0x0003; SciaRegs.SCICTL2.all = 0x0003; SciaRegs.SCICTL2.bit.TXINTENA=1; SciaRegs.SCICTL2.bit.RXBKINTENA=1; SciaRegs.SCIHBAUD.ALL = 0x0000; SciaRegs.SCILBAUD.ALL = 0x00C2; SciaRegs.SCICTL1.all = 0x0023; } 中断 void sciaRxFifoIsr (void) { uint16 i; i=SciaRegs.SCIRXBUF.all;//读取数据 scia_xmit (i); SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; SciaRegs.SCIRXST.bit.RXRDY=1; PieCtrlRegs.PIEACX.ALL = PIEACK_group9; } void scia_fifo_init() { SciaRegs.SCIFFTX.ALL = 0xE040; SciaRegs.SCIFFRX.ALL = 0x2044; SciaRegs.SCIFFCT.all = 0x0; }
它应该是一个接受 uint16并回波的简单代码。
根据上述设置、当通过 COM 端口发送字符时、不会触发中断子例程本身。