参照别人的代码,自己写了一个SCIA中断接收的程序。但是有输入信号也无法进入中断,代码如下,希望大神帮我看下,谢谢!
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
void scia_init(void);
Uint16 scia_receive(void);
interrupt void scia_rx_isr(void);
Uint16 ReceivedChar;
Uint16 num;
void main(void)
{
InitSysCtrl();
InitSciaGpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
scia_echoback_init();
PieVectTable.SCIRXINTA = &scia_rx_isr;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
IER |= M_INT9;
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
EINT;
ERTM;
for(;;)
{
DELAY_US(1000L);
num++;
}
}
void scia_init()
{
SciaRegs.SCICCR.all =0x0007;
SciaRegs.SCICTL1.all =0x0001;
SciaRegs.SCICTL2.all =0x0002;
SciaRegs.SCICTL2.bit.TXINTENA =0;
SciaRegs.SCICTL2.bit.RXBKINTENA =1; // RX interrupt
#if (CPU_FRQ_150MHZ)
SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
SciaRegs.SCILBAUD =0x00E7;
#endif
#if (CPU_FRQ_100MHZ)
SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.
SciaRegs.SCILBAUD =0x0044;
#endif
}
interrupt void scia_rx_isr(void)
{
ReceivedChar = scia_receive();
PieCtrlRegs.PIEACK.all |= M_INT9;
}
Uint16 scia_receive(void)
{
Uint16 data;
data = SciaRegs.SCIRXBUF.all;
return data;
}
|