打印
[STM32F1]

关于stm单片机的位绑定(bit-banding)的理解和困惑求解

[复制链接]
1341|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuchang890811|  楼主 | 2015-8-12 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)  
下面是小弟对位绑定的理解:
所谓的位绑定,只是将在位带区中的1个bit膨胀成别名区的32个bit
1>所以在位带区中相差1个bit,正好在别名区中相差4个Byte,正好是32个bit
2>所以在位带区中相差1个Byte,正好在别名区中相差32个Byte,正好是32Byte=8*32bit
按照小弟的理解:也就是位带区中的1个bit对应别名区的32个bit
例如:0x2000 0000.0 等价于 0x2200 0000.0
        0x2000 0000.1 等价于 0x2200 0004.0
        0x2000 0000.2 等价于0x2200 0008.0


问题1:小弟上面的理解是对的吗?恳请大神指教
问题2:为什么要求这里的  0<=bit_number<=7 ???
bit_number不是应该在0~31之间吗???恳请大神指教~


沙发
amanda_s| | 2015-8-13 14:40 | 只看该作者
1.你的理解是对的。
2.在这个公式中,
  byte_offset :包含目标比特位的字节在位带区的偏移值(字节数)
   bit_number : 目标比特位在字节中的位置(0~7)
   bit_number表示的是目标比特位在字节中的位置,当然只会是0~7
   如果将上面公式写成这样,可能更好理解:
  bit_word_addr = bit_band_base + ((byte_offset x 8) + bit_number )x4

使用特权

评论回复
板凳
liuchang890811|  楼主 | 2015-8-13 17:17 | 只看该作者
感谢大神指导~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

87

帖子

0

粉丝