21ic电子技术开发论坛 单片机与嵌入式系统 ST MCU STM32入门求解
发新帖我要提问
返回列表
打印

STM32入门求解

[复制链接]
1444|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

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