全局变量能不能在定义时初始化?
比如我现在定义全局变量:int a=10;
这个初始化值10,如果我是把程序load到ram中,a的确是10,但如果我把程序烧写到falsh中去,则a的值没有被初始化。
我现在都是在main函数的开始加上一段给全局变量赋值的代码来初始化其值,可以有办法在定义时初始化全局变量值吗?
我用的是F2812,CCS3,以及TI标准的那个CMD文件。 那就把初始化代码放到main函数外面试试 最好贴出代码让大家帮你看看 我现在都是在main函数的开始加上一段给全局变量赋值的代码来初始化其值
其实这样做更可靠,而且可移植性好,我都是这么做的。
楼主的问题我是否可以理解为仿真是对的,但烧到flash里去就错了。 是的, 完全可以. 而且效率很高
不要担心, 启动代码会从 flash 里面帮你加载相应的值的 比如代码:
int a=10;
main()
{
while(1)
{
send(a);
a++;
}
}
如果是load,则a是从10开始,但如果烧写到F2812的flash中,从a从0开始 airwill 发表于 2013-1-21 14:10 static/image/common/back.gif
是的, 完全可以. 而且效率很高
不要担心, 启动代码会从 flash 里面帮你加载相应的值的 ...
如何实现,需要改CMD文件吗,我现在的问题就是没有加载相应的值。 我手头的程序测试了一下, 用调速器看完全正常.
不过我的不是 F2812,CCS3 ,而是 F28035, CCS5.1
还是不大相信会有你的问题. build option里面把run time initialization改成load time initialization 设置正确的话,进入main之前,boot代码就会把变量初始化,具体的做法是把flash里面的数据值拷贝到.data seg
页:
[1]