如:端口A的第6个引脚
GPIOA_6=0x42000000+(GPIOA->ODR - 0x40000000)*8*4+6*4
=0x42000000+((AHB1PERIPH_BASE+0x0000+0x14)-0x40000000)*8*4+6*4
=0x42000000+((PERIPH_BASE + 0x00020000+0x0000+0x14)-0x40000000)*32+24
=0x42000000+((0x40000000)+0x00020000+0x0000+0x14)-0x40000000)*32+24
=0x42000000+(0x40020014-0x40000000)*0x20+0x18
=0x42000000+0x20014*0x20+0x18
=0x42400298
#define PAout(n) *(volatile uint32_t *)(0x42000000+((uint32_t)&GPIOA->ODR - 0x40000000)*32+n*4)
#define PXout(n) *(volatile uint32_t *)(0x42000000+((uint32_t)&GPIOX->ODR - 0x40000000)*32+n*4)
这可以直接使用
PAout(6) = 1;