大家好,我有个问题一直解决不了,请教下各位大牛。
我之前在IAR EW430 5.52版本下编辑的程序,但是后面买来的仿真器固件是5.20版本,并且一升级固件的话就崩溃,无法识别JTAG。
所以,我想在想把5.52版本的程序移植成5.20的版本。
移植步骤就是在5.20的环境下新建一个工程,然后把5.52的.c,.h文件拷至工程目录下再添加。
现在碰到一个问题就是,之前为定义管脚方便,在5.52里有这样的程序:
__no_init volatile union(此为头文件的)
{
unsigned __READ char P1IN; /* Port 1 Input */
struct
{
unsigned __READ char P1IN_0 : 1;
unsigned __READ char P1IN_1 : 1;
unsigned __READ char P1IN_2 : 1;
unsigned __READ char P1IN_3 : 1;
unsigned __READ char P1IN_4 : 1;
unsigned __READ char P1IN_5 : 1;
unsigned __READ char P1IN_6 : 1;
unsigned __READ char P1IN_7 : 1;
} P1IN_bit;
} @ 0x0020;
#define weidong1_inner_In P1IN_bit.P1(此为我定义声明的)
程序中引脚都是这样定义的,在5.52中编译下载没有问题,但是现在在5.20下就无法编译
显示错误为:
Error[Pe136]: struct "" has no field "P1" C:\Users\s94549\Desktop\程序移植\main.c 58
当把改成#define weidong1_inner_In P1IN_bit.P1IN_0就是可以的
但是这样一来改动很多很麻烦,二来到时如果引脚有更改也很麻烦,并且在5.52这是可以的
所以想请教下这是因为什么原因?谢谢大家。 |