本帖最后由 jlgcumt 于 2010-3-11 16:54 编辑
我在别人的基础上改了一下串口中断程序,能进中断但收到第一个数据后,直接跳到UART0Count=0;但我发送的是正确的数据呀,怎么会跳到UART0Count=0;
(我进入中断后单步跑时发现情况是这样的,用的是LPC2292)
我发送的数据格式为两个帧头用作数据开始的判断,是abab,接着第三个字节是字节数,
void UART0_Exception (void)
{
uint8 IIRValue;
uint8 i;
IIRValue = U0IIR;
IIRValue >>= 1; /* skip pending bit in IIR */
IIRValue &= 0x07; /* check bit 1~3, interrupt identification */
if ( IIRValue == IIR_RDA ) /* Receive Data Available */
{
/* Receive Data Available */
UART0Buf[UART0Count] = U0RBR;
if(UART0Buf[0]==0xAB)
{
if(UART0Count>=1)
{
if(UART0Buf[1]!=0xAB)
{
UART0Count=0;
}
}
if(UART0Count>=2)
{
Data1size=UART0Buf[2];
if(++UART0Count >=Data1size)
{
UART0Count = 0;
UART0RxNew=1;
for(i=0;i<=Data1size;i++)
{
UartRecCmd=UART0Buf;
}
}
}
}
}
VICVectAddr = 0; /* Acknowledge Interrupt */
// return;
} |