可以这么理解,GPIOA和GPIOB对应的寄存器都有一个空间
GPIOA和GPIOB的寄存器除了基地址不同外,偏移地址都相同
假设GPIOA的基地址是0x10,GPIOB的基地址是0x20
每一个gpio有3个寄存器,寄存器A,寄存器B,寄存器C
GPIOA的A寄存器地址为0x10,B为0x11,C为0x12
GPIOB的A寄存器地址为0x20,B为0x21,C为0x22
如果你不用基地址加偏移的方法来记录寄存器,上边这种你需要记录6个地址,而且GPIO和寄存器越多,需要记录的地址就越多
因为每个GPIO的偏移是相同的,如果你使用基地址加偏移的方式来记录的话
你只要记录GPIOA=0x10,GPIO2=0x20 另外 A寄存器偏移0x00,B偏移0x01,C偏移0x02
这时你要记录的是GPIO的数量+寄存器的数量,如果你用上一种方法,则是GPIO的数量*寄存器的数量。