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.

[参考译文] MSP430FR5849:持久数据及其实际工作原理

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1450189/msp430fr5849-persistent-data-and-how-it-actually-works

器件型号:MSP430FR5849

工具与软件:

您好!

我目前尝试将论坛中列出的 MSP 用作数据收集器、并尝试使用"#pragma PERSISTENT "寄存器将数据存储到 FRAM 中。 我完全不明白这是怎么工作的。 编译器告诉我、必须对变量进行初始化、但这也不会清除 FRAM 中的数据吗? 是否有办法设置变量、以便在断电时不会在启动时清除变量? 下面介绍了我如何在代码中设置变量、非常感谢您为我提供任何帮助!

#pragma persistent (accel_x)
#pragma persistent (accel_y)
#pragma persistent (accel_z)

signed char accel_x[array_length]={0};
signed char accel_y[array_length]={0};
signed char accel_z[array_length]={0};

谢谢!

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

    pragma PERSISTENT 将引用的变量放入名为".TI.persistent"的段中。 由于这既不是".data"也不是".bss"、因此不会在程序启动时(重新)初始化。 但它会在程序下载时初始化。

    链接器(通过.cmd 文件)将该段放在低 FRAM 中。 程序启动时、通过配置 MPU、可使该区域(如果大小不为0)可写。 (该示例适用于 FR5/FR6系列;FR2系列则不同、因为没有 MPU。)

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

    那么、持久性变量中存储的任何内容都会在下电上电时保留该值、直到再次写入该变量?

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

    有。 通过查看项目中的链接器.cmd 文件、你可以看到这是如何实现的。 (查找".TI.persistent"。)