stm32_011_stm32位绑定操作

来源:互联网 发布:多重网络会影响网速吗 编辑:程序博客网 时间:2024/06/07 06:53

1.其实位绑定并不需要我们去做绑定操作,他是本身就联系在一起的了,我们只需计算出他的地址就可以直接操作了

2.系统只对一下两组地址做了位绑定,也就是只有在一下两组地址内的才可以进行位绑定操作:

------SRM区: 0x2000 0000 -- 0x200F FFFF

------片上外设区: 0x4000 0000 -- 0x400F FFFF

3.对应地址的计算办法:

------SRM区:      关联的地址=0x2200 0000 +( (A-0x2000 0000)*8 + n)*4

-------------解析: A:原来的地址

---------------------*8:因为每个地址对应一个字节,一个字节有8位

---------------------n: 代表在这个字节中的第几位

---------------------*4:因为每一位对应一个字(不是字节),一个字是4个字节的,就是32位。也就是说原来地址中的每一位对应新地址中的32位。这样做的目的是因为32位的系统,一个指令周期就可以操作一个32位的数,这样比你拿原来的地址进行位的与或操作快。


------片上外设区: 关联的地址=0x4200 0000 + ((A-0x4000 0000)*8 + n)*4


4.例子:

------u32 *PAI11=(u32*)(0x4200 0000 + ((0x4001 0808 - 0x4000 0000)*8 +11)*4)

------等同于:

------u32 *PAI11=(u32*)(0x4200 0000 + ((0x4001 0809 - 0x4000 0000)*8 +3)*4)


------然后就直接操作就可以了,只看最后一位,也就是: *PAI11 = 0 和 =2 、=4 ...都一样,对应位为0;;;      *PAI11 = 1 和 =3....都一样,对应位为1。


5.例子,采用宏定义的方法处理:


原创粉丝点击