请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2433 工具/软件:TI C/C++编译器
我希望在 FRAM 中保留 A 类的两个实例。
该类拥有(具有 A)另一个 B 类的实例,该实例也应保留。
我需要持久性、因为我使用的是 LPM4.5。
当我尝试初始化持久性类实例时,我的一个断言将失败。
B 类{
专用:
int 值;
public:
void init(){
值= 0;
assert (value ==0);//<<<< 断言失败
}
空增量(){value++;}
int get(){return value;}
;
A 类{private
:
b b;
公开:
//只将委托给 B 拥有的实例
void init(){b.init();}
void increment(){b.increment();}
int get(){return b.get();}
};
//未初始化、linker.cmd 将 TI.noinit 段置于 FRAM
#pragma NOINIT
A;
#pragma NOINIT
A;#pragma NOINIT A;
#pragma PERSISTENT
static int myCounter = 0;
main()...省略
我的 main()反复睡眠 LPM4.5并唤醒。
在冷启动时,我调用 a.init (),它将委托给 B.init。
B.init 中的断言失败。
(在不是冷启动的唤醒时、我会同时递增 myCounter 和实例 a
然后比较它们的值。
以确保它们都是持久的。
但我从未如此遥远。)
我正在使用 CCS 8.1.2 (我尝试升级、但在 Eclipse 中升级失败、我需要重新安装?)。
在 Linux 上。
EXP430FR2433 Launchpad