位带区操作
STM32F10x支持位带操作的两个内存区的范围是:
0x2000_0000-0x200F_FFFF(SRAM 区中的最低 1MB)
0x4000_0000-0x400F_FFFF(片上外设区中的最低 1MB)
例如操作GPIOB5->ODR寄存器(GPIOB_ODR寄存器的地址为0x4001080c,则A=0x4001080c)
位带区: 支持位带操作的地址区。
位带别名: 对别名地址的访问最终会变换成对位带区的访问。
AliasAddr= 0x42000000+((A-0x40000000)*8+n)*4 =0x42000000+ (A-0x40000000)*32 + n*4
所操作的位带别名区地址:
AliasAddr=*(volatile uint32_t)0x42000000+((0x4001080c-0x40000000)*8+5)*4
=*(volatile uint32_t)0x42000000+ (0x4001080c-0x40000000)*32 + 5*4
=*(volatile uint32_t)0x42218194
#define PB5 *(volatile uint32_t)0x42000000+((0x4001080c-0x40000000)*8