Part Number:TMS320F28335
SCIC配置为非FIFO,中断接收模式,但是发现只能进入一次中断,但是根据SCIRXBUF寄存器看,应该是所有数据都收到了,请问这是为什么,配置代码如下
InitScicGpio();
// 设置字符格式,通信协议,通信模式
//软件复位SCI,复位值
ScicRegs.SCICTL1.bit.SWRESET = 0;
ScicRegs.SCICCR.all = 0x67;
// 使能SCI发送和接收器
ScicRegs.SCICTL1.bit.RXENA = 1; //使能接收功能
ScicRegs.SCICTL1.bit.TXENA = 1; //使能发送功能
ScicRegs.SCICTL2.bit.RXBKINTENA = 1;
// 设置波特率
ScicRegs.SCIHBAUD = 0x00;
ScicRegs.SCILBAUD = 0x40;
// 使能中断向量
EALLOW;
PieVectTable.SCIRXINTC = &scic_rx_fifo_isr;
EDIS;
PieCtrlRegs.PIEIER8.bit.INTx5 = 1; // PIE Group 9, int3
IER |= M_INT8; // Enable CPU INT
ScicRegs.SCICTL1.bit.SWRESET = 1;
Green Deng:
发送完成后有没有“Clear Interrupt flag” 和 “Issue PIE ACK”?
user5197967 说:只能进入一次中断,但是根据SCIRXBUF寄存器看,应该是所有数据都收到了
另外,这里具体是怎么判断只进入一次中断的?
,
user5197967:
进入一次中断,程序就会将 ch = ScicRegs.SCIRXBUF.all; 这个读取到环形缓冲区中,在我发送完之后,环形缓冲区只有一个数据。并且,在上位机持续发送的状态下,中断函数打了个断点,只进入一次中断函数,后面的再也运行不到断点
,
user5197967:
我查到问题了,是因为中断函数里面,响应中断写得中断函数组不对
,
Green Deng:
好的,恭喜问题解决!