[MCU] 直接赋值?

[复制链接]
1519|35
 楼主| liliang9554 发表于 2020-5-20 22:53 | 显示全部楼层 |阅读模式
*W=*W&0x0404;
W代表某寄存器。
寄存器不是可以直接赋值的吗?
 楼主| liliang9554 发表于 2020-5-20 22:57 | 显示全部楼层
为什么我看到一些程序的初始化里面有类似这种语句?
zhanghqi 发表于 2020-5-20 23:03 | 显示全部楼层
我也不明白,猜想大概是想保留某些位吧
spark周 发表于 2020-5-20 23:05 | 显示全部楼层
按位与,按位或操作不是和寄存器原来的值有关吗?
bqyj 发表于 2020-5-20 23:08 | 显示全部楼层
直接赋值对位操作起来就比较麻烦,不如这样可以封装,更直观明了
heweibig 发表于 2020-5-20 23:11 | 显示全部楼层
运算之后寄存器的值不是不确定了吗,怎么能算初始化呢?
zhaoxqi 发表于 2020-5-20 23:16 | 显示全部楼层
有些寄存器,写0不影响,写1是清0
dengdc 发表于 2020-5-20 23:19 | 显示全部楼层
我觉得应该在初始化的时候不止做了这些,你看看他的头文件是不是对他赋了值
wuhany 发表于 2020-5-20 23:22 | 显示全部楼层
这是从程序兼容性考虑,若其他地方改了寄存器(典型是volatile)的值,此处又改会有冲突,所以清零用与,置位用或
 楼主| liliang9554 发表于 2020-5-20 23:25 | 显示全部楼层
原来如此啊,不过用了volatile寄存器会被修改?这个关键字不是很熟
spark周 发表于 2020-5-20 23:28 | 显示全部楼层

应该是位清零操作
不过楼主的例子不典型,常见的是这种
*W=*W&0xFFFD;#bit1位清零
建议楼主结合上下文看一下。
 楼主| liliang9554 发表于 2020-5-20 23:33 | 显示全部楼层

呵呵,了解啦
hanwe 发表于 2020-5-20 23:36 | 显示全部楼层
可能吧
wangzsa 发表于 2020-5-20 23:39 | 显示全部楼层
可以直接对寄存器赋值
wenfen 发表于 2020-5-20 23:41 | 显示全部楼层
这个就是定义的地址。
chuxh 发表于 2020-5-20 23:43 | 显示全部楼层
*W是寄存器的地址。
supernan 发表于 2020-5-20 23:49 | 显示全部楼层
楼主查看一下W的宏定义
liuzaiy 发表于 2020-5-20 23:51 | 显示全部楼层
很多都是定义的寄存器
morrisk 发表于 2020-5-20 23:54 | 显示全部楼层
楼主不是直接赋值的吗
guoyt 发表于 2020-5-20 23:56 | 显示全部楼层
赋值干什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部