结构体多类型共享空间 __packed

今天映到个问题,DATA保存数据老是中间会空出一些空间来,8位数据指针对不上数据。

  


#define SHOW_LEN               56
#define SHOW_ADDR              0x220
typedef    union
{
    u8 data[SHOW_LEN];
  __packed struct
  {
    //开始按钮灯
    u16 StartButtonLed_OnTime          :16;     //0-1 开启时间
    u16 StartButtonLed_OffTime        :16;     //2-3 关闭时间
    u8 StartButtonLed_Times            :8;     // 4周期
    //大灯按钮灯
    u16 BigButtonLed_OnTime            :16;     // 5-6开启时间
    u16 BigButtonLed_OffTime           :16;     // 7-8关闭时间
    u8 BigButtonLed_Times              :8;     // 9周期
    //自动驾驶按钮灯
    u16 AutoButtonLed_OnTime           :16;     // a-b开启时间
    u16 AutoButtonLed_OffTime          :16;     // c-d关闭时间
    u8 AutoButtonLed_Times             :8;     // e周期
    //喇叭
    u16 Laba_OnTime                    :16;     // 开启时间
    u16 Laba_OffTime                   :16;     // 关闭时间
    u8 Laba_Times                      :8;      // 周期
    //状态灯
    u16 StateLed_OnTime                :16;     // 开启时间
    u16 StateLed_OffTime               :16;     // 关闭时间
    u8 StateLed_Times                  :8;     // 周期
    u8 StateLed_State                  :8;     // 状态 0空车, 1有客
    //左大灯
    u16 BigLedLeft_OnTime              :16;     // 开启时间
    u16 BigLedLeft_OffTime             :16;     // 关闭时间
    u8 BigLedLeft_Times                :8;     // 周期
    u8  BigLedLeft_TMode               :8;     // 模式  0 近光灯(圈)闪烁 远光灯关闭
                                               //       1 近光灯(圈)呼吸 远光灯关闭
                                               //       2 近光灯(圈)关闭 远光灯闪烁
                                               //       3 近光灯(圈)关闭 远光灯呼吸
                                               //       4 近光灯(圈)闪烁  远光灯闪烁
                                               //       5 近光灯(圈)闪烁  远光灯呼吸
                                               //       6 近光灯(圈)呼吸  远光灯闪烁
                                               //       7 近光灯(圈)呼吸  远光灯呼吸
    //右大灯
    u16 BigLedRight_OnTime             :16;     // 开启时间  
    u16 BigLedRight_OffTime            :16;     // 关闭时间
    u8 BigLedRight_Times               :8;     // 周期
    u8  BigLedRight_TMode              :8;     // 模式 同上 BigLedLeft_TMode
    //左转向灯
    u16 TurnLedLeft_OnTime             :16;     // 开启时间
    u16 TurnLedLeft_OffTime            :16;     // 关闭时间
    u8 TurnLedLeft_Times               :8;     // 周期
    u8  TurnLedLeft_TMode              :8;     // 模式  0 黄灯转向效果(白灯已关闭)
                                               //       1 白灯效果(黄灯已关闭)
                                               //       2 黄转白灯效果(白灯未关闭)
    //右转向灯
    u16 TurnLedRight_OnTime            :16;     // 开启时间
    u16 TurnLedRight_OffTime           :16;      // 关闭时间
    u8 TurnLedRight_Times              :8;     // 周期
    u8  TurnLedRight_TMode             :8;     // 模式  0 黄灯转向效果(白灯已关闭)
                                               //       1 白灯效果(黄灯已关闭)
                                               //       2 黄转白灯效果(白灯未关闭)
    //刹车灯
    u16 BrakeLed_OnTime                :16;     // 开启时间
    u16 BrakeLed_OffTime              :16;     // 关闭时间
    u8 BrakeLed_Times                 :8;     // 周期
    //平板
    u8 Pingban_OnOff                   :8;     // 平板电源开关 0关闭 1开启
  } bit;

}SHOW_ENUM;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值