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.

[参考译文] MSP430FR5994:为什么FRAM中的持久性变量无法正确初始化?

Guru**** 2611705 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/662905/msp430fr5994-why-does-my-persistent-variable-in-fram-not-get-initialized-correctly

部件号:MSP430FR5994

  我已使用__attribute___(((persistent))指令在代码中定义了一个持久性变量。  在代码中,我将变量count初始化为零。  它会编译,并且它的值在断电时保持不变,正如我预期的那样,但闪存设备后的count的初始值为0xFF,而不是零。  无论我在代码中将初始值设置为什么,它总是以0xFF结束。  我在Linux上使用GCC编译器和MSPFlasher。   对于初始值错误的原因有何建议?   

__attribute__((持久性)) uint8_t count = 0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    试用

    UINT8_t __attribute__(((持久性)))计数= 0;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面是示例代码,它将向您展示如何在FRAM中使用数据。  

    #include <MSP4S.h>
    
    #define write_size 128
    
    void FRAMWrite(void);
    
    unsigned char count =0;
    unsigned long data;
    
    #if defined(__TI_Compiler_version__)
    #pragma persistent(fRAM_write)
    unsigned long FRAM_write[write_size]={0};
    #Elif defined(__NUC_systems_icc__)
    __persistent defined long fRAM_write_write_size={0}
    
    
    
    
    #endif
    
    int main(void){
    
    WDTCTL = WDTPW | WDTHOLD; //停止WDT
    
    //配置GPIO
    P1OUT &=~BIT0; //清除WFP 1.0 输出闩锁,以确定开机状态
    P1DIR || BIT0; //将WFP 1.0 设置为输出方向
    
    //禁用GPIO开机默认高阻抗模式以激活
    //以前配置的端口设置
    PM5CTL0 &=~LOCKLPM2;
    
    //初始化虚拟数据
    数据= 0x1.0001万;
    
    同时(1)
    {
    数据+= 0x1.0001万;
    FRAMWrite();
    COUNT++;
    IF (计数> 100)
    {
    P1OUT ^= 0x01; //切换LED以显示512K字节
    计数= 0; //...已编写
    数据= 0x1.0001万;
    }
    }
    }
    
    作废FRAMWrite(void){
    
    无符号int i =0;
    
    对于(i = 0;i < write_size;I++)
    {
    fRAM_write[i]=数据;
    }
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    类型和属性的排序没有任何区别。  我已将gcc编译器更新到最新版本,解决了该问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    类型和属性指令的排序没有区别。 修复的问题是将gcc编译器更新到较新的版本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的更新。 我将关闭该问题。