如图所示,这是一段STM32的寻址计算公式,哪位学长可以解答一下,看不太明白,这是如何寻找到那一位的地址的?
1条回答 默认 最新
- 老皮芽子 2021-12-11 13:33关注
是位寻址地址的计算
这个计算公式需要先理解这个公式的物理意义。
假设我们自己设计一款 32 位 CPU 有一组能按位去寻址特殊的寄存器,这组寄存器有0x1000个按顺序编号为 REG_NUM 0-0x0fff ,每个寄存器只有 8 位,这每个位为 BIT_NUM 0-7
我们需要怎么去寻址?CPU 的地址一般都是按字节计算。这组寄存器就需要 0x1000 * 8 个地址空间。
远大于这组寄存器原始的地址空间 0x1000 ,我们需要将这个按位寻的地址重新映射一块区域,这块区域的基地址为 BASE_ADDR
我们怎么计算这个地址 ?BASE_ADDR + REG_NUM * 8 + BIT_NUM
这是 32 位 CPU 需要 4 字节对齐去寻址就计算需要做下调整
BASE_ADDR + ( REG_NUM * 8 + BIT_NUM ) * 4 = BASE_ADDR + REG_NUM * 32 + BIT_NUM * 4
看看 STM32 的公式是不是一样 ?
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用