[STM8] iar for stm8 联合地址对齐

[复制链接]
1184|4
 楼主| jd9945 发表于 2015-7-24 10:56 | 显示全部楼层 |阅读模式

typedef union{
           u32                            Id;
           struct
           {          
                 unsigned int  NodeAddress:10;         
                 unsigned char FrameTypeSt :2;
                 unsigned char FrameType :1;
                 unsigned char FunCode :5;
                 unsigned int  Remain:14;
           } _Id;
         }_CAN_ID;
结果调试程序发现,Id没有按定义的顺序进行排序   ; 知道为什么吗
玛尼玛尼哄 发表于 2015-7-24 11:39 | 显示全部楼层
也就是楼主的意思,联合失败了吗
734774645 发表于 2015-7-24 11:58 | 显示全部楼层
没用过联合,结构体都很少用的
donsbin 发表于 2015-7-24 13:06 | 显示全部楼层
你的机器是8位的,所以不用考虑对齐问题
sean0110 发表于 2015-7-24 13:14 | 显示全部楼层
本帖最后由 sean0110 于 2015-7-24 13:21 编辑

你用了位域吧,估计你是想把 _Id 压缩在一个 uint32_t 中。如果是位域那就是都用unsigned int,别混合用。
typedef union{
        unsigned int Id;
        struct
        {         
                unsigned int  NodeAddress:10;         
                unsigned int FrameTypeSt :2;
                unsigned int FrameType :1;
                unsigned int FunCode :5;
                unsigned int  Remain:14;
        } _Id;
} _CAN_ID;

您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

84

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部