OpenEdv-开源电子网

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

usart通讯

[复制链接]

21

主题

36

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-6-28
在线时间
33 小时
发表于 2018-7-31 10:01:12 | 显示全部楼层 |阅读模式
1金钱
if(USART1->ISR&USART_ISR_ORE)
{
USART1->ICR = USART_ISR_ORE;
}
请问这个判断语句是什么意思?USART1->ISR=USART_ISR_ORE的意思是判断USART1->ISR&USART_ISR_ORE是否为1,那么一个寄存器里的值与寄存器里的某一位的值与是不是就是该位的值对该位的值的与,那这样的话只有为1是才为真,那么if条件里不就只要写USART_ISR_ORE就好了吗?为什么还要写与?

最佳答案

查看完整内容[请看2#楼]

这是位操作,相与是为了只判断USART_ISR_ORE这一位。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-7-31 10:01:13 | 显示全部楼层
这是位操作,相与是为了只判断USART_ISR_ORE这一位。
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7568
金钱
7568
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-7-31 10:26:29 | 显示全部楼层
USART1->ISR&USART_ISR_ORE   只判断USART_ISR_ORE这1位,其它位全部清零了。就得这么写
回复

使用道具 举报

21

主题

36

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-6-28
在线时间
33 小时
 楼主| 发表于 2018-7-31 10:48:14 | 显示全部楼层
那只判断这一位的话直接写if(USART_ISR_ORE==1)或if(USART_ISR_ORE)不就好了,为什么还要用与啊,就这样写if(USART_ISR_ORE==1)或if(USART_ISR_ORE)可以吗
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7568
金钱
7568
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-7-31 12:36:13 | 显示全部楼层
hyl88099 发表于 2018-7-31 10:48
那只判断这一位的话直接写if(USART_ISR_ORE==1)或if(USART_ISR_ORE)不就好了,为什么还要用与啊,就这 ...

USART_ISR_ORE是个宏定义啊,哥们,这个肯定是一直为真啊,这个有什么好判断的?又不是变量。USART1->ISR才是变量啊?因为你要判断USART_ISR_ORE位,所以需要把其它位清零,这样,只有USART_ISR_ORE位为1时,判断为真,反之判断为假。C语言的基础知识啊。。。
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-7-31 17:28:19 | 显示全部楼层
建议去看看 C语言位操作的内容  多练习点实例  在来看这个就很清晰了  
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-8-8
在线时间
20 小时
发表于 2018-9-8 11:32:44 | 显示全部楼层
这是位操作,相与是为了只判断USART_ISR_ORE这一位。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 06:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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