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.

MSP430FR FRAM读写

Expert 2115 points
Other Parts Discussed in Thread: MSP430FR5994

使用#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 说:

    使用#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};

    你好,请问哪颗芯片?

  • MSP430FR5994

  • 参考这个帖子:http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/p/144094/406740.aspx#406740

  • .cmd文件如上所示示可以正常读写,但此时使用的FRAM(origin = 0x4000, length = 0xBF80) , 如何更改到FRAM2区域?直接将 > 0x4000 改为 > 0x10000程序不能正常运行,附件是完整的cmd文件

    lnk_msp430fr5994.rar
  • .cmd文件如附件所示,但此时使用的FRAM(origin = 0x4000, length = 0xBF80) , 如何更改到FRAM2区域?直接将 > 0x4000 改为 > 0x10000程序不能正常运行

    lnk_msp430fr5994.rar
  • 你好

    不是特别清楚你要做什么,前面在FRAM地址自定义变量的问题解决了吗?你为什么要把 0x4000 改为 > 0x10000呢?只改这个肯定不行啊,要把长度也要修改不然地址空间定义有重叠。

  • 使用#pragma PERSISTENT 在FRAM地址自定义变量,但是可以使用的空间有限,只有47KB,比如我要定义两个24kB的数组就会溢出,所以需要改地址,MSP430FR5994默认的配置将FRAM分为两大部分:

    FRAM : origin = 0x4000, length = 0xBF80
    FRAM2 : origin = 0x10000,length = 0x34000

    我需要在FRAM2区域内自定义变量?