我尝试了解MKZW01Z4微控制器。当我查看MKZW01Z4.h文件时,我看到了宏定义:
* GPIO - Register instance definitions */
/* GPIOA */
#define GPIOA_PDOR GPIO_PDOR_REG(GPIOA)
#define GPIOA_PSOR GPIO_PSOR_REG(GPIOA)
#define GPIOA_PCOR GPIO_PCOR_REG(GPIOA)
#define GPIOA_PTOR GPIO_PTOR_REG(GPIOA)
#define GPIOA_PDIR GPIO_PDIR_REG(GPIOA)
#define GPIOA_PDDR GPIO_PDDR_REG(GPIOA)
据我了解,这是给端口D寄存器命名。但实际上,我希望他们给内存中与地址对应的地址命名,例如:
#define GPIOA_PDOR 0xE2C3
为什么GPIO_PDOR_REG(GPIOA)对编译器比GPIOA_PDOR更清晰?
答案 0 :(得分:1)
您没有尝试了解uC,而是尝试了解宏。我猜GPIOx寄存器与GPIOx基址的偏移量相同。因此,这些宏可能只是将此偏移量添加到基址,并且它们是通用的,例如,如果将GPIOA更改为GPIOB作为宏参数,则将获得GPIOB端口的寄存器地址。对于程序员来说,.h文件的便利作者也添加了GPIOx_xxxR定义。