关于dsp f2812 SCI fifo模式收发数据的问题。
求解答: 我用SCI的fifo模式的中断收发数据,通过串口调试的,接受中断可以进去,但是发送中断进不去。 #include "DSP28_Device.h"char buffer;
void main(void)
{
int i = 0;
InitSysCtrl();
DINT;
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl();
InitPieVectTable();
InitGpio();
InitSci();
for(i=0;i<100;i++)
{
buffer = 0;
}
PieCtrl.PIEIER9.bit.INTx1 = 1; //ʹ��pieģ����sci�Ľ����ж�
PieCtrl.PIEIER9.bit.INTx2 = 1; //ʹ��pieģ����sci�ķ����ж�
IER |= M_INT9;
ERTM;
EINT;
for(;;)
{
;
}
}
*******************************************************************************************************************DefaultIsr.c********************************************
interrupt void SCIRXINTA_ISR(void) // SCI-A�����жϺ���
{
int j;
for(j=0;j<8;j++)
{
buffer = SciaRegs.SCIRXBUF.all;
}
if(strncmp(buffer,"hellodsp",8) == 0)
{
SciaRegs.SCIFFTX.bit.TXINTCLR = 1;
}
SciaRegs.SCIFFRX.bit.RXFIFORESET = 0;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;
PieCtrl.PIEACK.bit.ACK1 = 1;
}
interrupt void SCITXINTA_ISR(void) // SCI-A�����жϺ���
{
int _j;
for(_j=0;_j<8;_j++)
{
SciaRegs.SCITXBUF = buffer;
}
PieCtrl.PIEACK.bit.ACK1 = 1;
} 请路过的大神,帮忙解答下。。。。。先先谢过了。。。程序如上 自己顶一下。没有人遇见类似问题吗 发送中断进入的前提条件是scitxbuf中有数据进入,你把向scitubuf写入数据放在发送中断里当然进不去了,一般情况下需要预先发送数据到scitubuf,启动发送中断。
另外,我之前也遇到这种问题,现在办法是接收中断,发送轮询的方法 wei3890836 发表于 2015-1-9 11:33
发送中断进入的前提条件是scitxbuf中有数据进入,你把向scitubuf写入数据放在发送中断里当然进不去了,一般 ...
谢谢你回帖。你说的没错,不过它适用于标准模式下,在接受中断里事先发送数据到txbuff,开启动发送中断。但是在fifo模式下不用的,我设置它的中断触发级为0,就可以在一开始就产生发送中断。今天我发现了哪里出错了,原因在使用strncmp函数那点出错了,把if判断条件啥的都删了,只留里面的那个语句,就不会出错了。虽然可以正常收发了,但是,我现在还是有疑惑,我那个strncmp判断部分怎么出错了。你有什么见解吗? “strncmp”,这个得添加“string.h”这个头文件吧 有例程的,可以参考那个,很不错
页:
[1]