上图是STM32的存储器地址映射图,地址范围为:0x0000_0000-0xFFFF_FFFF;其中代码区的地址是从0x0800_0000开始的,结束于0x0800_0000+芯片的Flash的大小,RAM的起始地址是0x2000_0000,结束于0x2000_0000+芯片的RAM大小。
支持位带操作的两个内存区的范围是:
0x2000_0000‐0x200F_FFFF( SRAM 区中的最低 1MB)
0x4000_0000‐0x400F_FFFF(片上外设区中的最低 1MB)
其中对于SRAM位带区的某个比特位,假设它的地址为Addr,位序号为n(0<=n<=7),则该比特在别名区的地址为:
Bit_Addr=0x22000000+((Addr-0x20000000)*8+n)*4=0x22000000+(Addr-0x20000000)*32+n*4;
对于片上外设位带区的某个比特位,假设它的地址为Addr,位序号为n(0<=n<=7),则该比特在别名区的地址为:
Bit_Addr=0x42000000+((Addr-0x40000000)*8+n)*4=0x42000000+(Addr-0x40000000)*32+n*4;