想把数据存储到FRAM里面,用__persisent定位之后,可以实现掉电保持,但是,重新写程序之后,这个区域是擦除的!
现在想着把数据放到INFOR段里面,修改了配置文件之后,也可以写到里面了-Z(CONST)DATA16_P,DATA20_P=1800-19FF,但是
重新烧写程序之后仍然会把里面的数据清除!
之前用F4152只要IAR里面不设置清除信息区就不会清除,现在的FR系列的同样没有设置清除信息区,可是编程之后却清除了呢???????
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
想把数据存储到FRAM里面,用__persisent定位之后,可以实现掉电保持,但是,重新写程序之后,这个区域是擦除的!
现在想着把数据放到INFOR段里面,修改了配置文件之后,也可以写到里面了-Z(CONST)DATA16_P,DATA20_P=1800-19FF,但是
重新烧写程序之后仍然会把里面的数据清除!
之前用F4152只要IAR里面不设置清除信息区就不会清除,现在的FR系列的同样没有设置清除信息区,可是编程之后却清除了呢???????
你好,我在进行写操作的时候,也没有像手册里面说的那样,将保护位进行清o操作(DFWP = 0),也是可以将数据写到FRAM里面去,请问这个是怎么回事???
主要代码如下:
__persistent unsigned long FRAM_write[128] = {0};
int main(void)
{
int i = 0;
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
// Configure GPIO
P9OUT |= BIT4; // led off
P9DIR |= BIT4; // Set P1.0 to output direction
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;
if (FRAM_write[0] == 0x12345678)
{
P9OUT &= ~BIT4;//led on
}
else
{
P9OUT |= BIT4;//led off
}
while(1)
{
for (i=0; i<128; i++)
{
FRAM_write[i] = 0x12345678;
}
while (1);
}
}
操作环境是IAR+FR6989,实际验证掉电不丢失,但是重新用IAR写程序,对应的区域会清0,而且我这里面并没有对写保护位进行清0也是可以正常写入,请问怎么回事???
难道用__persisent定义之后,IAR会自动进行???