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.
在串口使用时,不通过中断接收和发送信息使用了下面的例程可以实现信息的发送与接收,通过串口调试助手收到,但是使用了中断以后,程序不执行。把源程序加在附件中了!
TMS320f2812�Ĵ����жϵ����� �ڴ���ʹ��ʱ����ͨ���жϽ��պͷ�����Ϣʹ������������̿���ʵ����Ϣ�ķ�������գ�ͨ�����ڵ��������յ�������ʹ�����ж��Ժ���ִ�С� �ҵĸ��˷������ڳ����м��˱�־λ��ʹ�ò��ִ����жϳ���û��ִ�У�����ֻ��ʹ�÷�ʱ�շ��� ����Ϊ�����ж�ִ�еij��� Send_Flag = 0; #if SCIA_INT /*�����жϷ��������ڵ�ַ*/ EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.TXAINT = &SCITXINTA_ISR; PieVectTable.RXAINT = &SCIRXINTA_ISR; EDIS; // This is needed to disable write to EALLOW protected registers /*���ж�*/ IER |= M_INT9; #endif EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM for(;;) { if((SciaTx_Ready() == 1) && (Send_Flag == 1)) { SciaRegs.SCITXBUF = Sci_VarRx; Send_Flag = 0; i++; if(i == j) { i = 0; j = 0; } } #if !SCIA_INT if(SciaRx_Ready() == 1) { Sci_VarRx[j] = SciaRegs.SCIRXBUF.all; Send_Flag = 1; j++; if(j == 100) { j = 0; } } #endif } ʹ�ô����жϳ������£� �ҽ���־λɾ����ִ�иij���, #include "DSP28_Device.h" unsigned int Sci_VarRx[100]; unsigned int i,j; unsigned int Send_Flag; unsigned int * Led8 = (unsigned int *) 0x4100; //#define SCIA_INT 1 interrupt void SCITXINTA_ISR1(void); interrupt void SCIRXINTA_ISR1(void); void main(void) { /*��ʼ��ϵͳ*/ InitSysCtrl(); /*���ж�*/ DINT; IER = 0x0000; IFR = 0x0000; /*��ʼ��PIE�ж�*/ InitPieCtrl(); /*��ʼ��PIE�ж�ʸ����*/ InitPieVectTable(); /*��ʼ��SCIA�Ĵ���*/ InitSci(); for(i = 0; i < 100; i++) { Sci_VarRx = 0; } i = 0; j = 0; Send_Flag = 0; #if SCIA_INT /*�����жϷ��������ڵ�ַ*/ EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.TXAINT = &SCITXINTA_ISR1; PieVectTable.RXAINT = &SCIRXINTA_ISR1; EDIS; // This is needed to disable write to EALLOW protected registers /*���ж�*/ IER |= M_INT9; #endif EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM for(;;) { if(1 && (Send_Flag == 1)) { SciaRegs.SCITXBUF = Sci_VarRx[0]; while(SciaRegs.SCICTL2.bit.TXRDY!=1); Send_Flag = 0; i++; if(i == j) { i = 0; j = 0; } } #if !SCIA_INT if(SciaRx_Ready() == 1) { Sci_VarRx[j] = SciaRegs.SCIRXBUF.all; Send_Flag = 1; j++; if(j == 100) { j = 0; } } #endif } } interrupt void SCITXINTA_ISR1(void) { } interrupt void SCIRXINTA_ISR1(void) { DINT; PieCtrl.PIEACK.bit.ACK9=1; Sci_VarRx[0] = SciaRegs.SCIRXBUF.all; Send_Flag = 1; j++; // if(j == 100) // { // j = 0; // } *Led8=j; SciaRegs.SCICTL1.bit.SWRESET =1; PieCtrl.PIEIFR9.bit.INTx1=1; EINT; } ������Ȼ������ȷ�����dz���û��ִ�У���������ʲôԭ��