初级会员

- 积分
- 154
- 金钱
- 154
- 注册时间
- 2018-1-11
- 在线时间
- 24 小时
|
1金钱
if(strncmp(usart1_receive_buf,"WI",2)==0) 这行代码是获取usart1_receive_buf的字符与WI对比,2是代表2个字符,usart1_receive_buf接收到字符与WI抵捎=0就往下执行。
{
usart1_receive_buf[2]=(usart1_receive_buf[2]<<4&0xf0)+usart1_receive_buf[3];这行代码usart1_receive_buf[2]接受的字符=刚接受到的字符往左移4位,然后再按位与运算,再加usart1_receive_buf[3];我有点蒙,是不是假如00000011往左移4位就等于00110000,然后再与运算0xf0=11110000&00110000得出来的结果还是00110000,然后再加usart1_receive_buf[3];指的是第三位,加上就等00110100
A=HexToAsc(usart1_receive_buf[2]);这行有点蒙。
switch(A)
{
case 0x00:A0;printf("WI00 OK\r\n");break;
case 0x01:A1;printf("WI01 OK\r\n");break;
}
}
我对自己理解不敢确定。
注释上写的usart1_receive_buf[BUF_SIZE],指的是位数大小吗?
|
最佳答案
查看完整内容[请看2#楼]
串口自动解析。你串口输入WI00,是分4次发送的。
分别是:W、I、0、0。
然后接收到每一个字符,串口会进入接收中断,你可以在中断里面读取DR寄存器,保存起来。保存完4次,就是WI00了。
|