使用#pragma PERSISTENT命令可以定义变量到FRAM,并且正常读写,代码如下:
#pragma PERSISTENT(data);
uint16_t data[1024] = {0};
如果再加上#pragma LOCATION指定地址后,编译没问题,但是程序运行后无法正常读写变量,为什么?
#pragma LOCATION(data, 0x10000);
#pragma PERSISTENT(data);
uint16_t data[1024] = {0};
m:
?
m:
求回答啊
m:
求回答
Ling Zhu2:
m
使用#pragma PERSISTENT命��可以定义变量到FRAM,并且正常读写,代码如下:#pragma PERSISTENT(data);uint16_t data[1024] = {0};
如果再加上#pragma LOCATION指定地址后,编译没问题,但是程序运行后无法正常读写变量,为什么?
#pragma LOCATION(data, 0x10000);
#pragma PERSISTENT(data);
uint16_t data[1024] = {0};
m:
回复 Ling Zhu2:
MSP430FR5994
Gary Gao:
回复 m:
参考这个帖子:http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/p/144094/406740.aspx#406740
m:
回复 Gary Gao:
.cmd文件如上所示示可以正常读写,但此时使用的FRAM(origin = 0x4000, length = 0xBF80) , 如何更改到FRAM2区域?直接将 > 0x4000 改为 > 0x10000程序不能正常运行,附件是完整的cmd文件
m:
回复 Gary Gao:
.cmd文件如附件所示,但此时使用的FRAM(origin = 0x4000, length = 0xBF80) , 如何更改到FRAM2区域?直接将 > 0x4000 改为 > 0x10000程序不能正常运行
Gary Gao:
回复 m:
你好
不是特别清楚你要做什么,前面在FRAM地址自定义变量的问题解决了吗?你为什么要把 0x4000 改为 > 0x10000呢?只改这个肯定不行啊,要把长度也要修改不然地址空间定义有重叠。
m:
回复 Gary Gao:
使用#pragma PERSISTENT 在FRAM地址自定义变量,但是可以使用的空间有限,只有47KB,比如我要定义两个24kB的数组就会溢出,所以需要改地址,MSP430FR5994默认的配置将FRAM分为两大部分:
FRAM : origin = 0x4000, length = 0xBF80 FRAM2 : origin = 0x10000,length = 0x34000
我需要在FRAM2区域内自定义变量?