ZHCA930B June 2014 – August 2021 MSP430FR2032 , MSP430FR2033 , MSP430FR2110 , MSP430FR2111 , MSP430FR2311 , MSP430FR2433 , MSP430FR2532 , MSP430FR2533 , MSP430FR2632 , MSP430FR2633 , MSP430FR4131 , MSP430FR4132 , MSP430FR4133 , MSP430FR5720 , MSP430FR5721 , MSP430FR5722 , MSP430FR5723 , MSP430FR5724 , MSP430FR5725 , MSP430FR5726 , MSP430FR5727 , MSP430FR5728 , MSP430FR5729 , MSP430FR5730 , MSP430FR5731 , MSP430FR5732 , MSP430FR5733 , MSP430FR5734 , MSP430FR5735 , MSP430FR5736 , MSP430FR5737 , MSP430FR5738 , MSP430FR5739 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5870 , MSP430FR5872 , MSP430FR58721 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5922 , MSP430FR59221 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5970 , MSP430FR5972 , MSP430FR59721 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR5994 , MSP430FR6820 , MSP430FR6822 , MSP430FR68221 , MSP430FR6870 , MSP430FR6872 , MSP430FR68721 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6920 , MSP430FR6922 , MSP430FR69221 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6970 , MSP430FR6972 , MSP430FR69721 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891
CCS 中具有两个可以使用的 C 语言 pragma 语句:#pragma PERSISTENT
和 #pragma NOINIT
。在使用这些 pragma 语句之前,请参阅Topic Link Label3.4.1,了解链接器命令文件要求。有关这些 pragma 指令的更多详细信息,请参阅《MSP430 优化 C/C++ 编译器用户指南》。
PERSISTENT
会导致变量不会被 C 启动例程初始化,而是在首次将应用代码加载到目标器件中时被调试工具链初始化。因此,在某些情况下(例如下电上电之后)这些变量不会初始化,因为它们已被彻底排除在 C 启动初始化过程之外。将变量声明为 PERSISTENT
会将它们分配到 .TI.persistent
链接器存储器段中。
下面这个代码片段显示了变量如何被声明为persistent(永久性):
#pragma PERSISTENT(x)
unsigned int x = 5;
NOINIT
的工作方式与 PERSISTENT
类似,但这些变量起初从未被工程的二进制映像文件初始化,也不会在代码下载期间被调试工具链初始化。将变量声明
为 NOINIT
会将它们分配到 .TI.noinit
链接器存储器段中。请注意,与 PERSISTENT
不同,声明为 NOINIT
的变量不会被默认的链接器命令文件分配到 FRAM 中,因此当需要此功能时,需要对链接器命令文件进行少量修改。下面是相应的代码片段:
#pragma NOINIT(x)
unsigned int x;