#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) 是什么意思

[复制链接]
查看11 | 回复4 | 2018-3-3 20:37:03 | 显示全部楼层 |阅读模式
这是宏定义,是预编译命令。即,在正式编译程序前,先做字符串替代,替代完毕再编译。例如:#define GPIOA
((GPIO_TypeDef *) GPIOA_BASE)预编译命令 说,凡后面程序中出现GPIOA 的地方,把 GPIOA换成:((GPIO_TypeDef *) GPIOA_BASE) 后再编译。后面的 #define 命令 类似。例如#define GPIOI
((GPIO_TypeDef *) GPIOI_BASE)即 凡后面程序中出现GPIOI 的地方,把 GPIOI换成:((GPIO_TypeDef *) GPIO...
回复

使用道具 举报

千问 | 2018-3-3 20:37:03 | 显示全部楼层
#define GPIOA((GPIO_TypeDef*)GPIOA_BASE)1)GPIOA_BASE被强制转换为地址,空间以GPIO_TypeDef的类型进行构建,首址为GPIOA_BASE,空间内有成员,之间依各自固有类型顺序分配相应空间;2)GPIOA宏展开,即为紧跟其后的具体内容,这样它就是一个指针了:指向以GPIOA_BASE为首址的...
回复

使用道具 举报

千问 | 2018-3-3 20:37:03 | 显示全部楼层
文件stm32f10x_map.h包含了所有外设控制寄存器的结构,其中GPIO为:typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef; typedef struct { vu32 EVCR; vu32...
回复

使用道具 举报

千问 | 2018-3-3 20:37:03 | 显示全部楼层
在头文件stm32f10x.h内 已经 作了 预处理了 #define AFIO_BASE
(APB2PERIPH_BASE + 0x0000)#define EXTI_BASE
(APB2PERIPH_BASE + 0x0400)#define GPIOA_BASE
...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行