打印
[STM8]

iar for stm8 联合地址对齐

[复制链接]
989|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位的,所以不用考虑对齐问题

使用特权

评论回复
5
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

粉丝