STM32入门求解

[复制链接]
 楼主| alpb_001 发表于 2011-6-2 16:48 | 显示全部楼层 |阅读模式
在看STM32的不完全手册时,遇到这样一个东西看不懂了,希望高手给我细致讲解下是什么意思?基础不太好……我刚看明白SRAM对应别名区的地址计算。谢谢大家不吝赐教我。
#define BITBAND(addr ,  bitnum) ((addr & 0xF0000000)+0x2000000+((addr
&0xFFFFF)<<5)+(bitnum<<2))  
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))  
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))
chenxiaomai 发表于 2011-6-14 11:45 | 显示全部楼层
详情请参考cortex-m3技术参考手册 + cortex-m3权威指南
。。。。。。。。。。。
其实,我都没搞太懂,朦胧ing
dosculler 发表于 2011-6-14 18:48 | 显示全部楼层
第一条
#define BITBAND(addr ,  bitnum) ((addr & 0xF0000000)+0x2000000+((addr
&0xFFFFF)<<5)+(bitnum<<2))  
比如addr=0 bitnum=0,则BITBAND(addr, bitnum)=0&0xF0000000+0x2000000+(0&0xFFFFF)<<5……计算下去,结果其实就是一个16进制数

第二条
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))  
就是定义一个地址为addr的寄存器

第三条
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))
结果这条其实就是把第一条计算出来的地址放在第二条里被定义成一个“以第一条数据为地址的寄存器”,又被定义成第三条BIT_ADDR(addr, bitnum)

不知道听懂了没有,个人理解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

13

帖子

1

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

0

主题

13

帖子

1

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