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

  • 相关阅读:
    聊聊在springboot项目中如何配置多个kafka消费者
    机器翻译和人工翻译的优缺点,该如何利用好机器翻译
    Mongodb的基本操作
    学会如何选择图表类型,小白也能玩转数据分析
    byName自动装配和byType自动装配
    MyBatisPlus中的TypeHandler
    Cybersecurity Requirements for Medical Devices
    Ubuntu打造家用NAS三——网盘与影视中心
    博物馆预约管理系统的设计与实现(论文+源码)_kaic
    桌面平台层安全随手记录
  • 原文地址:https://blog.csdn.net/yemaogu/article/details/128104761