stm32位带操作的问题

[复制链接]
 楼主| hxy2012 发表于 2013-4-11 16:46 | 显示全部楼层 |阅读模式
我现在的理解是:1、1MB的位带区扩到32MB的位带别名区。每个比特就是bit,就是说一个位带区地址中32位分别对应位带别名区地址。
                            2、SRAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:
                                 0X220000000 ,0X220000004,0X220000008,0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C
                                 那SRAM1MB位带区0X200000000扩展的位带别名区的扩展怎么不是0X220000000 ,0X220000001,0X220000002, 0X220000003,0X220000004,0X220000005, 0X220000006,0X220000007.。。。。。。。。。。。。。0X220000001F?


IJK 发表于 2013-4-11 17:34 | 显示全部楼层
SRAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:
                                  0X220000000 ,0X220000004,0X220000008,...

肯定是这样啦。32 位的字,对应于4字节。

0X220000000 ,0X220000001,
就变成字节了
acgean 发表于 2013-4-12 09:39 | 显示全部楼层
每个bit,分别对应位带别名区32位(4字节)地址。
所以:SRAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是: 0X220000000 ,0X220000004,0X220000008,0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C
 楼主| hxy2012 发表于 2013-4-12 10:11 | 显示全部楼层
acgean 发表于 2013-4-12 09:39
每个bit,分别对应位带别名区32位(4字节)地址。
所以:SRAM地址 0X200000000(一个字节)扩展到8个32 位 ...

位带区0x2000 0000地址中的32位对应着对应位带别名区地址0X220000000 ,0X220000001,0X220000002, 0X220000003,0X220000004,0X220000005, 0X220000006,0X220000007.。。。。。。。。。。。。。0X220000001F 我这样理解是错的  你看下
 楼主| hxy2012 发表于 2013-4-12 11:14 | 显示全部楼层
IJK 发表于 2013-4-11 17:34
SRAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:
                                  0X2200 ...

对SRAM 位带区的某个比特,记它所在字节地址为A,位序号
在别名区的地址为:
AliasAddr= 0x22000000 +((A‐0x20000000)*8+n)*4 =0x22000000+ (A‐0x20000000)*32 + n*4
对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0<=n<=7),则该比特
在别名区的地址为:
AliasAddr= 0x42000000+((A‐0x40000000)*8+n)*4 =0x42000000+ (A‐0x40000000)*32 + n*4
上式中,“*4”表示一个字为4 个字节,“*8”表示一个字节中有8 个比特
怎么位序号n是(0<=n<=7),位带区一个地址不是有32位的嘛,那么位序号该是 0<=n<=31????】
 楼主| hxy2012 发表于 2013-5-28 10:50 | 显示全部楼层
多思考,多看书,OK
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

54

帖子

0

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

13

主题

54

帖子

0

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