pdrs 发表于 2013-1-20 19:37

全局变量能不能在定义时初始化?

比如我现在定义全局变量:
int a=10;
这个初始化值10,如果我是把程序load到ram中,a的确是10,但如果我把程序烧写到falsh中去,则a的值没有被初始化。
我现在都是在main函数的开始加上一段给全局变量赋值的代码来初始化其值,可以有办法在定义时初始化全局变量值吗?

我用的是F2812,CCS3,以及TI标准的那个CMD文件。

zhangmangui 发表于 2013-1-21 09:37

那就把初始化代码放到main函数外面试试   最好贴出代码让大家帮你看看

jlass 发表于 2013-1-21 09:49

我现在都是在main函数的开始加上一段给全局变量赋值的代码来初始化其值

其实这样做更可靠,而且可移植性好,我都是这么做的。

楼主的问题我是否可以理解为仿真是对的,但烧到flash里去就错了。

airwill 发表于 2013-1-21 14:10

是的, 完全可以. 而且效率很高
不要担心, 启动代码会从 flash 里面帮你加载相应的值的

pdrs 发表于 2013-1-21 19:03

比如代码:

int a=10;

main()
{
    while(1)
    {
      send(a);
      a++;
    }
}

如果是load,则a是从10开始,但如果烧写到F2812的flash中,从a从0开始

pdrs 发表于 2013-1-21 19:04

airwill 发表于 2013-1-21 14:10 static/image/common/back.gif
是的, 完全可以. 而且效率很高
不要担心, 启动代码会从 flash 里面帮你加载相应的值的 ...

如何实现,需要改CMD文件吗,我现在的问题就是没有加载相应的值。

airwill 发表于 2013-1-21 21:11

我手头的程序测试了一下, 用调速器看完全正常.
不过我的不是 F2812,CCS3 ,而是 F28035, CCS5.1
还是不大相信会有你的问题.

optical85 发表于 2013-1-23 10:01

build option里面把run time initialization改成load time initialization

bruceding 发表于 2013-1-23 14:35

设置正确的话,进入main之前,boot代码就会把变量初始化,具体的做法是把flash里面的数据值拷贝到.data seg
页: [1]
查看完整版本: 全局变量能不能在定义时初始化?