#define GPIOA ((GPIO_typedef *) GPIOA_BASE 此预处理将GPIOA变成GPIO_typedef 类型的结构体指针,默认指向了GPIOA的基地址首。在调用->指向不同结构体成员时,指针就会根据成员变量类型的大小跳不同的步进,进而访问到不同的成员地址,对不同成员地址(其实就是GPIO的各功能寄存器)赋值处理就完成操作GPIO。这是我...
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)GPIOC_BASE是GPIOC模块的起始地址.GPIO_TypeDef 是一结构体,如下.typedef struct{vu32 CRL;vu32 CRH;vu32 IDR;vu32 ODR;vu32 BSRR;vu32 BRR;vu32 LCKR;} GPIO_TypeDef; 相关知识点: 试题来源: ...
这是宏定义,是预编译命令。即,在正式编译程序前,先做字符串替代,替代完毕再编译。例如:define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)预编译命令 说,凡后面程序中出现 GPIOA 的地方,把 GPIOA 换成:((GPIO_TypeDef *) GPIOA_BASE) 后再编译。后面的 #define 命令 类似。例如...
#define GPIOA ((GPIO_TypeDef*)GPIOA_BASE) 1)GPIOA_BASE被强制转换为地 址,空间以GPIO_TypeDef的 类型进行 构建,首址为GPIOA_BASE,空间内有成员,之间依各自固有类型顺序分配相应空间; 2)GPIOA宏展开,即为紧跟其后的具体内容,这样它就是一个指针了:指向以GPIOA_BASE为首址的结构体空间。所以您给出GPIOA...
将GPIOB_BASE强转为GPIO_TypeDef 类型的指针
GPIOC_BASE是GPIOC模块的起始地址.GPIO_TypeDef 是一结构体,如下.typedef struct{vu32 CRL;vu32 CRH;vu32 IDR;vu32 ODR;vu32 BSRR;vu32 BRR;vu32 LCKR;} GPIO_TypeDef; 扫码下载作业帮搜索答疑一搜即得 答案解析 查看更多优质解析 解答一 举报 typedef struct{vu32 CRL;vu32 CRH;vu32 IDR;vu32 ODR;vu...
#define PERIPH_BASE ((u32)0x40000000)//端口地址#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)//端口地址#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)//端口地址#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)//不明白,这个预定义//把GPIOA_BASE看成指向GPIO_TypeDef结构体的指针吗,GPIOA代表...