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.

[参考译文] MSP430FR2433:是否应该将一个被变成 persistent()或 NOINIT()的变量指定为 volatile?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/987910/msp430fr2433-shall-a-variable-made-persistent-or-noinit-be-specified-as-volatile

器件型号:MSP430FR2433

在声明变量并使其成为 PERSITENT()或 NOINIT()时,是否应将变量指定为 volatile?

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

    尊敬的 Thomas:

    这取决于变量的使用方式。

    每当变量的值可能意外变化时、应将其声明为 volatile。 实际上、只有三种类型的变量可以改变:

    • 存储器映射外设寄存器(外设寄存器)
    • 由中断服务例程修改的全局变量
    • 多线程应用程序中的全局变量

    PERSISTENT 或 NOINIT pragma 适用于非易失性存储器中的变量、在本例中为 FRAM、通常采用写保护机制进行保护。  但是、如果您有一个可以在主线程和 ISR 中修改的 persistent 或 NOINT 变量、您可能仍应将其限定为易失性变量、以使其位于安全侧。

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

    谢谢 Dennis。 继续保持良好的工作。