宏定义请教

2019-07-20 20:57发布

#define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)
这个宏定义是怎么强制转换成GPIOA的地址的?总觉得少了一个赋值动作?特请教各位。谢谢!
我将其一步一步展开后如下:

第一步是用GPIOA用
   GPIO_TypeDef *GPIOA_BASE,这只是声名了一个结构体指针。
#define GPIOA_BASE (AHB1PERIPH_BASE +0X0000)
   展开后如下:
   GPIO_TypeDef *(AHB1PERIPH_BASE +0X0000)
#define AHB1PERIPH_BASE  (PERIPH_BASE +0X00020000)
  再展开宏得:
   GPIO_TypeDef *(PERIPH_BASE+0X00020000+0X0000)
#define PERIPH_BASE  (uint32_t)0x400000000)
最后展开宏得到的最终形式是:
    GPIO_TypeDef *0x40020000
不懂。请教了。谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。