} GPIO_TypeDef;只表示对该结构体申明,而((GPIO_TypeDef *) GPIOC_BASE)表示将其强制转换为指针类型,define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)的意思是用GPIOC来替换((GPIO_TypeDef *) GPIOC_BASE),那么这个时候GPIOC就是指针了。所以程序里面你才敢用GPIOC->CRL。不要过多纠结 这...
这是宏定义,是预编译命令。即,在正式编译程序前,先做字符串替代,替代完毕再编译。例如:define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)预编译命令 说,凡后面程序中出现 GPIOA 的地方,把 GPIOA 换成:((GPIO_TypeDef *) GPIOA_BASE) 后再编译。后面的 #define 命令 类似。例如...
将GPIOB_BASE强转为GPIO_TypeDef 类型的指针
这个你要看STM32的参考手册,像CRL、CRH、IDR、ODR等都是一个端口中的寄存器,对寄存器的读写操作实现你需要的功能。
((GPIO_TypeDef *) GPIOA_BASE) 后再编译。后面的 #define 命令 类似。例如#define GPIOI ((GPIO_TypeDef *) GPIOI_BASE)即 凡后面程序中出现 GPIOI 的地方,把 GPIOI 换成:((GPIO_TypeDef *) GPIOI_BASE) 后再编译。---另外:(GPIO_TypeDef *) ... 是强制转换。GPIO什么 替代后就有了 GPIO什么...