我使用的是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 里的值是随机的.