现在我正在执行以下程序。
# pragma RETAIN (Tname)
# pragma DATA_SECTION (Tname、"。 信息发展");
const char Tname [8]="鳟鱼";
# pragma RETAIN (UDATA)
# pragma 位置(UDATA、0x4600)
const int UDATA [3][8]={
{0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF、0xFF、0xFF}、
{0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF、0xFF、0xFF}、
{0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF、0xFF、0xFF}、
主(){
const int UDATA [3][8]={
{1、2、3、4、5、 6、7、8}、
{11、12、13、14、15、 16、17、18}、
{21、22、23、24、25、 26、27、28}、};
}
在#pragma 位置设置的 UDATA 被写入0x4600、
主例程中的 UDATA 被写入 RAM 和0x4428。
不会重写0x4600的值。 是这样吗?
我认为 UDATA 的地址将为0x4600、但如果在主例程中确认了该地址、则将其设置为 RAM 区域。
此外、
# pragma RETAIN (数据)
# pragma 位置(DATA、0x4500)
int data [8]={1、2、3、4、5、 6、7、8};
int data 2 [16]={1};
如果您定义它、数据将放置在0x4500、但您设置的数据将为-1。
Data2被放置在 RAM 中。
为什么数据不得到反映?
用于对 FRAM 区域进行变量声明、适用于每个变量
# pragma RETAIN ()
# pragma 位置()
有必要这么做吗?
此致。