TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430使用CCS定义全局变量的问题

我使用的是msp430fr6047。

我在一个头文件中做了一个define:

#define REG_HOLDING_START                   1000

在main.c中定义一个全局变量:

unsigned short RegHoldingStart = REG_HOLDING_START;

在另一个文件中使用这个全局变量:

extern unsigned short RegHoldingStart;

但是在仿真时发现这个全局变量发生了变化(我没有其他任何对此变量赋值的操作,其他如此定义的全局变量也出现了这个问题)。

请问是我哪里操作错了吗?

灰小子:

猜不出。建议上传代码

XIANFENG XUE:

回复 灰小子:

不好意思问题说的太含糊,代码太乱贴上来反而看的不便。

我的意思是我在main.c文件中定义了一个全局变量a :unsigned int a = 12;编译完成后进行debug,监控这个变量发现a的值不是12,而是一个随机数。

不知道这么说是不是很清楚。

gaoyang9992006:

你后面操作了这个变量,而这个变量之前初始值是个常数。。

Susan Yang:

还是建议贴程序吧

Seven Han:

有可能是watch windows显示的问题,您到ccs view memory里看一下值。

Hao Mengzhen:

你定义和赋值分成两句语句呢?

Loops:

你unsigned short 类型, 1000 超过了这个类型的表示范围. 你试试定义成20. 应该就好了.
另外,你可以测试下, 编译器优化是否有影响.

Xiaodong LI:

回复 Loops:

在赋值语句之后设一个断点,看看在这个时刻这个变量的值是不是符合预期

user5308440:

找到原因了吗?我也遇到这个问题.

user5308440:

回复 Loops:

跟类型无关,感觉是没有执行初始化变量,我也遇到:
函数外数据结构初始化:PWMGEN pwm1 = PWMGEN_DEFAULTS;
发现pwm1 里的值是随机的.

赞(0)
未经允许不得转载:TI中文支持网 » msp430使用CCS定义全局变量的问题
分享到: 更多 (0)