初始化的数据是:
for(i = 0; i < 100; i++)
{
Sci_VarRx[i] = 0x00 + i;
}
初始化SCI FIFO的程序是:
void InitSci(void)
{
// Initialize SCI-A:
EALLOW;
GpioMuxRegs.GPFMUX.all = 0x0030;
EDIS;
/* loopback 8 bit data */
SciaRegs.SCICCR.all = 0x07; // 1 bit stop, disable parity, idle mode, 8 bits data
SciaRegs.SCICTL1.all = 0x03; // enable TX
SciaRegs.SCICTL2.all = 0x03; //
SciaRegs.SCIHBAUD = 0x00;
SciaRegs.SCILBAUD = 0xA2; // Baud Rate = 19200
//SciaRegs.SCIHBAUD = 0x01;
//SciaRegs.SCILBAUD = 0XE7; // Baud Rate = 9600
//配置FIFO增强模式
SciaRegs.SCIFFTX.all = 0xC028;
SciaRegs.SCIFFRX.all = 0x0028;
SciaRegs.SCIFFCT.all = 0x0000;
SciaRegs.SCICTL1.all = 0x23;
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
PieCtrl.PIEIER9.bit.INTx1 = 1;
PieCtrl.PIEIER9.bit.INTx2 = 1;
//tbd...
// Initialize SCI-B:
//tbd...
}
中断程序入口地址为:
/*设置中断服务程序入口地址*/
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
程序里的SCITXINTA_ISR和SCIRXINTA_ISR中断处理函数就是楼上我贴的。
我就是奇怪,我即使不在PC端发送数据,PC端也能接收到2812传过来的数据,就是Sci_VarRx[0]到Sci_VarRx[7]这8个数据,即00 01 02 03 04 05 06 07。但发送数据的程序段我都是放在中断里的啊,很奇怪。 |