描绘:串口中止1用来接纳到的数据,我是用串口帮手发送一个8字节的数据,然后我想检查8个字节是否被单片接纳,比方数据是0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08这8个数值,串口中止
#pragma vector=ITC_IRQ_UART1_RX + 2
__interrupt void Uart1RxdInt(void)
{ //此函数内已完结清中止标志
u8 ret;
if(UART1_GetFlagStatus(UART1_FLAG_RXNE)!=RESET)
{
tmp = UART1_ReceiveData8();
ret=UART_KbdPkgRead(tmp);
if(ret==0)
{
KBD_Flag_RECE=1;
}
}
}
我在ret的当地设了个断点,然后每次发送进入中止的时分发现能够中止在那,而且此刻承受的数据确实也是0x01,然后有全速运转,承受的数据也是0x02,在全速运转就可能又是0x01或许底子不会停下来,
此刻我才知道我犯了一个过错,当发送一串数据时,断点不应该设在中止内,由于cpu在断点逗留处,她是不会停下的,也便是那串数据会被错失,假如你发送一个数字,那就不会错失了。
接下来该怎么办呢?
进入中止的函数,比方我的是UART_KbdPkgRead()。进入后能够编写一个小程序,用来判别承受得到数据是否是要发送的,比方if(dat==0x01),if(dat==0x02).这样在他前边设置断点,用来判别这一串数据是否被单片机接纳到了。