OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4341|回复: 5

小白不明白自己改变串口底层驱动函数为什么不行

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-2-27
在线时间
0 小时
发表于 2014-2-27 21:15:30 | 显示全部楼层 |阅读模式
if(res==0x0d)
USART_RX_STA|=0x40;
else
{
USART_RX_BUF[USART_RX_STA&0x3f]=res;
USART_RX_STA++;
if(USART_RX_STA&0x3f>63)USART_RX_STA=0;
这样的话,串口调试助手就能接受数据并显示,但是一旦把if(res==0x0d)改成if(res&0x0d)串口助手就不能显示我发送的数据,不知为何,请大神指教
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-2-27 21:19:00 | 显示全部楼层
if(res==0x0d)和if(res&0x0d)这两句不等价啊。。。。if(res&0x0d)是判定特定的几位中是否不全为0
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

70

主题

6764

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13140
金钱
13140
注册时间
2012-11-26
在线时间
3815 小时
发表于 2014-2-27 21:22:07 | 显示全部楼层
楼主还是从C语言先学起吧。。。。
学无止境
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-2-27
在线时间
0 小时
 楼主| 发表于 2014-2-28 17:38:25 | 显示全部楼层
回复【2楼】745021926:
---------------------------------
我明白了,是我昨天没有认真思考,那如果是只测试一位就可以用吧,比如说a&0x04就可以等价于a==0x04,但是测试两位或两位以上就只能用==了,我这样说对吗???
回复 支持 反对

使用道具 举报

70

主题

6764

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13140
金钱
13140
注册时间
2012-11-26
在线时间
3815 小时
发表于 2014-2-28 18:17:21 | 显示全部楼层
回复【4楼】拿破轮:

回复【2楼】745021926:
---------------------------------
我明白了,是我昨天没有认真思考,那如果是只测试一位就可以用吧,比如说a&0x04就可以等价于a==0x04,但是测试两位或两位以上就只能用==了,我这样说对吗???

---------------------------------
不对
学无止境
回复 支持 反对

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-2-28 18:20:22 | 显示全部楼层
回复【4楼】拿破轮:
---------------------------------
a&0x04是检测第三位,a=0xff的话,a&0x04为真,而a==0x04则是假。这两句是不一样的,尽量不要混用
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 04:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表