.h文件中寄存器的定义

时间:2017-04-28 14:04:01

标签: macros microcontroller

我尝试了解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更清晰?

1 个答案:

答案 0 :(得分:1)

您没有尝试了解uC,而是尝试了解宏。我猜GPIOx寄存器与GPIOx基址的偏移量相同。因此,这些宏可能只是将此偏移量添加到基址,并且它们是通用的,例如,如果将GPIOA更改为GPIOB作为宏参数,则将获得GPIOB端口的寄存器地址。对于程序员来说,.h文件的便利作者也添加了GPIOx_xxxR定义。