目录
尽量使用无符号数
有如下代码:
// 满洲里国峰电子科技 www.guofengdianzi.com
// 微信:GuofengDianZi
#define SENSOR_WORKS 0xFA
char RxData=0;
if(UART_GetCharsInRxBuf()!=0)
UART_GetChar(&RxData);
if(RxData==SENSOR_WORKS)
{
TurnONLED1();
}
串口收到的数据放在RxData中,如果其值为0xFA,点亮LED1。看上去完全没有问题,但是当终端设备传来0xFA的数据时却不执行点亮LED1。原因是RxData是char型的,其范围是-128~+127,而宏定义的SENSOR_WORKS其值为250(0xFA),首位为1,当作负数,其数值为-6。而-6不等于0xFA,不执行if里面的语句。
应该使用无符号数:
// 满洲里国峰电子科技 www.guofengdianzi.com
// 微信:GuofengDianZi
#define SENSOR_WORKS 0xFA
unsigned char RxData=0;
if(UART_GetCharsInRxBuf()!=0)
UART_GetChar(&RxData);
if(RxData==SENSOR_WORKS)
{
TurnONLED1();
}
作者:伏熊(专业:射频芯片设计、雷达系统。爱好:嵌入式。欢迎大家项目合作交流。)
微信:GuoFengDianZi