OpenEdv-开源电子网

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

有关位的操作没有看懂啊?

[复制链接]

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-6-9
在线时间
24 小时
发表于 2016-7-2 20:47:32 | 显示全部楼层 |阅读模式
1金钱
直接上程序,尤其是那个标号2的地方,没怎么看明白?{p->ODR ^=i},这个代表的什么意思啊?将 i 进行异或后赋给数据输出寄存器吗?p->ODR这个又是什么意思啊?是指针吗?
1.png

最佳答案

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

位操作常用表达式: 清零(将reg寄存器的第bit_index位清零): reg &= ~(1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-7-2 20:47:33 | 显示全部楼层
位操作常用表达式:
清零(将reg寄存器的第bit_index位清零):
reg &= ~(1<<bit_index);

置位(将reg寄存器的第bit_index位置1):
reg |= (1<<bit_index);

取反(将reg寄存器的第bit_index位取反):
reg ^= (1<<bit_index);

你理解以下这三行代码,理解不了的话就找本C语言教材看看。

你所贴的代码中的置位、清零操作,在STM32中有更高效的专用寄存器,所以就没有用&=和|=的形式了。
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

6

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-6-9
在线时间
24 小时
 楼主| 发表于 2016-7-3 11:29:30 | 显示全部楼层
xkwy 发表于 2016-7-3 06:48
位操作常用表达式:
清零(将reg寄存器的第bit_index位清零):
reg &= ~(1

多谢你的答疑,你写的我能看懂,位操作的知识补了一下后好了很多,但p->ODR,p->BSRR,p->BRR这个的意思不是很懂?是指向相应的寄存器,然后在相对应的寄存器上进行的位运算吗?
回复

使用道具 举报

8

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
673
金钱
673
注册时间
2014-1-14
在线时间
109 小时
发表于 2016-7-3 13:02:55 | 显示全部楼层
列兵一号 发表于 2016-7-3 11:29
多谢你的答疑,你写的我能看懂,位操作的知识补了一下后好了很多,但p->ODR,p->BSRR,p->BRR这个的意思 ...

这个是结构体指针,指向p的ODR成员
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 11:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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