使用_at_关键字对存储器进行绝对地址定位程序如下#include<reg51.h>char xdata LED_Data[50] _at_ 0x8000;main(){ LED_Data[0] = 0x23;}在keil中运行以上程序可以在存储器窗口中输入 x:0x8000 可以看到0x8000地址中的值为0x23.值得指出的几点是1.在给变量LED_Data[50]定位绝对地址空间时,不能对其赋初值。2.char xdata LED_Data[50] _at_ 0x8000;这条语句不能主函数中。有些网友提到在按着keil说明中用_at_进行绝对地址定位时,编译会出现错误274,就是将这条语句放在主函数中的原因。3.keil中地址是自动分配的,所以除非特殊情况否则不提倡使用绝对地址定位。不要把c当作汇编使用。
对于stm32,内存分配u16 testsram[250000] __attribute__((at(0XC0000000)));//测试用数组 |