我今天也遇到了同样的问题,IMPROPER FIXUP,研究了半天终于解决了,原来这个问题是因为Keil4和Keil5不支持bdata的问题导致的,所以退回Keil2,新建工程,加入文件,重新编译就OK了,你这个上面也有bdata所以也可以用我的办法来成功解决的.
参考资料:
The variables ibase and bary are bit-addressable. Therefore, the individual bits of these variables may be directly accessed and modified. Use the sbit keyword to declare new variables that access the bits of bdata variables. For example:
sbit mybit0 = ibase ^ 0; /* bit 0 of ibase */
sbit mybit15 = ibase ^ 15; /* bit 15 of ibase */
sbit Ary07 = bary[0] ^ 7; /* bit 7 of bary[0] */
sbit Ary37 = bary[3] ^ 7; /* bit 7 of bary[3] */
The above example represents declarations, not assignments to the bits of the ibase and bary bdata variables. The expression following the carat symbol ('^') in the example specifies the position of the bit to access with this declaration. This expression must be a constant value.
The range depends on the type of the base variable included in the declaration. The range is:
0-7 for char and unsigned char, 0-15 for int, unsigned int,
short, and unsigned short, and
0-31 for long and unsigned long.
并没有定义bit类型的bdata。因此定义成char。
OFDM_PHY_ext char bdata bLib_RxPlcEnd;
OFDM_PHY_ext char bdata RX_BUSY;
OFDM_PHY_ext char bdata TX_BUSY;
Comm_ext char bdata bCommRxEnd;
Comm_ext char bdata bCommRxstart; |