TI中文支持网
TI专业的中文技术问题咨询交流网站

SM470R1B1M-HT: 位域结构体编译问题,编译器对同一个工程中同一个位域结构有两种矛盾的解析

Part Number:SM470R1B1M-HT

对于同一个工程,同一个位域结构体,编译器却有两种矛盾的解析,具体代码示例如下:

一、位域结构体定义

typedef volatile struct

{

    UBYTE rsv_ccr[3];

    union

    {

        UBYTE ccr_UB;

        struct

        {

            UBYTE CharLength_B3 : 3;//bit0~bit2

            UBYTE Mode_B1       : 1;//bit3

            UBYTE Async_B1      : 1;

            UBYTE ParityEN_B1   : 1;

            UBYTE Parity_B1     : 1;

            UBYTE Stop_B1       : 1;//bit7

        } ccr_ST;

    } ccr_UN;

 。。。 

} SCI_ST;

定义一个SCI_ST类型的指针:SCI_ST *Sci_PST = &SCI1;

二、主函数main有C语言操作指令

Sci_PST->ccr_UN.ccr_ST.CharLength_B3 = 7;

三、初始化函数内有C语言操作指令

Sci_PST->ccr_UN.ccr_ST.CharLength_B3 = 7;

四、主函数和初始化函数内编译的结果有矛盾

主函数内汇编实现

初始化函数内汇编实现

五、矛盾点在于

主函数认为位域成员“CharLength_B3”存放于低3位;

初始化函数认为位域成员“CharLength_B3”存放于高3位;

特请教各位,上述矛盾是怎么来的,如何解决?

Cherry Zhou:

您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » SM470R1B1M-HT: 位域结构体编译问题,编译器对同一个工程中同一个位域结构有两种矛盾的解析
分享到: 更多 (0)