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.

[参考译文] CCS/MSP430G2553:将浮点值存储到闪存中

Guru**** 2540720 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/579384/ccs-msp430g2553-store-float-value-into-flash

部件号:MSP430G2553

工具/软件:Code Composer Studio

您好,

我想知道如何将浮点值存储在闪存中,存储为2个字或4个字节?  

谢谢大家。

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



    const float var1;

    斯蒂芬
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复
    但是,我想把它写在信息存储器或主存储器中
    现在,我建立了在内存中写入char short和long (2 short)的能力。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Joe,

    我很困惑。 在您的初始帖子中,您说您想将浮点数置入闪存中。  将const添加到变量声明中将使变量处于闪存状态。

    请您发布一小段代码,以显示您当前的操作。

    谢谢!

    斯蒂芬

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

    以下是将char数据写入内存的示例

    void WriteToFlash (char*地址,char val)
    {
    	char* flash_ptr;
    	FCTL3 = FWKEY;
    	flash_ptr =地址; //初始化闪存指针
    	While (FCTL3 & Busy);
    	FCTL1 = FWKEY + WRT;
    	*FLASH_PTR = val;
    	While (FCTL3 & Busy);
    	FCTL1 = FWKEY; //清除WRT位
    	FCTL3 = FWKEY + LOCK; //设置锁定位
    }
    

    另一个写长数据的例子是:

    	WriteFWToFlash(((short*)MEM_SLOPE _H,(short)(wt_slope & 0xffff);// Slope
    	WriteShortToFlash((((short*)MEM_SLOT_L,(short)((wt_slope >>16)& 0xff));// ShortPTR WriteShortToFlash(short*地址
    
    ,short_FLASH
    =FLASH
    	
    	
    	=短距离FLASH //初始化闪存指针
    	While (FCTL3 & Busy);
    	FCTL1 = FWKEY + WRT;
    	*FLASH_PTR = val;
    	While (FCTL3 & Busy);
    	FCTL1 = FWKEY; //清除WRT位
    	FCTL3 = FWKEY + LOCK; //设置锁定位
    }
    

    我想知道如何将浮点写入内存

    感谢你的帮助

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

    好的。 我认为以下内容应该有效。

    斯蒂芬

    float var1 = 3.1.4159万 ;
    unsigned long int wt_slope;
    
    
    int main(void){
    
    wt_slope =*(无符号长整型*)&var1;
    WriteShortToFlash(((Short*)MEM_SLOT_H,(Short)(wt_slope & 0xff));//斜率
    WriteShortToFlash(((short*)MEM_SLOT_L,(short)((wt_slope >>16)& 0xff));//斜率
    } 

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

    这是否解决了您的问题? 如果是,请选择验证。

    谢谢!
    斯蒂芬