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

STM32的位带区和位带别名区的地址换算不明白,求教!

[复制链接]
lure 提问时间:2018-8-9 22:15 /
      
我看了它的位带说明,自己理解的总的思想是:
         位带区nbit位的位带别名区地址=
                   位带别名区基地址(起始地址) + (位带偏移地址*8+n*4             0<=n<=7 但是n是有限制还是无限制?若n ==8 ,岂不和下一个冲突了?这个没看懂,求教!
  
位带区
  
位带区bit位n
位带别名区
0x40000000
0
0x42000000
0x40000000
1
0x42000004
0x40000000
2
0x42000008
0x40000000
3
0x4200000C
0x40000000
4
0x42000010
0x40000000
5
0x42000014
0x40000000
6
0x42000018
0x40000000
7
0x4200001C
0x40000000
8
0x42000020
……
……
……
0x40000001
0
0x42000020
0x40000001
1
0x42000024
0x40000001
2
0x42000028
0x40000001
3
0x4200002C
……
……
……

点评

付费主题?改了吧  发表于 2018-8-10 09:39
求助贴用“付费主题”,是要被管管打pp的  发表于 2018-8-10 00:19
收藏 评论4 发布时间:2018-8-9 22:15

举报

4个回答
feixiang20 回答时间:2018-8-9 23:05:50
限制在范围内的。
记得MCS51吗? MCS51就是有位操作,以一位(BIT)为数据对象的操作,MCS51可以简单的将P1口的第2位独立操作:P1.2=01.2=1;这样就把P1口的第三个脚(BIT2)置0置1。而现在STM32的位段、位带别名区就为了实现这样的功能。   它的对象可以是SRAM、I/O和外设空间。要实现对这些地方的某一位的操作。它是这样做的:在寻址空间(32位对应的地址空间为 4GB)的另一地方,取个别名区空间,从这个地址开始处,每一个字(32BIT)对应SRAM或I/O的一位。 这样,1MB SRAM就可以有 32MB 的对应别名区空间,就是1位膨胀到32位(1 BIT变为1个字节)。我们对这个别名区空间内的某一字操作(置0或置1),就等于它映射的 SRAM 或 I/O相应的某地址的某一位的操作。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-8-10 00:13:37
本帖最后由 toofree 于 2018-8-10 00:18 编辑

傲游截图20180810001348.jpg

位段中byte_offset是字节偏移地址,即以字节为单位递增。
byte_offset×32,即是表示用32个地址去表示一个字节内的8位。
bit_number×4,是说,每一个位,都由一个32位的数来表示,即占4个字节。

一个位用位段表示要占4个字节,自然8个位,就要占32个字节。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版