STM32使用__attribute__((at(0x68000000)))

含义

将变量定义到绝对地址

示例

__align(32) u8 mem2base[0] __attribute __ ((at(0X68000000)));
首先 __align(32) 意味着控制变量mem2base[0]的数据进行32字节对齐;
然后 __attribute __ ((at(0X68000000))); 意味着把变量mem2base[0]的地址定位至0X68000000;
__attribute __ ()本身用于修改变量属性;加上at()即为修改变量的地址属性。

注意

attribute的前后都是两个下划线"_"组成,此外,at后面的地址要保证是可用的RAM地址。如果要定义在ROM的绝对地址上时,注意要在变量类型前加上const修饰,否则编译器会报警告。
const uint8_t test[5] attribute((at(0X08000100))) = {0x12,0x34,0x56,0x78,0x90};

你可能感兴趣的:(STM32笔记)