MapleSugar 发表于 2017-11-23 11:47

急!!DSP的SCI进不去中断

本帖最后由 MapleSugar 于 2017-11-23 14:23 编辑

RXBUF中有数据,但是进不去中断,怎么办?求助各位大神



#include "DSP28x_Project.h"   // Device Headerfile and Examples Include File

// Prototype statements for functions found within this file.
void scib_loopback_init(void);
void scib_fifo_init(void);
void scib_xmit(int a);
void configGPIO(void);
__interrupt void SCIRXINTb_ISR(void);
__interrupt void cpu_timer0_isr(void);
// Global counts used in this example
Uint16 LoopCount=0;
Uint16 ErrorCount;
Uint16 sci_count;
Uint16 ReceiveChar;
Uint16 Char;
unsigned char Navdata;

void main(void)
{

      InitSysCtrl();
      configGPIO();
      DINT;
      InitPieCtrl();
      IER = 0x0000;
      IFR = 0x0000;
      InitPieVectTable();

    EALLOW;
    PieVectTable.TINT0 = &cpu_timer0_isr;
    PieVectTable.SCIRXINTB= &SCIRXINTb_ISR;
    EDIS;

    InitScibGpio();
    scib_fifo_init();         // Initialize the SCI FIFO
    scib_loopback_init();// Initalize SCI for digital loop back

    InitCpuTimers();
    ConfigCpuTimer(&CpuTimer0,90,1000000);

    CpuTimer0Regs.TCR.all = 0x4000;

    IER = 0x101;// Enable CPU INT
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
    PieCtrlRegs.PIEIER9.bit.INTx3 = 1;   // PIE Group 9, INT3   Receive Navigation information

    EINT;   // Enable Global interrupt INTM
    ERTM;   // Enable Global realtime interrupt DBGM
   
      for(;;)
    {
         

    }

}

void scib_loopback_init()
{
         ScibRegs.SCICCR.all =0x0007;   // 1 stop bit,No loopback
                                 // No parity,8 char bits,
                                 // async mode, idle-line protocol
      ScibRegs.SCICTL1.all =0x0003;// enable TX, RX, internal SCICLK,
                                 // Disable RX ERR, SLEEP, TXWAKE
      ScibRegs.SCICTL2.all =0x0003;
      ScibRegs.SCICTL2.bit.TXINTENA =1;
      ScibRegs.SCICTL2.bit.RXBKINTENA =1;
    ScibRegs.SCIHBAUD    =64>>8;
    ScibRegs.SCILBAUD    =64 & 0x00FF;//38400波特率

      ScibRegs.SCICCR.bit.LOOPBKENA =0; // Enable loop back
      ScibRegs.SCICTL1.all =0x0023;   // Relinquish SCI from Reset
}


void scib_xmit(int a)
{
    ScibRegs.SCITXBUF=a;
}


void scib_fifo_init()
{
    ScibRegs.SCIFFTX.all=0xE040;
    ScibRegs.SCIFFRX.all=0x2044;
    ScibRegs.SCIFFCT.all=0x0;

}

void configGPIO(void)
{
      EALLOW;

      GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0;    //配置为通用I/O口
      GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 0;

      GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;   //作为输出I/O
      GpioCtrlRegs.GPADIR.bit.GPIO20 = 1;

      GpioDataRegs.GPADAT.bit.GPIO20 = 0;
      GpioDataRegs.GPADAT.bit.GPIO21 = 1;


      EDIS;
}

__interrupt void SCIRXINTb_ISR(void)   // SCI-B-RXReceive Navigation
{

      int i;
      for (i=0;i<16;i++)
                Navdata = ScibRegs.SCIRXBUF.all;

      PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}
interrupt void cpu_timer0_isr(void)
{
      ErrorCount++;
      PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

MapleSugar 发表于 2017-11-23 14:24

Help!

zhangmangui 发表于 2017-11-23 22:29

看看相关外设的时钟有没有使能

soodesyt 发表于 2017-11-23 22:29

楼主是怎么查看到sci有数据的?

mnynt121 发表于 2017-11-23 22:30

可以使用查询的方法。

plsbackup 发表于 2017-11-23 22:30

scib_loopback是什么意思?

mnynt121 发表于 2017-11-23 22:35

有可能中断没有开启。

plsbackup 发表于 2017-11-23 22:35

楼主的中断代码在哪配置的

soodesyt 发表于 2017-11-23 22:35

是单步调试吗?

xuerock 发表于 2019-1-16 16:17

//C2000ware
SCI_clearOverflowStatus(SCIA_BASE);
SCI_clearInterruptStatus(SCIA_BASE, SCI_INT_RXFF);

蒋博1026 发表于 2019-1-21 11:25

时钟使能了吗?如果没有使能,也会出现这种情况

狼烟客 发表于 2019-2-15 11:54

1、貌似没见使能SCI时钟;
2、使能SCI接收中断时,没有使用EALLOW对;

hitycy 发表于 2019-6-13 22:55

楼主问题解决了吗?把经验分享一下啊
页: [1]
查看完整版本: 急!!DSP的SCI进不去中断