OpenEdv-开源电子网

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

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

[复制链接]

11

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-12-16
在线时间
15 小时
发表于 2017-12-23 16:49:18 | 显示全部楼层 |阅读模式
1金钱
tsr = TIM5->sr;
if(tsr&0x02)
假设tsr=0x02
里面tsr&0x02=2
那就是说不会执行if的语句,所以if(tsr&0x02)的意思是啥?

最佳答案

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

对,可以简单这么理解。嵌入C中的寄存器基本上每一位都有特定功能,使用时需要提取某一位,屏蔽其他位,一般常用的语法就是 "|=" 置位,"&=~"复位,"&(1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2016-7-1
在线时间
288 小时
发表于 2017-12-23 16:49:19 | 显示全部楼层
COME 发表于 2017-12-23 17:06
那这句话可不可以这样理解:如果sr的第二位为1,那就执行if语句相当于传统c的if(1)?

对,可以简单这么理解。嵌入C中的寄存器基本上每一位都有特定功能,使用时需要提取某一位,屏蔽其他位,一般常用的语法就是 "|=" 置位,"&=~"复位,"&(1<<n)"提取。
回复

使用道具 举报

3

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2016-7-1
在线时间
288 小时
发表于 2017-12-23 16:52:13 | 显示全部楼层
提取SR寄存器的的bit[1],(0x02对应二进制位为0b0000 0000 0000 0010,32位的寄存器)
回复

使用道具 举报

11

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-12-16
在线时间
15 小时
 楼主| 发表于 2017-12-23 16:55:32 | 显示全部楼层
Seri。 发表于 2017-12-23 16:52
提取SR寄存器的的bit[1],(0x02对应二进制位为0b0000 0000 0000 0010,32位的寄存器)

可是按位与运算后的值为2啊
回复

使用道具 举报

3

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2016-7-1
在线时间
288 小时
发表于 2017-12-23 17:01:08 | 显示全部楼层
COME 发表于 2017-12-23 16:55
可是按位与运算后的值为2啊

你把结果2也换成二进制,这里的2的意义不是数值,只是表示对应的位上是1还是0,如果你等于的是8,意思就是看bit[3]是不不是置了1。这个是嵌入式C和传统C变成不太一样的地方。
回复

使用道具 举报

11

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-12-16
在线时间
15 小时
 楼主| 发表于 2017-12-23 17:06:20 | 显示全部楼层
Seri。 发表于 2017-12-23 17:01
你把结果2也换成二进制,这里的2的意义不是数值,只是表示对应的位上是1还是0,如果你等于的是8,意思就 ...

那这句话可不可以这样理解:如果sr的第二位为1,那就执行if语句相当于传统c的if(1)?
回复

使用道具 举报

11

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-12-16
在线时间
15 小时
 楼主| 发表于 2017-12-23 17:30:48 | 显示全部楼层
Seri。 发表于 2017-12-23 17:20
对,可以简单这么理解。嵌入C中的寄存器基本上每一位都有特定功能,使用时需要提取某一位,屏蔽其他位, ...

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

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-23 17:43:34 | 显示全部楼层
楼主是想来这里补习一下 C语言基础知识吧.
回复

使用道具 举报

3

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2016-7-1
在线时间
288 小时
发表于 2017-12-23 17:47:02 | 显示全部楼层
COME 发表于 2017-12-23 17:30
"&=~"复位该怎样理解?

看一下c语言基础吧,操作符
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 17:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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