引用:
如果Ulen是16位的呢?
执行ReceiveBUFF[2]<<8) + ReceiveBUFF[3]之后,那不就是将接收的两个8位的字节组合成一个16位的数??...
|
|
十分感谢。。。。。。但我还有点不明白,ReceiveBUFF[2]本身是八位的,左移时数据不会丢失是吗?UART这里的寄存器不是都是八位吗,程序“ULen = (ReceiveBUFF[2]<<8) + ReceiveBUFF[3];”
其中如果定义了ULen为int型,那么假设ReceiveBUFF[2]=0x01,那么左移八位后再加上ReceiveBUFF[3],ULen肯定要大于0xFF,这样的话(ReceiveCounter >= (ULen + 2));那么ReceiveCounter也大于0xFF,而ReceiveCounter是char型,只有八位啊,那么不就溢出了吗。