我用的ccs9.0, 基于28069M; 采用的是motorware下的project_lab13b例程。我在例程中加入了我自己的其他程序,一切运行正常。
然而,最近在加入canopen通讯时,有一个结构体的初始化碰到了问题,具体表现是结构体中各元素不能正确的赋给对应的值,甚至是错误的。具体例程如下:
定义了如下一个结构体(实际结构体元素比这个多的多,此处以4个元素为例):
在.h文件中定义如下结构体:
struct CANOPEN_TEST
{
UNS32 test0000;
UNS16 test1000;
UNS8 test1001;
UNS32 test1002;
};
在.c文件中定义初始化结构体如下:
struct CANOPEN_TEST CanTestInit={
.test0000 = 0x00040132,
.test1000 = 0x1185,
.test1001 = 0x5,
.test1002 = 0x00040222,
};
在主函数文件开头定义如下:
struct CANOPEN_TEST CanTest;
extern struct CANOPEN_TEST CanTestInit;
在主函数开始,定义如下初始化语句:
CanTest = CanTestInit;
或者逐个元素赋值也可以(此处略)。
编译无误,运行结果是:
CanTest.test0000 = 0x00040132;
CanTest.test1000 = 0x1185;
CanTest.test1001 = 0;
CanTest.test1002 = 0;
很明显,后面2个元素没有赋给初始值;这是怎么回事?
另外,实际当另一个结构体中元素很多时,每一个元素的值都不是初始化结构体中原来给的的初始值,感觉没有传递过去,或者是乱的。这是怎么回事?
可能的问题或者原因在哪里?好几天了就耗在这个问题上毫无进展。



