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.

关于28027F串口接收中断的问题

Other Parts Discussed in Thread: C2000WARE

unsigned char Msg_Tx_Buf[10] = {0x55, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

interrupt void sciARxISR(void)
{
HAL_Obj *obj = (HAL_Obj *)halHandle;
float temp = 0;
unsigned char loop = 2;

Msg_Rx_Buf[ ++RX_Data_counter] = halHandle->sciAHandle->SCIRXBUF;
PIE_clearInt(obj->pieHandle,PIE_GroupNumber_9);

if((RX_Data_counter == 0) & (Msg_Rx_Buf[0] != 0xAA))
{
RX_Data_counter = 0;

return;
}
if((RX_Data_counter == 1) & (Msg_Rx_Buf[1] != 0x55))
{
RX_Data_counter = 0;
return;
}
if(RX_Data_counter >= 9)
{
//第一步:清零操作
RX_Data_counter = 0;
SCI_disableRxInt(halHandle->sciAHandle);
SCI_disableRx(halHandle->sciAHandle);

for( ; loop < 9; loop ++)
{
Rx_Num_Check += Msg_Rx_Buf[loop];
}

if((Msg_Rx_Buf[0] == 0xAA) & (Msg_Rx_Buf[1] == 0x55) & Msg_Rx_Buf[9] == (Rx_Num_Check & 0x00FF)) //检查校验和
{

Rx_Num_Check = 0;
Rx_Flag = 0;


SCI_TxMsg(Msg_Tx_Buf, 10);
}
SCI_enableRx(halHandle->sciAHandle);
SCI_enableRxInt(halHandle->sciAHandle);

}
} // end of sciARxISR() function

这是我的中断程序,设计用这个程序接收十个数据然后处理,在调试的过程中发现,在接收数据多余十个或者少于十个的时候就会不正常,一次发送给DSP数据多余十个时,DSP发个上位机的数据和Msg_Tx_Buf里的数据不一样,在程序里没有对Msg_Tx_Buf进行过任何操作;

在发送数据持续几次大于十个时,接收中断就在也进不来了,但是其他中断正常,在其他中断里发送数据上位机也可以接收到,而且接收到的数据和Msg_Tx_Buf中内容一致