• 结构体多类型共享空间 __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;

  • 相关阅读:
    java每日一练(4)
    Linux内核面试题(1)
    C语言中的类型转换
    【自然语言处理】【实体匹配】用于实体匹配中blocking环节的深度学习:一个设计空间的探索
    QT=> 父界面设置背景图,子界面不受影响解决方案
    移动端研发技术的进化历程
    【STM32】Cortex-M4 超详细的GPIO输出分析
    护眼灯显色指数多少好?最值得买的护眼灯推荐
    品达物流TMS项目_第2章 基础数据服务开发(pd-base)
    007.复原 IP 地址
  • 原文地址:https://blog.csdn.net/yemaogu/article/details/128104761