一、现象
if(Rx_Buf[0]==0xAA)
{
LED = 0;
}
if(Rx_Buf[0]==0x55)
{
LED = 1;
}
这段代码中的两个if只有 if(Rx_Buf[0]==0x55)会执行,通过串口输出Rx_Buf[0]的值确实有收到0xAA但是就是不进判断逻辑。
二、原因
char Rx_Buf[32] = {0};
这是Rx_Buf最开始的定义,char被编译器默认为有符号字符类型,取值范围-128
到 127,0xAA超出了这个范围,所以判断是会出错的,改为unsigned char之后就正常了。