首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Cortex M3中的Bit-band位操作(3)

Cortex M3中的Bit-band位操作(3)

下面的公式给出了Bit-banded空间地址到Bit-band别名空间地址的计算方法:
bit_word_offset = (byte_offset x 32) +(bit_number x 4)
bit_word_addr = bit_band_base +bit_word_offset
其中:
bit_word_offset: 目标位在Bit-banded空间中的字节地址对应的在Bit-band别名空间中的字地址的偏移量。
bit_word_addr: 目标位在Bit-banded空间中的字节地址对应的在Bit-band别名空间中的字地址。
bit_band_base: Bit_band别名空间的基地址。
byte_offset: 目标位在Bit_banded空间中的字节地址的偏移量。
bit_number: 目标位在所在字节中的位置,取0-7
下面为SRAM空间中Bit_banding应用中地址转换关系的四个例子:
1Bit_band空间别名地址:0x23FF.FFE0Bit_banded空间地址:0x200F.FFFF,位:0。计算公式:
0x23FF.FFE0 = 0x2200.0000 + (0x000F.FFFF *32) + (0 * 4)
2Bit_band空间别名地址:0x23FF.FFFCBit_banded空间地址:0x200F.FFFF,位:7。计算公式:
0x23FF.FFFC = 0x2200.0000 + (0x000F.FFFF *32) + (7 * 4)
3Bit_band空间别名地址:0x2200.0000Bit_banded空间地址:0x2000.0000位:0。计算公式:
0x2200.0000 = 0x2200.0000 + (0x2000.0000 *32) + (0 * 4)
4Bit_band空间别名地址:0x2200.0000Bit_banded空间地址:0x2000.0000位:7。计算公式:
0x2200.001C = 0x2200.0000 + (0x2000.0000 *32) + (7 * 4)

Luminary公司给的Stellaris系列ARM的驱动库中,hw_types.h中有如下几个代码:
#defineHWREG(x)                  (*((volatile unsigned long *)(x)))
#defineHWREGH(x)                (*((volatile unsigned short *)(x)))
#defineHWREGB(x)                (*((volatile unsigned char *)(x)))
#define HWREGBITW(x,b)    HWREG(((unsigned long)(x) & 0xF0000000) |0x02000000|           \
                                             (((unsigned long)(x) & 0x000FFFFF)<< 5) | ((b)<< 2))
#define HWREGBITH(x,b)     HWREGH(((unsigned long)(x) & 0xF0000000) |0x02000000|        \
                                             (((unsigned long)(x) & 0x000FFFFF)<< 5) | ((b)<< 2))
#define HWREGBITB(x, b)   HWREGB(((unsigned long)(x) & 0xF0000000) |0x02000000|        \
                                              (((unsigned long)(x) & 0x000FFFFF)<< 5) | ((b)<< 2))

HWREG(x)HWREGH(x)HWREGB(x)分别定义了长度为字、半字、字节的寄存器访问宏,利用他们可以进行读写操作。
HWREGBITW(x, b)HWREGBITH(x, b)HWREGBITB(x, b)则分别定义了长度为字、半字、字节的寄存器的Bit-banding位操作宏,可以实现单独对位操作。其算法就是上面提到的公式。
继承事业,薪火相传
返回列表