你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于地址和地址的值,搞不懂

[复制链接]
今日头条 提问时间:2016-6-1 14:14 /
uint32_t b;
uint32_t c;
b = 0x400ff040;
c = b + 0x14;
*((uint32_t *)c)|= (1U << 18);

这里有这样一段代码,我想请问一下,执行完以后,哪个地址被写入了?
这边的
c=b+0x14,是不是作为某一个要写入的初始地址,
然后根据*((uint32_t *)c)|= (1U << 18);进行偏移然后写入






是不是
*((uint32_t *)c)| = 1 , 是不是 0x400ff054 = 1;
*((uint32_t *)c)| = 1<<1 , 是不是 0x400ff054 = 2  =>  0x400ff055 = 1

收藏 评论5 发布时间:2016-6-1 14:14

举报

5个回答
houjinyu 回答时间:2016-6-1 14:34:09
注意是 “|=”不是“=”
*((uint32_t *)c)|= (1U << 18);是把0x400ff054地址处的uint32_t类型变量的第18位置1

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

zero99 回答时间:2016-6-1 14:41:01
今日头条 回答时间:2016-6-1 15:12:33
houjinyu 发表于 2016-6-1 14:34
注意是 “|=”不是“=”
*((uint32_t *)c)|= (1U

谢谢!!!

不好意思哈,发帖的时候不够严谨,没注意|= 和  =
其实我是知道的啦~,主要还是比较像了解地址和地址的值的这个概念,


回归正题

也就是说,其实每个地址都以一个"字"大小的值,系统复位有一个初始值,你写了以后,就会根据写的值改变,是这样么  
比如说0x400ff054下有一个值是0x00000000,这样大小的一个值,0x400ff055,下面也有一个0x00000000这样大小的一个值
小丁 回答时间:2016-6-1 15:48:51
今日头条 发表于 2016-6-1 15:12
谢谢!!!

不好意思哈,发帖的时候不够严谨,没注意|= 和  =

其实看STM32 库,对GPIO的操作就理解了
beary 回答时间:2016-6-6 09:18:31
小丁 发表于 2016-6-1 15:48
其实看STM32 库,对GPIO的操作就理解了

谢谢~好的

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版