关于输入捕获中if的条件语句的问题

2019-07-20 10:17发布

tsr = TIM5->sr;
if(tsr&0x02)
假设tsr=0x02
里面tsr&0x02=2
那就是说不会执行if的语句,所以if(tsr&0x02)的意思是啥?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
Seri。
1楼-- · 2019-07-20 15:17
COME 发表于 2017-12-23 17:06
那这句话可不可以这样理解:如果sr的第二位为1,那就执行if语句相当于传统c的if(1)?

对,可以简单这么理解。嵌入C中的寄存器基本上每一位都有特定功能,使用时需要提取某一位,屏蔽其他位,一般常用的语法就是 "|=" 置位,"&=~"复位,"&(1<<n)"提取。
Seri。
2楼-- · 2019-07-20 20:21
 精彩回答 2  元偷偷看……
COME
3楼-- · 2019-07-20 22:29
 精彩回答 2  元偷偷看……
Seri。
4楼-- · 2019-07-21 00:56
COME 发表于 2017-12-23 16:55
可是按位与运算后的值为2啊

你把结果2也换成二进制,这里的2的意义不是数值,只是表示对应的位上是1还是0,如果你等于的是8,意思就是看bit[3]是不不是置了1。这个是嵌入式C和传统C变成不太一样的地方。
COME
5楼-- · 2019-07-21 06:14
 精彩回答 2  元偷偷看……
COME
6楼-- · 2019-07-21 10:54
Seri。 发表于 2017-12-23 17:20
对,可以简单这么理解。嵌入C中的寄存器基本上每一位都有特定功能,使用时需要提取某一位,屏蔽其他位, ...

"&=~"复位该怎样理解?

一周热门 更多>